From 95b95de7dd904f9656030cbb0990dd3d7bde0ad6 Mon Sep 17 00:00:00 2001 From: Jeff Ator Date: Tue, 18 Feb 2025 21:42:46 +0000 Subject: [PATCH] documentation updates for v12.2.0 --- annotated.html | 41 +- annotated_dup.js | 3 +- apxdx_8F90.html | 2 +- apxdx_8F90_source.html | 14 +- arallocc_8c.html | 11 +- arallocc_8c_source.html | 145 +- arallocf_8F90.html | 12 +- arallocf_8F90_source.html | 1933 +++++---- binv_8F90.html | 2 +- binv_8F90_source.html | 58 +- bitmaps_8F90.html | 42 +- bitmaps_8F90.js | 2 +- bitmaps_8F90_source.html | 669 ++- blocks_8F90.html | 4 +- blocks_8F90_source.html | 2 +- borts_8F90.html | 4 +- borts_8F90_source.html | 2 +- bufr__c2f__interface_8F90.html | 2 +- bufr__c2f__interface_8F90_source.html | 82 +- bufr__interface_8F90.html | 4 +- bufr__interface_8F90_source.html | 13 +- bufr__interface_8h.html | 20 +- bufr__interface_8h_source.html | 10 +- bufrlib_8F90.html | 2 +- bufrlib_8F90_source.html | 2 +- bufrlib_8h.html | 318 +- bufrlib_8h.js | 15 +- bufrlib_8h_source.html | 106 +- cfe_8c.html | 4 +- cfe_8c_source.html | 2 +- cftbvs_8F90.html | 2 +- cftbvs_8F90_source.html | 20 +- cidecode_8F90.html | 2 +- cidecode_8F90_source.html | 30 +- ciencode_8F90.html | 2 +- ciencode_8F90_source.html | 30 +- classes.html | 13 +- cmpbqm_8F90.html | 2 +- cmpbqm_8F90_source.html | 117 +- compress_8F90.html | 10 +- compress_8F90_source.html | 849 ++-- copydata_8F90.html | 10 +- copydata_8F90_source.html | 568 ++- cpmstabs_8c.html | 4 +- cpmstabs_8c_source.html | 6 +- cread_8c.html | 4 +- cread_8c_source.html | 24 +- cread_8h.html | 8 +- cread_8h_source.html | 2 +- crwbmg_8c.html | 16 +- crwbmg_8c_source.html | 336 +- debufr_8F90.html | 2 +- debufr_8F90_source.html | 20 +- debufr_8c.html | 2 +- debufr_8c_source.html | 6 +- dir_22e12ea4559d63fc79cb69a343f5f5b4.html | 2 +- dir_49e56c817e5e54854c35e136979f97ca.html | 2 +- dir_68267d1309a1af8e8297ef4c3efbcdba.html | 10 +- dir_7a6c296ee00f7c8711e279503c1d5b5f.html | 5 +- dir_cbdb8362360e11eafe2fa3bc74cf0ffd.html | 2 +- dumpdata_8F90.html | 8 +- dumpdata_8F90_source.html | 907 +++-- dxtable_8F90.html | 38 +- dxtable_8F90_source.html | 1950 +++++---- errwrt_8F90.html | 4 +- errwrt_8F90_source.html | 2 +- files.html | 21 +- files_dup.js | 4 +- functions.html | 5 +- functions_func.html | 5 +- fxy_8F90.html | 6 +- fxy_8F90_source.html | 324 +- gettab_8F90.html | 2 +- gettab_8F90_source.html | 15 +- globals.html | 2 +- globals_b.html | 12 +- globals_c.html | 17 +- globals_d.html | 3 +- globals_defs.html | 45 +- globals_e.html | 2 +- globals_f.html | 29 +- globals_func.html | 2 +- globals_func_b.html | 6 +- globals_func_c.html | 18 +- globals_func_d.html | 3 +- globals_func_e.html | 2 +- globals_func_f.html | 2 +- globals_func_g.html | 2 +- globals_func_h.html | 2 +- globals_func_i.html | 6 +- globals_func_j.html | 2 +- globals_func_l.html | 2 +- globals_func_m.html | 2 +- globals_func_n.html | 5 +- globals_func_o.html | 14 +- globals_func_p.html | 2 +- globals_func_r.html | 6 +- globals_func_s.html | 14 +- globals_func_t.html | 2 +- globals_func_u.html | 5 +- globals_func_w.html | 2 +- globals_func_x.html | 2 +- globals_g.html | 2 +- globals_h.html | 2 +- globals_i.html | 9 +- globals_j.html | 2 +- globals_l.html | 2 +- globals_m.html | 14 +- globals_n.html | 14 +- globals_o.html | 14 +- globals_p.html | 2 +- globals_r.html | 9 +- globals_s.html | 14 +- globals_t.html | 2 +- globals_u.html | 5 +- globals_v.html | 2 +- globals_vars.html | 20 +- globals_w.html | 2 +- globals_x.html | 2 +- icvidx_8c.html | 4 +- icvidx_8c_source.html | 4 +- index.html | 17 +- interfacebufr__interface_1_1ccbfl__c.html | 2 +- interfacebufr__interface_1_1cobfl__c.html | 2 +- interfacebufr__interface_1_1crbmg__c.html | 2 +- interfacebufr__interface_1_1cwbmg__c.html | 2 +- interfacebufrlib_1_1arallocc__c.html | 2 +- interfacebufrlib_1_1ardllocc__c.html | 2 +- interfacebufrlib_1_1backbufr__c.html | 4 +- interfacebufrlib_1_1cewind__c.html | 4 +- interfacebufrlib_1_1closfb__c.html | 4 +- interfacebufrlib_1_1cpmstabs__c.html | 2 +- interfacebufrlib_1_1crdbufr__c.html | 4 +- interfacebufrlib_1_1cwrbufr__c.html | 4 +- interfacebufrlib_1_1icvidx__c.html | 4 +- interfacebufrlib_1_1inittbf__c.html | 2 +- interfacebufrlib_1_1openab__c.html | 4 +- interfacebufrlib_1_1openrb__c.html | 4 +- interfacebufrlib_1_1openwb__c.html | 4 +- interfacebufrlib_1_1restd__c.html | 4 +- interfacebufrlib_1_1sorttbf__c.html | 2 +- interfacebufrlib_1_1srchtbf__c.html | 2 +- interfacebufrlib_1_1strtbfe__c.html | 2 +- interfacebufrlib_1_1stseq__c.html | 4 +- jumplink_8F90.html | 56 +- jumplink_8F90_source.html | 2504 ++++++------ mastertable_8F90.html | 42 +- mastertable_8F90_source.html | 1943 +++++---- ..._NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html | 119 +- ...ufr_NCEPLIBS_bufr_bufr_docs_dx_tables.html | 9 +- ...NCEPLIBS_bufr_bufr_docs_master_tables.html | 5 +- ...BS_bufr_NCEPLIBS_bufr_bufr_docs_utils.html | 37 +- memmsgs_8F90.html | 30 +- memmsgs_8F90_source.html | 1951 +++++---- misc_8F90.html | 28 +- misc_8F90_source.html | 785 ++-- missing_8F90.html | 6 +- missing_8F90_source.html | 151 +- modules__arrs_8F90.html | 32 +- modules__arrs_8F90.js | 8 + modules__arrs_8F90_source.html | 462 ++- modules__vars_8F90.html | 715 +++- modules__vars_8F90.js | 29 + modules__vars_8F90_source.html | 208 +- mstabs_8h.html | 24 +- mstabs_8h_source.html | 2 +- namespacebufr__c2f__interface.html | 2 +- namespacebufr__interface.html | 4 +- namespacebufr__interface.js | 3 +- namespacebufrlib.html | 2 +- namespacemembers.html | 2 +- namespacemembers_c.html | 2 +- namespacemembers_d.html | 2 +- namespacemembers_e.html | 2 +- namespacemembers_f.html | 2 +- namespacemembers_func.html | 2 +- namespacemembers_g.html | 2 +- namespacemembers_i.html | 14 +- namespacemembers_j.html | 2 +- namespacemembers_k.html | 2 +- namespacemembers_l.html | 2 +- namespacemembers_m.html | 2 +- namespacemembers_n.html | 14 +- namespacemembers_o.html | 2 +- namespacemembers_p.html | 2 +- namespacemembers_r.html | 2 +- namespacemembers_s.html | 2 +- namespacemembers_t.html | 2 +- namespacemembers_u.html | 2 +- namespacemembers_v.html | 2 +- namespacemembers_vars.html | 26 +- namespacemembers_w.html | 2 +- namespacemembers_x.html | 2 +- namespacemoda__bitbuf.html | 6 +- namespacemoda__bitmaps.html | 26 +- namespacemoda__bufrmg.html | 2 +- namespacemoda__bufrsr.html | 2 +- namespacemoda__comprs.html | 2 +- namespacemoda__comprx.html | 2 +- namespacemoda__dscach.html | 2 +- namespacemoda__h4wlc.html | 2 +- namespacemoda__idrdm.html | 2 +- namespacemoda__ival.html | 2 +- namespacemoda__ivttmp.html | 2 +- namespacemoda__lushr.html | 2 +- namespacemoda__mgwa.html | 2 +- namespacemoda__mgwb.html | 2 +- namespacemoda__mrgcom.html | 206 + namespacemoda__msgcmp.html | 4 +- namespacemoda__msgcwd.html | 4 +- namespacemoda__msglim.html | 4 +- namespacemoda__msgmem.html | 2 +- namespacemoda__msgstd.html | 4 +- namespacemoda__mstabs.html | 2 +- namespacemoda__nmikrp.html | 2 +- namespacemoda__nrv203.html | 18 +- namespacemoda__nulbfr.html | 4 +- namespacemoda__rdmtb.html | 10 +- namespacemoda__rlccmn.html | 10 +- namespacemoda__s01cm.html | 8 +- namespacemoda__s3list.html | 2 +- namespacemoda__sc3bfr.html | 6 +- namespacemoda__stbfr.html | 6 +- namespacemoda__stcode.html | 4 +- namespacemoda__tababd.html | 22 +- namespacemoda__tabccc.html | 206 + namespacemoda__tablef.html | 6 +- namespacemoda__tables.html | 38 +- namespacemoda__tnkrcp.html | 14 +- namespacemoda__ufbcpl.html | 4 +- namespacemoda__unptyp.html | 4 +- namespacemoda__usrbit.html | 6 +- namespacemoda__usrint.html | 16 +- namespacemoda__usrtmp.html | 6 +- namespacemoda__xtab.html | 4 +- namespaces.html | 127 +- namespaces_dup.js | 41 + namespaceshare__table__info.html | 2 +- navtreedata.js | 143 +- navtreeindex0.js | 86 +- navtreeindex1.js | 32 +- navtreeindex2.js | 312 +- navtreeindex3.js | 334 +- navtreeindex4.js | 442 +- navtreeindex5.js | 217 +- openbt_8F90.html | 2 +- openbt_8F90_source.html | 54 +- openclosebf_8F90.html | 24 +- openclosebf_8F90_source.html | 1631 ++++---- pages.html | 2 +- previous_versions/v12.1.0/annotated.html | 127 + previous_versions/v12.1.0/annotated_dup.js | 30 + previous_versions/v12.1.0/apxdx_8F90.html | 151 + previous_versions/v12.1.0/apxdx_8F90.js | 4 + .../v12.1.0/apxdx_8F90_source.html | 153 + previous_versions/v12.1.0/arallocc_8c.html | 206 + previous_versions/v12.1.0/arallocc_8c.js | 6 + .../v12.1.0/arallocc_8c_source.html | 207 + previous_versions/v12.1.0/arallocf_8F90.html | 359 ++ previous_versions/v12.1.0/arallocf_8F90.js | 8 + .../v12.1.0/arallocf_8F90_source.html | 1334 ++++++ previous_versions/v12.1.0/bc_s.png | Bin 0 -> 676 bytes previous_versions/v12.1.0/bdwn.png | Bin 0 -> 147 bytes previous_versions/v12.1.0/binv_8F90.html | 143 + previous_versions/v12.1.0/binv_8F90.js | 4 + .../v12.1.0/binv_8F90_source.html | 187 + previous_versions/v12.1.0/bitmaps_8F90.html | 336 ++ previous_versions/v12.1.0/bitmaps_8F90.js | 7 + .../v12.1.0/bitmaps_8F90_source.html | 460 +++ previous_versions/v12.1.0/blocks_8F90.html | 216 + previous_versions/v12.1.0/blocks_8F90.js | 5 + .../v12.1.0/blocks_8F90_source.html | 182 + previous_versions/v12.1.0/borts_8F90.html | 204 + previous_versions/v12.1.0/borts_8F90.js | 5 + .../v12.1.0/borts_8F90_source.html | 134 + .../v12.1.0/bufr__c2f__interface_8F90.html | 276 ++ .../v12.1.0/bufr__c2f__interface_8F90.js | 64 + .../bufr__c2f__interface_8F90_source.html | 794 ++++ .../v12.1.0/bufr__interface_8F90.html | 133 + .../v12.1.0/bufr__interface_8F90_source.html | 143 + .../v12.1.0/bufr__interface_8h.html | 2235 ++++++++++ .../v12.1.0/bufr__interface_8h.js | 47 + .../v12.1.0/bufr__interface_8h_source.html | 263 ++ previous_versions/v12.1.0/bufrlib_8F90.html | 159 + .../v12.1.0/bufrlib_8F90_source.html | 233 ++ previous_versions/v12.1.0/bufrlib_8h.html | 1511 +++++++ previous_versions/v12.1.0/bufrlib_8h.js | 35 + .../v12.1.0/bufrlib_8h_source.html | 185 + previous_versions/v12.1.0/cfe_8c.html | 592 +++ previous_versions/v12.1.0/cfe_8c.js | 14 + previous_versions/v12.1.0/cfe_8c_source.html | 336 ++ previous_versions/v12.1.0/cftbvs_8F90.html | 463 +++ previous_versions/v12.1.0/cftbvs_8F90.js | 8 + .../v12.1.0/cftbvs_8F90_source.html | 461 +++ previous_versions/v12.1.0/cidecode_8F90.html | 616 +++ previous_versions/v12.1.0/cidecode_8F90.js | 11 + .../v12.1.0/cidecode_8F90_source.html | 363 ++ previous_versions/v12.1.0/ciencode_8F90.html | 433 ++ previous_versions/v12.1.0/ciencode_8F90.js | 8 + .../v12.1.0/ciencode_8F90_source.html | 332 ++ previous_versions/v12.1.0/classes.html | 125 + previous_versions/v12.1.0/closed.png | Bin 0 -> 132 bytes previous_versions/v12.1.0/cmpbqm_8F90.html | 143 + previous_versions/v12.1.0/cmpbqm_8F90.js | 4 + .../v12.1.0/cmpbqm_8F90_source.html | 226 ++ previous_versions/v12.1.0/compress_8F90.html | 357 ++ previous_versions/v12.1.0/compress_8F90.js | 8 + .../v12.1.0/compress_8F90_source.html | 759 ++++ previous_versions/v12.1.0/copydata_8F90.html | 720 ++++ previous_versions/v12.1.0/copydata_8F90.js | 14 + .../v12.1.0/copydata_8F90_source.html | 794 ++++ previous_versions/v12.1.0/cpmstabs_8c.html | 257 ++ previous_versions/v12.1.0/cpmstabs_8c.js | 4 + .../v12.1.0/cpmstabs_8c_source.html | 182 + previous_versions/v12.1.0/cread_8c.html | 477 +++ previous_versions/v12.1.0/cread_8c.js | 11 + .../v12.1.0/cread_8c_source.html | 227 ++ previous_versions/v12.1.0/cread_8h.html | 177 + previous_versions/v12.1.0/cread_8h.js | 5 + .../v12.1.0/cread_8h_source.html | 109 + previous_versions/v12.1.0/crwbmg_8c.html | 458 +++ previous_versions/v12.1.0/crwbmg_8c.js | 10 + .../v12.1.0/crwbmg_8c_source.html | 274 ++ previous_versions/v12.1.0/debufr_8F90.html | 321 ++ previous_versions/v12.1.0/debufr_8F90.js | 8 + .../v12.1.0/debufr_8F90_source.html | 475 +++ previous_versions/v12.1.0/debufr_8c.html | 372 ++ previous_versions/v12.1.0/debufr_8c.js | 6 + .../v12.1.0/debufr_8c_source.html | 358 ++ .../dir_22e12ea4559d63fc79cb69a343f5f5b4.html | 109 + .../dir_49e56c817e5e54854c35e136979f97ca.html | 99 + .../dir_68267d1309a1af8e8297ef4c3efbcdba.html | 235 ++ .../dir_7a6c296ee00f7c8711e279503c1d5b5f.html | 106 + .../dir_cbdb8362360e11eafe2fa3bc74cf0ffd.html | 130 + previous_versions/v12.1.0/doc.png | Bin 0 -> 746 bytes previous_versions/v12.1.0/doxygen.css | 1793 ++++++++ previous_versions/v12.1.0/doxygen.svg | 26 + previous_versions/v12.1.0/dumpdata_8F90.html | 343 ++ previous_versions/v12.1.0/dumpdata_8F90.js | 7 + .../v12.1.0/dumpdata_8F90_source.html | 929 +++++ previous_versions/v12.1.0/dxtable_8F90.html | 1530 +++++++ previous_versions/v12.1.0/dxtable_8F90.js | 26 + .../v12.1.0/dxtable_8F90_source.html | 1673 ++++++++ previous_versions/v12.1.0/dynsections.js | 128 + previous_versions/v12.1.0/errwrt_8F90.html | 157 + previous_versions/v12.1.0/errwrt_8F90.js | 4 + .../v12.1.0/errwrt_8F90_source.html | 112 + previous_versions/v12.1.0/files.html | 158 + previous_versions/v12.1.0/files_dup.js | 84 + previous_versions/v12.1.0/folderclosed.png | Bin 0 -> 616 bytes previous_versions/v12.1.0/folderopen.png | Bin 0 -> 597 bytes previous_versions/v12.1.0/functions.html | 165 + previous_versions/v12.1.0/functions_func.html | 165 + previous_versions/v12.1.0/fxy_8F90.html | 655 +++ previous_versions/v12.1.0/fxy_8F90.js | 12 + .../v12.1.0/fxy_8F90_source.html | 469 +++ previous_versions/v12.1.0/gettab_8F90.html | 143 + previous_versions/v12.1.0/gettab_8F90.js | 4 + .../v12.1.0/gettab_8F90_source.html | 139 + previous_versions/v12.1.0/globals.html | 121 + previous_versions/v12.1.0/globals_b.html | 126 + previous_versions/v12.1.0/globals_c.html | 238 ++ previous_versions/v12.1.0/globals_d.html | 128 + previous_versions/v12.1.0/globals_defs.html | 126 + previous_versions/v12.1.0/globals_dup.js | 25 + previous_versions/v12.1.0/globals_e.html | 113 + previous_versions/v12.1.0/globals_f.html | 116 + previous_versions/v12.1.0/globals_func.html | 121 + previous_versions/v12.1.0/globals_func.js | 24 + previous_versions/v12.1.0/globals_func_b.html | 126 + previous_versions/v12.1.0/globals_func_c.html | 211 + previous_versions/v12.1.0/globals_func_d.html | 128 + previous_versions/v12.1.0/globals_func_e.html | 113 + previous_versions/v12.1.0/globals_func_f.html | 113 + previous_versions/v12.1.0/globals_func_g.html | 167 + previous_versions/v12.1.0/globals_func_h.html | 101 + previous_versions/v12.1.0/globals_func_i.html | 273 ++ previous_versions/v12.1.0/globals_func_j.html | 101 + previous_versions/v12.1.0/globals_func_l.html | 107 + previous_versions/v12.1.0/globals_func_m.html | 147 + previous_versions/v12.1.0/globals_func_n.html | 173 + previous_versions/v12.1.0/globals_func_o.html | 132 + previous_versions/v12.1.0/globals_func_p.html | 147 + previous_versions/v12.1.0/globals_func_r.html | 186 + previous_versions/v12.1.0/globals_func_s.html | 192 + previous_versions/v12.1.0/globals_func_t.html | 107 + previous_versions/v12.1.0/globals_func_u.html | 221 + previous_versions/v12.1.0/globals_func_w.html | 128 + previous_versions/v12.1.0/globals_func_x.html | 104 + previous_versions/v12.1.0/globals_g.html | 167 + previous_versions/v12.1.0/globals_h.html | 101 + previous_versions/v12.1.0/globals_i.html | 288 ++ previous_versions/v12.1.0/globals_j.html | 101 + previous_versions/v12.1.0/globals_l.html | 110 + previous_versions/v12.1.0/globals_m.html | 165 + previous_versions/v12.1.0/globals_n.html | 188 + previous_versions/v12.1.0/globals_o.html | 132 + previous_versions/v12.1.0/globals_p.html | 153 + previous_versions/v12.1.0/globals_r.html | 186 + previous_versions/v12.1.0/globals_s.html | 192 + previous_versions/v12.1.0/globals_t.html | 107 + previous_versions/v12.1.0/globals_u.html | 224 + previous_versions/v12.1.0/globals_v.html | 101 + previous_versions/v12.1.0/globals_vars.html | 159 + previous_versions/v12.1.0/globals_w.html | 128 + previous_versions/v12.1.0/globals_x.html | 104 + previous_versions/v12.1.0/icvidx_8c.html | 172 + previous_versions/v12.1.0/icvidx_8c.js | 4 + .../v12.1.0/icvidx_8c_source.html | 106 + previous_versions/v12.1.0/index.html | 157 + .../interfacebufr__interface_1_1ccbfl__c.html | 136 + .../interfacebufr__interface_1_1ccbfl__c.js | 4 + .../interfacebufr__interface_1_1cobfl__c.html | 157 + .../interfacebufr__interface_1_1cobfl__c.js | 4 + .../interfacebufr__interface_1_1crbmg__c.html | 171 + .../interfacebufr__interface_1_1crbmg__c.js | 4 + .../interfacebufr__interface_1_1cwbmg__c.html | 164 + .../interfacebufr__interface_1_1cwbmg__c.js | 4 + ...terfacebufr__interface_1_1dlloctbf__c.html | 0 ...interfacebufr__interface_1_1dlloctbf__c.js | 0 .../interfacebufrlib_1_1arallocc__c.html | 136 + .../interfacebufrlib_1_1arallocc__c.js | 4 + .../interfacebufrlib_1_1ardllocc__c.html | 136 + .../interfacebufrlib_1_1ardllocc__c.js | 4 + .../interfacebufrlib_1_1backbufr__c.html | 146 + .../interfacebufrlib_1_1backbufr__c.js | 4 + .../interfacebufrlib_1_1cewind__c.html | 146 + .../v12.1.0/interfacebufrlib_1_1cewind__c.js | 4 + .../interfacebufrlib_1_1closfb__c.html | 146 + .../v12.1.0/interfacebufrlib_1_1closfb__c.js | 4 + .../interfacebufrlib_1_1cpmstabs__c.html | 248 ++ .../interfacebufrlib_1_1cpmstabs__c.js | 4 + .../interfacebufrlib_1_1crdbufr__c.html | 170 + .../v12.1.0/interfacebufrlib_1_1crdbufr__c.js | 4 + .../interfacebufrlib_1_1cwrbufr__c.html | 164 + .../v12.1.0/interfacebufrlib_1_1cwrbufr__c.js | 4 + .../interfacebufrlib_1_1icvidx__c.html | 165 + .../v12.1.0/interfacebufrlib_1_1icvidx__c.js | 4 + .../interfacebufrlib_1_1inittbf__c.html | 136 + .../v12.1.0/interfacebufrlib_1_1inittbf__c.js | 4 + .../interfacebufrlib_1_1openab__c.html | 157 + .../v12.1.0/interfacebufrlib_1_1openab__c.js | 4 + .../interfacebufrlib_1_1openrb__c.html | 157 + .../v12.1.0/interfacebufrlib_1_1openrb__c.js | 4 + .../interfacebufrlib_1_1openwb__c.html | 157 + .../v12.1.0/interfacebufrlib_1_1openwb__c.js | 4 + .../v12.1.0/interfacebufrlib_1_1restd__c.html | 171 + .../v12.1.0/interfacebufrlib_1_1restd__c.js | 4 + .../interfacebufrlib_1_1sorttbf__c.html | 136 + .../v12.1.0/interfacebufrlib_1_1sorttbf__c.js | 4 + .../interfacebufrlib_1_1srchtbf__c.html | 215 + .../v12.1.0/interfacebufrlib_1_1srchtbf__c.js | 4 + .../interfacebufrlib_1_1strtbfe__c.html | 185 + .../v12.1.0/interfacebufrlib_1_1strtbfe__c.js | 4 + .../v12.1.0/interfacebufrlib_1_1stseq__c.html | 192 + .../v12.1.0/interfacebufrlib_1_1stseq__c.js | 4 + previous_versions/v12.1.0/jquery.js | 35 + previous_versions/v12.1.0/jumplink_8F90.html | 1403 +++++++ previous_versions/v12.1.0/jumplink_8F90.js | 23 + .../v12.1.0/jumplink_8F90_source.html | 1447 +++++++ .../v12.1.0/mastertable_8F90.html | 1365 +++++++ previous_versions/v12.1.0/mastertable_8F90.js | 19 + .../v12.1.0/mastertable_8F90_source.html | 1151 ++++++ ..._NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html | 657 +++ ...ufr_NCEPLIBS_bufr_bufr_docs_dx_tables.html | 695 ++++ ...NCEPLIBS_bufr_bufr_docs_master_tables.html | 420 ++ ...BS_bufr_NCEPLIBS_bufr_bufr_docs_utils.html | 625 +++ previous_versions/v12.1.0/memmsgs_8F90.html | 832 ++++ previous_versions/v12.1.0/memmsgs_8F90.js | 14 + .../v12.1.0/memmsgs_8F90_source.html | 1203 ++++++ previous_versions/v12.1.0/menu.js | 51 + previous_versions/v12.1.0/menudata.js | 135 + previous_versions/v12.1.0/misc_8F90.html | 581 +++ previous_versions/v12.1.0/misc_8F90.js | 14 + .../v12.1.0/misc_8F90_source.html | 557 +++ previous_versions/v12.1.0/missing_8F90.html | 279 ++ previous_versions/v12.1.0/missing_8F90.js | 7 + .../v12.1.0/missing_8F90_source.html | 212 + .../v12.1.0/modules__arrs_8F90.html | 759 ++++ .../v12.1.0/modules__arrs_8F90.js | 176 + .../v12.1.0/modules__arrs_8F90_source.html | 606 +++ .../v12.1.0/modules__vars_8F90.html | 1125 +++++ .../v12.1.0/modules__vars_8F90.js | 49 + .../v12.1.0/modules__vars_8F90_source.html | 199 + previous_versions/v12.1.0/mstabs_8h.html | 553 +++ previous_versions/v12.1.0/mstabs_8h.js | 18 + .../v12.1.0/mstabs_8h_source.html | 148 + .../namespacebufr__c2f__interface.html | 2734 +++++++++++++ .../v12.1.0/namespacebufr__interface.html | 122 + .../v12.1.0/namespacebufr__interface.js | 8 + .../v12.1.0/namespacebufrlib.html | 148 + previous_versions/v12.1.0/namespacebufrlib.js | 21 + .../v12.1.0/namespacemembers.html | 104 + .../v12.1.0/namespacemembers_c.html | 176 + .../v12.1.0/namespacemembers_d.html | 101 + .../v12.1.0/namespacemembers_dup.js | 24 + .../v12.1.0/namespacemembers_e.html | 104 + .../v12.1.0/namespacemembers_f.html | 101 + .../v12.1.0/namespacemembers_func.html | 299 ++ .../v12.1.0/namespacemembers_g.html | 131 + .../v12.1.0/namespacemembers_i.html | 299 ++ .../v12.1.0/namespacemembers_j.html | 137 + .../v12.1.0/namespacemembers_k.html | 122 + .../v12.1.0/namespacemembers_l.html | 134 + .../v12.1.0/namespacemembers_m.html | 164 + .../v12.1.0/namespacemembers_n.html | 200 + .../v12.1.0/namespacemembers_o.html | 107 + .../v12.1.0/namespacemembers_p.html | 101 + .../v12.1.0/namespacemembers_r.html | 101 + .../v12.1.0/namespacemembers_s.html | 110 + .../v12.1.0/namespacemembers_t.html | 125 + .../v12.1.0/namespacemembers_u.html | 110 + .../v12.1.0/namespacemembers_v.html | 110 + .../v12.1.0/namespacemembers_vars.html | 674 +++ .../v12.1.0/namespacemembers_w.html | 101 + .../v12.1.0/namespacemembers_x.html | 101 + .../v12.1.0/namespacemoda__bitbuf.html | 228 ++ .../v12.1.0/namespacemoda__bitmaps.html | 413 ++ .../v12.1.0/namespacemoda__bufrmg.html | 159 + .../v12.1.0/namespacemoda__bufrsr.html | 322 ++ .../v12.1.0/namespacemoda__comprs.html | 206 + .../v12.1.0/namespacemoda__comprx.html | 444 ++ .../v12.1.0/namespacemoda__dscach.html | 206 + .../v12.1.0/namespacemoda__h4wlc.html | 206 + .../v12.1.0/namespacemoda__idrdm.html | 137 + .../v12.1.0/namespacemoda__ival.html | 137 + .../v12.1.0/namespacemoda__ivttmp.html | 182 + .../v12.1.0/namespacemoda__lushr.html | 137 + .../v12.1.0/namespacemoda__mgwa.html | 136 + .../v12.1.0/namespacemoda__mgwb.html | 136 + .../v12.1.0/namespacemoda__msgcmp.html | 140 + .../v12.1.0/namespacemoda__msgcwd.html | 228 ++ .../v12.1.0/namespacemoda__msglim.html | 138 + .../v12.1.0/namespacemoda__msgmem.html | 459 +++ .../v12.1.0/namespacemoda__msgstd.html | 140 + .../v12.1.0/namespacemoda__mstabs.html | 436 ++ .../v12.1.0/namespacemoda__nmikrp.html | 195 + .../v12.1.0/namespacemoda__nrv203.html | 298 ++ .../v12.1.0/namespacemoda__nulbfr.html | 141 + .../v12.1.0/namespacemoda__rdmtb.html | 206 + .../v12.1.0/namespacemoda__rlccmn.html | 205 + .../v12.1.0/namespacemoda__s01cm.html | 183 + .../v12.1.0/namespacemoda__s3list.html | 159 + .../v12.1.0/namespacemoda__sc3bfr.html | 164 + .../v12.1.0/namespacemoda__stbfr.html | 167 + .../v12.1.0/namespacemoda__stcode.html | 141 + .../v12.1.0/namespacemoda__tababd.html | 343 ++ .../v12.1.0/namespacemoda__tablef.html | 140 + .../v12.1.0/namespacemoda__tables.html | 514 +++ .../v12.1.0/namespacemoda__tnkrcp.html | 255 ++ .../v12.1.0/namespacemoda__ufbcpl.html | 137 + .../v12.1.0/namespacemoda__unptyp.html | 141 + .../v12.1.0/namespacemoda__usrbit.html | 160 + .../v12.1.0/namespacemoda__usrint.html | 205 + .../v12.1.0/namespacemoda__usrtmp.html | 158 + .../v12.1.0/namespacemoda__xtab.html | 138 + previous_versions/v12.1.0/namespaces.html | 170 + previous_versions/v12.1.0/namespaces_dup.js | 374 ++ .../v12.1.0/namespaceshare__table__info.html | 182 + previous_versions/v12.1.0/nav_f.png | Bin 0 -> 153 bytes previous_versions/v12.1.0/nav_g.png | Bin 0 -> 95 bytes previous_versions/v12.1.0/nav_h.png | Bin 0 -> 98 bytes previous_versions/v12.1.0/navtree.css | 146 + previous_versions/v12.1.0/navtree.js | 546 +++ previous_versions/v12.1.0/navtreedata.js | 150 + previous_versions/v12.1.0/navtreeindex0.js | 253 ++ previous_versions/v12.1.0/navtreeindex1.js | 253 ++ previous_versions/v12.1.0/navtreeindex2.js | 253 ++ previous_versions/v12.1.0/navtreeindex3.js | 253 ++ previous_versions/v12.1.0/navtreeindex4.js | 253 ++ previous_versions/v12.1.0/navtreeindex5.js | 70 + previous_versions/v12.1.0/open.png | Bin 0 -> 123 bytes previous_versions/v12.1.0/openbt_8F90.html | 173 + previous_versions/v12.1.0/openbt_8F90.js | 4 + .../v12.1.0/openbt_8F90_source.html | 142 + .../v12.1.0/openclosebf_8F90.html | 753 ++++ previous_versions/v12.1.0/openclosebf_8F90.js | 13 + .../v12.1.0/openclosebf_8F90_source.html | 1049 +++++ previous_versions/v12.1.0/pages.html | 106 + previous_versions/v12.1.0/python/index.html | 7 + .../v12.1.0/python/ncepbufr.html | 2729 +++++++++++++ .../python/ncepbufr/bufr_mnemonics.html | 938 +++++ previous_versions/v12.1.0/python/search.js | 46 + previous_versions/v12.1.0/readbp_8F90.html | 179 + previous_versions/v12.1.0/readbp_8F90.js | 5 + .../v12.1.0/readbp_8F90_source.html | 356 ++ previous_versions/v12.1.0/readmp_8F90.html | 143 + previous_versions/v12.1.0/readmp_8F90.js | 4 + .../v12.1.0/readmp_8F90_source.html | 146 + .../v12.1.0/readwritemg_8F90.html | 1152 ++++++ previous_versions/v12.1.0/readwritemg_8F90.js | 22 + .../v12.1.0/readwritemg_8F90_source.html | 1292 ++++++ .../v12.1.0/readwritesb_8F90.html | 1065 +++++ previous_versions/v12.1.0/readwritesb_8F90.js | 20 + .../v12.1.0/readwritesb_8F90_source.html | 1448 +++++++ .../v12.1.0/readwriteval_8F90.html | 1753 ++++++++ .../v12.1.0/readwriteval_8F90.js | 23 + .../v12.1.0/readwriteval_8F90_source.html | 2226 ++++++++++ previous_versions/v12.1.0/resize.js | 140 + previous_versions/v12.1.0/restd_8c.html | 246 ++ previous_versions/v12.1.0/restd_8c.js | 5 + .../v12.1.0/restd_8c_source.html | 233 ++ previous_versions/v12.1.0/s013vals_8F90.html | 1268 ++++++ previous_versions/v12.1.0/s013vals_8F90.js | 20 + .../v12.1.0/s013vals_8F90_source.html | 1329 ++++++ previous_versions/v12.1.0/search/all_0.html | 37 + previous_versions/v12.1.0/search/all_0.js | 16 + previous_versions/v12.1.0/search/all_1.html | 37 + previous_versions/v12.1.0/search/all_1.js | 28 + previous_versions/v12.1.0/search/all_10.html | 37 + previous_versions/v12.1.0/search/all_10.js | 42 + previous_versions/v12.1.0/search/all_11.html | 37 + previous_versions/v12.1.0/search/all_11.js | 49 + previous_versions/v12.1.0/search/all_12.html | 37 + previous_versions/v12.1.0/search/all_12.js | 17 + previous_versions/v12.1.0/search/all_13.html | 37 + previous_versions/v12.1.0/search/all_13.js | 50 + previous_versions/v12.1.0/search/all_14.html | 37 + previous_versions/v12.1.0/search/all_14.js | 8 + previous_versions/v12.1.0/search/all_15.html | 37 + previous_versions/v12.1.0/search/all_15.js | 14 + previous_versions/v12.1.0/search/all_16.html | 37 + previous_versions/v12.1.0/search/all_16.js | 8 + previous_versions/v12.1.0/search/all_2.html | 37 + previous_versions/v12.1.0/search/all_2.js | 93 + previous_versions/v12.1.0/search/all_3.html | 37 + previous_versions/v12.1.0/search/all_3.js | 20 + previous_versions/v12.1.0/search/all_4.html | 37 + previous_versions/v12.1.0/search/all_4.js | 11 + previous_versions/v12.1.0/search/all_5.html | 37 + previous_versions/v12.1.0/search/all_5.js | 11 + previous_versions/v12.1.0/search/all_6.html | 37 + previous_versions/v12.1.0/search/all_6.js | 38 + previous_versions/v12.1.0/search/all_7.html | 37 + previous_versions/v12.1.0/search/all_7.js | 4 + previous_versions/v12.1.0/search/all_8.html | 37 + previous_versions/v12.1.0/search/all_8.js | 143 + previous_versions/v12.1.0/search/all_9.html | 37 + previous_versions/v12.1.0/search/all_9.js | 18 + previous_versions/v12.1.0/search/all_a.html | 37 + previous_versions/v12.1.0/search/all_a.js | 11 + previous_versions/v12.1.0/search/all_b.html | 37 + previous_versions/v12.1.0/search/all_b.js | 21 + previous_versions/v12.1.0/search/all_c.html | 37 + previous_versions/v12.1.0/search/all_c.js | 124 + previous_versions/v12.1.0/search/all_d.html | 37 + previous_versions/v12.1.0/search/all_d.js | 70 + previous_versions/v12.1.0/search/all_e.html | 37 + previous_versions/v12.1.0/search/all_e.js | 21 + previous_versions/v12.1.0/search/all_f.html | 37 + previous_versions/v12.1.0/search/all_f.js | 22 + .../v12.1.0/search/classes_0.html | 37 + previous_versions/v12.1.0/search/classes_0.js | 5 + .../v12.1.0/search/classes_1.html | 37 + previous_versions/v12.1.0/search/classes_1.js | 4 + .../v12.1.0/search/classes_2.html | 37 + previous_versions/v12.1.0/search/classes_2.js | 12 + .../v12.1.0/search/classes_3.html | 37 + previous_versions/v12.1.0/search/classes_3.js | 4 + .../v12.1.0/search/classes_4.html | 37 + previous_versions/v12.1.0/search/classes_4.js | 5 + .../v12.1.0/search/classes_5.html | 37 + previous_versions/v12.1.0/search/classes_5.js | 6 + .../v12.1.0/search/classes_6.html | 37 + previous_versions/v12.1.0/search/classes_6.js | 4 + .../v12.1.0/search}/classes_7.html | 0 .../v12.1.0/search}/classes_7.js | 0 previous_versions/v12.1.0/search/close.svg | 31 + .../v12.1.0/search/defines_0.html | 37 + previous_versions/v12.1.0/search/defines_0.js | 4 + .../v12.1.0/search/defines_1.html | 37 + previous_versions/v12.1.0/search/defines_1.js | 4 + .../v12.1.0/search/defines_2.html | 37 + previous_versions/v12.1.0/search/defines_2.js | 8 + .../v12.1.0/search/defines_3.html | 37 + previous_versions/v12.1.0/search/defines_3.js | 4 + .../v12.1.0/search/defines_4.html | 37 + previous_versions/v12.1.0/search/defines_4.js | 4 + .../v12.1.0/search/defines_5.html | 37 + previous_versions/v12.1.0/search/defines_5.js | 4 + previous_versions/v12.1.0/search/files_0.html | 37 + previous_versions/v12.1.0/search/files_0.js | 6 + previous_versions/v12.1.0/search/files_1.html | 37 + previous_versions/v12.1.0/search/files_1.js | 12 + previous_versions/v12.1.0/search/files_2.html | 37 + previous_versions/v12.1.0/search/files_2.js | 14 + previous_versions/v12.1.0/search/files_3.html | 37 + previous_versions/v12.1.0/search/files_3.js | 7 + previous_versions/v12.1.0/search/files_4.html | 37 + previous_versions/v12.1.0/search/files_4.js | 4 + previous_versions/v12.1.0/search/files_5.html | 37 + previous_versions/v12.1.0/search/files_5.js | 4 + previous_versions/v12.1.0/search/files_6.html | 37 + previous_versions/v12.1.0/search/files_6.js | 4 + previous_versions/v12.1.0/search/files_7.html | 37 + previous_versions/v12.1.0/search/files_7.js | 4 + previous_versions/v12.1.0/search/files_8.html | 37 + previous_versions/v12.1.0/search/files_8.js | 4 + previous_versions/v12.1.0/search/files_9.html | 37 + previous_versions/v12.1.0/search/files_9.js | 10 + previous_versions/v12.1.0/search/files_a.html | 37 + previous_versions/v12.1.0/search/files_a.js | 5 + previous_versions/v12.1.0/search/files_b.html | 37 + previous_versions/v12.1.0/search/files_b.js | 9 + previous_versions/v12.1.0/search/files_c.html | 37 + previous_versions/v12.1.0/search/files_c.js | 9 + previous_versions/v12.1.0/search/files_d.html | 37 + previous_versions/v12.1.0/search/files_d.js | 4 + previous_versions/v12.1.0/search/files_e.html | 37 + previous_versions/v12.1.0/search/files_e.js | 5 + .../v12.1.0/search/functions_0.html | 37 + .../v12.1.0/search/functions_0.js | 12 + .../v12.1.0/search/functions_1.html | 37 + .../v12.1.0/search/functions_1.js | 15 + .../v12.1.0/search/functions_10.html | 37 + .../v12.1.0/search/functions_10.js | 41 + .../v12.1.0/search/functions_11.html | 37 + .../v12.1.0/search/functions_11.js | 6 + .../v12.1.0/search/functions_12.html | 37 + .../v12.1.0/search/functions_12.js | 48 + .../v12.1.0/search/functions_13.html | 37 + .../v12.1.0/search/functions_13.js | 13 + .../v12.1.0/search/functions_14.html | 37 + .../v12.1.0/search/functions_14.js | 5 + .../v12.1.0/search/functions_2.html | 37 + .../v12.1.0/search/functions_2.js | 50 + .../v12.1.0/search/functions_3.html | 37 + .../v12.1.0/search/functions_3.js | 15 + .../v12.1.0/search/functions_4.html | 37 + .../v12.1.0/search/functions_4.js | 10 + .../v12.1.0/search/functions_5.html | 37 + .../v12.1.0/search/functions_5.js | 8 + .../v12.1.0/search/functions_6.html | 37 + .../v12.1.0/search/functions_6.js | 37 + .../v12.1.0/search/functions_7.html | 37 + .../v12.1.0/search/functions_7.js | 4 + .../v12.1.0/search/functions_8.html | 37 + .../v12.1.0/search/functions_8.js | 76 + .../v12.1.0/search/functions_9.html | 37 + .../v12.1.0/search/functions_9.js | 4 + .../v12.1.0/search/functions_a.html | 37 + .../v12.1.0/search/functions_a.js | 6 + .../v12.1.0/search/functions_b.html | 37 + .../v12.1.0/search/functions_b.js | 21 + .../v12.1.0/search/functions_c.html | 37 + .../v12.1.0/search/functions_c.js | 33 + .../v12.1.0/search/functions_d.html | 37 + .../v12.1.0/search/functions_d.js | 19 + .../v12.1.0/search/functions_e.html | 37 + .../v12.1.0/search/functions_e.js | 20 + .../v12.1.0/search/functions_f.html | 37 + .../v12.1.0/search/functions_f.js | 34 + previous_versions/v12.1.0/search/mag_sel.svg | 74 + .../v12.1.0/search/namespaces_0.html | 37 + .../v12.1.0/search/namespaces_0.js | 6 + .../v12.1.0/search/namespaces_1.html | 37 + .../v12.1.0/search/namespaces_1.js | 43 + .../v12.1.0/search/namespaces_2.html | 37 + .../v12.1.0/search/namespaces_2.js | 4 + .../v12.1.0/search/nomatches.html | 13 + previous_versions/v12.1.0/search/pages_0.html | 37 + previous_versions/v12.1.0/search/pages_0.js | 4 + previous_versions/v12.1.0/search/pages_1.html | 37 + previous_versions/v12.1.0/search/pages_1.js | 4 + previous_versions/v12.1.0/search/pages_2.html | 37 + previous_versions/v12.1.0/search/pages_2.js | 4 + previous_versions/v12.1.0/search/pages_3.html | 37 + previous_versions/v12.1.0/search/pages_3.js | 4 + previous_versions/v12.1.0/search/search.css | 257 ++ previous_versions/v12.1.0/search/search.js | 816 ++++ previous_versions/v12.1.0/search/search_l.png | Bin 0 -> 567 bytes previous_versions/v12.1.0/search/search_m.png | Bin 0 -> 158 bytes previous_versions/v12.1.0/search/search_r.png | Bin 0 -> 553 bytes .../v12.1.0/search/searchdata.js | 36 + .../v12.1.0/search/variables_0.html | 37 + .../v12.1.0/search/variables_0.js | 4 + .../v12.1.0/search/variables_1.html | 37 + .../v12.1.0/search/variables_1.js | 4 + .../v12.1.0/search/variables_10.html | 37 + .../v12.1.0/search/variables_10.js | 4 + .../v12.1.0/search/variables_2.html | 37 + .../v12.1.0/search/variables_2.js | 35 + .../v12.1.0/search/variables_3.html | 37 + .../v12.1.0/search/variables_3.js | 4 + .../v12.1.0/search/variables_4.html | 37 + .../v12.1.0/search/variables_4.js | 68 + .../v12.1.0/search/variables_5.html | 37 + .../v12.1.0/search/variables_5.js | 16 + .../v12.1.0/search/variables_6.html | 37 + .../v12.1.0/search/variables_6.js | 11 + .../v12.1.0/search/variables_7.html | 37 + .../v12.1.0/search/variables_7.js | 18 + .../v12.1.0/search/variables_8.html | 37 + .../v12.1.0/search/variables_8.js | 53 + .../v12.1.0/search/variables_9.html | 37 + .../v12.1.0/search/variables_9.js | 39 + .../v12.1.0/search/variables_a.html | 37 + .../v12.1.0/search/variables_a.js | 5 + .../v12.1.0/search/variables_b.html | 37 + .../v12.1.0/search/variables_b.js | 4 + .../v12.1.0/search/variables_c.html | 37 + .../v12.1.0/search/variables_c.js | 4 + .../v12.1.0/search/variables_d.html | 37 + .../v12.1.0/search/variables_d.js | 13 + .../v12.1.0/search/variables_e.html | 37 + .../v12.1.0/search/variables_e.js | 7 + .../v12.1.0/search/variables_f.html | 37 + .../v12.1.0/search/variables_f.js | 4 + previous_versions/v12.1.0/sinv_8F90.html | 213 + previous_versions/v12.1.0/sinv_8F90.js | 5 + .../v12.1.0/sinv_8F90_source.html | 224 + .../v12.1.0/split__by__subset_8F90.html | 144 + .../v12.1.0/split__by__subset_8F90.js | 4 + .../split__by__subset_8F90_source.html | 203 + previous_versions/v12.1.0/splitbar.png | Bin 0 -> 314 bytes previous_versions/v12.1.0/standard_8F90.html | 269 ++ previous_versions/v12.1.0/standard_8F90.js | 6 + .../v12.1.0/standard_8F90_source.html | 387 ++ previous_versions/v12.1.0/strings_8F90.html | 471 +++ previous_versions/v12.1.0/strings_8F90.js | 8 + .../v12.1.0/strings_8F90_source.html | 507 +++ previous_versions/v12.1.0/stseq_8c.html | 312 ++ previous_versions/v12.1.0/stseq_8c.js | 6 + .../v12.1.0/stseq_8c_source.html | 556 +++ previous_versions/v12.1.0/sync_off.png | Bin 0 -> 853 bytes previous_versions/v12.1.0/sync_on.png | Bin 0 -> 845 bytes previous_versions/v12.1.0/tab_a.png | Bin 0 -> 142 bytes previous_versions/v12.1.0/tab_b.png | Bin 0 -> 169 bytes previous_versions/v12.1.0/tab_h.png | Bin 0 -> 177 bytes previous_versions/v12.1.0/tab_s.png | Bin 0 -> 184 bytes previous_versions/v12.1.0/tabs.css | 1 + previous_versions/v12.1.0/tankrcpt_8F90.html | 436 ++ previous_versions/v12.1.0/tankrcpt_8F90.js | 7 + .../v12.1.0/tankrcpt_8F90_source.html | 344 ++ previous_versions/v12.1.0/x4884_8F90.html | 263 ++ previous_versions/v12.1.0/x4884_8F90.js | 6 + .../v12.1.0/x4884_8F90_source.html | 182 + previous_versions/v12.1.0/xbfmg_8c.html | 238 ++ previous_versions/v12.1.0/xbfmg_8c.js | 5 + .../v12.1.0/xbfmg_8c_source.html | 319 ++ python/ncepbufr.html | 216 +- python/ncepbufr/bufr_mnemonics.html | 4 +- readbp_8F90.html | 4 +- readbp_8F90_source.html | 274 +- readmp_8F90.html | 2 +- readmp_8F90_source.html | 12 +- readwritemg_8F90.html | 42 +- readwritemg_8F90_source.html | 2123 +++++----- readwritesb_8F90.html | 32 +- readwritesb_8F90_source.html | 1775 ++++---- readwriteval_8F90.html | 218 +- readwriteval_8F90.js | 2 - readwriteval_8F90_source.html | 3608 ++++++++--------- restd_8c.html | 12 +- restd_8c_source.html | 199 +- rpseqs_8h.html | 319 ++ rpseqs_8h.js | 10 + rpseqs_8h_source.html | 124 + s013vals_8F90.html | 34 +- s013vals_8F90_source.html | 1942 +++++---- search/all_1.js | 40 +- search/all_10.js | 80 +- search/all_11.js | 94 +- search/all_12.js | 28 +- search/all_13.js | 93 +- search/all_14.js | 10 +- search/all_15.js | 22 +- search/all_16.js | 10 +- search/all_2.js | 181 +- search/all_3.js | 33 +- search/all_4.js | 16 +- search/all_5.js | 36 +- search/all_6.js | 70 +- search/all_7.js | 2 +- search/all_8.js | 287 +- search/all_9.js | 30 +- search/all_a.js | 16 +- search/all_b.js | 43 +- search/all_c.js | 244 +- search/all_d.js | 145 +- search/all_e.js | 36 +- search/all_f.js | 38 +- search/classes_0.js | 4 +- search/classes_1.js | 2 +- search/classes_2.js | 18 +- search/classes_3.js | 3 +- search/classes_4.js | 5 +- search/classes_5.js | 4 +- search/classes_6.js | 5 +- search/defines_0.js | 3 +- search/defines_1.js | 11 +- search/defines_2.js | 6 +- search/defines_3.js | 4 +- search/defines_4.js | 2 +- search/defines_5.js | 2 +- search/defines_6.html | 37 + search/defines_6.js | 4 + search/files_0.js | 6 +- search/files_1.js | 18 +- search/files_2.js | 22 +- search/files_3.js | 8 +- search/files_4.js | 2 +- search/files_5.js | 2 +- search/files_6.js | 2 +- search/files_7.js | 2 +- search/files_8.js | 2 +- search/files_9.js | 14 +- search/files_a.js | 4 +- search/files_b.js | 13 +- search/files_c.js | 12 +- search/files_d.js | 2 +- search/files_e.js | 4 +- search/functions_0.js | 18 +- search/functions_1.js | 24 +- search/functions_10.js | 78 +- search/functions_11.js | 6 +- search/functions_12.js | 89 +- search/functions_13.js | 20 +- search/functions_14.js | 4 +- search/functions_2.js | 94 +- search/functions_3.js | 23 +- search/functions_4.js | 14 +- search/functions_5.js | 10 +- search/functions_6.js | 68 +- search/functions_7.js | 2 +- search/functions_8.js | 146 +- search/functions_9.js | 2 +- search/functions_a.js | 6 +- search/functions_b.js | 36 +- search/functions_c.js | 59 +- search/functions_d.js | 32 +- search/functions_e.js | 34 +- search/functions_f.js | 62 +- search/namespaces_0.js | 6 +- search/namespaces_1.js | 82 +- search/namespaces_2.js | 2 +- search/pages_0.js | 2 +- search/pages_1.js | 2 +- search/pages_2.js | 2 +- search/pages_3.js | 2 +- search/searchdata.js | 4 +- search/variables_0.js | 2 +- search/variables_1.js | 4 +- search/variables_10.js | 2 +- search/variables_2.js | 65 +- search/variables_3.js | 13 +- search/variables_4.js | 137 +- search/variables_5.js | 26 +- search/variables_6.js | 16 +- search/variables_7.js | 37 +- search/variables_8.js | 102 +- search/variables_9.js | 84 +- search/variables_a.js | 4 +- search/variables_b.js | 3 +- search/variables_c.js | 2 +- search/variables_d.js | 20 +- search/variables_e.js | 8 +- search/variables_f.js | 2 +- sinv_8F90.html | 12 +- sinv_8F90_source.html | 216 +- split__by__subset_8F90.html | 2 +- split__by__subset_8F90_source.html | 19 +- standard_8F90.html | 2 +- standard_8F90_source.html | 36 +- strings_8F90.html | 6 +- strings_8F90_source.html | 14 +- stseq_8c.html | 209 +- stseq_8c.js | 2 + stseq_8c_source.html | 899 ++-- tankrcpt_8F90.html | 2 +- tankrcpt_8F90_source.html | 24 +- x4884_8F90.html | 6 +- x4884_8F90_source.html | 4 +- xbfmg_8c.html | 2 +- xbfmg_8c_source.html | 2 +- 975 files changed, 125943 insertions(+), 18170 deletions(-) create mode 100644 namespacemoda__mrgcom.html create mode 100644 namespacemoda__tabccc.html create mode 100644 previous_versions/v12.1.0/annotated.html create mode 100644 previous_versions/v12.1.0/annotated_dup.js create mode 100644 previous_versions/v12.1.0/apxdx_8F90.html create mode 100644 previous_versions/v12.1.0/apxdx_8F90.js create mode 100644 previous_versions/v12.1.0/apxdx_8F90_source.html create mode 100644 previous_versions/v12.1.0/arallocc_8c.html create mode 100644 previous_versions/v12.1.0/arallocc_8c.js create mode 100644 previous_versions/v12.1.0/arallocc_8c_source.html create mode 100644 previous_versions/v12.1.0/arallocf_8F90.html create mode 100644 previous_versions/v12.1.0/arallocf_8F90.js create mode 100644 previous_versions/v12.1.0/arallocf_8F90_source.html create mode 100644 previous_versions/v12.1.0/bc_s.png create mode 100644 previous_versions/v12.1.0/bdwn.png create mode 100644 previous_versions/v12.1.0/binv_8F90.html create mode 100644 previous_versions/v12.1.0/binv_8F90.js create mode 100644 previous_versions/v12.1.0/binv_8F90_source.html create mode 100644 previous_versions/v12.1.0/bitmaps_8F90.html create mode 100644 previous_versions/v12.1.0/bitmaps_8F90.js create mode 100644 previous_versions/v12.1.0/bitmaps_8F90_source.html create mode 100644 previous_versions/v12.1.0/blocks_8F90.html create mode 100644 previous_versions/v12.1.0/blocks_8F90.js create mode 100644 previous_versions/v12.1.0/blocks_8F90_source.html create mode 100644 previous_versions/v12.1.0/borts_8F90.html create mode 100644 previous_versions/v12.1.0/borts_8F90.js create mode 100644 previous_versions/v12.1.0/borts_8F90_source.html create mode 100644 previous_versions/v12.1.0/bufr__c2f__interface_8F90.html create mode 100644 previous_versions/v12.1.0/bufr__c2f__interface_8F90.js create mode 100644 previous_versions/v12.1.0/bufr__c2f__interface_8F90_source.html create mode 100644 previous_versions/v12.1.0/bufr__interface_8F90.html create mode 100644 previous_versions/v12.1.0/bufr__interface_8F90_source.html create mode 100644 previous_versions/v12.1.0/bufr__interface_8h.html create mode 100644 previous_versions/v12.1.0/bufr__interface_8h.js create mode 100644 previous_versions/v12.1.0/bufr__interface_8h_source.html create mode 100644 previous_versions/v12.1.0/bufrlib_8F90.html create mode 100644 previous_versions/v12.1.0/bufrlib_8F90_source.html create mode 100644 previous_versions/v12.1.0/bufrlib_8h.html create mode 100644 previous_versions/v12.1.0/bufrlib_8h.js create mode 100644 previous_versions/v12.1.0/bufrlib_8h_source.html create mode 100644 previous_versions/v12.1.0/cfe_8c.html create mode 100644 previous_versions/v12.1.0/cfe_8c.js create mode 100644 previous_versions/v12.1.0/cfe_8c_source.html create mode 100644 previous_versions/v12.1.0/cftbvs_8F90.html create mode 100644 previous_versions/v12.1.0/cftbvs_8F90.js create mode 100644 previous_versions/v12.1.0/cftbvs_8F90_source.html create mode 100644 previous_versions/v12.1.0/cidecode_8F90.html create mode 100644 previous_versions/v12.1.0/cidecode_8F90.js create mode 100644 previous_versions/v12.1.0/cidecode_8F90_source.html create mode 100644 previous_versions/v12.1.0/ciencode_8F90.html create mode 100644 previous_versions/v12.1.0/ciencode_8F90.js create mode 100644 previous_versions/v12.1.0/ciencode_8F90_source.html create mode 100644 previous_versions/v12.1.0/classes.html create mode 100644 previous_versions/v12.1.0/closed.png create mode 100644 previous_versions/v12.1.0/cmpbqm_8F90.html create mode 100644 previous_versions/v12.1.0/cmpbqm_8F90.js create mode 100644 previous_versions/v12.1.0/cmpbqm_8F90_source.html create mode 100644 previous_versions/v12.1.0/compress_8F90.html create mode 100644 previous_versions/v12.1.0/compress_8F90.js create mode 100644 previous_versions/v12.1.0/compress_8F90_source.html create mode 100644 previous_versions/v12.1.0/copydata_8F90.html create mode 100644 previous_versions/v12.1.0/copydata_8F90.js create mode 100644 previous_versions/v12.1.0/copydata_8F90_source.html create mode 100644 previous_versions/v12.1.0/cpmstabs_8c.html create mode 100644 previous_versions/v12.1.0/cpmstabs_8c.js create mode 100644 previous_versions/v12.1.0/cpmstabs_8c_source.html create mode 100644 previous_versions/v12.1.0/cread_8c.html create mode 100644 previous_versions/v12.1.0/cread_8c.js create mode 100644 previous_versions/v12.1.0/cread_8c_source.html create mode 100644 previous_versions/v12.1.0/cread_8h.html create mode 100644 previous_versions/v12.1.0/cread_8h.js create mode 100644 previous_versions/v12.1.0/cread_8h_source.html create mode 100644 previous_versions/v12.1.0/crwbmg_8c.html create mode 100644 previous_versions/v12.1.0/crwbmg_8c.js create mode 100644 previous_versions/v12.1.0/crwbmg_8c_source.html create mode 100644 previous_versions/v12.1.0/debufr_8F90.html create mode 100644 previous_versions/v12.1.0/debufr_8F90.js create mode 100644 previous_versions/v12.1.0/debufr_8F90_source.html create mode 100644 previous_versions/v12.1.0/debufr_8c.html create mode 100644 previous_versions/v12.1.0/debufr_8c.js create mode 100644 previous_versions/v12.1.0/debufr_8c_source.html create mode 100644 previous_versions/v12.1.0/dir_22e12ea4559d63fc79cb69a343f5f5b4.html create mode 100644 previous_versions/v12.1.0/dir_49e56c817e5e54854c35e136979f97ca.html create mode 100644 previous_versions/v12.1.0/dir_68267d1309a1af8e8297ef4c3efbcdba.html create mode 100644 previous_versions/v12.1.0/dir_7a6c296ee00f7c8711e279503c1d5b5f.html create mode 100644 previous_versions/v12.1.0/dir_cbdb8362360e11eafe2fa3bc74cf0ffd.html create mode 100644 previous_versions/v12.1.0/doc.png create mode 100644 previous_versions/v12.1.0/doxygen.css create mode 100644 previous_versions/v12.1.0/doxygen.svg create mode 100644 previous_versions/v12.1.0/dumpdata_8F90.html create mode 100644 previous_versions/v12.1.0/dumpdata_8F90.js create mode 100644 previous_versions/v12.1.0/dumpdata_8F90_source.html create mode 100644 previous_versions/v12.1.0/dxtable_8F90.html create mode 100644 previous_versions/v12.1.0/dxtable_8F90.js create mode 100644 previous_versions/v12.1.0/dxtable_8F90_source.html create mode 100644 previous_versions/v12.1.0/dynsections.js create mode 100644 previous_versions/v12.1.0/errwrt_8F90.html create mode 100644 previous_versions/v12.1.0/errwrt_8F90.js create mode 100644 previous_versions/v12.1.0/errwrt_8F90_source.html create mode 100644 previous_versions/v12.1.0/files.html create mode 100644 previous_versions/v12.1.0/files_dup.js create mode 100644 previous_versions/v12.1.0/folderclosed.png create mode 100644 previous_versions/v12.1.0/folderopen.png create mode 100644 previous_versions/v12.1.0/functions.html create mode 100644 previous_versions/v12.1.0/functions_func.html create mode 100644 previous_versions/v12.1.0/fxy_8F90.html create mode 100644 previous_versions/v12.1.0/fxy_8F90.js create mode 100644 previous_versions/v12.1.0/fxy_8F90_source.html create mode 100644 previous_versions/v12.1.0/gettab_8F90.html create mode 100644 previous_versions/v12.1.0/gettab_8F90.js create mode 100644 previous_versions/v12.1.0/gettab_8F90_source.html create mode 100644 previous_versions/v12.1.0/globals.html create mode 100644 previous_versions/v12.1.0/globals_b.html create mode 100644 previous_versions/v12.1.0/globals_c.html create mode 100644 previous_versions/v12.1.0/globals_d.html create mode 100644 previous_versions/v12.1.0/globals_defs.html create mode 100644 previous_versions/v12.1.0/globals_dup.js create mode 100644 previous_versions/v12.1.0/globals_e.html create mode 100644 previous_versions/v12.1.0/globals_f.html create mode 100644 previous_versions/v12.1.0/globals_func.html create mode 100644 previous_versions/v12.1.0/globals_func.js create mode 100644 previous_versions/v12.1.0/globals_func_b.html create mode 100644 previous_versions/v12.1.0/globals_func_c.html create mode 100644 previous_versions/v12.1.0/globals_func_d.html create mode 100644 previous_versions/v12.1.0/globals_func_e.html create mode 100644 previous_versions/v12.1.0/globals_func_f.html create mode 100644 previous_versions/v12.1.0/globals_func_g.html create mode 100644 previous_versions/v12.1.0/globals_func_h.html create mode 100644 previous_versions/v12.1.0/globals_func_i.html create mode 100644 previous_versions/v12.1.0/globals_func_j.html create mode 100644 previous_versions/v12.1.0/globals_func_l.html create mode 100644 previous_versions/v12.1.0/globals_func_m.html create mode 100644 previous_versions/v12.1.0/globals_func_n.html create mode 100644 previous_versions/v12.1.0/globals_func_o.html create mode 100644 previous_versions/v12.1.0/globals_func_p.html create mode 100644 previous_versions/v12.1.0/globals_func_r.html create mode 100644 previous_versions/v12.1.0/globals_func_s.html create mode 100644 previous_versions/v12.1.0/globals_func_t.html create mode 100644 previous_versions/v12.1.0/globals_func_u.html create mode 100644 previous_versions/v12.1.0/globals_func_w.html create mode 100644 previous_versions/v12.1.0/globals_func_x.html create mode 100644 previous_versions/v12.1.0/globals_g.html create mode 100644 previous_versions/v12.1.0/globals_h.html create mode 100644 previous_versions/v12.1.0/globals_i.html create mode 100644 previous_versions/v12.1.0/globals_j.html create mode 100644 previous_versions/v12.1.0/globals_l.html create mode 100644 previous_versions/v12.1.0/globals_m.html create mode 100644 previous_versions/v12.1.0/globals_n.html create mode 100644 previous_versions/v12.1.0/globals_o.html create mode 100644 previous_versions/v12.1.0/globals_p.html create mode 100644 previous_versions/v12.1.0/globals_r.html create mode 100644 previous_versions/v12.1.0/globals_s.html create mode 100644 previous_versions/v12.1.0/globals_t.html create mode 100644 previous_versions/v12.1.0/globals_u.html create mode 100644 previous_versions/v12.1.0/globals_v.html create mode 100644 previous_versions/v12.1.0/globals_vars.html create mode 100644 previous_versions/v12.1.0/globals_w.html create mode 100644 previous_versions/v12.1.0/globals_x.html create mode 100644 previous_versions/v12.1.0/icvidx_8c.html create mode 100644 previous_versions/v12.1.0/icvidx_8c.js create mode 100644 previous_versions/v12.1.0/icvidx_8c_source.html create mode 100644 previous_versions/v12.1.0/index.html create mode 100644 previous_versions/v12.1.0/interfacebufr__interface_1_1ccbfl__c.html create mode 100644 previous_versions/v12.1.0/interfacebufr__interface_1_1ccbfl__c.js create mode 100644 previous_versions/v12.1.0/interfacebufr__interface_1_1cobfl__c.html create mode 100644 previous_versions/v12.1.0/interfacebufr__interface_1_1cobfl__c.js create mode 100644 previous_versions/v12.1.0/interfacebufr__interface_1_1crbmg__c.html create mode 100644 previous_versions/v12.1.0/interfacebufr__interface_1_1crbmg__c.js create mode 100644 previous_versions/v12.1.0/interfacebufr__interface_1_1cwbmg__c.html create mode 100644 previous_versions/v12.1.0/interfacebufr__interface_1_1cwbmg__c.js rename interfacebufr__interface_1_1dlloctbf__c.html => previous_versions/v12.1.0/interfacebufr__interface_1_1dlloctbf__c.html (100%) rename interfacebufr__interface_1_1dlloctbf__c.js => previous_versions/v12.1.0/interfacebufr__interface_1_1dlloctbf__c.js (100%) create mode 100644 previous_versions/v12.1.0/interfacebufrlib_1_1arallocc__c.html create mode 100644 previous_versions/v12.1.0/interfacebufrlib_1_1arallocc__c.js create mode 100644 previous_versions/v12.1.0/interfacebufrlib_1_1ardllocc__c.html create mode 100644 previous_versions/v12.1.0/interfacebufrlib_1_1ardllocc__c.js create mode 100644 previous_versions/v12.1.0/interfacebufrlib_1_1backbufr__c.html create mode 100644 previous_versions/v12.1.0/interfacebufrlib_1_1backbufr__c.js create mode 100644 previous_versions/v12.1.0/interfacebufrlib_1_1cewind__c.html create mode 100644 previous_versions/v12.1.0/interfacebufrlib_1_1cewind__c.js create mode 100644 previous_versions/v12.1.0/interfacebufrlib_1_1closfb__c.html create mode 100644 previous_versions/v12.1.0/interfacebufrlib_1_1closfb__c.js create mode 100644 previous_versions/v12.1.0/interfacebufrlib_1_1cpmstabs__c.html create mode 100644 previous_versions/v12.1.0/interfacebufrlib_1_1cpmstabs__c.js create mode 100644 previous_versions/v12.1.0/interfacebufrlib_1_1crdbufr__c.html create mode 100644 previous_versions/v12.1.0/interfacebufrlib_1_1crdbufr__c.js create mode 100644 previous_versions/v12.1.0/interfacebufrlib_1_1cwrbufr__c.html create mode 100644 previous_versions/v12.1.0/interfacebufrlib_1_1cwrbufr__c.js create mode 100644 previous_versions/v12.1.0/interfacebufrlib_1_1icvidx__c.html create mode 100644 previous_versions/v12.1.0/interfacebufrlib_1_1icvidx__c.js create mode 100644 previous_versions/v12.1.0/interfacebufrlib_1_1inittbf__c.html create mode 100644 previous_versions/v12.1.0/interfacebufrlib_1_1inittbf__c.js create mode 100644 previous_versions/v12.1.0/interfacebufrlib_1_1openab__c.html create mode 100644 previous_versions/v12.1.0/interfacebufrlib_1_1openab__c.js create mode 100644 previous_versions/v12.1.0/interfacebufrlib_1_1openrb__c.html create mode 100644 previous_versions/v12.1.0/interfacebufrlib_1_1openrb__c.js create mode 100644 previous_versions/v12.1.0/interfacebufrlib_1_1openwb__c.html create mode 100644 previous_versions/v12.1.0/interfacebufrlib_1_1openwb__c.js create mode 100644 previous_versions/v12.1.0/interfacebufrlib_1_1restd__c.html create mode 100644 previous_versions/v12.1.0/interfacebufrlib_1_1restd__c.js create mode 100644 previous_versions/v12.1.0/interfacebufrlib_1_1sorttbf__c.html create mode 100644 previous_versions/v12.1.0/interfacebufrlib_1_1sorttbf__c.js create mode 100644 previous_versions/v12.1.0/interfacebufrlib_1_1srchtbf__c.html create mode 100644 previous_versions/v12.1.0/interfacebufrlib_1_1srchtbf__c.js create mode 100644 previous_versions/v12.1.0/interfacebufrlib_1_1strtbfe__c.html create mode 100644 previous_versions/v12.1.0/interfacebufrlib_1_1strtbfe__c.js create mode 100644 previous_versions/v12.1.0/interfacebufrlib_1_1stseq__c.html create mode 100644 previous_versions/v12.1.0/interfacebufrlib_1_1stseq__c.js create mode 100644 previous_versions/v12.1.0/jquery.js create mode 100644 previous_versions/v12.1.0/jumplink_8F90.html create mode 100644 previous_versions/v12.1.0/jumplink_8F90.js create mode 100644 previous_versions/v12.1.0/jumplink_8F90_source.html create mode 100644 previous_versions/v12.1.0/mastertable_8F90.html create mode 100644 previous_versions/v12.1.0/mastertable_8F90.js create mode 100644 previous_versions/v12.1.0/mastertable_8F90_source.html create mode 100644 previous_versions/v12.1.0/md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html create mode 100644 previous_versions/v12.1.0/md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_dx_tables.html create mode 100644 previous_versions/v12.1.0/md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_master_tables.html create mode 100644 previous_versions/v12.1.0/md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_utils.html create mode 100644 previous_versions/v12.1.0/memmsgs_8F90.html create mode 100644 previous_versions/v12.1.0/memmsgs_8F90.js create mode 100644 previous_versions/v12.1.0/memmsgs_8F90_source.html create mode 100644 previous_versions/v12.1.0/menu.js create mode 100644 previous_versions/v12.1.0/menudata.js create mode 100644 previous_versions/v12.1.0/misc_8F90.html create mode 100644 previous_versions/v12.1.0/misc_8F90.js create mode 100644 previous_versions/v12.1.0/misc_8F90_source.html create mode 100644 previous_versions/v12.1.0/missing_8F90.html create mode 100644 previous_versions/v12.1.0/missing_8F90.js create mode 100644 previous_versions/v12.1.0/missing_8F90_source.html create mode 100644 previous_versions/v12.1.0/modules__arrs_8F90.html create mode 100644 previous_versions/v12.1.0/modules__arrs_8F90.js create mode 100644 previous_versions/v12.1.0/modules__arrs_8F90_source.html create mode 100644 previous_versions/v12.1.0/modules__vars_8F90.html create mode 100644 previous_versions/v12.1.0/modules__vars_8F90.js create mode 100644 previous_versions/v12.1.0/modules__vars_8F90_source.html create mode 100644 previous_versions/v12.1.0/mstabs_8h.html create mode 100644 previous_versions/v12.1.0/mstabs_8h.js create mode 100644 previous_versions/v12.1.0/mstabs_8h_source.html create mode 100644 previous_versions/v12.1.0/namespacebufr__c2f__interface.html create mode 100644 previous_versions/v12.1.0/namespacebufr__interface.html create mode 100644 previous_versions/v12.1.0/namespacebufr__interface.js create mode 100644 previous_versions/v12.1.0/namespacebufrlib.html create mode 100644 previous_versions/v12.1.0/namespacebufrlib.js create mode 100644 previous_versions/v12.1.0/namespacemembers.html create mode 100644 previous_versions/v12.1.0/namespacemembers_c.html create mode 100644 previous_versions/v12.1.0/namespacemembers_d.html create mode 100644 previous_versions/v12.1.0/namespacemembers_dup.js create mode 100644 previous_versions/v12.1.0/namespacemembers_e.html create mode 100644 previous_versions/v12.1.0/namespacemembers_f.html create mode 100644 previous_versions/v12.1.0/namespacemembers_func.html create mode 100644 previous_versions/v12.1.0/namespacemembers_g.html create mode 100644 previous_versions/v12.1.0/namespacemembers_i.html create mode 100644 previous_versions/v12.1.0/namespacemembers_j.html create mode 100644 previous_versions/v12.1.0/namespacemembers_k.html create mode 100644 previous_versions/v12.1.0/namespacemembers_l.html create mode 100644 previous_versions/v12.1.0/namespacemembers_m.html create mode 100644 previous_versions/v12.1.0/namespacemembers_n.html create mode 100644 previous_versions/v12.1.0/namespacemembers_o.html create mode 100644 previous_versions/v12.1.0/namespacemembers_p.html create mode 100644 previous_versions/v12.1.0/namespacemembers_r.html create mode 100644 previous_versions/v12.1.0/namespacemembers_s.html create mode 100644 previous_versions/v12.1.0/namespacemembers_t.html create mode 100644 previous_versions/v12.1.0/namespacemembers_u.html create mode 100644 previous_versions/v12.1.0/namespacemembers_v.html create mode 100644 previous_versions/v12.1.0/namespacemembers_vars.html create mode 100644 previous_versions/v12.1.0/namespacemembers_w.html create mode 100644 previous_versions/v12.1.0/namespacemembers_x.html create mode 100644 previous_versions/v12.1.0/namespacemoda__bitbuf.html create mode 100644 previous_versions/v12.1.0/namespacemoda__bitmaps.html create mode 100644 previous_versions/v12.1.0/namespacemoda__bufrmg.html create mode 100644 previous_versions/v12.1.0/namespacemoda__bufrsr.html create mode 100644 previous_versions/v12.1.0/namespacemoda__comprs.html create mode 100644 previous_versions/v12.1.0/namespacemoda__comprx.html create mode 100644 previous_versions/v12.1.0/namespacemoda__dscach.html create mode 100644 previous_versions/v12.1.0/namespacemoda__h4wlc.html create mode 100644 previous_versions/v12.1.0/namespacemoda__idrdm.html create mode 100644 previous_versions/v12.1.0/namespacemoda__ival.html create mode 100644 previous_versions/v12.1.0/namespacemoda__ivttmp.html create mode 100644 previous_versions/v12.1.0/namespacemoda__lushr.html create mode 100644 previous_versions/v12.1.0/namespacemoda__mgwa.html create mode 100644 previous_versions/v12.1.0/namespacemoda__mgwb.html create mode 100644 previous_versions/v12.1.0/namespacemoda__msgcmp.html create mode 100644 previous_versions/v12.1.0/namespacemoda__msgcwd.html create mode 100644 previous_versions/v12.1.0/namespacemoda__msglim.html create mode 100644 previous_versions/v12.1.0/namespacemoda__msgmem.html create mode 100644 previous_versions/v12.1.0/namespacemoda__msgstd.html create mode 100644 previous_versions/v12.1.0/namespacemoda__mstabs.html create mode 100644 previous_versions/v12.1.0/namespacemoda__nmikrp.html create mode 100644 previous_versions/v12.1.0/namespacemoda__nrv203.html create mode 100644 previous_versions/v12.1.0/namespacemoda__nulbfr.html create mode 100644 previous_versions/v12.1.0/namespacemoda__rdmtb.html create mode 100644 previous_versions/v12.1.0/namespacemoda__rlccmn.html create mode 100644 previous_versions/v12.1.0/namespacemoda__s01cm.html create mode 100644 previous_versions/v12.1.0/namespacemoda__s3list.html create mode 100644 previous_versions/v12.1.0/namespacemoda__sc3bfr.html create mode 100644 previous_versions/v12.1.0/namespacemoda__stbfr.html create mode 100644 previous_versions/v12.1.0/namespacemoda__stcode.html create mode 100644 previous_versions/v12.1.0/namespacemoda__tababd.html create mode 100644 previous_versions/v12.1.0/namespacemoda__tablef.html create mode 100644 previous_versions/v12.1.0/namespacemoda__tables.html create mode 100644 previous_versions/v12.1.0/namespacemoda__tnkrcp.html create mode 100644 previous_versions/v12.1.0/namespacemoda__ufbcpl.html create mode 100644 previous_versions/v12.1.0/namespacemoda__unptyp.html create mode 100644 previous_versions/v12.1.0/namespacemoda__usrbit.html create mode 100644 previous_versions/v12.1.0/namespacemoda__usrint.html create mode 100644 previous_versions/v12.1.0/namespacemoda__usrtmp.html create mode 100644 previous_versions/v12.1.0/namespacemoda__xtab.html create mode 100644 previous_versions/v12.1.0/namespaces.html create mode 100644 previous_versions/v12.1.0/namespaces_dup.js create mode 100644 previous_versions/v12.1.0/namespaceshare__table__info.html create mode 100644 previous_versions/v12.1.0/nav_f.png create mode 100644 previous_versions/v12.1.0/nav_g.png create mode 100644 previous_versions/v12.1.0/nav_h.png create mode 100644 previous_versions/v12.1.0/navtree.css create mode 100644 previous_versions/v12.1.0/navtree.js create mode 100644 previous_versions/v12.1.0/navtreedata.js create mode 100644 previous_versions/v12.1.0/navtreeindex0.js create mode 100644 previous_versions/v12.1.0/navtreeindex1.js create mode 100644 previous_versions/v12.1.0/navtreeindex2.js create mode 100644 previous_versions/v12.1.0/navtreeindex3.js create mode 100644 previous_versions/v12.1.0/navtreeindex4.js create mode 100644 previous_versions/v12.1.0/navtreeindex5.js create mode 100644 previous_versions/v12.1.0/open.png create mode 100644 previous_versions/v12.1.0/openbt_8F90.html create mode 100644 previous_versions/v12.1.0/openbt_8F90.js create mode 100644 previous_versions/v12.1.0/openbt_8F90_source.html create mode 100644 previous_versions/v12.1.0/openclosebf_8F90.html create mode 100644 previous_versions/v12.1.0/openclosebf_8F90.js create mode 100644 previous_versions/v12.1.0/openclosebf_8F90_source.html create mode 100644 previous_versions/v12.1.0/pages.html create mode 100644 previous_versions/v12.1.0/python/index.html create mode 100644 previous_versions/v12.1.0/python/ncepbufr.html create mode 100644 previous_versions/v12.1.0/python/ncepbufr/bufr_mnemonics.html create mode 100644 previous_versions/v12.1.0/python/search.js create mode 100644 previous_versions/v12.1.0/readbp_8F90.html create mode 100644 previous_versions/v12.1.0/readbp_8F90.js create mode 100644 previous_versions/v12.1.0/readbp_8F90_source.html create mode 100644 previous_versions/v12.1.0/readmp_8F90.html create mode 100644 previous_versions/v12.1.0/readmp_8F90.js create mode 100644 previous_versions/v12.1.0/readmp_8F90_source.html create mode 100644 previous_versions/v12.1.0/readwritemg_8F90.html create mode 100644 previous_versions/v12.1.0/readwritemg_8F90.js create mode 100644 previous_versions/v12.1.0/readwritemg_8F90_source.html create mode 100644 previous_versions/v12.1.0/readwritesb_8F90.html create mode 100644 previous_versions/v12.1.0/readwritesb_8F90.js create mode 100644 previous_versions/v12.1.0/readwritesb_8F90_source.html create mode 100644 previous_versions/v12.1.0/readwriteval_8F90.html create mode 100644 previous_versions/v12.1.0/readwriteval_8F90.js create mode 100644 previous_versions/v12.1.0/readwriteval_8F90_source.html create mode 100644 previous_versions/v12.1.0/resize.js create mode 100644 previous_versions/v12.1.0/restd_8c.html create mode 100644 previous_versions/v12.1.0/restd_8c.js create mode 100644 previous_versions/v12.1.0/restd_8c_source.html create mode 100644 previous_versions/v12.1.0/s013vals_8F90.html create mode 100644 previous_versions/v12.1.0/s013vals_8F90.js create mode 100644 previous_versions/v12.1.0/s013vals_8F90_source.html create mode 100644 previous_versions/v12.1.0/search/all_0.html create mode 100644 previous_versions/v12.1.0/search/all_0.js create mode 100644 previous_versions/v12.1.0/search/all_1.html create mode 100644 previous_versions/v12.1.0/search/all_1.js create mode 100644 previous_versions/v12.1.0/search/all_10.html create mode 100644 previous_versions/v12.1.0/search/all_10.js create mode 100644 previous_versions/v12.1.0/search/all_11.html create mode 100644 previous_versions/v12.1.0/search/all_11.js create mode 100644 previous_versions/v12.1.0/search/all_12.html create mode 100644 previous_versions/v12.1.0/search/all_12.js create mode 100644 previous_versions/v12.1.0/search/all_13.html create mode 100644 previous_versions/v12.1.0/search/all_13.js create mode 100644 previous_versions/v12.1.0/search/all_14.html create mode 100644 previous_versions/v12.1.0/search/all_14.js create mode 100644 previous_versions/v12.1.0/search/all_15.html create mode 100644 previous_versions/v12.1.0/search/all_15.js create mode 100644 previous_versions/v12.1.0/search/all_16.html create mode 100644 previous_versions/v12.1.0/search/all_16.js create mode 100644 previous_versions/v12.1.0/search/all_2.html create mode 100644 previous_versions/v12.1.0/search/all_2.js create mode 100644 previous_versions/v12.1.0/search/all_3.html create mode 100644 previous_versions/v12.1.0/search/all_3.js create mode 100644 previous_versions/v12.1.0/search/all_4.html create mode 100644 previous_versions/v12.1.0/search/all_4.js create mode 100644 previous_versions/v12.1.0/search/all_5.html create mode 100644 previous_versions/v12.1.0/search/all_5.js create mode 100644 previous_versions/v12.1.0/search/all_6.html create mode 100644 previous_versions/v12.1.0/search/all_6.js create mode 100644 previous_versions/v12.1.0/search/all_7.html create mode 100644 previous_versions/v12.1.0/search/all_7.js create mode 100644 previous_versions/v12.1.0/search/all_8.html create mode 100644 previous_versions/v12.1.0/search/all_8.js create mode 100644 previous_versions/v12.1.0/search/all_9.html create mode 100644 previous_versions/v12.1.0/search/all_9.js create mode 100644 previous_versions/v12.1.0/search/all_a.html create mode 100644 previous_versions/v12.1.0/search/all_a.js create mode 100644 previous_versions/v12.1.0/search/all_b.html create mode 100644 previous_versions/v12.1.0/search/all_b.js create mode 100644 previous_versions/v12.1.0/search/all_c.html create mode 100644 previous_versions/v12.1.0/search/all_c.js create mode 100644 previous_versions/v12.1.0/search/all_d.html create mode 100644 previous_versions/v12.1.0/search/all_d.js create mode 100644 previous_versions/v12.1.0/search/all_e.html create mode 100644 previous_versions/v12.1.0/search/all_e.js create mode 100644 previous_versions/v12.1.0/search/all_f.html create mode 100644 previous_versions/v12.1.0/search/all_f.js create mode 100644 previous_versions/v12.1.0/search/classes_0.html create mode 100644 previous_versions/v12.1.0/search/classes_0.js create mode 100644 previous_versions/v12.1.0/search/classes_1.html create mode 100644 previous_versions/v12.1.0/search/classes_1.js create mode 100644 previous_versions/v12.1.0/search/classes_2.html create mode 100644 previous_versions/v12.1.0/search/classes_2.js create mode 100644 previous_versions/v12.1.0/search/classes_3.html create mode 100644 previous_versions/v12.1.0/search/classes_3.js create mode 100644 previous_versions/v12.1.0/search/classes_4.html create mode 100644 previous_versions/v12.1.0/search/classes_4.js create mode 100644 previous_versions/v12.1.0/search/classes_5.html create mode 100644 previous_versions/v12.1.0/search/classes_5.js create mode 100644 previous_versions/v12.1.0/search/classes_6.html create mode 100644 previous_versions/v12.1.0/search/classes_6.js rename {search => previous_versions/v12.1.0/search}/classes_7.html (100%) rename {search => previous_versions/v12.1.0/search}/classes_7.js (100%) create mode 100644 previous_versions/v12.1.0/search/close.svg create mode 100644 previous_versions/v12.1.0/search/defines_0.html create mode 100644 previous_versions/v12.1.0/search/defines_0.js create mode 100644 previous_versions/v12.1.0/search/defines_1.html create mode 100644 previous_versions/v12.1.0/search/defines_1.js create mode 100644 previous_versions/v12.1.0/search/defines_2.html create mode 100644 previous_versions/v12.1.0/search/defines_2.js create mode 100644 previous_versions/v12.1.0/search/defines_3.html create mode 100644 previous_versions/v12.1.0/search/defines_3.js create mode 100644 previous_versions/v12.1.0/search/defines_4.html create mode 100644 previous_versions/v12.1.0/search/defines_4.js create mode 100644 previous_versions/v12.1.0/search/defines_5.html create mode 100644 previous_versions/v12.1.0/search/defines_5.js create mode 100644 previous_versions/v12.1.0/search/files_0.html create mode 100644 previous_versions/v12.1.0/search/files_0.js create mode 100644 previous_versions/v12.1.0/search/files_1.html create mode 100644 previous_versions/v12.1.0/search/files_1.js create mode 100644 previous_versions/v12.1.0/search/files_2.html create mode 100644 previous_versions/v12.1.0/search/files_2.js create mode 100644 previous_versions/v12.1.0/search/files_3.html create mode 100644 previous_versions/v12.1.0/search/files_3.js create mode 100644 previous_versions/v12.1.0/search/files_4.html create mode 100644 previous_versions/v12.1.0/search/files_4.js create mode 100644 previous_versions/v12.1.0/search/files_5.html create mode 100644 previous_versions/v12.1.0/search/files_5.js create mode 100644 previous_versions/v12.1.0/search/files_6.html create mode 100644 previous_versions/v12.1.0/search/files_6.js create mode 100644 previous_versions/v12.1.0/search/files_7.html create mode 100644 previous_versions/v12.1.0/search/files_7.js create mode 100644 previous_versions/v12.1.0/search/files_8.html create mode 100644 previous_versions/v12.1.0/search/files_8.js create mode 100644 previous_versions/v12.1.0/search/files_9.html create mode 100644 previous_versions/v12.1.0/search/files_9.js create mode 100644 previous_versions/v12.1.0/search/files_a.html create mode 100644 previous_versions/v12.1.0/search/files_a.js create mode 100644 previous_versions/v12.1.0/search/files_b.html create mode 100644 previous_versions/v12.1.0/search/files_b.js create mode 100644 previous_versions/v12.1.0/search/files_c.html create mode 100644 previous_versions/v12.1.0/search/files_c.js create mode 100644 previous_versions/v12.1.0/search/files_d.html create mode 100644 previous_versions/v12.1.0/search/files_d.js create mode 100644 previous_versions/v12.1.0/search/files_e.html create mode 100644 previous_versions/v12.1.0/search/files_e.js create mode 100644 previous_versions/v12.1.0/search/functions_0.html create mode 100644 previous_versions/v12.1.0/search/functions_0.js create mode 100644 previous_versions/v12.1.0/search/functions_1.html create mode 100644 previous_versions/v12.1.0/search/functions_1.js create mode 100644 previous_versions/v12.1.0/search/functions_10.html create mode 100644 previous_versions/v12.1.0/search/functions_10.js create mode 100644 previous_versions/v12.1.0/search/functions_11.html create mode 100644 previous_versions/v12.1.0/search/functions_11.js create mode 100644 previous_versions/v12.1.0/search/functions_12.html create mode 100644 previous_versions/v12.1.0/search/functions_12.js create mode 100644 previous_versions/v12.1.0/search/functions_13.html create mode 100644 previous_versions/v12.1.0/search/functions_13.js create mode 100644 previous_versions/v12.1.0/search/functions_14.html create mode 100644 previous_versions/v12.1.0/search/functions_14.js create mode 100644 previous_versions/v12.1.0/search/functions_2.html create mode 100644 previous_versions/v12.1.0/search/functions_2.js create mode 100644 previous_versions/v12.1.0/search/functions_3.html create mode 100644 previous_versions/v12.1.0/search/functions_3.js create mode 100644 previous_versions/v12.1.0/search/functions_4.html create mode 100644 previous_versions/v12.1.0/search/functions_4.js create mode 100644 previous_versions/v12.1.0/search/functions_5.html create mode 100644 previous_versions/v12.1.0/search/functions_5.js create mode 100644 previous_versions/v12.1.0/search/functions_6.html create mode 100644 previous_versions/v12.1.0/search/functions_6.js create mode 100644 previous_versions/v12.1.0/search/functions_7.html create mode 100644 previous_versions/v12.1.0/search/functions_7.js create mode 100644 previous_versions/v12.1.0/search/functions_8.html create mode 100644 previous_versions/v12.1.0/search/functions_8.js create mode 100644 previous_versions/v12.1.0/search/functions_9.html create mode 100644 previous_versions/v12.1.0/search/functions_9.js create mode 100644 previous_versions/v12.1.0/search/functions_a.html create mode 100644 previous_versions/v12.1.0/search/functions_a.js create mode 100644 previous_versions/v12.1.0/search/functions_b.html create mode 100644 previous_versions/v12.1.0/search/functions_b.js create mode 100644 previous_versions/v12.1.0/search/functions_c.html create mode 100644 previous_versions/v12.1.0/search/functions_c.js create mode 100644 previous_versions/v12.1.0/search/functions_d.html create mode 100644 previous_versions/v12.1.0/search/functions_d.js create mode 100644 previous_versions/v12.1.0/search/functions_e.html create mode 100644 previous_versions/v12.1.0/search/functions_e.js create mode 100644 previous_versions/v12.1.0/search/functions_f.html create mode 100644 previous_versions/v12.1.0/search/functions_f.js create mode 100644 previous_versions/v12.1.0/search/mag_sel.svg create mode 100644 previous_versions/v12.1.0/search/namespaces_0.html create mode 100644 previous_versions/v12.1.0/search/namespaces_0.js create mode 100644 previous_versions/v12.1.0/search/namespaces_1.html create mode 100644 previous_versions/v12.1.0/search/namespaces_1.js create mode 100644 previous_versions/v12.1.0/search/namespaces_2.html create mode 100644 previous_versions/v12.1.0/search/namespaces_2.js create mode 100644 previous_versions/v12.1.0/search/nomatches.html create mode 100644 previous_versions/v12.1.0/search/pages_0.html create mode 100644 previous_versions/v12.1.0/search/pages_0.js create mode 100644 previous_versions/v12.1.0/search/pages_1.html create mode 100644 previous_versions/v12.1.0/search/pages_1.js create mode 100644 previous_versions/v12.1.0/search/pages_2.html create mode 100644 previous_versions/v12.1.0/search/pages_2.js create mode 100644 previous_versions/v12.1.0/search/pages_3.html create mode 100644 previous_versions/v12.1.0/search/pages_3.js create mode 100644 previous_versions/v12.1.0/search/search.css create mode 100644 previous_versions/v12.1.0/search/search.js create mode 100644 previous_versions/v12.1.0/search/search_l.png create mode 100644 previous_versions/v12.1.0/search/search_m.png create mode 100644 previous_versions/v12.1.0/search/search_r.png create mode 100644 previous_versions/v12.1.0/search/searchdata.js create mode 100644 previous_versions/v12.1.0/search/variables_0.html create mode 100644 previous_versions/v12.1.0/search/variables_0.js create mode 100644 previous_versions/v12.1.0/search/variables_1.html create mode 100644 previous_versions/v12.1.0/search/variables_1.js create mode 100644 previous_versions/v12.1.0/search/variables_10.html create mode 100644 previous_versions/v12.1.0/search/variables_10.js create mode 100644 previous_versions/v12.1.0/search/variables_2.html create mode 100644 previous_versions/v12.1.0/search/variables_2.js create mode 100644 previous_versions/v12.1.0/search/variables_3.html create mode 100644 previous_versions/v12.1.0/search/variables_3.js create mode 100644 previous_versions/v12.1.0/search/variables_4.html create mode 100644 previous_versions/v12.1.0/search/variables_4.js create mode 100644 previous_versions/v12.1.0/search/variables_5.html create mode 100644 previous_versions/v12.1.0/search/variables_5.js create mode 100644 previous_versions/v12.1.0/search/variables_6.html create mode 100644 previous_versions/v12.1.0/search/variables_6.js create mode 100644 previous_versions/v12.1.0/search/variables_7.html create mode 100644 previous_versions/v12.1.0/search/variables_7.js create mode 100644 previous_versions/v12.1.0/search/variables_8.html create mode 100644 previous_versions/v12.1.0/search/variables_8.js create mode 100644 previous_versions/v12.1.0/search/variables_9.html create mode 100644 previous_versions/v12.1.0/search/variables_9.js create mode 100644 previous_versions/v12.1.0/search/variables_a.html create mode 100644 previous_versions/v12.1.0/search/variables_a.js create mode 100644 previous_versions/v12.1.0/search/variables_b.html create mode 100644 previous_versions/v12.1.0/search/variables_b.js create mode 100644 previous_versions/v12.1.0/search/variables_c.html create mode 100644 previous_versions/v12.1.0/search/variables_c.js create mode 100644 previous_versions/v12.1.0/search/variables_d.html create mode 100644 previous_versions/v12.1.0/search/variables_d.js create mode 100644 previous_versions/v12.1.0/search/variables_e.html create mode 100644 previous_versions/v12.1.0/search/variables_e.js create mode 100644 previous_versions/v12.1.0/search/variables_f.html create mode 100644 previous_versions/v12.1.0/search/variables_f.js create mode 100644 previous_versions/v12.1.0/sinv_8F90.html create mode 100644 previous_versions/v12.1.0/sinv_8F90.js create mode 100644 previous_versions/v12.1.0/sinv_8F90_source.html create mode 100644 previous_versions/v12.1.0/split__by__subset_8F90.html create mode 100644 previous_versions/v12.1.0/split__by__subset_8F90.js create mode 100644 previous_versions/v12.1.0/split__by__subset_8F90_source.html create mode 100644 previous_versions/v12.1.0/splitbar.png create mode 100644 previous_versions/v12.1.0/standard_8F90.html create mode 100644 previous_versions/v12.1.0/standard_8F90.js create mode 100644 previous_versions/v12.1.0/standard_8F90_source.html create mode 100644 previous_versions/v12.1.0/strings_8F90.html create mode 100644 previous_versions/v12.1.0/strings_8F90.js create mode 100644 previous_versions/v12.1.0/strings_8F90_source.html create mode 100644 previous_versions/v12.1.0/stseq_8c.html create mode 100644 previous_versions/v12.1.0/stseq_8c.js create mode 100644 previous_versions/v12.1.0/stseq_8c_source.html create mode 100644 previous_versions/v12.1.0/sync_off.png create mode 100644 previous_versions/v12.1.0/sync_on.png create mode 100644 previous_versions/v12.1.0/tab_a.png create mode 100644 previous_versions/v12.1.0/tab_b.png create mode 100644 previous_versions/v12.1.0/tab_h.png create mode 100644 previous_versions/v12.1.0/tab_s.png create mode 100644 previous_versions/v12.1.0/tabs.css create mode 100644 previous_versions/v12.1.0/tankrcpt_8F90.html create mode 100644 previous_versions/v12.1.0/tankrcpt_8F90.js create mode 100644 previous_versions/v12.1.0/tankrcpt_8F90_source.html create mode 100644 previous_versions/v12.1.0/x4884_8F90.html create mode 100644 previous_versions/v12.1.0/x4884_8F90.js create mode 100644 previous_versions/v12.1.0/x4884_8F90_source.html create mode 100644 previous_versions/v12.1.0/xbfmg_8c.html create mode 100644 previous_versions/v12.1.0/xbfmg_8c.js create mode 100644 previous_versions/v12.1.0/xbfmg_8c_source.html create mode 100644 rpseqs_8h.html create mode 100644 rpseqs_8h.js create mode 100644 rpseqs_8h_source.html create mode 100644 search/defines_6.html create mode 100644 search/defines_6.js diff --git a/annotated.html b/annotated.html index 83146400f..06d135bfe 100644 --- a/annotated.html +++ b/annotated.html @@ -26,7 +26,7 @@
NCEPLIBS-bufr -  12.1.0 +  12.2.0
@@ -93,26 +93,25 @@  Ccobfl_c  Ccrbmg_c  Ccwbmg_c - Cdlloctbf_c - NbufrlibWrap C NCEPLIBS-bufr functions so they can be called from within the Fortran part of the library - Carallocc_c - Cardllocc_c - Cbackbufr_c - Ccewind_c - Cclosfb_c - Ccpmstabs_c - Ccrdbufr_c - Ccwrbufr_c - Cicvidx_c - Cinittbf_c - Copenab_c - Copenrb_c - Copenwb_c - Crestd_c - Csorttbf_c - Csrchtbf_c - Cstrtbfe_c - Cstseq_c + NbufrlibWrap C NCEPLIBS-bufr functions so they can be called from within the Fortran part of the library + Carallocc_c + Cardllocc_c + Cbackbufr_c + Ccewind_c + Cclosfb_c + Ccpmstabs_c + Ccrdbufr_c + Ccwrbufr_c + Cicvidx_c + Cinittbf_c + Copenab_c + Copenrb_c + Copenwb_c + Crestd_c + Csorttbf_c + Csrchtbf_c + Cstrtbfe_c + Cstseq_c diff --git a/annotated_dup.js b/annotated_dup.js index f73ada25d..1fbbce08a 100644 --- a/annotated_dup.js +++ b/annotated_dup.js @@ -4,8 +4,7 @@ var annotated_dup = [ "ccbfl_c", "interfacebufr__interface_1_1ccbfl__c.html", "interfacebufr__interface_1_1ccbfl__c" ], [ "cobfl_c", "interfacebufr__interface_1_1cobfl__c.html", "interfacebufr__interface_1_1cobfl__c" ], [ "crbmg_c", "interfacebufr__interface_1_1crbmg__c.html", "interfacebufr__interface_1_1crbmg__c" ], - [ "cwbmg_c", "interfacebufr__interface_1_1cwbmg__c.html", "interfacebufr__interface_1_1cwbmg__c" ], - [ "dlloctbf_c", "interfacebufr__interface_1_1dlloctbf__c.html", "interfacebufr__interface_1_1dlloctbf__c" ] + [ "cwbmg_c", "interfacebufr__interface_1_1cwbmg__c.html", "interfacebufr__interface_1_1cwbmg__c" ] ] ], [ "bufrlib", "namespacebufrlib.html", [ [ "arallocc_c", "interfacebufrlib_1_1arallocc__c.html", "interfacebufrlib_1_1arallocc__c" ], diff --git a/apxdx_8F90.html b/apxdx_8F90.html index d57ace5e5..ba97788f4 100644 --- a/apxdx_8F90.html +++ b/apxdx_8F90.html @@ -26,7 +26,7 @@
NCEPLIBS-bufr -  12.1.0 +  12.2.0
diff --git a/apxdx_8F90_source.html b/apxdx_8F90_source.html index 6bd222291..2349da7c2 100644 --- a/apxdx_8F90_source.html +++ b/apxdx_8F90_source.html @@ -26,7 +26,7 @@
NCEPLIBS-bufr -  12.1.0 +  12.2.0
@@ -103,19 +103,19 @@
34  narg = command_argument_count()
35  if ( narg /= 2 ) then
36  print *,'Usage: apxdx BUFRfile DXtable'
-
37  call exit(1)
+
37  stop 1
38  endif
39  call get_command_argument( 1, cbffil )
40  inquire ( file = cbffil, exist = exists )
41  if ( .not. exists ) then
42  print *,'Specified BUFR file ' // trim(cbffil) // ' does not exist'
-
43  call exit(2)
+
43  stop 2
44  endif
45  call get_command_argument( 2, cdxtbl )
46  inquire ( file = cdxtbl, exist = exists )
47  if ( .not. exists ) then
48  print *,'Specified DX table ' // trim(cdxtbl) // ' does not exist'
-
49  call exit(3)
+
49  stop 3
50  endif
51 
52  ! Read the user DX table into the NCEPLIBS-bufr library.
@@ -137,9 +137,9 @@
68  stop
69 end program apxdx
program apxdx
Generate BUFR messages corresponding to a given DX BUFR table and append them to a given BUFR file.
Definition: apxdx.F90:22
-
recursive subroutine wrdxtb(lundx, lunot)
Generate one or more BUFR messages from the DX BUFR tables information associated with a given BUFR f...
Definition: dxtable.F90:850
-
recursive subroutine closbf(lunit)
Close the connection between logical unit lunit and the NCEPLIBS-bufr software.
-
recursive subroutine openbf(lunit, io, lundx)
Connect a new file to the NCEPLIBS-bufr software for input or output operations, or initialize the li...
+
recursive subroutine wrdxtb(lundx, lunot)
Generate one or more BUFR messages from the DX BUFR tables information associated with a given BUFR f...
Definition: dxtable.F90:840
+
recursive subroutine closbf(lunit)
Close the connection between logical unit lunit and the NCEPLIBS-bufr software.
+
recursive subroutine openbf(lunit, io, lundx)
Connect a new file to the NCEPLIBS-bufr software for input or output operations, or initialize the li...
diff --git a/arallocc_8c.html b/arallocc_8c.html index a5a6fb023..7e3e395fa 100644 --- a/arallocc_8c.html +++ b/arallocc_8c.html @@ -26,7 +26,7 @@
NCEPLIBS-bufr -  12.1.0 +  12.2.0
@@ -95,6 +95,7 @@
#include "bufrlib.h"
#include "cread.h"
#include "mstabs.h"
+#include "rpseqs.h"

Go to the source code of this file.

@@ -161,9 +162,9 @@

Author
J. Ator
Date
2014-12-04
-

Definition at line 29 of file arallocc.c.

+

Definition at line 30 of file arallocc.c.

-

References bort_f(), cbbw_c, cbelem_c, cbmnem_c, cbscl_c, cbsref_c, cbunit_c, cdmnem_c, cdseq_c, iafpk, ibfxyn_c, idefxy_c, idfxyn_c, igetprm_f(), lstpos, ndelem_c, and pb.

+

References bort_f(), cbbw_c, cbelem_c, cbmnem_c, cbscl_c, cbsref_c, cbunit_c, cdescs, cdmnem_c, cdseq_c, iafpk, iafpks, ibfxyn_c, idefxy_c, idfxyn_c, igetprm_f(), lstpos, MAX_RPSQ, ndelem_c, and pb.

@@ -187,9 +188,9 @@

Author
J. Ator
Date
2014-12-04
-

Definition at line 90 of file arallocc.c.

+

Definition at line 83 of file arallocc.c.

-

References cbbw_c, cbelem_c, cbmnem_c, cbscl_c, cbsref_c, cbunit_c, cdmnem_c, cdseq_c, iafpk, ibfxyn_c, idefxy_c, idfxyn_c, lstpos, ndelem_c, and pb.

+

References cbbw_c, cbelem_c, cbmnem_c, cbscl_c, cbsref_c, cbunit_c, cdescs, cdmnem_c, cdseq_c, dlloctbf(), iafpk, iafpks, ibfxyn_c, idefxy_c, idfxyn_c, lstpos, ndelem_c, and pb.

diff --git a/arallocc_8c_source.html b/arallocc_8c_source.html index b32887331..8aa5cbb5b 100644 --- a/arallocc_8c_source.html +++ b/arallocc_8c_source.html @@ -26,7 +26,7 @@

@@ -93,25 +93,25 @@
10 
11 #include "cread.h"
12 #include "mstabs.h"
-
13 
-
28 void
-
29 arallocc(void)
-
30 {
-
31  char brtstr[50] = "BUFRLIB: ARALLOCC FAILED ALLOCATING";
-
32 
-
33  int nfiles;
-
34 
-
35  int mxmtbb;
-
36  int mxmtbd;
-
37  int maxcd;
-
38  int mxnaf;
-
39 
-
40  /* cread arrays */
-
41 
-
42  nfiles = igetprm_f("NFILES");
-
43 
-
44  if (!(pb = malloc((nfiles+1) * sizeof(FILE *)))) bort_f(brtstr);
-
45 
+
13 #include "rpseqs.h"
+
14 
+
29 void
+
30 arallocc(void)
+
31 {
+
32  char brtstr[50] = "BUFRLIB: ARALLOCC FAILED ALLOCATING";
+
33 
+
34  int nfiles;
+
35 
+
36  int mxmtbb;
+
37  int mxmtbd;
+
38  int maxcd;
+
39  int mxnaf;
+
40 
+
41  /* cread arrays */
+
42 
+
43  nfiles = igetprm_f("NFILES");
+
44 
+
45  if (!(pb = malloc((nfiles+1) * sizeof(FILE *)))) bort_f(brtstr);
46  if (!(lstpos = malloc((nfiles+1) * sizeof(fpos_t)))) bort_f(brtstr);
47 
48  /* mstabs arrays */
@@ -122,61 +122,64 @@
53  mxnaf = igetprm_f("MXNAF");
54 
55  if (!(ibfxyn_c = malloc(mxmtbb * sizeof(int)))) bort_f(brtstr);
-
56 
-
57  if (!(cbscl_c = malloc(mxmtbb * 4 * sizeof(char)))) bort_f(brtstr);
-
58 
-
59  if (!(cbsref_c = malloc(mxmtbb * 12 * sizeof(char)))) bort_f(brtstr);
-
60 
-
61  if (!(cbbw_c = malloc(mxmtbb * 4 * sizeof(char)))) bort_f(brtstr);
-
62 
-
63  if (!(cbunit_c = malloc(mxmtbb * 24 * sizeof(char)))) bort_f(brtstr);
-
64 
-
65  if (!(cbmnem_c = malloc(mxmtbb * 8 * sizeof(char)))) bort_f(brtstr);
-
66 
-
67  if (!(cbelem_c = malloc(mxmtbb * 120 * sizeof(char)))) bort_f(brtstr);
+
56  if (!(cbscl_c = malloc(mxmtbb * 4 * sizeof(char)))) bort_f(brtstr);
+
57  if (!(cbsref_c = malloc(mxmtbb * 12 * sizeof(char)))) bort_f(brtstr);
+
58  if (!(cbbw_c = malloc(mxmtbb * 4 * sizeof(char)))) bort_f(brtstr);
+
59  if (!(cbunit_c = malloc(mxmtbb * 24 * sizeof(char)))) bort_f(brtstr);
+
60  if (!(cbmnem_c = malloc(mxmtbb * 8 * sizeof(char)))) bort_f(brtstr);
+
61  if (!(cbelem_c = malloc(mxmtbb * 120 * sizeof(char)))) bort_f(brtstr);
+
62  if (!(idfxyn_c = malloc(mxmtbd * sizeof(int)))) bort_f(brtstr);
+
63  if (!(cdseq_c = malloc(mxmtbd * 120 * sizeof(char)))) bort_f(brtstr);
+
64  if (!(cdmnem_c = malloc(mxmtbd * 8 * sizeof(char)))) bort_f(brtstr);
+
65  if (!(ndelem_c = malloc(mxmtbd * sizeof(int)))) bort_f(brtstr);
+
66  if (!(idefxy_c = malloc(mxmtbd * maxcd * sizeof(int)))) bort_f(brtstr);
+
67  if (!(iafpk = malloc(mxnaf * sizeof(int)))) bort_f(brtstr);
68 
-
69  if (!(idfxyn_c = malloc(mxmtbd * sizeof(int)))) bort_f(brtstr);
+
69  /* rpseqs arrays */
70 
-
71  if (!(cdseq_c = malloc(mxmtbd * 120 * sizeof(char)))) bort_f(brtstr);
-
72 
-
73  if (!(cdmnem_c = malloc(mxmtbd * 8 * sizeof(char)))) bort_f(brtstr);
+
71  if (!(cdescs = malloc(MAX_RPSQ * maxcd * sizeof(int)))) bort_f(brtstr);
+
72  if (!(iafpks = malloc(MAX_RPSQ * mxnaf * sizeof(int)))) bort_f(brtstr);
+
73 }
74 
-
75  if (!(ndelem_c = malloc(mxmtbd * sizeof(int)))) bort_f(brtstr);
-
76 
-
77  if (!(idefxy_c = malloc(mxmtbd * maxcd * sizeof(int)))) bort_f(brtstr);
-
78 
-
79  if (!(iafpk = malloc(mxnaf * sizeof(int)))) bort_f(brtstr);
-
80 }
-
81 
-
89 void
-
90 ardllocc(void)
-
91 {
-
92  /* cread arrays */
-
93 
-
94  free( pb );
-
95  free( lstpos );
-
96 
-
97  /* mstabs arrays */
-
98 
-
99  free( ibfxyn_c );
-
100  free( cbscl_c );
-
101  free( cbsref_c );
-
102  free( cbbw_c );
-
103  free( cbunit_c );
-
104  free( cbmnem_c );
-
105  free( cbelem_c );
-
106  free( idfxyn_c );
-
107  free( cdseq_c );
-
108  free( cdmnem_c );
-
109  free( ndelem_c );
-
110  free( idefxy_c );
-
111  free( iafpk );
-
112 }
-
void arallocc(void)
Dynamically allocate C language arrays.
Definition: arallocc.c:29
-
void ardllocc(void)
Free all memory that was dynamically allocated during a previous call to subroutine arallocc().
Definition: arallocc.c:90
+
82 void
+
83 ardllocc(void)
+
84 {
+
85  /* cread arrays */
+
86 
+
87  free( pb );
+
88  free( lstpos );
+
89 
+
90  /* mstabs arrays */
+
91 
+
92  free( ibfxyn_c );
+
93  free( cbscl_c );
+
94  free( cbsref_c );
+
95  free( cbbw_c );
+
96  free( cbunit_c );
+
97  free( cbmnem_c );
+
98  free( cbelem_c );
+
99  free( idfxyn_c );
+
100  free( cdseq_c );
+
101  free( cdmnem_c );
+
102  free( ndelem_c );
+
103  free( idefxy_c );
+
104  free( iafpk );
+
105 
+
106  /* rpseqs arrays */
+
107 
+
108  free( cdescs );
+
109  free( iafpks );
+
110 
+
111  /* master Code/Flag table entries */
+
112 
+
113  dlloctbf();
+
114 }
+
void arallocc(void)
Dynamically allocate C language arrays.
Definition: arallocc.c:30
+
void ardllocc(void)
Free all memory that was dynamically allocated during a previous call to subroutine arallocc().
Definition: arallocc.c:83
int igetprm_f(char *cprmnm)
Get the current value of a parameter.
Enable a number of NCEPLIBS-bufr subprograms to be called from within the C part of the library.
void bort_f(char *errstr)
Log one error message and abort application program.
+
void dlloctbf(void)
Free all dynamically-allocated memory for internal storage of master Code/Flag table entries.
Definition: cfe.c:81
Declare variables for reading or writing BUFR messages via a C language interface.
FILE ** pb
File pointers.
fpos_t * lstpos
Byte positions of last successful reads from files corresponding to pb, for files that were opened fo...
@@ -194,6 +197,10 @@
int * iafpk
WMO bit-wise representations of associated fields within master Table D sequences.
int * ibfxyn_c
WMO bit-wise representations of master Table B FXY numbers; copied from Fortran ibfxyn array.
int * ndelem_c
Number of child descriptors for master Table D sequences; copied from Fortran ndelem array.
+
Declare variables for internal storage of replication sequences.
+
int * cdescs
Child descriptors for each entry.
+
#define MAX_RPSQ
Maximum number of entries in internal replication sequences cache.
Definition: rpseqs.h:15
+
int * iafpks
Associated fields in effect for each entry.
diff --git a/arallocf_8F90.html b/arallocf_8F90.html index 6b3c6e1ae..08d611771 100644 --- a/arallocf_8F90.html +++ b/arallocf_8F90.html @@ -26,7 +26,7 @@ @@ -161,7 +161,7 @@

Author
J. Ator
Date
2014-12-04
-

Definition at line 592 of file arallocf.F90.

+

Definition at line 590 of file arallocf.F90.

References moda_comprs::catx, moda_mstabs::cbbw, moda_mstabs::cbelem, moda_mstabs::cbmnem, moda_mstabs::cbscl, moda_mstabs::cbsref, moda_mstabs::cbunit, moda_mstabs::cdmnem, moda_s3list::cds3, moda_mstabs::cdseq, moda_rdmtb::ceelem, moda_h4wlc::chh4wlc, moda_rdmtb::cmdscb, moda_rdmtb::cmdscd, moda_s01cm::cmnem, moda_dscach::cnem, moda_rlccmn::crtag, moda_comprx::cstr, moda_bitmaps::ctco, moda_bitbuf::ibay, moda_mstabs::ibfxyn, moda_tables::ibt, moda_bitmaps::ibtmse, moda_msgmem::icdxts, moda_msgcwd::idate, moda_dscach::idcach, moda_mstabs::idefxy, moda_mstabs::idfxyn, moda_tababd::idna, moda_tababd::idnb, moda_tababd::idnd, moda_idrdm::idrdm, moda_s3list::ids3, moda_rdmtb::iefxyn, moda_nrv203::ienrv, moda_msgmem::ifdxts, moda_msgcwd::inode, moda_nrv203::inodnrv, moda_bitmaps::inodtamc, moda_bitmaps::inodtco, moda_usrint::inv, moda_stbfr::iolun, moda_stbfr::iomsg, moda_msgmem::ipdxm, moda_msgmem::ipmsgs, moda_rlccmn::irbit, moda_tables::irf, moda_rlccmn::irnch, moda_nmikrp::irp, moda_tables::isc, moda_sc3bfr::isc3, moda_stcode::iscodes, moda_tables::iseq, moda_nrv203::isnrv, moda_bitmaps::istbtm, moda_bitmaps::iszbtm, moda_ivttmp::itmp, moda_tables::itp, moda_comprx::ityp, moda_usrtmp::iutmp, moda_ival::ival, moda_s01cm::ivmnem, moda_comprx::iwid, moda_bufrsr::jbay, moda_comprx::jlnode, moda_tables::jmpb, moda_tables::jseq, moda_bufrsr::jsr, moda_tables::jump, moda_comprx::kbit, moda_comprx::kmax, moda_comprx::kmin, moda_comprx::kmis, moda_tables::knt, moda_tables::knti, moda_nmikrp::krp, moda_tables::link, moda_h4wlc::luh4wlc, moda_ufbcpl::luncpy, moda_lushr::lus, moda_comprs::matx, moda_bitbuf::mbay, moda_usrbit::mbit, moda_bitbuf::mbyt, moda_msgmem::mdx, moda_mgwa::mgwa, moda_mgwb::mgwb, moda_bufrmg::msglen, moda_msglim::msglim, moda_msgmem::msgp, moda_msgmem::msgs, moda_bufrmg::msgtxt, moda_unptyp::msgunp, moda_msgcwd::msub, moda_tababd::mtab, moda_usrbit::nbit, moda_bitmaps::nbtmse, moda_dscach::ndc, moda_mstabs::ndelem, moda_nmikrp::nem, moda_msgcwd::nmsg, moda_usrint::nrfelm, moda_nrv203::nrv, moda_msgcwd::nsub, moda_tababd::ntba, moda_tababd::ntbb, moda_tababd::ntbd, moda_bitmaps::ntco, moda_nulbfr::null, moda_usrint::nval, moda_h4wlc::sth4wlc, moda_tababd::taba, moda_tababd::tabb, moda_tababd::tabd, moda_tables::tag, moda_nrv203::tagnrv, moda_sc3bfr::tamnem, moda_ivttmp::ttmp, moda_tables::typ, moda_usrint::val, moda_tables::vali, moda_ivttmp::vtmp, moda_usrtmp::vutmp, and moda_xtab::xtab.

@@ -189,9 +189,9 @@

Author
J. Ator
Date
2015-03-02
-

Definition at line 900 of file arallocf.F90.

+

Definition at line 898 of file arallocf.F90.

-

References ardllocf(), moda_tablef::cdmf, closbf(), moda_stbfr::iolun, and moda_s01cm::ns01v.

+

References ardllocf(), closbf(), moda_stbfr::iolun, and moda_s01cm::ns01v.

Referenced by bufr_c2f_interface::exitbufr_c().

@@ -257,7 +257,7 @@

Author
J. Ator
Date
2014-12-04
-

Definition at line 1113 of file arallocf.F90.

+

Definition at line 1108 of file arallocf.F90.

References errwrt().

@@ -338,7 +338,7 @@

Author
J. Ator
Date
2014-12-04
-

Definition at line 979 of file arallocf.F90.

+

Definition at line 974 of file arallocf.F90.

References errwrt(), and x84().

diff --git a/arallocf_8F90_source.html b/arallocf_8F90_source.html index a4db40100..f5f2e53fd 100644 --- a/arallocf_8F90_source.html +++ b/arallocf_8F90_source.html @@ -26,7 +26,7 @@

@@ -92,7 +92,7 @@
19 
20  use modv_vars, only: maxcd, maxjl, maxmem, maxmsg, maxss, maxtba, maxtbb, maxtbd, mxbtm, mxbtmse, &
21  mxcdv, mxcsb, mxdxts, mxlcc, mxmsgl, mxmsgld4, mxmtbb, mxmtbd, mxnrv, mxrst, &
-
22  mxs01v, mxtamc, mxtco, mxh4wlc, nfiles, mxcnem, maxnc, maxrcr
+
22  mxs01v, mxtamc, mxtco, mxh4wlc, nfiles, mxcnem, maxnc, maxrcr, iprt
23 
24  use moda_usrint
25  use moda_usrbit
@@ -136,1020 +136,1015 @@
63  character*80 errstr
64  character*36 brtstr
65 
-
66  integer iost, iprt
+
66  integer iost
67 
-
68  common /quiet/ iprt
-
69 
-
70  if ( iprt >= 1 ) then
-
71  call errwrt ('++++++++++++++BUFR ARCHIVE LIBRARY+++++++++++++++++')
-
72  call errwrt ('BUFRLIB: ARRAYS WILL BE DYNAMICALLY ALLOCATED USING THE FOLLOWING VALUES:')
-
73  write ( errstr, '(a,i7)' ) ' MAXSS = ', maxss
+
68  if ( iprt >= 1 ) then
+
69  call errwrt ('++++++++++++++BUFR ARCHIVE LIBRARY+++++++++++++++++')
+
70  call errwrt ('BUFRLIB: ARRAYS WILL BE DYNAMICALLY ALLOCATED USING THE FOLLOWING VALUES:')
+
71  write ( errstr, '(a,i7)' ) ' MAXSS = ', maxss
+
72  call errwrt (errstr)
+
73  write ( errstr, '(a,i4)' ) ' NFILES = ', nfiles
74  call errwrt (errstr)
-
75  write ( errstr, '(a,i4)' ) ' NFILES = ', nfiles
+
75  write ( errstr, '(a,i7)' ) ' MXMSGL = ', mxmsgl
76  call errwrt (errstr)
-
77  write ( errstr, '(a,i7)' ) ' MXMSGL = ', mxmsgl
+
77  write ( errstr, '(a,i5)' ) ' MXDXTS = ', mxdxts
78  call errwrt (errstr)
-
79  write ( errstr, '(a,i5)' ) ' MXDXTS = ', mxdxts
+
79  write ( errstr, '(a,i7)' ) ' MAXMSG = ', maxmsg
80  call errwrt (errstr)
-
81  write ( errstr, '(a,i7)' ) ' MAXMSG = ', maxmsg
+
81  write ( errstr, '(a,i9)' ) ' MAXMEM = ', maxmem
82  call errwrt (errstr)
-
83  write ( errstr, '(a,i9)' ) ' MAXMEM = ', maxmem
+
83  write ( errstr, '(a,i5)' ) ' MAXTBA = ', maxtba
84  call errwrt (errstr)
-
85  write ( errstr, '(a,i5)' ) ' MAXTBA = ', maxtba
+
85  write ( errstr, '(a,i5)' ) ' MAXTBB = ', maxtbb
86  call errwrt (errstr)
-
87  write ( errstr, '(a,i5)' ) ' MAXTBB = ', maxtbb
+
87  write ( errstr, '(a,i5)' ) ' MAXTBD = ', maxtbd
88  call errwrt (errstr)
-
89  write ( errstr, '(a,i5)' ) ' MAXTBD = ', maxtbd
+
89  write ( errstr, '(a,i7)' ) ' MAXJL = ', maxjl
90  call errwrt (errstr)
-
91  write ( errstr, '(a,i7)' ) ' MAXJL = ', maxjl
+
91  write ( errstr, '(a,i6)' ) ' MXCDV = ', mxcdv
92  call errwrt (errstr)
-
93  write ( errstr, '(a,i6)' ) ' MXCDV = ', mxcdv
+
93  write ( errstr, '(a,i4)' ) ' MXLCC = ', mxlcc
94  call errwrt (errstr)
-
95  write ( errstr, '(a,i4)' ) ' MXLCC = ', mxlcc
+
95  write ( errstr, '(a,i6)' ) ' MXCSB = ', mxcsb
96  call errwrt (errstr)
-
97  write ( errstr, '(a,i6)' ) ' MXCSB = ', mxcsb
+
97  write ( errstr, '(a,i5)' ) ' MXMTBB = ', mxmtbb
98  call errwrt (errstr)
-
99  write ( errstr, '(a,i5)' ) ' MXMTBB = ', mxmtbb
+
99  write ( errstr, '(a,i5)' ) ' MXMTBD = ', mxmtbd
100  call errwrt (errstr)
-
101  write ( errstr, '(a,i5)' ) ' MXMTBD = ', mxmtbd
+
101  write ( errstr, '(a,i4)' ) ' MAXCD = ', maxcd
102  call errwrt (errstr)
-
103  write ( errstr, '(a,i4)' ) ' MAXCD = ', maxcd
+
103  write ( errstr, '(a,i4)' ) ' MXNRV = ', mxnrv
104  call errwrt (errstr)
-
105  write ( errstr, '(a,i4)' ) ' MXNRV = ', mxnrv
+
105  write ( errstr, '(a,i4)' ) ' MXS01V = ', mxs01v
106  call errwrt (errstr)
-
107  write ( errstr, '(a,i4)' ) ' MXS01V = ', mxs01v
+
107  write ( errstr, '(a,i4)' ) ' MXTAMC = ', mxtamc
108  call errwrt (errstr)
-
109  write ( errstr, '(a,i4)' ) ' MXTAMC = ', mxtamc
+
109  write ( errstr, '(a,i4)' ) ' MXTCO = ', mxtco
110  call errwrt (errstr)
-
111  write ( errstr, '(a,i4)' ) ' MXTCO = ', mxtco
+
111  write ( errstr, '(a,i4)' ) ' MXBTM = ', mxbtm
112  call errwrt (errstr)
-
113  write ( errstr, '(a,i4)' ) ' MXBTM = ', mxbtm
+
113  write ( errstr, '(a,i4)' ) ' MXBTMSE = ', mxbtmse
114  call errwrt (errstr)
-
115  write ( errstr, '(a,i4)' ) ' MXBTMSE = ', mxbtmse
+
115  write ( errstr, '(a,i4)' ) ' MXH4WLC = ', mxh4wlc
116  call errwrt (errstr)
-
117  write ( errstr, '(a,i4)' ) ' MXH4WLC = ', mxh4wlc
+
117  write ( errstr, '(a,i4)' ) ' MXRST = ', mxrst
118  call errwrt (errstr)
-
119  write ( errstr, '(a,i4)' ) ' MXRST = ', mxrst
+
119  write ( errstr, '(a,i4)' ) ' MXCNEM = ', mxcnem
120  call errwrt (errstr)
-
121  write ( errstr, '(a,i4)' ) ' MXCNEM = ', mxcnem
+
121  write ( errstr, '(a,i4)' ) ' MAXNC = ', maxnc
122  call errwrt (errstr)
-
123  write ( errstr, '(a,i4)' ) ' MAXNC = ', maxnc
-
124  call errwrt (errstr)
-
125  call errwrt ('++++++++++++++BUFR ARCHIVE LIBRARY+++++++++++++++++')
-
126  end if
+
123  call errwrt ('++++++++++++++BUFR ARCHIVE LIBRARY+++++++++++++++++')
+
124  end if
+
125 
+
126  brtstr = 'BUFRLIB: ARALLOCF FAILED ALLOCATING '
127 
-
128  brtstr = 'BUFRLIB: ARALLOCF FAILED ALLOCATING '
+
128  ! moda_usrint arrays.
129 
-
130  ! moda_usrint arrays.
-
131 
-
132  allocate( nval(nfiles), stat=iost )
-
133  if ( iost /= 0 ) call bort( brtstr // 'NVAL' )
-
134 
-
135  allocate( inv(maxss,nfiles), stat=iost )
-
136  if ( iost /= 0 ) call bort( brtstr // 'INV' )
-
137 
-
138  allocate( nrfelm(maxss,nfiles), stat=iost )
-
139  if ( iost /= 0 ) call bort( brtstr // 'NRFELM' )
-
140 
-
141  allocate( val(maxss,nfiles), stat=iost )
-
142  if ( iost /= 0 ) call bort( brtstr // 'VAL' )
+
130  allocate( nval(nfiles), stat=iost )
+
131  if ( iost /= 0 ) call bort( brtstr // 'NVAL' )
+
132 
+
133  allocate( inv(maxss,nfiles), stat=iost )
+
134  if ( iost /= 0 ) call bort( brtstr // 'INV' )
+
135 
+
136  allocate( nrfelm(maxss,nfiles), stat=iost )
+
137  if ( iost /= 0 ) call bort( brtstr // 'NRFELM' )
+
138 
+
139  allocate( val(maxss,nfiles), stat=iost )
+
140  if ( iost /= 0 ) call bort( brtstr // 'VAL' )
+
141 
+
142  ! moda_usrbit arrays.
143 
-
144  ! moda_usrbit arrays.
-
145 
-
146  allocate( nbit(maxss), stat=iost )
-
147  if ( iost /= 0 ) call bort( brtstr // 'NBIT' )
-
148 
-
149  allocate( mbit(maxss), stat=iost )
-
150  if ( iost /= 0 ) call bort( brtstr // 'MBIT' )
+
144  allocate( nbit(maxss), stat=iost )
+
145  if ( iost /= 0 ) call bort( brtstr // 'NBIT' )
+
146 
+
147  allocate( mbit(maxss), stat=iost )
+
148  if ( iost /= 0 ) call bort( brtstr // 'MBIT' )
+
149 
+
150  ! moda_ival arrays.
151 
-
152  ! moda_ival arrays.
-
153 
-
154  allocate( ival(maxss), stat=iost )
-
155  if ( iost /= 0 ) call bort( brtstr // 'IVAL' )
+
152  allocate( ival(maxss), stat=iost )
+
153  if ( iost /= 0 ) call bort( brtstr // 'IVAL' )
+
154 
+
155  ! moda_msgcwd arrays.
156 
-
157  ! moda_msgcwd arrays.
-
158 
-
159  allocate( nmsg(nfiles), stat=iost )
-
160  if ( iost /= 0 ) call bort( brtstr // 'NMSG' )
-
161 
-
162  allocate( nsub(nfiles), stat=iost )
-
163  if ( iost /= 0 ) call bort( brtstr // 'NSUB' )
-
164 
-
165  allocate( msub(nfiles), stat=iost )
-
166  if ( iost /= 0 ) call bort( brtstr // 'MSUB' )
-
167 
-
168  allocate( inode(nfiles), stat=iost )
-
169  if ( iost /= 0 ) call bort( brtstr // 'INODE' )
-
170 
-
171  allocate( idate(nfiles), stat=iost )
-
172  if ( iost /= 0 ) call bort( brtstr // 'IDATE' )
+
157  allocate( nmsg(nfiles), stat=iost )
+
158  if ( iost /= 0 ) call bort( brtstr // 'NMSG' )
+
159 
+
160  allocate( nsub(nfiles), stat=iost )
+
161  if ( iost /= 0 ) call bort( brtstr // 'NSUB' )
+
162 
+
163  allocate( msub(nfiles), stat=iost )
+
164  if ( iost /= 0 ) call bort( brtstr // 'MSUB' )
+
165 
+
166  allocate( inode(nfiles), stat=iost )
+
167  if ( iost /= 0 ) call bort( brtstr // 'INODE' )
+
168 
+
169  allocate( idate(nfiles), stat=iost )
+
170  if ( iost /= 0 ) call bort( brtstr // 'IDATE' )
+
171 
+
172  ! moda_stbfr arrays.
173 
-
174  ! moda_stbfr arrays.
-
175 
-
176  allocate( iolun(nfiles), stat=iost )
-
177  if ( iost /= 0 ) call bort( brtstr // 'IOLUN' )
-
178 
-
179  allocate( iomsg(nfiles), stat=iost )
-
180  if ( iost /= 0 ) call bort( brtstr // 'IOMSG' )
+
174  allocate( iolun(nfiles), stat=iost )
+
175  if ( iost /= 0 ) call bort( brtstr // 'IOLUN' )
+
176 
+
177  allocate( iomsg(nfiles), stat=iost )
+
178  if ( iost /= 0 ) call bort( brtstr // 'IOMSG' )
+
179 
+
180  ! moda_ufbcpl arrays.
181 
-
182  ! moda_ufbcpl arrays.
-
183 
-
184  allocate( luncpy(nfiles), stat=iost )
-
185  if ( iost /= 0 ) call bort( brtstr // 'LUNCPY' )
+
182  allocate( luncpy(nfiles), stat=iost )
+
183  if ( iost /= 0 ) call bort( brtstr // 'LUNCPY' )
+
184 
+
185  ! moda_sc3bfr arrays.
186 
-
187  ! moda_sc3bfr arrays.
-
188 
-
189  allocate( isc3(nfiles), stat=iost )
-
190  if ( iost /= 0 ) call bort( brtstr // 'ISC3' )
-
191 
-
192  allocate( tamnem(nfiles), stat=iost )
-
193  if ( iost /= 0 ) call bort( brtstr // 'TAMNEM' )
+
187  allocate( isc3(nfiles), stat=iost )
+
188  if ( iost /= 0 ) call bort( brtstr // 'ISC3' )
+
189 
+
190  allocate( tamnem(nfiles), stat=iost )
+
191  if ( iost /= 0 ) call bort( brtstr // 'TAMNEM' )
+
192 
+
193  ! moda_unptyp arrays.
194 
-
195  ! moda_unptyp arrays.
-
196 
-
197  allocate( msgunp(nfiles), stat=iost )
-
198  if ( iost /= 0 ) call bort( brtstr // 'MSGUNP' )
+
195  allocate( msgunp(nfiles), stat=iost )
+
196  if ( iost /= 0 ) call bort( brtstr // 'MSGUNP' )
+
197 
+
198  ! moda_lushr arrays.
199 
-
200  ! moda_lushr arrays.
-
201 
-
202  allocate( lus(nfiles), stat=iost )
-
203  if ( iost /= 0 ) call bort( brtstr // 'LUS' )
+
200  allocate( lus(nfiles), stat=iost )
+
201  if ( iost /= 0 ) call bort( brtstr // 'LUS' )
+
202 
+
203  ! moda_nulbfr arrays.
204 
-
205  ! moda_nulbfr arrays.
-
206 
-
207  allocate( null(nfiles), stat=iost )
-
208  if ( iost /= 0 ) call bort( brtstr // 'NULL' )
+
205  allocate( null(nfiles), stat=iost )
+
206  if ( iost /= 0 ) call bort( brtstr // 'NULL' )
+
207 
+
208  ! moda_stcode arrays.
209 
-
210  ! moda_stcode arrays.
-
211 
-
212  allocate( iscodes(nfiles), stat=iost )
-
213  if ( iost /= 0 ) call bort( brtstr // 'ISCODES' )
+
210  allocate( iscodes(nfiles), stat=iost )
+
211  if ( iost /= 0 ) call bort( brtstr // 'ISCODES' )
+
212 
+
213  ! moda_idrdm arrays.
214 
-
215  ! moda_idrdm arrays.
-
216 
-
217  allocate( idrdm(nfiles), stat=iost )
-
218  if ( iost /= 0 ) call bort( brtstr // 'IDRDM' )
+
215  allocate( idrdm(nfiles), stat=iost )
+
216  if ( iost /= 0 ) call bort( brtstr // 'IDRDM' )
+
217 
+
218  ! moda_xtab arrays.
219 
-
220  ! moda_xtab arrays.
-
221 
-
222  allocate( xtab(nfiles), stat=iost )
-
223  if ( iost /= 0 ) call bort( brtstr // 'XTAB' )
+
220  allocate( xtab(nfiles), stat=iost )
+
221  if ( iost /= 0 ) call bort( brtstr // 'XTAB' )
+
222 
+
223  ! moda_msglim arrays.
224 
-
225  ! moda_msglim arrays.
-
226 
-
227  allocate( msglim(nfiles), stat=iost )
-
228  if ( iost /= 0 ) call bort( brtstr // 'MSGLIM' )
+
225  allocate( msglim(nfiles), stat=iost )
+
226  if ( iost /= 0 ) call bort( brtstr // 'MSGLIM' )
+
227 
+
228  ! Calculate mxmsgld4 from mxmsgl.
229 
-
230  ! Calculate mxmsgld4 from mxmsgl.
-
231 
-
232  if ( mod(mxmsgl,4) == 0 ) then
-
233  mxmsgld4 = mxmsgl/4
-
234  else
-
235  mxmsgld4 = mxmsgl/4 + 1
-
236  end if
+
230  if ( mod(mxmsgl,4) == 0 ) then
+
231  mxmsgld4 = mxmsgl/4
+
232  else
+
233  mxmsgld4 = mxmsgl/4 + 1
+
234  end if
+
235 
+
236  ! moda_bitbuf arrays.
237 
-
238  ! moda_bitbuf arrays.
-
239 
-
240  allocate( ibay(mxmsgld4), stat=iost )
-
241  if ( iost /= 0 ) call bort( brtstr // 'IBAY' )
-
242 
-
243  allocate( mbyt(nfiles), stat=iost )
-
244  if ( iost /= 0 ) call bort( brtstr // 'MBYT' )
-
245 
-
246  allocate( mbay(mxmsgld4,nfiles), stat=iost )
-
247  if ( iost /= 0 ) call bort( brtstr // 'MBAY' )
+
238  allocate( ibay(mxmsgld4), stat=iost )
+
239  if ( iost /= 0 ) call bort( brtstr // 'IBAY' )
+
240 
+
241  allocate( mbyt(nfiles), stat=iost )
+
242  if ( iost /= 0 ) call bort( brtstr // 'MBYT' )
+
243 
+
244  allocate( mbay(mxmsgld4,nfiles), stat=iost )
+
245  if ( iost /= 0 ) call bort( brtstr // 'MBAY' )
+
246 
+
247  ! moda_mgwa arrays.
248 
-
249  ! moda_mgwa arrays.
-
250 
-
251  allocate( mgwa(mxmsgld4), stat=iost )
-
252  if ( iost /= 0 ) call bort( brtstr // 'MGWA' )
+
249  allocate( mgwa(mxmsgld4), stat=iost )
+
250  if ( iost /= 0 ) call bort( brtstr // 'MGWA' )
+
251 
+
252  ! moda_mgwb arrays.
253 
-
254  ! moda_mgwb arrays.
-
255 
-
256  allocate( mgwb(mxmsgld4), stat=iost )
-
257  if ( iost /= 0 ) call bort( brtstr // 'MGWB' )
+
254  allocate( mgwb(mxmsgld4), stat=iost )
+
255  if ( iost /= 0 ) call bort( brtstr // 'MGWB' )
+
256 
+
257  ! moda_bufrmg arrays.
258 
-
259  ! moda_bufrmg arrays.
-
260 
-
261  allocate( msglen(nfiles), stat=iost )
-
262  if ( iost /= 0 ) call bort( brtstr // 'MSGLEN' )
-
263  allocate( msgtxt(mxmsgld4,nfiles), stat=iost )
-
264  if ( iost /= 0 ) call bort( brtstr // 'MSGTXT' )
+
259  allocate( msglen(nfiles), stat=iost )
+
260  if ( iost /= 0 ) call bort( brtstr // 'MSGLEN' )
+
261  allocate( msgtxt(mxmsgld4,nfiles), stat=iost )
+
262  if ( iost /= 0 ) call bort( brtstr // 'MSGTXT' )
+
263 
+
264  ! moda_bufrsr arrays.
265 
-
266  ! moda_bufrsr arrays.
-
267 
-
268  allocate( jsr(nfiles), stat=iost )
-
269  if ( iost /= 0 ) call bort( brtstr // 'JSR' )
-
270 
-
271  allocate( jbay(mxmsgld4), stat=iost )
-
272  if ( iost /= 0 ) call bort( brtstr // 'JBAY' )
+
266  allocate( jsr(nfiles), stat=iost )
+
267  if ( iost /= 0 ) call bort( brtstr // 'JSR' )
+
268 
+
269  allocate( jbay(mxmsgld4), stat=iost )
+
270  if ( iost /= 0 ) call bort( brtstr // 'JBAY' )
+
271 
+
272  ! Calculate mxdxm and mxdxw from mxdxts and mxmsgld4.
273 
-
274  ! Calculate mxdxm and mxdxw from mxdxts and mxmsgld4.
-
275 
-
276  mxdxm = mxdxts*3
-
277  mxdxw = mxdxm*mxmsgld4
+
274  mxdxm = mxdxts*3
+
275  mxdxw = mxdxm*mxmsgld4
+
276 
+
277  ! moda_msgmem arrays.
278 
-
279  ! moda_msgmem arrays.
-
280 
-
281  allocate( msgp(0:maxmsg), stat=iost )
-
282  if ( iost /= 0 ) call bort( brtstr // 'MSGP' )
-
283 
-
284  allocate( msgs(maxmem), stat=iost )
-
285  if ( iost /= 0 ) call bort( brtstr // 'MSGS' )
-
286 
-
287  allocate( mdx(mxdxw), stat=iost )
-
288  if ( iost /= 0 ) call bort( brtstr // 'MDX' )
-
289 
-
290  allocate( ipdxm(mxdxm), stat=iost )
-
291  if ( iost /= 0 ) call bort( brtstr // 'IPDXM' )
-
292 
-
293  allocate( ifdxts(mxdxts), stat=iost )
-
294  if ( iost /= 0 ) call bort( brtstr // 'ifDXTS' )
-
295 
-
296  allocate( icdxts(mxdxts), stat=iost )
-
297  if ( iost /= 0 ) call bort( brtstr // 'ICDXTS' )
-
298 
-
299  allocate( ipmsgs(mxdxts), stat=iost )
-
300  if ( iost /= 0 ) call bort( brtstr // 'IPMSGS' )
+
279  allocate( msgp(0:maxmsg), stat=iost )
+
280  if ( iost /= 0 ) call bort( brtstr // 'MSGP' )
+
281 
+
282  allocate( msgs(maxmem), stat=iost )
+
283  if ( iost /= 0 ) call bort( brtstr // 'MSGS' )
+
284 
+
285  allocate( mdx(mxdxw), stat=iost )
+
286  if ( iost /= 0 ) call bort( brtstr // 'MDX' )
+
287 
+
288  allocate( ipdxm(mxdxm), stat=iost )
+
289  if ( iost /= 0 ) call bort( brtstr // 'IPDXM' )
+
290 
+
291  allocate( ifdxts(mxdxts), stat=iost )
+
292  if ( iost /= 0 ) call bort( brtstr // 'ifDXTS' )
+
293 
+
294  allocate( icdxts(mxdxts), stat=iost )
+
295  if ( iost /= 0 ) call bort( brtstr // 'ICDXTS' )
+
296 
+
297  allocate( ipmsgs(mxdxts), stat=iost )
+
298  if ( iost /= 0 ) call bort( brtstr // 'IPMSGS' )
+
299 
+
300  ! moda_tababd arrays.
301 
-
302  ! moda_tababd arrays.
-
303 
-
304  allocate( ntba(0:nfiles), stat=iost )
-
305  if ( iost /= 0 ) call bort( brtstr // 'NTBA' )
-
306 
-
307  allocate( ntbb(0:nfiles), stat=iost )
-
308  if ( iost /= 0 ) call bort( brtstr // 'NTBB' )
-
309 
-
310  allocate( ntbd(0:nfiles), stat=iost )
-
311  if ( iost /= 0 ) call bort( brtstr // 'NTBD' )
-
312 
-
313  allocate( mtab(maxtba,nfiles), stat=iost )
-
314  if ( iost /= 0 ) call bort( brtstr // 'MTAB' )
-
315 
-
316  allocate( idna(maxtba,nfiles,2), stat=iost )
-
317  if ( iost /= 0 ) call bort( brtstr // 'IDNA' )
-
318 
-
319  allocate( idnb(maxtbb,nfiles), stat=iost )
-
320  if ( iost /= 0 ) call bort( brtstr // 'IDNB' )
-
321 
-
322  allocate( idnd(maxtbd,nfiles), stat=iost )
-
323  if ( iost /= 0 ) call bort( brtstr // 'IDND' )
-
324 
-
325  allocate( taba(maxtba,nfiles), stat=iost )
-
326  if ( iost /= 0 ) call bort( brtstr // 'TABA' )
-
327 
-
328  allocate( tabb(maxtbb,nfiles), stat=iost )
-
329  if ( iost /= 0 ) call bort( brtstr // 'TABB' )
-
330 
-
331  allocate( tabd(maxtbd,nfiles), stat=iost )
-
332  if ( iost /= 0 ) call bort( brtstr // 'TABD' )
+
302  allocate( ntba(0:nfiles), stat=iost )
+
303  if ( iost /= 0 ) call bort( brtstr // 'NTBA' )
+
304 
+
305  allocate( ntbb(0:nfiles), stat=iost )
+
306  if ( iost /= 0 ) call bort( brtstr // 'NTBB' )
+
307 
+
308  allocate( ntbd(0:nfiles), stat=iost )
+
309  if ( iost /= 0 ) call bort( brtstr // 'NTBD' )
+
310 
+
311  allocate( mtab(maxtba,nfiles), stat=iost )
+
312  if ( iost /= 0 ) call bort( brtstr // 'MTAB' )
+
313 
+
314  allocate( idna(maxtba,nfiles,2), stat=iost )
+
315  if ( iost /= 0 ) call bort( brtstr // 'IDNA' )
+
316 
+
317  allocate( idnb(maxtbb,nfiles), stat=iost )
+
318  if ( iost /= 0 ) call bort( brtstr // 'IDNB' )
+
319 
+
320  allocate( idnd(maxtbd,nfiles), stat=iost )
+
321  if ( iost /= 0 ) call bort( brtstr // 'IDND' )
+
322 
+
323  allocate( taba(maxtba,nfiles), stat=iost )
+
324  if ( iost /= 0 ) call bort( brtstr // 'TABA' )
+
325 
+
326  allocate( tabb(maxtbb,nfiles), stat=iost )
+
327  if ( iost /= 0 ) call bort( brtstr // 'TABB' )
+
328 
+
329  allocate( tabd(maxtbd,nfiles), stat=iost )
+
330  if ( iost /= 0 ) call bort( brtstr // 'TABD' )
+
331 
+
332  ! moda_tables arrays.
333 
-
334  ! moda_tables arrays.
-
335 
-
336  allocate( tag(maxjl), stat=iost )
-
337  if ( iost /= 0 ) call bort( brtstr // 'TAG' )
-
338 
-
339  allocate( typ(maxjl), stat=iost )
-
340  if ( iost /= 0 ) call bort( brtstr // 'TYP' )
-
341 
-
342  allocate( knt(maxjl), stat=iost )
-
343  if ( iost /= 0 ) call bort( brtstr // 'KNT' )
-
344 
-
345  allocate( jump(maxjl), stat=iost )
-
346  if ( iost /= 0 ) call bort( brtstr // 'JUMP' )
-
347 
-
348  allocate( link(maxjl), stat=iost )
-
349  if ( iost /= 0 ) call bort( brtstr // 'LINK' )
-
350 
-
351  allocate( jmpb(maxjl), stat=iost )
-
352  if ( iost /= 0 ) call bort( brtstr // 'JMPB' )
-
353 
-
354  allocate( ibt(maxjl), stat=iost )
-
355  if ( iost /= 0 ) call bort( brtstr // 'IBT' )
-
356 
-
357  allocate( irf(maxjl), stat=iost )
-
358  if ( iost /= 0 ) call bort( brtstr // 'IRF' )
-
359 
-
360  allocate( isc(maxjl), stat=iost )
-
361  if ( iost /= 0 ) call bort( brtstr // 'ISC' )
-
362 
-
363  allocate( itp(maxjl), stat=iost )
-
364  if ( iost /= 0 ) call bort( brtstr // 'ITP' )
-
365 
-
366  allocate( vali(maxjl), stat=iost )
-
367  if ( iost /= 0 ) call bort( brtstr // 'VALI' )
-
368 
-
369  allocate( knti(maxjl), stat=iost )
-
370  if ( iost /= 0 ) call bort( brtstr // 'KNTI' )
-
371 
-
372  allocate( iseq(maxjl,2), stat=iost )
-
373  if ( iost /= 0 ) call bort( brtstr // 'ISEQ' )
-
374 
-
375  allocate( jseq(maxjl), stat=iost )
-
376  if ( iost /= 0 ) call bort( brtstr // 'JSEQ' )
+
334  allocate( tag(maxjl), stat=iost )
+
335  if ( iost /= 0 ) call bort( brtstr // 'TAG' )
+
336 
+
337  allocate( typ(maxjl), stat=iost )
+
338  if ( iost /= 0 ) call bort( brtstr // 'TYP' )
+
339 
+
340  allocate( knt(maxjl), stat=iost )
+
341  if ( iost /= 0 ) call bort( brtstr // 'KNT' )
+
342 
+
343  allocate( jump(maxjl), stat=iost )
+
344  if ( iost /= 0 ) call bort( brtstr // 'JUMP' )
+
345 
+
346  allocate( link(maxjl), stat=iost )
+
347  if ( iost /= 0 ) call bort( brtstr // 'LINK' )
+
348 
+
349  allocate( jmpb(maxjl), stat=iost )
+
350  if ( iost /= 0 ) call bort( brtstr // 'JMPB' )
+
351 
+
352  allocate( ibt(maxjl), stat=iost )
+
353  if ( iost /= 0 ) call bort( brtstr // 'IBT' )
+
354 
+
355  allocate( irf(maxjl), stat=iost )
+
356  if ( iost /= 0 ) call bort( brtstr // 'IRF' )
+
357 
+
358  allocate( isc(maxjl), stat=iost )
+
359  if ( iost /= 0 ) call bort( brtstr // 'ISC' )
+
360 
+
361  allocate( itp(maxjl), stat=iost )
+
362  if ( iost /= 0 ) call bort( brtstr // 'ITP' )
+
363 
+
364  allocate( vali(maxjl), stat=iost )
+
365  if ( iost /= 0 ) call bort( brtstr // 'VALI' )
+
366 
+
367  allocate( knti(maxjl), stat=iost )
+
368  if ( iost /= 0 ) call bort( brtstr // 'KNTI' )
+
369 
+
370  allocate( iseq(maxjl,2), stat=iost )
+
371  if ( iost /= 0 ) call bort( brtstr // 'ISEQ' )
+
372 
+
373  allocate( jseq(maxjl), stat=iost )
+
374  if ( iost /= 0 ) call bort( brtstr // 'JSEQ' )
+
375 
+
376  ! moda_usrtmp arrays.
377 
-
378  ! moda_usrtmp arrays.
-
379 
-
380  allocate( iutmp(maxjl,maxrcr), stat=iost )
-
381  if ( iost /= 0 ) call bort( brtstr // 'IUTMP' )
-
382 
-
383  allocate( vutmp(maxjl,maxrcr), stat=iost )
-
384  if ( iost /= 0 ) call bort( brtstr // 'VUTMP' )
+
378  allocate( iutmp(maxjl,maxrcr), stat=iost )
+
379  if ( iost /= 0 ) call bort( brtstr // 'IUTMP' )
+
380 
+
381  allocate( vutmp(maxjl,maxrcr), stat=iost )
+
382  if ( iost /= 0 ) call bort( brtstr // 'VUTMP' )
+
383 
+
384  ! moda_ivttmp arrays.
385 
-
386  ! moda_ivttmp arrays.
-
387 
-
388  allocate( ttmp(maxjl), stat=iost )
-
389  if ( iost /= 0 ) call bort( brtstr // 'TTMP' )
-
390 
-
391  allocate( itmp(maxjl), stat=iost )
-
392  if ( iost /= 0 ) call bort( brtstr // 'ITMP' )
-
393 
-
394  allocate( vtmp(maxjl), stat=iost )
-
395  if ( iost /= 0 ) call bort( brtstr // 'VTMP' )
+
386  allocate( ttmp(maxjl), stat=iost )
+
387  if ( iost /= 0 ) call bort( brtstr // 'TTMP' )
+
388 
+
389  allocate( itmp(maxjl), stat=iost )
+
390  if ( iost /= 0 ) call bort( brtstr // 'ITMP' )
+
391 
+
392  allocate( vtmp(maxjl), stat=iost )
+
393  if ( iost /= 0 ) call bort( brtstr // 'VTMP' )
+
394 
+
395  ! moda_comprx arrays.
396 
-
397  ! moda_comprx arrays.
-
398 
-
399  allocate( kmin(mxcdv), stat=iost )
-
400  if ( iost /= 0 ) call bort( brtstr // 'KMIN' )
-
401 
-
402  allocate( kmax(mxcdv), stat=iost )
-
403  if ( iost /= 0 ) call bort( brtstr // 'KMAX' )
-
404 
-
405  allocate( kmis(mxcdv), stat=iost )
-
406  if ( iost /= 0 ) call bort( brtstr // 'KMIS' )
-
407 
-
408  allocate( kbit(mxcdv), stat=iost )
-
409  if ( iost /= 0 ) call bort( brtstr // 'KBIT' )
-
410 
-
411  allocate( ityp(mxcdv), stat=iost )
-
412  if ( iost /= 0 ) call bort( brtstr // 'ITYP' )
-
413 
-
414  allocate( iwid(mxcdv), stat=iost )
-
415  if ( iost /= 0 ) call bort( brtstr // 'IWID' )
-
416 
-
417  allocate( character*(mxlcc) :: cstr(mxcdv), stat=iost )
-
418  if ( iost /= 0 ) call bort( brtstr // 'CSTR' )
-
419 
-
420  allocate( jlnode(mxcdv), stat=iost )
-
421  if ( iost /= 0 ) call bort( brtstr // 'JLNODE' )
+
397  allocate( kmin(mxcdv), stat=iost )
+
398  if ( iost /= 0 ) call bort( brtstr // 'KMIN' )
+
399 
+
400  allocate( kmax(mxcdv), stat=iost )
+
401  if ( iost /= 0 ) call bort( brtstr // 'KMAX' )
+
402 
+
403  allocate( kmis(mxcdv), stat=iost )
+
404  if ( iost /= 0 ) call bort( brtstr // 'KMIS' )
+
405 
+
406  allocate( kbit(mxcdv), stat=iost )
+
407  if ( iost /= 0 ) call bort( brtstr // 'KBIT' )
+
408 
+
409  allocate( ityp(mxcdv), stat=iost )
+
410  if ( iost /= 0 ) call bort( brtstr // 'ITYP' )
+
411 
+
412  allocate( iwid(mxcdv), stat=iost )
+
413  if ( iost /= 0 ) call bort( brtstr // 'IWID' )
+
414 
+
415  allocate( character*(mxlcc) :: cstr(mxcdv), stat=iost )
+
416  if ( iost /= 0 ) call bort( brtstr // 'CSTR' )
+
417 
+
418  allocate( jlnode(mxcdv), stat=iost )
+
419  if ( iost /= 0 ) call bort( brtstr // 'JLNODE' )
+
420 
+
421  ! moda_comprs arrays.
422 
-
423  ! moda_comprs arrays.
-
424 
-
425  allocate( matx(mxcdv,mxcsb), stat=iost )
-
426  if ( iost /= 0 ) call bort( brtstr // 'MATX' )
-
427 
-
428  allocate( character*(mxlcc) :: catx(mxcdv,mxcsb), stat=iost )
-
429  if ( iost /= 0 ) call bort( brtstr // 'CATX' )
+
423  allocate( matx(mxcdv,mxcsb), stat=iost )
+
424  if ( iost /= 0 ) call bort( brtstr // 'MATX' )
+
425 
+
426  allocate( character*(mxlcc) :: catx(mxcdv,mxcsb), stat=iost )
+
427  if ( iost /= 0 ) call bort( brtstr // 'CATX' )
+
428 
+
429  ! moda_mstabs arrays.
430 
-
431  ! moda_mstabs arrays.
-
432 
-
433  allocate( ibfxyn(mxmtbb), stat=iost )
-
434  if ( iost /= 0 ) call bort( brtstr // 'IBFXYN' )
-
435 
-
436  allocate( cbscl(4,mxmtbb), stat=iost )
-
437  if ( iost /= 0 ) call bort( brtstr // 'CBSCL' )
-
438 
-
439  allocate( cbsref(12,mxmtbb), stat=iost )
-
440  if ( iost /= 0 ) call bort( brtstr // 'CBSREF' )
-
441 
-
442  allocate( cbbw(4,mxmtbb), stat=iost )
-
443  if ( iost /= 0 ) call bort( brtstr // 'CBBW' )
-
444 
-
445  allocate( cbunit(24,mxmtbb), stat=iost )
-
446  if ( iost /= 0 ) call bort( brtstr // 'CBUNIT' )
-
447 
-
448  allocate( cbmnem(8,mxmtbb), stat=iost )
-
449  if ( iost /= 0 ) call bort( brtstr // 'CBMNEM' )
-
450 
-
451  allocate( cbelem(120,mxmtbb), stat=iost )
-
452  if ( iost /= 0 ) call bort( brtstr // 'CBELEM' )
-
453 
-
454  allocate( idfxyn(mxmtbd), stat=iost )
-
455  if ( iost /= 0 ) call bort( brtstr // 'IDFXYN' )
-
456 
-
457  allocate( cdseq(120,mxmtbd), stat=iost )
-
458  if ( iost /= 0 ) call bort( brtstr // 'CDSEQ' )
-
459 
-
460  allocate( cdmnem(8,mxmtbd), stat=iost )
-
461  if ( iost /= 0 ) call bort( brtstr // 'CDMNEM' )
-
462 
-
463  allocate( ndelem(mxmtbd), stat=iost )
-
464  if ( iost /= 0 ) call bort( brtstr // 'NDELEM' )
-
465 
-
466  allocate( idefxy(mxmtbd*maxcd), stat=iost )
-
467  if ( iost /= 0 ) call bort( brtstr // 'IDEFXY' )
+
431  allocate( ibfxyn(mxmtbb), stat=iost )
+
432  if ( iost /= 0 ) call bort( brtstr // 'IBFXYN' )
+
433 
+
434  allocate( cbscl(4,mxmtbb), stat=iost )
+
435  if ( iost /= 0 ) call bort( brtstr // 'CBSCL' )
+
436 
+
437  allocate( cbsref(12,mxmtbb), stat=iost )
+
438  if ( iost /= 0 ) call bort( brtstr // 'CBSREF' )
+
439 
+
440  allocate( cbbw(4,mxmtbb), stat=iost )
+
441  if ( iost /= 0 ) call bort( brtstr // 'CBBW' )
+
442 
+
443  allocate( cbunit(24,mxmtbb), stat=iost )
+
444  if ( iost /= 0 ) call bort( brtstr // 'CBUNIT' )
+
445 
+
446  allocate( cbmnem(8,mxmtbb), stat=iost )
+
447  if ( iost /= 0 ) call bort( brtstr // 'CBMNEM' )
+
448 
+
449  allocate( cbelem(120,mxmtbb), stat=iost )
+
450  if ( iost /= 0 ) call bort( brtstr // 'CBELEM' )
+
451 
+
452  allocate( idfxyn(mxmtbd), stat=iost )
+
453  if ( iost /= 0 ) call bort( brtstr // 'IDFXYN' )
+
454 
+
455  allocate( cdseq(120,mxmtbd), stat=iost )
+
456  if ( iost /= 0 ) call bort( brtstr // 'CDSEQ' )
+
457 
+
458  allocate( cdmnem(8,mxmtbd), stat=iost )
+
459  if ( iost /= 0 ) call bort( brtstr // 'CDMNEM' )
+
460 
+
461  allocate( ndelem(mxmtbd), stat=iost )
+
462  if ( iost /= 0 ) call bort( brtstr // 'NDELEM' )
+
463 
+
464  allocate( idefxy(mxmtbd*maxcd), stat=iost )
+
465  if ( iost /= 0 ) call bort( brtstr // 'IDEFXY' )
+
466 
+
467  ! moda_rdmtb arrays.
468 
-
469  ! moda_rdmtb arrays.
-
470 
-
471  allocate( iefxyn(mxmtbd,maxcd), stat=iost )
-
472  if ( iost /= 0 ) call bort( brtstr // 'IEFXYN' )
-
473 
-
474  allocate( cmdscb(mxmtbb), stat=iost )
-
475  if ( iost /= 0 ) call bort( brtstr // 'CMDSCB' )
-
476 
-
477  allocate( cmdscd(mxmtbd), stat=iost )
-
478  if ( iost /= 0 ) call bort( brtstr // 'CMDSCD' )
-
479 
-
480  allocate( ceelem(mxmtbd,maxcd), stat=iost )
-
481  if ( iost /= 0 ) call bort( brtstr // 'CEELEM' )
+
469  allocate( iefxyn(mxmtbd,maxcd), stat=iost )
+
470  if ( iost /= 0 ) call bort( brtstr // 'IEFXYN' )
+
471 
+
472  allocate( cmdscb(mxmtbb), stat=iost )
+
473  if ( iost /= 0 ) call bort( brtstr // 'CMDSCB' )
+
474 
+
475  allocate( cmdscd(mxmtbd), stat=iost )
+
476  if ( iost /= 0 ) call bort( brtstr // 'CMDSCD' )
+
477 
+
478  allocate( ceelem(mxmtbd,maxcd), stat=iost )
+
479  if ( iost /= 0 ) call bort( brtstr // 'CEELEM' )
+
480 
+
481  ! moda_nmikrp arrays.
482 
-
483  ! moda_nmikrp arrays.
-
484 
-
485  allocate( nem(maxcd,10), stat=iost )
-
486  if ( iost /= 0 ) call bort( brtstr // 'NEM' )
-
487 
-
488  allocate( irp(maxcd,10), stat=iost )
-
489  if ( iost /= 0 ) call bort( brtstr // 'IRP' )
-
490 
-
491  allocate( krp(maxcd,10), stat=iost )
-
492  if ( iost /= 0 ) call bort( brtstr // 'KRP' )
+
483  allocate( nem(maxcd,10), stat=iost )
+
484  if ( iost /= 0 ) call bort( brtstr // 'NEM' )
+
485 
+
486  allocate( irp(maxcd,10), stat=iost )
+
487  if ( iost /= 0 ) call bort( brtstr // 'IRP' )
+
488 
+
489  allocate( krp(maxcd,10), stat=iost )
+
490  if ( iost /= 0 ) call bort( brtstr // 'KRP' )
+
491 
+
492  ! moda_s01cm arrays.
493 
-
494  ! moda_s01cm arrays.
-
495 
-
496  allocate( ivmnem(mxs01v), stat=iost )
-
497  if ( iost /= 0 ) call bort( brtstr // 'IVMNEM' )
-
498 
-
499  allocate( cmnem(mxs01v), stat=iost )
-
500  if ( iost /= 0 ) call bort( brtstr // 'CMNEM' )
+
494  allocate( ivmnem(mxs01v), stat=iost )
+
495  if ( iost /= 0 ) call bort( brtstr // 'IVMNEM' )
+
496 
+
497  allocate( cmnem(mxs01v), stat=iost )
+
498  if ( iost /= 0 ) call bort( brtstr // 'CMNEM' )
+
499 
+
500  ! moda_bitmaps arrays.
501 
-
502  ! moda_bitmaps arrays.
-
503 
-
504  allocate( inodtamc(mxtamc), stat=iost )
-
505  if ( iost /= 0 ) call bort( brtstr // 'INODTAMC' )
-
506 
-
507  allocate( ntco(mxtamc), stat=iost )
-
508  if ( iost /= 0 ) call bort( brtstr // 'NTCO' )
-
509 
-
510  allocate( ctco(mxtamc,mxtco), stat=iost )
-
511  if ( iost /= 0 ) call bort( brtstr // 'CTCO' )
-
512 
-
513  allocate( inodtco(mxtamc,mxtco), stat=iost )
-
514  if ( iost /= 0 ) call bort( brtstr // 'INODTCO' )
-
515 
-
516  allocate( nbtmse(mxbtm), stat=iost )
-
517  if ( iost /= 0 ) call bort( brtstr // 'NBTMSE' )
-
518 
-
519  allocate( istbtm(mxbtm), stat=iost )
-
520  if ( iost /= 0 ) call bort( brtstr // 'ISTBTM' )
-
521 
-
522  allocate( iszbtm(mxbtm), stat=iost )
-
523  if ( iost /= 0 ) call bort( brtstr // 'ISZBTM' )
-
524 
-
525  allocate( ibtmse(mxbtm,mxbtmse), stat=iost )
-
526  if ( iost /= 0 ) call bort( brtstr // 'IBTMSE' )
+
502  allocate( inodtamc(mxtamc), stat=iost )
+
503  if ( iost /= 0 ) call bort( brtstr // 'INODTAMC' )
+
504 
+
505  allocate( ntco(mxtamc), stat=iost )
+
506  if ( iost /= 0 ) call bort( brtstr // 'NTCO' )
+
507 
+
508  allocate( ctco(mxtamc,mxtco), stat=iost )
+
509  if ( iost /= 0 ) call bort( brtstr // 'CTCO' )
+
510 
+
511  allocate( inodtco(mxtamc,mxtco), stat=iost )
+
512  if ( iost /= 0 ) call bort( brtstr // 'INODTCO' )
+
513 
+
514  allocate( nbtmse(mxbtm), stat=iost )
+
515  if ( iost /= 0 ) call bort( brtstr // 'NBTMSE' )
+
516 
+
517  allocate( istbtm(mxbtm), stat=iost )
+
518  if ( iost /= 0 ) call bort( brtstr // 'ISTBTM' )
+
519 
+
520  allocate( iszbtm(mxbtm), stat=iost )
+
521  if ( iost /= 0 ) call bort( brtstr // 'ISZBTM' )
+
522 
+
523  allocate( ibtmse(mxbtm,mxbtmse), stat=iost )
+
524  if ( iost /= 0 ) call bort( brtstr // 'IBTMSE' )
+
525 
+
526  ! moda_nrv203 arrays.
527 
-
528  ! moda_nrv203 arrays.
-
529 
-
530  allocate( tagnrv(mxnrv), stat=iost )
-
531  if ( iost /= 0 ) call bort( brtstr // 'TAGNRV' )
-
532 
-
533  allocate( inodnrv(mxnrv), stat=iost )
-
534  if ( iost /= 0 ) call bort( brtstr // 'INODNRV' )
-
535 
-
536  allocate( nrv(mxnrv), stat=iost )
-
537  if ( iost /= 0 ) call bort( brtstr // 'NRV' )
-
538 
-
539  allocate( isnrv(mxnrv), stat=iost )
-
540  if ( iost /= 0 ) call bort( brtstr // 'ISNRV' )
-
541 
-
542  allocate( ienrv(mxnrv), stat=iost )
-
543  if ( iost /= 0 ) call bort( brtstr // 'IENRV' )
+
528  allocate( tagnrv(mxnrv), stat=iost )
+
529  if ( iost /= 0 ) call bort( brtstr // 'TAGNRV' )
+
530 
+
531  allocate( inodnrv(mxnrv), stat=iost )
+
532  if ( iost /= 0 ) call bort( brtstr // 'INODNRV' )
+
533 
+
534  allocate( nrv(mxnrv), stat=iost )
+
535  if ( iost /= 0 ) call bort( brtstr // 'NRV' )
+
536 
+
537  allocate( isnrv(mxnrv), stat=iost )
+
538  if ( iost /= 0 ) call bort( brtstr // 'ISNRV' )
+
539 
+
540  allocate( ienrv(mxnrv), stat=iost )
+
541  if ( iost /= 0 ) call bort( brtstr // 'IENRV' )
+
542 
+
543  ! moda_rlccmn arrays.
544 
-
545  ! moda_rlccmn arrays.
-
546 
-
547  allocate( irnch(mxrst), stat=iost )
-
548  if ( iost /= 0 ) call bort( brtstr // 'IRNCH' )
-
549 
-
550  allocate( irbit(mxrst), stat=iost )
-
551  if ( iost /= 0 ) call bort( brtstr // 'IRBIT' )
-
552 
-
553  allocate( crtag(mxrst), stat=iost )
-
554  if ( iost /= 0 ) call bort( brtstr // 'CRTAG' )
+
545  allocate( irnch(mxrst), stat=iost )
+
546  if ( iost /= 0 ) call bort( brtstr // 'IRNCH' )
+
547 
+
548  allocate( irbit(mxrst), stat=iost )
+
549  if ( iost /= 0 ) call bort( brtstr // 'IRBIT' )
+
550 
+
551  allocate( crtag(mxrst), stat=iost )
+
552  if ( iost /= 0 ) call bort( brtstr // 'CRTAG' )
+
553 
+
554  ! moda_h4wlc arrays.
555 
-
556  ! moda_h4wlc arrays.
-
557 
-
558  allocate( luh4wlc(mxh4wlc), stat=iost )
-
559  if ( iost /= 0 ) call bort( brtstr // 'LUH4WLC' )
-
560 
-
561  allocate( sth4wlc(mxh4wlc), stat=iost )
-
562  if ( iost /= 0 ) call bort( brtstr // 'STH4WLC' )
-
563 
-
564  allocate( chh4wlc(mxh4wlc), stat=iost )
-
565  if ( iost /= 0 ) call bort( brtstr // 'CHH4WLC' )
+
556  allocate( luh4wlc(mxh4wlc), stat=iost )
+
557  if ( iost /= 0 ) call bort( brtstr // 'LUH4WLC' )
+
558 
+
559  allocate( sth4wlc(mxh4wlc), stat=iost )
+
560  if ( iost /= 0 ) call bort( brtstr // 'STH4WLC' )
+
561 
+
562  allocate( chh4wlc(mxh4wlc), stat=iost )
+
563  if ( iost /= 0 ) call bort( brtstr // 'CHH4WLC' )
+
564 
+
565  ! moda_dscach arrays.
566 
-
567  ! moda_dscach arrays.
-
568 
-
569  allocate( cnem(mxcnem), stat=iost )
-
570  if ( iost /= 0 ) call bort( brtstr // 'CNEM' )
-
571 
-
572  allocate( ndc(mxcnem), stat=iost )
-
573  if ( iost /= 0 ) call bort( brtstr // 'NDC' )
-
574 
-
575  allocate( idcach(mxcnem,maxnc), stat=iost )
-
576  if ( iost /= 0 ) call bort( brtstr // 'IDCACH' )
+
567  allocate( cnem(mxcnem), stat=iost )
+
568  if ( iost /= 0 ) call bort( brtstr // 'CNEM' )
+
569 
+
570  allocate( ndc(mxcnem), stat=iost )
+
571  if ( iost /= 0 ) call bort( brtstr // 'NDC' )
+
572 
+
573  allocate( idcach(mxcnem,maxnc), stat=iost )
+
574  if ( iost /= 0 ) call bort( brtstr // 'IDCACH' )
+
575 
+
576  ! moda_s3list arrays.
577 
-
578  ! moda_s3list arrays.
-
579 
-
580  allocate( ids3(maxnc), stat=iost )
-
581  if ( iost /= 0 ) call bort( brtstr // 'IDS3' )
-
582 
-
583  allocate( cds3(maxnc), stat=iost )
-
584  if ( iost /= 0 ) call bort( brtstr // 'CDS3' )
-
585 
-
586  return
-
587 end subroutine arallocf
-
588 
-
592 subroutine ardllocf
+
578  allocate( ids3(maxnc), stat=iost )
+
579  if ( iost /= 0 ) call bort( brtstr // 'IDS3' )
+
580 
+
581  allocate( cds3(maxnc), stat=iost )
+
582  if ( iost /= 0 ) call bort( brtstr // 'CDS3' )
+
583 
+
584  return
+
585 end subroutine arallocf
+
586 
+
590 subroutine ardllocf
+
591 
+
592  use bufrlib
593 
-
594  use bufrlib
-
595 
-
596  use moda_usrint
-
597  use moda_usrbit
-
598  use moda_ival
-
599  use moda_msgcwd
-
600  use moda_stbfr
-
601  use moda_ufbcpl
-
602  use moda_sc3bfr
-
603  use moda_unptyp
-
604  use moda_lushr
-
605  use moda_nulbfr
-
606  use moda_stcode
-
607  use moda_idrdm
-
608  use moda_xtab
-
609  use moda_msglim
-
610  use moda_bitbuf
-
611  use moda_mgwa
-
612  use moda_mgwb
-
613  use moda_bufrmg
-
614  use moda_bufrsr
-
615  use moda_msgmem
-
616  use moda_tababd
-
617  use moda_tables
-
618  use moda_usrtmp
-
619  use moda_ivttmp
-
620  use moda_comprx
-
621  use moda_comprs
-
622  use moda_mstabs
-
623  use moda_rdmtb
-
624  use moda_nmikrp
-
625  use moda_s01cm
-
626  use moda_bitmaps
-
627  use moda_nrv203
-
628  use moda_rlccmn
-
629  use moda_h4wlc
-
630  use moda_dscach
-
631  use moda_s3list
+
594  use moda_usrint
+
595  use moda_usrbit
+
596  use moda_ival
+
597  use moda_msgcwd
+
598  use moda_stbfr
+
599  use moda_ufbcpl
+
600  use moda_sc3bfr
+
601  use moda_unptyp
+
602  use moda_lushr
+
603  use moda_nulbfr
+
604  use moda_stcode
+
605  use moda_idrdm
+
606  use moda_xtab
+
607  use moda_msglim
+
608  use moda_bitbuf
+
609  use moda_mgwa
+
610  use moda_mgwb
+
611  use moda_bufrmg
+
612  use moda_bufrsr
+
613  use moda_msgmem
+
614  use moda_tababd
+
615  use moda_tables
+
616  use moda_usrtmp
+
617  use moda_ivttmp
+
618  use moda_comprx
+
619  use moda_comprs
+
620  use moda_mstabs
+
621  use moda_rdmtb
+
622  use moda_nmikrp
+
623  use moda_s01cm
+
624  use moda_bitmaps
+
625  use moda_nrv203
+
626  use moda_rlccmn
+
627  use moda_h4wlc
+
628  use moda_dscach
+
629  use moda_s3list
+
630 
+
631  implicit none
632 
-
633  implicit none
+
633  ! moda_usrint arrays.
634 
-
635  ! moda_usrint arrays.
-
636 
-
637  deallocate( nval )
-
638  deallocate( inv )
-
639  deallocate( nrfelm )
-
640  deallocate( val )
+
635  deallocate( nval )
+
636  deallocate( inv )
+
637  deallocate( nrfelm )
+
638  deallocate( val )
+
639 
+
640  ! moda_usrbit arrays.
641 
-
642  ! moda_usrbit arrays.
-
643 
-
644  deallocate( nbit )
-
645  deallocate( mbit )
+
642  deallocate( nbit )
+
643  deallocate( mbit )
+
644 
+
645  ! moda_ival arrays.
646 
-
647  ! moda_ival arrays.
+
647  deallocate( ival )
648 
-
649  deallocate( ival )
+
649  ! moda_msgcwd arrays.
650 
-
651  ! moda_msgcwd arrays.
-
652 
-
653  deallocate( nmsg )
-
654  deallocate( nsub )
-
655  deallocate( msub )
-
656  deallocate( inode )
-
657  deallocate( idate )
+
651  deallocate( nmsg )
+
652  deallocate( nsub )
+
653  deallocate( msub )
+
654  deallocate( inode )
+
655  deallocate( idate )
+
656 
+
657  ! moda_stbfr arrays.
658 
-
659  ! moda_stbfr arrays.
-
660 
-
661  deallocate( iolun )
-
662  deallocate( iomsg )
+
659  deallocate( iolun )
+
660  deallocate( iomsg )
+
661 
+
662  ! moda_ufbcpl arrays.
663 
-
664  ! moda_ufbcpl arrays.
+
664  deallocate( luncpy )
665 
-
666  deallocate( luncpy )
+
666  ! moda_sc3bfr arrays.
667 
-
668  ! moda_sc3bfr arrays.
-
669 
-
670  deallocate( isc3 )
-
671  deallocate( tamnem )
+
668  deallocate( isc3 )
+
669  deallocate( tamnem )
+
670 
+
671  ! moda_unptyp arrays.
672 
-
673  ! moda_unptyp arrays.
+
673  deallocate( msgunp )
674 
-
675  deallocate( msgunp )
+
675  ! moda_lushr arrays.
676 
-
677  ! moda_lushr arrays.
+
677  deallocate( lus )
678 
-
679  deallocate( lus )
+
679  ! moda_nulbfr arrays.
680 
-
681  ! moda_nulbfr arrays.
+
681  deallocate( null )
682 
-
683  deallocate( null )
+
683  ! moda_stcode arrays.
684 
-
685  ! moda_stcode arrays.
+
685  deallocate( iscodes )
686 
-
687  deallocate( iscodes )
+
687  ! moda_idrdm arrays.
688 
-
689  ! moda_idrdm arrays.
+
689  deallocate( idrdm )
690 
-
691  deallocate( idrdm )
+
691  ! moda_xtab arrays.
692 
-
693  ! moda_xtab arrays.
+
693  deallocate( xtab )
694 
-
695  deallocate( xtab )
+
695  ! moda_msglim arrays.
696 
-
697  ! moda_msglim arrays.
+
697  deallocate( msglim )
698 
-
699  deallocate( msglim )
+
699  ! moda_bitbuf arrays.
700 
-
701  ! moda_bitbuf arrays.
-
702 
-
703  deallocate( ibay )
-
704  deallocate( mbyt )
-
705  deallocate( mbay )
+
701  deallocate( ibay )
+
702  deallocate( mbyt )
+
703  deallocate( mbay )
+
704 
+
705  ! moda_mgwa arrays.
706 
-
707  ! moda_mgwa arrays.
+
707  deallocate( mgwa )
708 
-
709  deallocate( mgwa )
+
709  ! moda_mgwb arrays.
710 
-
711  ! moda_mgwb arrays.
+
711  deallocate( mgwb )
712 
-
713  deallocate( mgwb )
+
713  ! moda_bufrmg arrays.
714 
-
715  ! moda_bufrmg arrays.
-
716 
-
717  deallocate( msglen )
-
718  deallocate( msgtxt )
+
715  deallocate( msglen )
+
716  deallocate( msgtxt )
+
717 
+
718  ! moda_bufrsr arrays.
719 
-
720  ! moda_bufrsr arrays.
-
721 
-
722  deallocate( jsr )
-
723  deallocate( jbay )
+
720  deallocate( jsr )
+
721  deallocate( jbay )
+
722 
+
723  ! moda_msgmem arrays.
724 
-
725  ! moda_msgmem arrays.
-
726 
-
727  deallocate( msgp )
-
728  deallocate( msgs )
-
729  deallocate( mdx )
-
730  deallocate( ipdxm )
-
731  deallocate( ifdxts )
-
732  deallocate( icdxts )
-
733  deallocate( ipmsgs )
+
725  deallocate( msgp )
+
726  deallocate( msgs )
+
727  deallocate( mdx )
+
728  deallocate( ipdxm )
+
729  deallocate( ifdxts )
+
730  deallocate( icdxts )
+
731  deallocate( ipmsgs )
+
732 
+
733  ! moda_tababd arrays.
734 
-
735  ! moda_tababd arrays.
-
736 
-
737  deallocate( ntba )
-
738  deallocate( ntbb )
-
739  deallocate( ntbd )
-
740  deallocate( mtab )
-
741  deallocate( idna )
-
742  deallocate( idnb )
-
743  deallocate( idnd )
-
744  deallocate( taba )
-
745  deallocate( tabb )
-
746  deallocate( tabd )
+
735  deallocate( ntba )
+
736  deallocate( ntbb )
+
737  deallocate( ntbd )
+
738  deallocate( mtab )
+
739  deallocate( idna )
+
740  deallocate( idnb )
+
741  deallocate( idnd )
+
742  deallocate( taba )
+
743  deallocate( tabb )
+
744  deallocate( tabd )
+
745 
+
746  ! moda_tables arrays.
747 
-
748  ! moda_tables arrays.
-
749 
-
750  deallocate( tag )
-
751  deallocate( typ )
-
752  deallocate( knt )
-
753  deallocate( jump )
-
754  deallocate( link )
-
755  deallocate( jmpb )
-
756  deallocate( ibt )
-
757  deallocate( irf )
-
758  deallocate( isc )
-
759  deallocate( itp )
-
760  deallocate( vali )
-
761  deallocate( knti )
-
762  deallocate( iseq )
-
763  deallocate( jseq )
+
748  deallocate( tag )
+
749  deallocate( typ )
+
750  deallocate( knt )
+
751  deallocate( jump )
+
752  deallocate( link )
+
753  deallocate( jmpb )
+
754  deallocate( ibt )
+
755  deallocate( irf )
+
756  deallocate( isc )
+
757  deallocate( itp )
+
758  deallocate( vali )
+
759  deallocate( knti )
+
760  deallocate( iseq )
+
761  deallocate( jseq )
+
762 
+
763  ! moda_usrtmp arrays.
764 
-
765  ! moda_usrtmp arrays.
-
766 
-
767  deallocate( iutmp )
-
768  deallocate( vutmp )
+
765  deallocate( iutmp )
+
766  deallocate( vutmp )
+
767 
+
768  ! moda_ivttmp arrays.
769 
-
770  ! moda_ivttmp arrays.
-
771 
-
772  deallocate( ttmp )
-
773  deallocate( itmp )
-
774  deallocate( vtmp )
+
770  deallocate( ttmp )
+
771  deallocate( itmp )
+
772  deallocate( vtmp )
+
773 
+
774  ! moda_comprx arrays.
775 
-
776  ! moda_comprx arrays.
-
777 
-
778  deallocate( kmin )
-
779  deallocate( kmax )
-
780  deallocate( kmis )
-
781  deallocate( kbit )
-
782  deallocate( ityp )
-
783  deallocate( iwid )
-
784  deallocate( cstr )
-
785  deallocate( jlnode )
+
776  deallocate( kmin )
+
777  deallocate( kmax )
+
778  deallocate( kmis )
+
779  deallocate( kbit )
+
780  deallocate( ityp )
+
781  deallocate( iwid )
+
782  deallocate( cstr )
+
783  deallocate( jlnode )
+
784 
+
785  ! moda_comprs arrays.
786 
-
787  ! moda_comprs arrays.
-
788 
-
789  deallocate( matx )
-
790  deallocate( catx )
+
787  deallocate( matx )
+
788  deallocate( catx )
+
789 
+
790  ! moda_mstabs arrays.
791 
-
792  ! moda_mstabs arrays.
-
793 
-
794  deallocate( ibfxyn )
-
795  deallocate( cbscl )
-
796  deallocate( cbsref )
-
797  deallocate( cbbw )
-
798  deallocate( cbunit )
-
799  deallocate( cbmnem )
-
800  deallocate( cbelem )
-
801  deallocate( idfxyn )
-
802  deallocate( cdseq )
-
803  deallocate( cdmnem )
-
804  deallocate( ndelem )
-
805  deallocate( idefxy )
+
792  deallocate( ibfxyn )
+
793  deallocate( cbscl )
+
794  deallocate( cbsref )
+
795  deallocate( cbbw )
+
796  deallocate( cbunit )
+
797  deallocate( cbmnem )
+
798  deallocate( cbelem )
+
799  deallocate( idfxyn )
+
800  deallocate( cdseq )
+
801  deallocate( cdmnem )
+
802  deallocate( ndelem )
+
803  deallocate( idefxy )
+
804 
+
805  ! moda_rdmtb arrays.
806 
-
807  ! moda_rdmtb arrays.
-
808 
-
809  deallocate( iefxyn )
-
810  deallocate( cmdscb )
-
811  deallocate( cmdscd )
-
812  deallocate( ceelem )
+
807  deallocate( iefxyn )
+
808  deallocate( cmdscb )
+
809  deallocate( cmdscd )
+
810  deallocate( ceelem )
+
811 
+
812  ! moda_nmikrp arrays.
813 
-
814  ! moda_nmikrp arrays.
-
815 
-
816  deallocate( nem )
-
817  deallocate( irp )
-
818  deallocate( krp )
+
814  deallocate( nem )
+
815  deallocate( irp )
+
816  deallocate( krp )
+
817 
+
818  ! moda_s01cm arrays.
819 
-
820  ! moda_s01cm arrays.
-
821 
-
822  deallocate( ivmnem )
-
823  deallocate( cmnem )
+
820  deallocate( ivmnem )
+
821  deallocate( cmnem )
+
822 
+
823  ! moda_bitmaps arrays.
824 
-
825  ! moda_bitmaps arrays.
-
826 
-
827  deallocate( inodtamc )
-
828  deallocate( ntco )
-
829  deallocate( ctco )
-
830  deallocate( inodtco )
-
831  deallocate( nbtmse )
-
832  deallocate( istbtm )
-
833  deallocate( iszbtm )
-
834  deallocate( ibtmse )
+
825  deallocate( inodtamc )
+
826  deallocate( ntco )
+
827  deallocate( ctco )
+
828  deallocate( inodtco )
+
829  deallocate( nbtmse )
+
830  deallocate( istbtm )
+
831  deallocate( iszbtm )
+
832  deallocate( ibtmse )
+
833 
+
834  ! moda_nrv203 arrays.
835 
-
836  ! moda_nrv203 arrays.
-
837 
-
838  deallocate( tagnrv )
-
839  deallocate( inodnrv )
-
840  deallocate( nrv )
-
841  deallocate( isnrv )
-
842  deallocate( ienrv )
+
836  deallocate( tagnrv )
+
837  deallocate( inodnrv )
+
838  deallocate( nrv )
+
839  deallocate( isnrv )
+
840  deallocate( ienrv )
+
841 
+
842  ! moda_rlccmn arrays.
843 
-
844  ! moda_rlccmn arrays.
-
845 
-
846  deallocate( irnch )
-
847  deallocate( irbit )
-
848  deallocate( crtag )
+
844  deallocate( irnch )
+
845  deallocate( irbit )
+
846  deallocate( crtag )
+
847 
+
848  ! moda_h4wlc arrays.
849 
-
850  ! moda_h4wlc arrays.
-
851 
-
852  deallocate( luh4wlc )
-
853  deallocate( sth4wlc )
-
854  deallocate( chh4wlc )
+
850  deallocate( luh4wlc )
+
851  deallocate( sth4wlc )
+
852  deallocate( chh4wlc )
+
853 
+
854  ! moda_dscach arrays.
855 
-
856  ! moda_dscach arrays.
-
857 
-
858  deallocate( cnem )
-
859  deallocate( ndc )
-
860  deallocate( idcach )
+
856  deallocate( cnem )
+
857  deallocate( ndc )
+
858  deallocate( idcach )
+
859 
+
860  ! moda_s3list arrays.
861 
-
862  ! moda_s3list arrays.
-
863 
-
864  deallocate( ids3 )
-
865  deallocate( cds3 )
+
862  deallocate( ids3 )
+
863  deallocate( cds3 )
+
864 
+
865  ! C language arrays.
866 
-
867  ! C language arrays.
+
867  call ardllocc_c
868 
-
869  call ardllocc_c
-
870 
-
871  return
-
872 end subroutine ardllocf
-
873 
-
900 subroutine exitbufr
+
869  return
+
870 end subroutine ardllocf
+
871 
+
898 subroutine exitbufr
+
899 
+
900  use bufrlib
901 
-
902  use bufrlib
+
902  use modv_vars, only: ifopbf, nfiles
903 
-
904  use modv_vars, only: ifopbf, nfiles
-
905 
-
906  use moda_stbfr
-
907  use moda_s01cm
-
908  use moda_tablef
-
909 
-
910  ! Close any logical units that are open to the library.
-
911 
-
912  do jj = 1, nfiles
-
913  if ( iolun(jj) /= 0 ) call closbf( abs(iolun(jj)) )
-
914  end do
-
915 
-
916  ! Deallocate all allocated memory.
-
917 
-
918  call ardllocf
-
919 
-
920  if ( cdmf == 'Y' ) call dlloctbf_c
+
904  use moda_stbfr
+
905  use moda_s01cm
+
906 
+
907  ! Close any logical units that are open to the library.
+
908 
+
909  do jj = 1, nfiles
+
910  if ( iolun(jj) /= 0 ) call closbf( abs(iolun(jj)) )
+
911  end do
+
912 
+
913  ! Deallocate all allocated memory.
+
914 
+
915  call ardllocf
+
916 
+
917  ! Reset the library.
+
918 
+
919  ns01v = 0
+
920  ifopbf = 0
921 
-
922  ! Reset the library.
-
923 
-
924  ns01v = 0
-
925  ifopbf = 0
-
926 
-
927  return
-
928 end subroutine exitbufr
-
929 
-
979 recursive integer function isetprm ( cprmnm, ipval ) result ( iret )
-
980 
-
981  use modv_vars, only: mxmsgl, maxss, nfiles, mxdxts, maxmsg, maxmem, maxtba, maxtbb, maxtbd, maxjl, &
-
982  mxcdv, mxlcc, mxcsb, mxmtbb, mxmtbd, mxmtbf, maxcd, mxs01v, mxbtm, mxbtmse, &
-
983  mxtamc, mxtco, mxnrv, mxrst, mxh4wlc, im8b, mxcnem, maxnc, mxnaf
-
984 
-
985  implicit none
-
986 
-
987  character*(*), intent(in) :: cprmnm
-
988 
-
989  integer, intent(in) :: ipval
-
990 
-
991  integer my_ipval
-
992 
-
993  character*128 errstr
+
922  return
+
923 end subroutine exitbufr
+
924 
+
974 recursive integer function isetprm ( cprmnm, ipval ) result ( iret )
+
975 
+
976  use modv_vars, only: mxmsgl, maxss, nfiles, mxdxts, maxmsg, maxmem, maxtba, maxtbb, maxtbd, maxjl, &
+
977  mxcdv, mxlcc, mxcsb, mxmtbb, mxmtbd, mxmtbf, maxcd, mxs01v, mxbtm, mxbtmse, &
+
978  mxtamc, mxtco, mxnrv, mxrst, mxh4wlc, im8b, mxcnem, maxnc, mxnaf
+
979 
+
980  implicit none
+
981 
+
982  character*(*), intent(in) :: cprmnm
+
983 
+
984  integer, intent(in) :: ipval
+
985 
+
986  integer my_ipval
+
987 
+
988  character*128 errstr
+
989 
+
990  ! Check for I8 integers.
+
991 
+
992  if ( im8b ) then
+
993  im8b = .false.
994 
-
995  ! Check for I8 integers.
-
996 
-
997  if ( im8b ) then
-
998  im8b = .false.
-
999 
-
1000  call x84 ( ipval, my_ipval, 1 )
-
1001  iret = isetprm( cprmnm, my_ipval )
-
1002 
-
1003  im8b = .true.
-
1004  return
-
1005  endif
-
1006 
-
1007  iret = 0
-
1008  if ( cprmnm == 'MAXSS' ) then
-
1009  maxss = ipval
-
1010  else if ( cprmnm == 'NFILES' ) then
-
1011  nfiles = ipval
-
1012  else if ( cprmnm == 'MXMSGL' ) then
-
1013  mxmsgl = ipval
-
1014  else if ( cprmnm == 'MXDXTS' ) then
-
1015  mxdxts = ipval
-
1016  else if ( cprmnm == 'MAXMSG' ) then
-
1017  maxmsg = ipval
-
1018  else if ( cprmnm == 'MAXMEM' ) then
-
1019  maxmem = ipval
-
1020  else if ( cprmnm == 'MAXTBA' ) then
-
1021  maxtba = ipval
-
1022  else if ( cprmnm == 'MAXTBB' ) then
-
1023  maxtbb = ipval
-
1024  else if ( cprmnm == 'MAXTBD' ) then
-
1025  maxtbd = ipval
-
1026  else if ( cprmnm == 'MAXJL' ) then
-
1027  maxjl = ipval
-
1028  else if ( cprmnm == 'MXCDV' ) then
-
1029  mxcdv = ipval
-
1030  else if ( cprmnm == 'MXLCC' ) then
-
1031  mxlcc = ipval
-
1032  else if ( cprmnm == 'MXCSB' ) then
-
1033  mxcsb = ipval
-
1034  else if ( cprmnm == 'MXMTBB' ) then
-
1035  mxmtbb = ipval
-
1036  else if ( cprmnm == 'MXMTBD' ) then
-
1037  mxmtbd = ipval
-
1038  else if ( cprmnm == 'MXMTBF' ) then
-
1039  mxmtbf = ipval
-
1040  else if ( cprmnm == 'MAXCD' ) then
-
1041  maxcd = ipval
-
1042  else if ( cprmnm == 'MXS01V' ) then
-
1043  mxs01v = ipval
-
1044  else if ( cprmnm == 'MXBTM' ) then
-
1045  mxbtm = ipval
-
1046  else if ( cprmnm == 'MXBTMSE' ) then
-
1047  mxbtmse = ipval
-
1048  else if ( cprmnm == 'MXTAMC' ) then
-
1049  mxtamc = ipval
-
1050  else if ( cprmnm == 'MXTCO' ) then
-
1051  mxtco = ipval
-
1052  else if ( cprmnm == 'MXNRV' ) then
-
1053  mxnrv = ipval
-
1054  else if ( cprmnm == 'MXRST' ) then
-
1055  mxrst = ipval
-
1056  else if ( cprmnm == 'MXH4WLC' ) then
-
1057  mxh4wlc = ipval
-
1058  else if ( cprmnm == 'MXCNEM' ) then
-
1059  mxcnem = ipval
-
1060  else if ( cprmnm == 'MAXNC' ) then
-
1061  maxnc = ipval
-
1062  else if ( cprmnm == 'MXNAF' ) then
-
1063  mxnaf = ipval
-
1064  else
-
1065  iret = -1
-
1066  call errwrt('++++++++++++++++++WARNING+++++++++++++++++++')
-
1067  errstr = 'BUFRLIB: ISETPRM - UNKNOWN INPUT PARAMETER '// cprmnm // ' -- NO ACTION WAS TAKEN'
-
1068  call errwrt(errstr)
-
1069  call errwrt('++++++++++++++++++WARNING+++++++++++++++++++')
-
1070  endif
-
1071 
-
1072  return
-
1073 end function isetprm
-
1074 
-
1113 integer function igetprm ( cprmnm ) result ( iret )
-
1114 
-
1115  use modv_vars, only: mxmsgl, maxss, nfiles, mxdxts, maxmsg, maxmem, maxtba, maxtbb, maxtbd, maxjl, &
-
1116  mxcdv, mxlcc, mxcsb, mxmtbb, mxmtbd, mxmtbf, maxcd, mxs01v, mxbtm, mxbtmse, &
-
1117  mxtamc, mxtco, mxnrv, mxrst, mxh4wlc, mxcnem, maxnc, mxnaf
-
1118 
-
1119  implicit none
-
1120 
-
1121  character*(*), intent(in) :: cprmnm
-
1122 
-
1123  character*64 errstr
-
1124 
-
1125  if ( cprmnm == 'MAXSS' ) then
-
1126  iret = maxss
-
1127  else if ( cprmnm == 'NFILES' ) then
-
1128  iret = nfiles
-
1129  else if ( cprmnm == 'MXMSGL' ) then
-
1130  iret = mxmsgl
-
1131  else if ( cprmnm == 'MXDXTS' ) then
-
1132  iret = mxdxts
-
1133  else if ( cprmnm == 'MAXMSG' ) then
-
1134  iret = maxmsg
-
1135  else if ( cprmnm == 'MAXMEM' ) then
-
1136  iret = maxmem
-
1137  else if ( cprmnm == 'MAXTBA' ) then
-
1138  iret = maxtba
-
1139  else if ( cprmnm == 'MAXTBB' ) then
-
1140  iret = maxtbb
-
1141  else if ( cprmnm == 'MAXTBD' ) then
-
1142  iret = maxtbd
-
1143  else if ( cprmnm == 'MAXJL' ) then
-
1144  iret = maxjl
-
1145  else if ( cprmnm == 'MXCDV' ) then
-
1146  iret = mxcdv
-
1147  else if ( cprmnm == 'MXLCC' ) then
-
1148  iret = mxlcc
-
1149  else if ( cprmnm == 'MXCSB' ) then
-
1150  iret = mxcsb
-
1151  else if ( cprmnm == 'MXMTBB' ) then
-
1152  iret = mxmtbb
-
1153  else if ( cprmnm == 'MXMTBD' ) then
-
1154  iret = mxmtbd
-
1155  else if ( cprmnm == 'MXMTBF' ) then
-
1156  iret = mxmtbf
-
1157  else if ( cprmnm == 'MAXCD' ) then
-
1158  iret = maxcd
-
1159  else if ( cprmnm == 'MXS01V' ) then
-
1160  iret = mxs01v
-
1161  else if ( cprmnm == 'MXBTM' ) then
-
1162  iret = mxbtm
-
1163  else if ( cprmnm == 'MXBTMSE' ) then
-
1164  iret = mxbtmse
-
1165  else if ( cprmnm == 'MXTAMC' ) then
-
1166  iret = mxtamc
-
1167  else if ( cprmnm == 'MXTCO' ) then
-
1168  iret = mxtco
-
1169  else if ( cprmnm == 'MXNRV' ) then
-
1170  iret = mxnrv
-
1171  else if ( cprmnm == 'MXRST' ) then
-
1172  iret = mxrst
-
1173  else if ( cprmnm == 'MXH4WLC' ) then
-
1174  iret = mxh4wlc
-
1175  else if ( cprmnm == 'MXCNEM' ) then
-
1176  iret = mxcnem
-
1177  else if ( cprmnm == 'MAXNC' ) then
-
1178  iret = maxnc
-
1179  else if ( cprmnm == 'MXNAF' ) then
-
1180  iret = mxnaf
-
1181  else
-
1182  iret = -1
-
1183  call errwrt('++++++++++++++++++WARNING+++++++++++++++++++')
-
1184  errstr = 'BUFRLIB: IGETPRM - UNKNOWN INPUT PARAMETER '// cprmnm
-
1185  call errwrt(errstr)
-
1186  call errwrt('++++++++++++++++++WARNING+++++++++++++++++++')
-
1187  endif
-
1188 
-
1189  return
-
1190 end function igetprm
-
integer function igetprm(cprmnm)
Return the current value of a parameter used for allocating one or more internal arrays within the NC...
Definition: arallocf.F90:1114
+
995  call x84 ( ipval, my_ipval, 1 )
+
996  iret = isetprm( cprmnm, my_ipval )
+
997 
+
998  im8b = .true.
+
999  return
+
1000  endif
+
1001 
+
1002  iret = 0
+
1003  if ( cprmnm == 'MAXSS' ) then
+
1004  maxss = ipval
+
1005  else if ( cprmnm == 'NFILES' ) then
+
1006  nfiles = ipval
+
1007  else if ( cprmnm == 'MXMSGL' ) then
+
1008  mxmsgl = ipval
+
1009  else if ( cprmnm == 'MXDXTS' ) then
+
1010  mxdxts = ipval
+
1011  else if ( cprmnm == 'MAXMSG' ) then
+
1012  maxmsg = ipval
+
1013  else if ( cprmnm == 'MAXMEM' ) then
+
1014  maxmem = ipval
+
1015  else if ( cprmnm == 'MAXTBA' ) then
+
1016  maxtba = ipval
+
1017  else if ( cprmnm == 'MAXTBB' ) then
+
1018  maxtbb = ipval
+
1019  else if ( cprmnm == 'MAXTBD' ) then
+
1020  maxtbd = ipval
+
1021  else if ( cprmnm == 'MAXJL' ) then
+
1022  maxjl = ipval
+
1023  else if ( cprmnm == 'MXCDV' ) then
+
1024  mxcdv = ipval
+
1025  else if ( cprmnm == 'MXLCC' ) then
+
1026  mxlcc = ipval
+
1027  else if ( cprmnm == 'MXCSB' ) then
+
1028  mxcsb = ipval
+
1029  else if ( cprmnm == 'MXMTBB' ) then
+
1030  mxmtbb = ipval
+
1031  else if ( cprmnm == 'MXMTBD' ) then
+
1032  mxmtbd = ipval
+
1033  else if ( cprmnm == 'MXMTBF' ) then
+
1034  mxmtbf = ipval
+
1035  else if ( cprmnm == 'MAXCD' ) then
+
1036  maxcd = ipval
+
1037  else if ( cprmnm == 'MXS01V' ) then
+
1038  mxs01v = ipval
+
1039  else if ( cprmnm == 'MXBTM' ) then
+
1040  mxbtm = ipval
+
1041  else if ( cprmnm == 'MXBTMSE' ) then
+
1042  mxbtmse = ipval
+
1043  else if ( cprmnm == 'MXTAMC' ) then
+
1044  mxtamc = ipval
+
1045  else if ( cprmnm == 'MXTCO' ) then
+
1046  mxtco = ipval
+
1047  else if ( cprmnm == 'MXNRV' ) then
+
1048  mxnrv = ipval
+
1049  else if ( cprmnm == 'MXRST' ) then
+
1050  mxrst = ipval
+
1051  else if ( cprmnm == 'MXH4WLC' ) then
+
1052  mxh4wlc = ipval
+
1053  else if ( cprmnm == 'MXCNEM' ) then
+
1054  mxcnem = ipval
+
1055  else if ( cprmnm == 'MAXNC' ) then
+
1056  maxnc = ipval
+
1057  else if ( cprmnm == 'MXNAF' ) then
+
1058  mxnaf = ipval
+
1059  else
+
1060  iret = -1
+
1061  call errwrt('++++++++++++++++++WARNING+++++++++++++++++++')
+
1062  errstr = 'BUFRLIB: ISETPRM - UNKNOWN INPUT PARAMETER '// cprmnm // ' -- NO ACTION WAS TAKEN'
+
1063  call errwrt(errstr)
+
1064  call errwrt('++++++++++++++++++WARNING+++++++++++++++++++')
+
1065  endif
+
1066 
+
1067  return
+
1068 end function isetprm
+
1069 
+
1108 integer function igetprm ( cprmnm ) result ( iret )
+
1109 
+
1110  use modv_vars, only: mxmsgl, maxss, nfiles, mxdxts, maxmsg, maxmem, maxtba, maxtbb, maxtbd, maxjl, &
+
1111  mxcdv, mxlcc, mxcsb, mxmtbb, mxmtbd, mxmtbf, maxcd, mxs01v, mxbtm, mxbtmse, &
+
1112  mxtamc, mxtco, mxnrv, mxrst, mxh4wlc, mxcnem, maxnc, mxnaf
+
1113 
+
1114  implicit none
+
1115 
+
1116  character*(*), intent(in) :: cprmnm
+
1117 
+
1118  character*64 errstr
+
1119 
+
1120  if ( cprmnm == 'MAXSS' ) then
+
1121  iret = maxss
+
1122  else if ( cprmnm == 'NFILES' ) then
+
1123  iret = nfiles
+
1124  else if ( cprmnm == 'MXMSGL' ) then
+
1125  iret = mxmsgl
+
1126  else if ( cprmnm == 'MXDXTS' ) then
+
1127  iret = mxdxts
+
1128  else if ( cprmnm == 'MAXMSG' ) then
+
1129  iret = maxmsg
+
1130  else if ( cprmnm == 'MAXMEM' ) then
+
1131  iret = maxmem
+
1132  else if ( cprmnm == 'MAXTBA' ) then
+
1133  iret = maxtba
+
1134  else if ( cprmnm == 'MAXTBB' ) then
+
1135  iret = maxtbb
+
1136  else if ( cprmnm == 'MAXTBD' ) then
+
1137  iret = maxtbd
+
1138  else if ( cprmnm == 'MAXJL' ) then
+
1139  iret = maxjl
+
1140  else if ( cprmnm == 'MXCDV' ) then
+
1141  iret = mxcdv
+
1142  else if ( cprmnm == 'MXLCC' ) then
+
1143  iret = mxlcc
+
1144  else if ( cprmnm == 'MXCSB' ) then
+
1145  iret = mxcsb
+
1146  else if ( cprmnm == 'MXMTBB' ) then
+
1147  iret = mxmtbb
+
1148  else if ( cprmnm == 'MXMTBD' ) then
+
1149  iret = mxmtbd
+
1150  else if ( cprmnm == 'MXMTBF' ) then
+
1151  iret = mxmtbf
+
1152  else if ( cprmnm == 'MAXCD' ) then
+
1153  iret = maxcd
+
1154  else if ( cprmnm == 'MXS01V' ) then
+
1155  iret = mxs01v
+
1156  else if ( cprmnm == 'MXBTM' ) then
+
1157  iret = mxbtm
+
1158  else if ( cprmnm == 'MXBTMSE' ) then
+
1159  iret = mxbtmse
+
1160  else if ( cprmnm == 'MXTAMC' ) then
+
1161  iret = mxtamc
+
1162  else if ( cprmnm == 'MXTCO' ) then
+
1163  iret = mxtco
+
1164  else if ( cprmnm == 'MXNRV' ) then
+
1165  iret = mxnrv
+
1166  else if ( cprmnm == 'MXRST' ) then
+
1167  iret = mxrst
+
1168  else if ( cprmnm == 'MXH4WLC' ) then
+
1169  iret = mxh4wlc
+
1170  else if ( cprmnm == 'MXCNEM' ) then
+
1171  iret = mxcnem
+
1172  else if ( cprmnm == 'MAXNC' ) then
+
1173  iret = maxnc
+
1174  else if ( cprmnm == 'MXNAF' ) then
+
1175  iret = mxnaf
+
1176  else
+
1177  iret = -1
+
1178  call errwrt('++++++++++++++++++WARNING+++++++++++++++++++')
+
1179  errstr = 'BUFRLIB: IGETPRM - UNKNOWN INPUT PARAMETER '// cprmnm
+
1180  call errwrt(errstr)
+
1181  call errwrt('++++++++++++++++++WARNING+++++++++++++++++++')
+
1182  endif
+
1183 
+
1184  return
+
1185 end function igetprm
+
integer function igetprm(cprmnm)
Return the current value of a parameter used for allocating one or more internal arrays within the NC...
Definition: arallocf.F90:1109
subroutine arallocf
Dynamically allocate Fortran language arrays.
Definition: arallocf.F90:19
-
subroutine exitbufr
Free all dynamically-allocated memory, close all logical units that are open within the NCEPLIBS-bufr...
Definition: arallocf.F90:901
-
recursive integer function isetprm(cprmnm, ipval)
Set a specified parameter to a specified value for use in dynamically allocating one or more internal...
Definition: arallocf.F90:980
-
subroutine ardllocf
Free all memory that was dynamically allocated during a previous call to subroutine arallocf().
Definition: arallocf.F90:593
+
subroutine exitbufr
Free all dynamically-allocated memory, close all logical units that are open within the NCEPLIBS-bufr...
Definition: arallocf.F90:899
+
recursive integer function isetprm(cprmnm, ipval)
Set a specified parameter to a specified value for use in dynamically allocating one or more internal...
Definition: arallocf.F90:975
+
subroutine ardllocf
Free all memory that was dynamically allocated during a previous call to subroutine arallocf().
Definition: arallocf.F90:591
subroutine bort(str)
Log an error message, then abort the application program.
Definition: borts.F90:15
subroutine errwrt(str)
Specify a custom location for the logging of error and diagnostic messages generated by the NCEPLIBS-...
Definition: errwrt.F90:32
Definition: bufrlib.F90:174
@@ -1242,84 +1237,82 @@
integer, dimension(:,:), allocatable krp
Replication counts corresponding to nem:
integer, dimension(:,:), allocatable irp
Replication indicators corresponding to nem:
character *8, dimension(:,:), allocatable nem
Child mnemonics within Table D sequences.
-
Declare arrays and variables for use with any 2-03-YYY (change reference value) operators present wit...
-
integer, dimension(:), allocatable ienrv
End of entry range in jump/link table, within which the corresponding new reference value in nrv will...
-
character *8, dimension(:), allocatable tagnrv
Table B mnemonic to which the corresponding new reference value in nrv applies.
-
integer, dimension(:), allocatable isnrv
Start of entry range in jump/link table, within which the corresponding new reference value in nrv wi...
-
integer *8, dimension(:), allocatable nrv
New reference values corresponding to inodnrv.
-
integer, dimension(:), allocatable inodnrv
Entries within jump/link table which contain new reference values.
-
Declare an array used to store a switch for each file ID, indicating whether any BUFR messages should...
-
integer, dimension(:), allocatable null
Output switch for each file ID:
-
Declare arrays and variables used to store master Table B and Table D entries within internal memory.
-
character *120, dimension(:,:), allocatable ceelem
Element names corresponding to iefxyn.
-
character *4, dimension(:), allocatable cmdscb
Descriptor codes for Table B elements.
-
integer, dimension(:,:), allocatable iefxyn
WMO bit-wise representations of child descriptors of Table D sequences.
-
character *4, dimension(:), allocatable cmdscd
Descriptor codes for Table D sequences.
-
Declare arrays and variables needed to store information about long character strings (greater than 8...
-
integer, dimension(:), allocatable irnch
Lengths (in bytes) of long character strings.
-
integer, dimension(:), allocatable irbit
Pointers in data subset to first bits of long character strings.
-
character *10, dimension(:), allocatable crtag
Table B mnemonics associated with long character strings.
-
Declare arrays and variables used to store custom values for certain mnemonics within Sections 0 and ...
-
integer, dimension(:), allocatable ivmnem
Custom values for use within Sections 0 and 1 of all future output BUFR messages written to all Fortr...
-
integer ns01v
Number of custom values stored.
-
character *8, dimension(:), allocatable cmnem
Section 0 and 1 mnemonics corresponding to ivmnem.
+
Declare arrays and variables for use with any 2-03-YYY (change reference value) operators present wit...
+
integer, dimension(:), allocatable ienrv
End of entry range in jump/link table, within which the corresponding new reference value in nrv will...
+
character *8, dimension(:), allocatable tagnrv
Table B mnemonic to which the corresponding new reference value in nrv applies.
+
integer, dimension(:), allocatable isnrv
Start of entry range in jump/link table, within which the corresponding new reference value in nrv wi...
+
integer *8, dimension(:), allocatable nrv
New reference values corresponding to inodnrv.
+
integer, dimension(:), allocatable inodnrv
Entries within jump/link table which contain new reference values.
+
Declare an array used to store a switch for each file ID, indicating whether any BUFR messages should...
+
integer, dimension(:), allocatable null
Output switch for each file ID:
+
Declare arrays and variables used to store master Table B and Table D entries within internal memory.
+
character *120, dimension(:,:), allocatable ceelem
Element names corresponding to iefxyn.
+
character *4, dimension(:), allocatable cmdscb
Descriptor codes for Table B elements.
+
integer, dimension(:,:), allocatable iefxyn
WMO bit-wise representations of child descriptors of Table D sequences.
+
character *4, dimension(:), allocatable cmdscd
Descriptor codes for Table D sequences.
+
Declare arrays and variables needed to store information about long character strings (greater than 8...
+
integer, dimension(:), allocatable irnch
Lengths (in bytes) of long character strings.
+
integer, dimension(:), allocatable irbit
Pointers in data subset to first bits of long character strings.
+
character *10, dimension(:), allocatable crtag
Table B mnemonics associated with long character strings.
+
Declare arrays and variables used to store custom values for certain mnemonics within Sections 0 and ...
+
integer, dimension(:), allocatable ivmnem
Custom values for use within Sections 0 and 1 of all future output BUFR messages written to all Fortr...
+
integer ns01v
Number of custom values stored.
+
character *8, dimension(:), allocatable cmnem
Section 0 and 1 mnemonics corresponding to ivmnem.
Declare arrays used by various subroutines and functions to hold a temporary working copy of a Sectio...
integer, dimension(:), allocatable ids3
Temporary working copy of Section 3 descriptor list in integer form.
character *6, dimension(:), allocatable cds3
Temporary working copy of Section 3 descriptor list in character form.
-
Declare an array used to store a switch for each file ID, indicating whether BUFR messages read from ...
-
character *8, dimension(:), allocatable tamnem
Table A mnemonic most recently read from each file ID, if isc3 = 1 for that stream.
-
integer, dimension(:), allocatable isc3
Section 3 switch for each file ID:
-
Declare arrays used to store file and message status indicators for all logical units that have been ...
-
integer, dimension(:), allocatable iolun
File status indicators.
-
integer, dimension(:), allocatable iomsg
Message status indicator corresponding to iolun, denoting whether a BUFR message is currently open wi...
-
Declare an array used to store a status code for each file ID if an error or other abnormal result oc...
-
integer, dimension(:), allocatable iscodes
Abnormal status codes.
-
Declare arrays and variables used to store DX BUFR tables internally for multiple file IDs.
-
integer, dimension(:), allocatable ntba
Number of Table A entries for each file ID (up to a maximum of maxtba, whose value is stored in array...
-
character *600, dimension(:,:), allocatable tabd
Table D entries for each file ID.
-
character *128, dimension(:,:), allocatable taba
Table A entries for each file ID.
-
integer, dimension(:,:), allocatable mtab
Entries within jump/link table corresponding to taba.
-
integer, dimension(:,:,:), allocatable idna
Message types (in array element 1) and subtypes (in array element 2) corresponding to taba.
-
integer, dimension(:), allocatable ntbd
Number of Table D entries for each file ID (up to a maximum of maxtbd, whose value is stored in array...
-
integer, dimension(:), allocatable ntbb
Number of Table B entries for each file ID (up to a maximum of maxtbb, whose value is stored in array...
-
integer, dimension(:,:), allocatable idnd
WMO bit-wise representations of the FXY values corresponding to tabd.
-
integer, dimension(:,:), allocatable idnb
WMO bit-wise representations of the FXY values corresponding to tabb.
-
character *128, dimension(:,:), allocatable tabb
Table B entries for each file ID.
-
Declare a variable used to indicate whether master code and flag tables should be read.
-
character cdmf
Flag indicating whether to include code and flag table information during reads of master BUFR tables...
-
Declare arrays and variables used to store the internal jump/link table.
-
integer, dimension(:), allocatable jseq
Temporary storage used in expanding sequences.
-
integer, dimension(:), allocatable irf
Reference values corresponding to tag and typ:
-
integer, dimension(:,:), allocatable iseq
Temporary storage used in expanding sequences.
-
integer, dimension(:), allocatable isc
Scale factors corresponding to tag and typ:
-
integer, dimension(:), allocatable ibt
Bit widths corresponding to tag and typ:
-
integer, dimension(:), allocatable knt
Temporary storage used in calculating delayed replication counts.
-
real *8, dimension(:), allocatable vali
Initialized data values corresponding to typ:
-
character *3, dimension(:), allocatable typ
Type indicators corresponding to tag:
-
integer, dimension(:), allocatable jmpb
Jump backward indices corresponding to tag and typ:
-
character *10, dimension(:), allocatable tag
Mnemonics in the jump/link table.
-
integer, dimension(:), allocatable jump
Jump forward indices corresponding to tag and typ:
-
integer, dimension(:), allocatable itp
Integer type values corresponding to typ:
-
integer, dimension(:), allocatable link
Link indices corresponding to tag, typ and jmpb:
-
integer, dimension(:), allocatable knti
Initialized replication counts corresponding to typ and jump:
-
Declare an array used to store, for each file ID, the logical unit number corresponding to a separate...
-
integer, dimension(:), allocatable luncpy
Logical unit numbers used to copy long character strings between BUFR data subsets.
-
Declare an array used to store, for each file ID from which a BUFR message is currently being read as...
-
integer, dimension(:), allocatable msgunp
Flag indicating how to unpack data subsets from BUFR message:
-
Declare arrays for internal storage of pointers to BUFR data subset values.
-
integer, dimension(:), allocatable nbit
Length (in bits) of each packed data value in data subset.
-
integer, dimension(:), allocatable mbit
Pointer in data subset to first bit of each packed data value.
-
Declare arrays used to store data values and associated metadata for the current BUFR data subset in ...
-
integer, dimension(:), allocatable nval
Number of data values in BUFR data subset.
-
real *8, dimension(:,:), allocatable, target val
Data values.
-
integer, dimension(:,:), allocatable, target inv
Inventory pointer which links each data value to its corresponding node in the internal jump/link tab...
-
integer, dimension(:,:), allocatable nrfelm
Referenced data value, for data values which refer to a previous data value in the BUFR data subset v...
-
Declare arrays used in subroutine rcstpl() to store subset segments that are being copied from a subs...
-
integer, dimension(:,:), allocatable iutmp
inv array elements for new sections of a growing subset buffer.
-
real *8, dimension(:,:), allocatable vutmp
val array elements for new sections of a growing subset buffer.
-
Declare an array used to track, for each file ID, whether the DX BUFR table associated with the corre...
-
logical, dimension(:), allocatable xtab
Tracking index for each file ID.
-
recursive subroutine closbf(lunit)
Close the connection between logical unit lunit and the NCEPLIBS-bufr software.
+
Declare an array used to store a switch for each file ID, indicating whether BUFR messages read from ...
+
character *8, dimension(:), allocatable tamnem
Table A mnemonic most recently read from each file ID, if isc3 = 1 for that stream.
+
integer, dimension(:), allocatable isc3
Section 3 switch for each file ID:
+
Declare arrays used to store file and message status indicators for all logical units that have been ...
+
integer, dimension(:), allocatable iolun
File status indicators.
+
integer, dimension(:), allocatable iomsg
Message status indicator corresponding to iolun, denoting whether a BUFR message is currently open wi...
+
Declare an array used to store a status code for each file ID if an error or other abnormal result oc...
+
integer, dimension(:), allocatable iscodes
Abnormal status codes.
+
Declare arrays and variables used to store DX BUFR tables internally for multiple file IDs.
+
integer, dimension(:), allocatable ntba
Number of Table A entries for each file ID (up to a maximum of maxtba, whose value is stored in array...
+
character *600, dimension(:,:), allocatable tabd
Table D entries for each file ID.
+
character *128, dimension(:,:), allocatable taba
Table A entries for each file ID.
+
integer, dimension(:,:), allocatable mtab
Entries within jump/link table corresponding to taba.
+
integer, dimension(:,:,:), allocatable idna
Message types (in array element 1) and subtypes (in array element 2) corresponding to taba.
+
integer, dimension(:), allocatable ntbd
Number of Table D entries for each file ID (up to a maximum of maxtbd, whose value is stored in array...
+
integer, dimension(:), allocatable ntbb
Number of Table B entries for each file ID (up to a maximum of maxtbb, whose value is stored in array...
+
integer, dimension(:,:), allocatable idnd
WMO bit-wise representations of the FXY values corresponding to tabd.
+
integer, dimension(:,:), allocatable idnb
WMO bit-wise representations of the FXY values corresponding to tabb.
+
character *128, dimension(:,:), allocatable tabb
Table B entries for each file ID.
+
Declare arrays and variables used to store the internal jump/link table.
+
integer, dimension(:), allocatable jseq
Temporary storage used in expanding sequences.
+
integer, dimension(:), allocatable irf
Reference values corresponding to tag and typ:
+
integer, dimension(:,:), allocatable iseq
Temporary storage used in expanding sequences.
+
integer, dimension(:), allocatable isc
Scale factors corresponding to tag and typ:
+
integer, dimension(:), allocatable ibt
Bit widths corresponding to tag and typ:
+
integer, dimension(:), allocatable knt
Temporary storage used in calculating delayed replication counts.
+
real *8, dimension(:), allocatable vali
Initialized data values corresponding to typ:
+
character *3, dimension(:), allocatable typ
Type indicators corresponding to tag:
+
integer, dimension(:), allocatable jmpb
Jump backward indices corresponding to tag and typ:
+
character *10, dimension(:), allocatable tag
Mnemonics in the jump/link table.
+
integer, dimension(:), allocatable jump
Jump forward indices corresponding to tag and typ:
+
integer, dimension(:), allocatable itp
Integer type values corresponding to typ:
+
integer, dimension(:), allocatable link
Link indices corresponding to tag, typ and jmpb:
+
integer, dimension(:), allocatable knti
Initialized replication counts corresponding to typ and jump:
+
Declare an array used to store, for each file ID, the logical unit number corresponding to a separate...
+
integer, dimension(:), allocatable luncpy
Logical unit numbers used to copy long character strings between BUFR data subsets.
+
Declare an array used to store, for each file ID from which a BUFR message is currently being read as...
+
integer, dimension(:), allocatable msgunp
Flag indicating how to unpack data subsets from BUFR message:
+
Declare arrays for internal storage of pointers to BUFR data subset values.
+
integer, dimension(:), allocatable nbit
Length (in bits) of each packed data value in data subset.
+
integer, dimension(:), allocatable mbit
Pointer in data subset to first bit of each packed data value.
+
Declare arrays used to store data values and associated metadata for the current BUFR data subset in ...
+
integer, dimension(:), allocatable nval
Number of data values in BUFR data subset.
+
real *8, dimension(:,:), allocatable, target val
Data values.
+
integer, dimension(:,:), allocatable, target inv
Inventory pointer which links each data value to its corresponding node in the internal jump/link tab...
+
integer, dimension(:,:), allocatable nrfelm
Referenced data value, for data values which refer to a previous data value in the BUFR data subset v...
+
Declare arrays used in subroutine rcstpl() to store subset segments that are being copied from a subs...
+
integer, dimension(:,:), allocatable iutmp
inv array elements for new sections of a growing subset buffer.
+
real *8, dimension(:,:), allocatable vutmp
val array elements for new sections of a growing subset buffer.
+
Declare an array used to track, for each file ID, whether the DX BUFR table associated with the corre...
+
logical, dimension(:), allocatable xtab
Tracking index for each file ID.
+
recursive subroutine closbf(lunit)
Close the connection between logical unit lunit and the NCEPLIBS-bufr software.
subroutine x84(iin8, iout4, nval)
Encode one or more 8-byte integer values as 4-byte integer values.
Definition: x4884.F90:65
diff --git a/binv_8F90.html b/binv_8F90.html index ca8f4723d..5cf27e3a2 100644 --- a/binv_8F90.html +++ b/binv_8F90.html @@ -26,7 +26,7 @@ diff --git a/binv_8F90_source.html b/binv_8F90_source.html index 1b6f7c8b9..afcb274e0 100644 --- a/binv_8F90_source.html +++ b/binv_8F90_source.html @@ -26,7 +26,7 @@ @@ -88,18 +88,18 @@
Go to the documentation of this file.
1 
5 
-
11 PROGRAM binv
+
11 program binv
12 
13  parameter(maxsub=100)
14 
-
15  CHARACTER*255 file
-
16  CHARACTER*8 subset
-
17  CHARACTER*8 sub(maxsub)
+
15  character*255 file
+
16  character*8 subset
+
17  character*8 sub(maxsub)
18  integer*8 ninv(3,maxsub)
19  real*8 xsub, xmsg
20  logical exist
21 
-
22  DATA lunbf /20/
+
22  data lunbf /20/
23 
24  !-----------------------------------------------------------------------
25  nmbyt(lunit)= iupvs01(lunit,'LENM')
@@ -110,7 +110,7 @@
30  narg=command_argument_count()
31  if(narg/=1) then
32  print *,'Usage: binv <bufrfile> will print bufrfile inventory by message type'
-
33  call exit(2)
+
33  stop 2
34  endif
35 
36  call get_command_argument(1,file)
@@ -118,7 +118,7 @@
38  inquire(file=file,exist=exist)
39  if (.not.exist) then
40  print *,trim(file)//' does not exist'
-
41  call exit(3)
+
41  stop 3
42  endif
43  open(lunbf,file=file,form='unformatted')
44 
@@ -126,54 +126,54 @@
46  nsub = 0
47 
48 
-
49  ! COMPUTE AN MESSAGE INVENTORY BY SUBSETS
-
50  ! ---------------------------------------
+
49  ! Compute a message inventory by subsets
+
50  ! --------------------------------------
51 
-
52  CALL openbf(lunbf,'IN',lunbf)
-
53  DO WHILE(ireadmg(lunbf,subset,idate)==0)
+
52  call openbf(lunbf,'IN',lunbf)
+
53  do while(ireadmg(lunbf,subset,idate)==0)
54  isub = 0
-
55  DO i=1,nsub
-
56  IF(subset==sub(i)) isub = i
-
57  ENDDO
-
58  IF(isub==0) THEN
-
59  IF(nsub+1>maxsub) CALL bort('NSUB TOO BIG')
+
55  do i=1,nsub
+
56  if(subset==sub(i)) isub = i
+
57  enddo
+
58  if(isub==0) then
+
59  if(nsub+1>maxsub) call bort('NSUB TOO BIG')
60  sub(nsub+1) = subset
61  nsub = nsub+1
62  isub = nsub
-
63  ENDIF
+
63  endif
64  ninv(1,isub) = ninv(1,isub)+1
65  ninv(2,isub) = ninv(2,isub)+nmsub(lunbf)
66  ninv(3,isub) = ninv(3,isub)+nmbyt(lunbf)
-
67  ENDDO
+
67  enddo
68 
-
69  ! PRINT THE INVENTORY
+
69  ! Print the inventory
70  ! -------------------
71 
72  print*
73  print'(a4,6x,2(a10,4x),a11)','type','messages','subsets','bytes'
74  print*
-
75  DO j=1,nsub
+
75  do j=1,nsub
76  xmsg = ninv(1,j)
77  xsub = ninv(2,j)
78  print'(a8,2x,2(i10,4x),i11,4x,f8.2)',sub(j),(ninv(i,j),i=1,3),xsub/xmsg
-
79  IF(j>1) THEN
+
79  if(j>1) then
80  ninv(1,1) = ninv(1,1)+ninv(1,j)
81  ninv(2,1) = ninv(2,1)+ninv(2,j)
82  ninv(3,1) = ninv(3,1)+ninv(3,j)
-
83  ENDIF
-
84  ENDDO
+
83  endif
+
84  enddo
85 
86  print'(a8,2x,2(i10,4x),i11,4x)','TOTAL ',(ninv(i,1),i=1,3)
87  print*
88 
89  stop
-
90 END PROGRAM binv
+
90 end program binv
program binv
Usage: binv <bufrfile> will print bufrfile inventory by message type.
Definition: binv.F90:11
subroutine bort(str)
Log an error message, then abort the application program.
Definition: borts.F90:15
-
recursive subroutine openbf(lunit, io, lundx)
Connect a new file to the NCEPLIBS-bufr software for input or output operations, or initialize the li...
-
recursive integer function nmsub(lunit)
Get the total number of data subsets available within the BUFR message that was most recently opened ...
-
recursive integer function ireadmg(lunit, subset, idate)
Call subroutine readmg() and pass back its return code as the function value.
-
recursive integer function iupvs01(lunit, s01mnem)
Read a specified value from within Section 0 or 1 of a BUFR message.
Definition: s013vals.F90:443
+
recursive subroutine openbf(lunit, io, lundx)
Connect a new file to the NCEPLIBS-bufr software for input or output operations, or initialize the li...
+
recursive integer function nmsub(lunit)
Get the total number of data subsets available within the BUFR message that was most recently opened ...
+
recursive integer function ireadmg(lunit, subset, idate)
Call subroutine readmg() and pass back its return code as the function value.
+
recursive integer function iupvs01(lunit, s01mnem)
Read a specified value from within Section 0 or 1 of a BUFR message.
Definition: s013vals.F90:442
diff --git a/bitmaps_8F90.html b/bitmaps_8F90.html index 9e824ad7d..9158a063b 100644 --- a/bitmaps_8F90.html +++ b/bitmaps_8F90.html @@ -26,7 +26,7 @@ @@ -105,9 +105,9 @@ - - - + + +
NCEPLIBS-bufr -  12.1.0 +  12.2.0
NCEPLIBS-bufr -  12.1.0 +  12.2.0
NCEPLIBS-bufr -  12.1.0 +  12.2.0
NCEPLIBS-bufr -  12.1.0 +  12.2.0
NCEPLIBS-bufr -  12.1.0 +  12.2.0
NCEPLIBS-bufr -  12.1.0 +  12.2.0
integer function imrkopr (nemo)
 Check whether a specified mnemonic is a Table C marker operator. More...
 
subroutine strbtm (n, lun)
 Store internal information in module moda_bitmaps if the input element is part of a bitmap. More...
 
subroutine strbtm (n, lun, ival)
 Store internal information in module moda_bitmaps if the input element is part of a bitmap. More...
 

Detailed Description

Process bitmaps within BUFR messages.

@@ -187,7 +187,7 @@

Author
J. Ator
Date
2016-06-07
-

Definition at line 102 of file bitmaps.F90.

+

Definition at line 109 of file bitmaps.F90.

References fstag(), moda_msgcwd::inode, moda_usrint::inv, moda_usrint::nrfelm, status(), strsuc(), moda_tables::tag, x48(), and x84().

@@ -235,7 +235,7 @@

Author
J. Ator
Date
2016-05-27
-

Definition at line 175 of file bitmaps.F90.

+

Definition at line 182 of file bitmaps.F90.

References adn30(), bort(), moda_bitmaps::ctco, moda_tables::ibt, moda_bitmaps::ibtmse, moda_nrv203::ienrv, imrkopr(), moda_msgcwd::inode, moda_nrv203::inodnrv, moda_bitmaps::inodtamc, moda_bitmaps::inodtco, moda_usrint::inv, moda_tables::irf, moda_tables::isc, moda_nrv203::isnrv, moda_bitmaps::istbtm, moda_bitmaps::iszbtm, moda_tables::itp, lstjpb(), moda_bitmaps::lstnod, moda_bitmaps::lstnodct, moda_bitmaps::nbtm, moda_bitmaps::nbtmse, nemtab(), moda_nrv203::nnrv, moda_nrv203::nrv, moda_bitmaps::ntamc, moda_bitmaps::ntco, moda_usrint::nval, moda_tables::tag, and moda_nrv203::tagnrv.

@@ -272,14 +272,14 @@

Author
J. Ator
Date
2016-05-04
-

Definition at line 353 of file bitmaps.F90.

+

Definition at line 360 of file bitmaps.F90.

-

Referenced by igetrfel(), bufr_c2f_interface::imrkopr_c(), and iokoper().

+

Referenced by igetrfel(), bufr_c2f_interface::imrkopr_c(), iokoper(), and ufdump().

- -

◆ strbtm()

+ +

◆ strbtm()

@@ -294,7 +294,13 @@

integer, intent(in)  - lun  + lun, + + + + + integer, intent(in)  + ival  @@ -305,21 +311,27 @@

Store internal information in module moda_bitmaps if the input element is part of a bitmap.

+

This subroutine first determines whether the input element is part of a bitmap. If so, then information about the element is stored internally for later use.

Parameters
- + +
n- Subset element
lun- File ID
lun- File ID
ival- Value associated with n:
    +
  • If n is determined to be part of a bitmap, then a value of 0 means that n is a "set" entry in the bitmap, and any other (i.e. non-zero) value means that n is not a "set" entry in the bitmap
  • +
  • If n is determined to not be part of a bitmap, then this value is ignored
  • +
+
Author
J. Ator
Date
2016-05-27
-

Definition at line 12 of file bitmaps.F90.

+

Definition at line 19 of file bitmaps.F90.

-

References bort(), moda_bitmaps::ctco, moda_bitmaps::ibtmse, moda_msgcwd::inode, moda_bitmaps::inodtamc, moda_bitmaps::inodtco, moda_usrint::inv, moda_tables::isc, moda_bitmaps::istbtm, moda_bitmaps::iszbtm, moda_tables::itp, moda_bitmaps::linbtm, moda_bitmaps::nbtm, moda_bitmaps::nbtmse, moda_bitmaps::ntamc, moda_bitmaps::ntco, moda_tables::tag, and moda_usrint::val.

+

References bort(), moda_bitmaps::ctco, moda_bitmaps::ibtmse, moda_msgcwd::inode, moda_bitmaps::inodtamc, moda_bitmaps::inodtco, moda_usrint::inv, moda_tables::isc, moda_bitmaps::istbtm, moda_bitmaps::iszbtm, moda_tables::itp, moda_bitmaps::linbtm, moda_bitmaps::nbtm, moda_bitmaps::nbtmse, moda_bitmaps::ntamc, moda_bitmaps::ntco, and moda_tables::tag.

-

Referenced by rcstpl(), and rdcmps().

+

Referenced by rcstpl(), rdcmps(), and wrtree().

diff --git a/bitmaps_8F90.js b/bitmaps_8F90.js index 45a620fea..8db753a1d 100644 --- a/bitmaps_8F90.js +++ b/bitmaps_8F90.js @@ -3,5 +3,5 @@ var bitmaps_8F90 = [ "gettagre", "bitmaps_8F90.html#a867a81be072effc2a9d2de0d6031e264", null ], [ "igetrfel", "bitmaps_8F90.html#a2dd600ba6cd71e06a19d88956337781b", null ], [ "imrkopr", "bitmaps_8F90.html#ad95571bf5308d6b64163d3bcc7ea3512", null ], - [ "strbtm", "bitmaps_8F90.html#a81f55f4b1f740f3ac6e3f56ee0a06dee", null ] + [ "strbtm", "bitmaps_8F90.html#a3136c71ed068ed6a4f6018fff79d4ebd", null ] ]; \ No newline at end of file diff --git a/bitmaps_8F90_source.html b/bitmaps_8F90_source.html index 4f3b98565..9526150b3 100644 --- a/bitmaps_8F90_source.html +++ b/bitmaps_8F90_source.html @@ -26,7 +26,7 @@
NCEPLIBS-bufr -  12.1.0 +  12.2.0
@@ -88,328 +88,328 @@
Go to the documentation of this file.
1 
5 
-
12 subroutine strbtm ( n, lun )
-
13 
-
14  use modv_vars, only: mxbtm, mxbtmse
-
15 
-
16  use moda_msgcwd
-
17  use moda_usrint
-
18  use moda_tables
-
19  use moda_bitmaps
+
19 subroutine strbtm ( n, lun, ival )
20 
-
21  implicit none
+
21  use modv_vars, only: mxbtm, mxbtmse
22 
-
23  integer, intent(in) :: n, lun
-
24  integer node, nodtam, ii, jj, ibfms, lstjpb
-
25 
-
26  logical isbtme
+
23  use moda_msgcwd
+
24  use moda_usrint
+
25  use moda_tables
+
26  use moda_bitmaps
27 
-
28  node = inv( n, lun )
+
28  implicit none
29 
-
30  if ( tag(node)(1:5) == 'DPRI ' ) then
-
31  ! Confirm that this is really an entry within a bitmap. Although it's rare, it is possible for a DPRI element
-
32  ! to appear in a subset definition outside of a bitmap.
-
33  isbtme = .false.
-
34  if ( ntamc > 0 ) then
-
35  nodtam = lstjpb( node, lun, 'SUB' )
-
36  do ii = 1, ntamc
-
37  if ( nodtam == inodtamc(ii) ) then
-
38  do jj = 1, ntco(ii)
-
39  if ( ( inodtco(ii,jj) >= inode(lun) ) .and. ( inodtco(ii,jj) <= isc(inode(lun)) ) .and. &
-
40  ( inodtco(ii,jj) < node ) ) then
-
41  if ( ctco(ii,jj) == '236000' ) then
-
42  isbtme = .true.
-
43  else if ( ( ctco(ii,jj) == '235000' ) .or. ( ctco(ii,jj) == '237255' ) ) then
-
44  isbtme = .false.
-
45  end if
-
46  end if
-
47  end do
-
48  end if
-
49  end do
-
50  end if
-
51  if ( .not. isbtme ) then
-
52  linbtm = .false.
-
53  return
-
54  endif
-
55  if ( .not. linbtm ) then
-
56  ! This is the start of a new bitmap.
-
57  if ( nbtm >= mxbtm ) call bort('BUFRLIB: STRBTM - MXBTM OVERFLOW')
-
58  nbtm = nbtm + 1
-
59  istbtm(nbtm) = n
-
60  iszbtm(nbtm) = 0
-
61  nbtmse(nbtm) = 0
-
62  linbtm = .true.
-
63  end if
-
64  iszbtm(nbtm) = iszbtm(nbtm) + 1
-
65  if ( ibfms(val(n,lun)) == 0 ) then
-
66  ! This is a "set" (value=0) entry in the bitmap.
-
67  if ( nbtmse(nbtm) >= mxbtmse ) call bort('BUFRLIB: STRBTM - MXBTMSE OVERFLOW')
-
68  nbtmse(nbtm) = nbtmse(nbtm) + 1
- +
30  integer, intent(in) :: n, lun, ival
+
31  integer node, nodtam, ii, jj, lstjpb
+
32 
+
33  logical isbtme
+
34 
+
35  node = inv( n, lun )
+
36 
+
37  if ( tag(node)(1:5) == 'DPRI ' ) then
+
38  ! Confirm that this is really an entry within a bitmap. Although it's rare, it is possible for a DPRI element
+
39  ! to appear in a subset definition outside of a bitmap.
+
40  isbtme = .false.
+
41  if ( ntamc > 0 ) then
+
42  nodtam = lstjpb( node, lun, 'SUB' )
+
43  do ii = 1, ntamc
+
44  if ( nodtam == inodtamc(ii) ) then
+
45  do jj = 1, ntco(ii)
+
46  if ( ( inodtco(ii,jj) >= inode(lun) ) .and. ( inodtco(ii,jj) <= isc(inode(lun)) ) .and. &
+
47  ( inodtco(ii,jj) < node ) ) then
+
48  if ( ctco(ii,jj) == '236000' ) then
+
49  isbtme = .true.
+
50  else if ( ( ctco(ii,jj) == '235000' ) .or. ( ctco(ii,jj) == '237255' ) ) then
+
51  isbtme = .false.
+
52  end if
+
53  end if
+
54  end do
+
55  end if
+
56  end do
+
57  end if
+
58  if ( .not. isbtme ) then
+
59  linbtm = .false.
+
60  return
+
61  endif
+
62  if ( .not. linbtm ) then
+
63  ! This is the start of a new bitmap.
+
64  if ( nbtm >= mxbtm ) call bort('BUFRLIB: STRBTM - MXBTM OVERFLOW')
+
65  nbtm = nbtm + 1
+
66  istbtm(nbtm) = n
+
67  iszbtm(nbtm) = 0
+
68  nbtmse(nbtm) = 0
+
69  linbtm = .true.
70  end if
-
71  else if ( itp(node) > 1 ) then
-
72  linbtm = .false.
-
73  end if
-
74 
-
75  return
-
76 end subroutine strbtm
-
77 
-
102 recursive subroutine gettagre ( lunit, tagi, ntagi, tagre, ntagre, iret )
-
103 
-
104  use modv_vars, only: im8b
-
105 
-
106  use moda_usrint
-
107  use moda_msgcwd
-
108  use moda_tables
-
109 
-
110  implicit none
-
111 
-
112  integer, intent(in) :: lunit, ntagi
-
113  integer, intent(out) :: iret, ntagre
-
114  integer my_lunit, my_ntagi, lun, il, im, ni, nre, ltre, ii
-
115 
-
116  character*(*), intent(in) :: tagi
-
117  character*(*), intent(out) :: tagre
-
118  character*10 tagtmp
-
119 
-
120  ! Check for I8 integers.
-
121 
-
122  if(im8b) then
-
123  im8b=.false.
-
124  call x84(lunit,my_lunit,1)
-
125  call x84(ntagi,my_ntagi,1)
-
126  call gettagre(my_lunit,tagi,my_ntagi,tagre,ntagre,iret)
-
127  call x48(ntagre,ntagre,1)
-
128  call x48(iret,iret,1)
-
129  im8b=.true.
-
130  return
-
131  endif
-
132 
-
133  iret = -1
-
134 
-
135  ! Get lun from lunit.
-
136 
-
137  call status( lunit, lun, il, im )
-
138  if ( il == 0 ) return
-
139  if ( inode(lun) /= inv(1,lun) ) return
-
140 
-
141  ! Get tagre and ntagre from the (ntagi)th occurrence of tagi.
-
142 
-
143  call fstag( lun, tagi, ntagi, 1, ni, iret )
-
144  if ( iret /= 0 ) return
-
145  nre = nrfelm(ni,lun)
-
146  if ( nre > 0 ) then
-
147  iret = 0
-
148  tagre = tag(inv(nre,lun))
-
149  call strsuc( tagre, tagtmp, ltre )
-
150  ntagre = 0
-
151  do ii = 1, nre
-
152  if ( tag(inv(ii,lun))(1:ltre) == tagre(1:ltre) ) then
-
153  ntagre = ntagre + 1
-
154  end if
-
155  end do
-
156  end if
-
157 
-
158  return
-
159 end subroutine gettagre
-
160 
-
175 integer function igetrfel ( n, lun ) result ( iret )
-
176 
-
177  use moda_msgcwd
-
178  use moda_usrint
-
179  use moda_tables
-
180  use moda_bitmaps
-
181  use moda_nrv203
-
182 
-
183  implicit none
-
184 
-
185  integer, intent(in) :: n, lun
-
186  integer node, ii, jj, nn, idxta, idn, ntc, nodflw, nodl236, nodbmap, nodrfe, nodnn, nodtam, idxbtm, iemrk, iect, &
-
187  lstjpb, imrkopr
-
188 
-
189  character*(*), parameter :: bort_str_mrkopr = &
-
190  'BUFRLIB: IGETRFEL - UNABLE TO FIND PREVIOUS ELEMENT REFERENCED BY MARKER OPERATOR '
-
191  character*128 bort_str
-
192  character*6 cflwopr, adn30, fxy
-
193  character*1 tab
-
194 
-
195  iret = 0
-
196 
-
197  node = inv( n, lun )
-
198 
-
199  if ( itp(node) > 1 ) then
-
200  if ( node == lstnod ) then
-
201  lstnodct = lstnodct + 1
-
202  else
-
203  lstnod = node
-
204  lstnodct = 1
-
205  end if
-
206  ! Does this subset definition contain any Table C operators with an X value of 21 or greater?
-
207  idxta = 0
-
208  if ( ntamc > 0 ) then
-
209  nodtam = lstjpb( node, lun, 'SUB' )
-
210  do ii = 1, ntamc
-
211  if ( nodtam == inodtamc(ii) ) then
-
212  idxta = ii
-
213  ntc = ntco(ii)
-
214  end if
-
215  end do
-
216  end if
-
217  if ( ( idxta > 0 ) .and. ( nbtm > 0 ) ) then
-
218  ! Check whether this element references a previous element in the same subset via an internal bitmap. To do this,
-
219  ! we first need to determine the appropriate "follow" operator (if any) corresponding to this element.
-
220  cflwopr = 'XXXXXX'
-
221  if ( imrkopr(tag(node)) == 1 ) then
-
222  cflwopr = tag(node)(1:3) // '000'
-
223  else
-
224  call nemtab( lun, tag(node), idn, tab, nn )
-
225  if ( tab == 'B' ) then
-
226  fxy = adn30(idn,6)
-
227  if ( fxy(2:3) == '33' ) cflwopr = '222000'
-
228  end if
-
229  end if
-
230  if ( cflwopr == 'XXXXXX' ) return
-
231  ! Now, check whether the appropriate "follow" operator was actually present in the subset. If there are multiple
-
232  ! occurrences, we want the one that most recently precedes the element in question.
-
233  nodflw = 0
-
234  do jj = 1, ntc
-
235  if ( ( ctco(idxta,jj) == cflwopr ) .and. ( inodtco(idxta,jj) >= inode(lun) ) .and. &
-
236  ( inodtco(idxta,jj) <= isc(inode(lun)) ) .and. ( inodtco(idxta,jj) < node ) ) nodflw = inodtco(idxta,jj)
-
237  enddo
-
238  if ( nodflw == 0 ) then
-
239  if ( imrkopr(tag(node)) == 1 ) then
-
240  write(bort_str,'("BUFRLB: IGETRFEL - UNABLE TO FIND FOLLOW OPERATOR ",A," IN SUBSET")') cflwopr
-
241  call bort(bort_str)
-
242  endif
-
243  return
-
244  end if
-
245  ! We found an appropriate corresponding "follow" operator, so now we need to look for a bitmap corresponding to
-
246  ! this operator. First, look for a bitmap indicator.
-
247  nodl236 = 0
-
248  nodbmap = 0
-
249  jj = 1
-
250  do while ( ( jj <= ntc ) .and. ( inodtco(idxta,jj) >= inode(lun) ) .and. &
-
251  ( inodtco(idxta,jj) <= isc(inode(lun)) ) .and. ( nodbmap == 0 ) )
-
252  if ( ctco(idxta,jj) == '236000' ) then
-
253  nodl236 = inodtco(idxta,jj)
-
254  if ( inodtco(idxta,jj) == nodflw ) nodbmap = nodflw
-
255  else if ( ( ctco(idxta,jj) == '235000' ) .or. ( ctco(idxta,jj) == '237255' ) ) then
-
256  nodl236 = 0
-
257  else if ( ( ctco(idxta,jj) == '237000' ) .and. ( inodtco(idxta,jj) == nodflw ) .and. ( nodl236 /= 0 ) ) then
-
258  nodbmap = nodl236
-
259  end if
-
260  jj = jj + 1
-
261  end do
-
262  if ( nodbmap == 0 ) then
-
263  ! There was no valid bitmap indicator, so we'll just look for a bitmap after the "follow" indicator.
-
264  nodbmap = nodflw
-
265  end if
-
266  ! Find the corresponding bitmap.
-
267  nn = 1
-
268  idxbtm = 0
-
269  do while ( ( idxbtm == 0 ) .and. ( nn <= nval(lun) ) )
-
270  if ( inv( nn, lun ) > nodbmap ) then
-
271  ii = 1
-
272  do while ( ( idxbtm == 0 ) .and. ( ii <= nbtm ) )
-
273  if ( nn == istbtm(ii) ) then
-
274  idxbtm = ii
-
275  else
-
276  ii = ii + 1
-
277  end if
-
278  end do
-
279  end if
-
280  nn = nn + 1
-
281  end do
-
282  if ( idxbtm == 0 ) then
-
283  if ( imrkopr(tag(node)) == 1 ) then
-
284  write(bort_str,'("BUFRLB: IGETRFEL - UNABLE TO FIND BITMAP FOR MARKER OPERATOR ",A)') tag(node)
-
285  call bort(bort_str)
-
286  endif
-
287  return
-
288  end if
-
289  ! Use the bitmap to find the previous element in the subset that is referenced by the current element.
-
290  ! Search backwards from the start of the bitmap, but make sure not to cross a 2-35-000 operator.
-
291  if ( lstnodct > nbtmse(idxbtm) ) then
-
292  if ( imrkopr(tag(node)) == 1 ) call bort( bort_str_mrkopr // tag(node) )
-
293  return
-
294  end if
-
295  iemrk = iszbtm(idxbtm) - ibtmse(idxbtm,lstnodct) + 1
-
296  iect = 0
-
297  do while ( ( nn >= 1 ) .and. ( iret == 0 ) )
-
298  nodnn = inv( nn, lun )
-
299  if ( nodnn <= nodbmap ) then
-
300  do jj = 1, ntc
-
301  if ( ( nodnn == inodtco(idxta,jj) ) .and. ( ctco(idxta,jj) == '235000' ) ) then
-
302  if ( imrkopr(tag(node)) == 1 ) call bort( bort_str_mrkopr // tag(node) )
-
303  return
-
304  end if
-
305  end do
-
306  if ( itp(nodnn) > 1 ) then
-
307  iect = iect + 1
-
308  if ( iect == iemrk ) iret = nn
-
309  end if
-
310  end if
-
311  nn = nn - 1
-
312  end do
-
313  if ( iret == 0 ) then
-
314  if ( imrkopr(tag(node)) == 1 ) call bort( bort_str_mrkopr // tag(node) )
-
315  return
-
316  end if
-
317  if ( imrkopr(tag(node)) == 1 ) then
-
318  ! This element is a marker operator, so set the scale, reference value and bit width accordingly based on
-
319  ! those of the previous referenced element.
-
320  nodrfe = inv( iret, lun )
-
321  isc(node) = isc(nodrfe)
-
322  if ( tag(node)(1:3) == '225' ) then
-
323  ibt(node) = ibt(nodrfe) + 1
-
324  irf(node) = -1 * (2 ** ibt(nodrfe))
-
325  else
-
326  ibt(node) = ibt(nodrfe)
-
327  irf(node) = irf(nodrfe)
-
328  if ( nnrv > 0 ) then
-
329  do ii = 1, nnrv
-
330  if ( ( nodrfe /= inodnrv(ii) ) .and. ( tag(nodrfe)(1:8) == tagnrv(ii) ) .and. &
-
331  ( nodrfe >= isnrv(ii) ) .and. ( nodrfe <= ienrv(ii) ) ) then
-
332  irf(node) = int(nrv(ii))
-
333  return
-
334  end if
-
335  end do
-
336  end if
-
337  end if
-
338  end if
-
339  end if
-
340  end if
-
341 
-
342  return
-
343 end function igetrfel
-
344 
-
353 integer function imrkopr(nemo) result(iret)
-
354 
-
355  implicit none
-
356 
-
357  character*(*), intent(in) :: nemo
-
358 
-
359  if (len(nemo)<6) then
-
360  iret = 0
-
361  else if ( ( nemo(4:6)=='255' ) .and. &
-
362  ( ( nemo(1:3)=='223' ) .or. ( nemo(1:3)=='224' ) .or. ( nemo(1:3)=='225' ) .or. ( nemo(1:3)=='232' ) ) ) then
-
363  iret = 1
-
364  else
-
365  iret = 0
-
366  endif
-
367 
-
368  return
-
369 end function imrkopr
-
integer function igetrfel(n, lun)
Check whether a subset element refers to a previous element within the same subset via an internal bi...
Definition: bitmaps.F90:176
-
subroutine strbtm(n, lun)
Store internal information in module moda_bitmaps if the input element is part of a bitmap.
Definition: bitmaps.F90:13
-
recursive subroutine gettagre(lunit, tagi, ntagi, tagre, ntagre, iret)
Check whether a specified Table B mnemonic references another Table B mnemonic within the same data s...
Definition: bitmaps.F90:103
-
integer function imrkopr(nemo)
Check whether a specified mnemonic is a Table C marker operator.
Definition: bitmaps.F90:354
+
71  iszbtm(nbtm) = iszbtm(nbtm) + 1
+
72  if ( ival == 0 ) then
+
73  ! This is a "set" (value=0) entry in the bitmap.
+
74  if ( nbtmse(nbtm) >= mxbtmse ) call bort('BUFRLIB: STRBTM - MXBTMSE OVERFLOW')
+
75  nbtmse(nbtm) = nbtmse(nbtm) + 1
+ +
77  end if
+
78  else if ( itp(node) > 1 ) then
+
79  linbtm = .false.
+
80  end if
+
81 
+
82  return
+
83 end subroutine strbtm
+
84 
+
109 recursive subroutine gettagre ( lunit, tagi, ntagi, tagre, ntagre, iret )
+
110 
+
111  use modv_vars, only: im8b
+
112 
+
113  use moda_usrint
+
114  use moda_msgcwd
+
115  use moda_tables
+
116 
+
117  implicit none
+
118 
+
119  integer, intent(in) :: lunit, ntagi
+
120  integer, intent(out) :: iret, ntagre
+
121  integer my_lunit, my_ntagi, lun, il, im, ni, nre, ltre, ii
+
122 
+
123  character*(*), intent(in) :: tagi
+
124  character*(*), intent(out) :: tagre
+
125  character*10 tagtmp
+
126 
+
127  ! Check for I8 integers.
+
128 
+
129  if(im8b) then
+
130  im8b=.false.
+
131  call x84(lunit,my_lunit,1)
+
132  call x84(ntagi,my_ntagi,1)
+
133  call gettagre(my_lunit,tagi,my_ntagi,tagre,ntagre,iret)
+
134  call x48(ntagre,ntagre,1)
+
135  call x48(iret,iret,1)
+
136  im8b=.true.
+
137  return
+
138  endif
+
139 
+
140  iret = -1
+
141 
+
142  ! Get lun from lunit.
+
143 
+
144  call status( lunit, lun, il, im )
+
145  if ( il == 0 ) return
+
146  if ( inode(lun) /= inv(1,lun) ) return
+
147 
+
148  ! Get tagre and ntagre from the (ntagi)th occurrence of tagi.
+
149 
+
150  call fstag( lun, tagi, ntagi, 1, ni, iret )
+
151  if ( iret /= 0 ) return
+
152  nre = nrfelm(ni,lun)
+
153  if ( nre > 0 ) then
+
154  iret = 0
+
155  tagre = tag(inv(nre,lun))
+
156  call strsuc( tagre, tagtmp, ltre )
+
157  ntagre = 0
+
158  do ii = 1, nre
+
159  if ( tag(inv(ii,lun))(1:ltre) == tagre(1:ltre) ) then
+
160  ntagre = ntagre + 1
+
161  end if
+
162  end do
+
163  end if
+
164 
+
165  return
+
166 end subroutine gettagre
+
167 
+
182 integer function igetrfel ( n, lun ) result ( iret )
+
183 
+
184  use moda_msgcwd
+
185  use moda_usrint
+
186  use moda_tables
+
187  use moda_bitmaps
+
188  use moda_nrv203
+
189 
+
190  implicit none
+
191 
+
192  integer, intent(in) :: n, lun
+
193  integer node, ii, jj, nn, idxta, idn, ntc, nodflw, nodl236, nodbmap, nodrfe, nodnn, nodtam, idxbtm, iemrk, iect, &
+
194  lstjpb, imrkopr
+
195 
+
196  character*(*), parameter :: bort_str_mrkopr = &
+
197  'BUFRLIB: IGETRFEL - UNABLE TO FIND PREVIOUS ELEMENT REFERENCED BY MARKER OPERATOR '
+
198  character*128 bort_str
+
199  character*6 cflwopr, adn30, fxy
+
200  character*1 tab
+
201 
+
202  iret = 0
+
203 
+
204  node = inv( n, lun )
+
205 
+
206  if ( itp(node) > 1 ) then
+
207  if ( node == lstnod ) then
+
208  lstnodct = lstnodct + 1
+
209  else
+
210  lstnod = node
+
211  lstnodct = 1
+
212  end if
+
213  ! Does this subset definition contain any Table C operators with an X value of 21 or greater?
+
214  idxta = 0
+
215  if ( ntamc > 0 ) then
+
216  nodtam = lstjpb( node, lun, 'SUB' )
+
217  do ii = 1, ntamc
+
218  if ( nodtam == inodtamc(ii) ) then
+
219  idxta = ii
+
220  ntc = ntco(ii)
+
221  end if
+
222  end do
+
223  end if
+
224  if ( ( idxta > 0 ) .and. ( nbtm > 0 ) ) then
+
225  ! Check whether this element references a previous element in the same subset via an internal bitmap. To do this,
+
226  ! we first need to determine the appropriate "follow" operator (if any) corresponding to this element.
+
227  cflwopr = 'XXXXXX'
+
228  if ( imrkopr(tag(node)) == 1 ) then
+
229  cflwopr = tag(node)(1:3) // '000'
+
230  else
+
231  call nemtab( lun, tag(node), idn, tab, nn )
+
232  if ( tab == 'B' ) then
+
233  fxy = adn30(idn,6)
+
234  if ( fxy(2:3) == '33' ) cflwopr = '222000'
+
235  end if
+
236  end if
+
237  if ( cflwopr == 'XXXXXX' ) return
+
238  ! Now, check whether the appropriate "follow" operator was actually present in the subset. If there are multiple
+
239  ! occurrences, we want the one that most recently precedes the element in question.
+
240  nodflw = 0
+
241  do jj = 1, ntc
+
242  if ( ( ctco(idxta,jj) == cflwopr ) .and. ( inodtco(idxta,jj) >= inode(lun) ) .and. &
+
243  ( inodtco(idxta,jj) <= isc(inode(lun)) ) .and. ( inodtco(idxta,jj) < node ) ) nodflw = inodtco(idxta,jj)
+
244  enddo
+
245  if ( nodflw == 0 ) then
+
246  if ( imrkopr(tag(node)) == 1 ) then
+
247  write(bort_str,'("BUFRLB: IGETRFEL - UNABLE TO FIND FOLLOW OPERATOR ",A," IN SUBSET")') cflwopr
+
248  call bort(bort_str)
+
249  endif
+
250  return
+
251  end if
+
252  ! We found an appropriate corresponding "follow" operator, so now we need to look for a bitmap corresponding to
+
253  ! this operator. First, look for a bitmap indicator.
+
254  nodl236 = 0
+
255  nodbmap = 0
+
256  jj = 1
+
257  do while ( ( jj <= ntc ) .and. ( inodtco(idxta,jj) >= inode(lun) ) .and. &
+
258  ( inodtco(idxta,jj) <= isc(inode(lun)) ) .and. ( nodbmap == 0 ) )
+
259  if ( ctco(idxta,jj) == '236000' ) then
+
260  nodl236 = inodtco(idxta,jj)
+
261  if ( inodtco(idxta,jj) == nodflw ) nodbmap = nodflw
+
262  else if ( ( ctco(idxta,jj) == '235000' ) .or. ( ctco(idxta,jj) == '237255' ) ) then
+
263  nodl236 = 0
+
264  else if ( ( ctco(idxta,jj) == '237000' ) .and. ( inodtco(idxta,jj) == nodflw ) .and. ( nodl236 /= 0 ) ) then
+
265  nodbmap = nodl236
+
266  end if
+
267  jj = jj + 1
+
268  end do
+
269  if ( nodbmap == 0 ) then
+
270  ! There was no valid bitmap indicator, so we'll just look for a bitmap after the "follow" indicator.
+
271  nodbmap = nodflw
+
272  end if
+
273  ! Find the corresponding bitmap.
+
274  nn = 1
+
275  idxbtm = 0
+
276  do while ( ( idxbtm == 0 ) .and. ( nn <= nval(lun) ) )
+
277  if ( inv( nn, lun ) > nodbmap ) then
+
278  ii = 1
+
279  do while ( ( idxbtm == 0 ) .and. ( ii <= nbtm ) )
+
280  if ( nn == istbtm(ii) ) then
+
281  idxbtm = ii
+
282  else
+
283  ii = ii + 1
+
284  end if
+
285  end do
+
286  end if
+
287  nn = nn + 1
+
288  end do
+
289  if ( idxbtm == 0 ) then
+
290  if ( imrkopr(tag(node)) == 1 ) then
+
291  write(bort_str,'("BUFRLB: IGETRFEL - UNABLE TO FIND BITMAP FOR MARKER OPERATOR ",A)') tag(node)
+
292  call bort(bort_str)
+
293  endif
+
294  return
+
295  end if
+
296  ! Use the bitmap to find the previous element in the subset that is referenced by the current element.
+
297  ! Search backwards from the start of the bitmap, but make sure not to cross a 2-35-000 operator.
+
298  if ( lstnodct > nbtmse(idxbtm) ) then
+
299  if ( imrkopr(tag(node)) == 1 ) call bort( bort_str_mrkopr // tag(node) )
+
300  return
+
301  end if
+
302  iemrk = iszbtm(idxbtm) - ibtmse(idxbtm,lstnodct) + 1
+
303  iect = 0
+
304  do while ( ( nn >= 1 ) .and. ( iret == 0 ) )
+
305  nodnn = inv( nn, lun )
+
306  if ( nodnn <= nodbmap ) then
+
307  do jj = 1, ntc
+
308  if ( ( nodnn == inodtco(idxta,jj) ) .and. ( ctco(idxta,jj) == '235000' ) ) then
+
309  if ( imrkopr(tag(node)) == 1 ) call bort( bort_str_mrkopr // tag(node) )
+
310  return
+
311  end if
+
312  end do
+
313  if ( itp(nodnn) > 1 ) then
+
314  iect = iect + 1
+
315  if ( iect == iemrk ) iret = nn
+
316  end if
+
317  end if
+
318  nn = nn - 1
+
319  end do
+
320  if ( iret == 0 ) then
+
321  if ( imrkopr(tag(node)) == 1 ) call bort( bort_str_mrkopr // tag(node) )
+
322  return
+
323  end if
+
324  if ( imrkopr(tag(node)) == 1 ) then
+
325  ! This element is a marker operator, so set the scale, reference value and bit width accordingly based on
+
326  ! those of the previous referenced element.
+
327  nodrfe = inv( iret, lun )
+
328  isc(node) = isc(nodrfe)
+
329  if ( tag(node)(1:3) == '225' ) then
+
330  ibt(node) = ibt(nodrfe) + 1
+
331  irf(node) = -1 * (2 ** ibt(nodrfe))
+
332  else
+
333  ibt(node) = ibt(nodrfe)
+
334  irf(node) = irf(nodrfe)
+
335  if ( nnrv > 0 ) then
+
336  do ii = 1, nnrv
+
337  if ( ( nodrfe /= inodnrv(ii) ) .and. ( tag(nodrfe)(1:8) == tagnrv(ii) ) .and. &
+
338  ( nodrfe >= isnrv(ii) ) .and. ( nodrfe <= ienrv(ii) ) ) then
+
339  irf(node) = int(nrv(ii))
+
340  return
+
341  end if
+
342  end do
+
343  end if
+
344  end if
+
345  end if
+
346  end if
+
347  end if
+
348 
+
349  return
+
350 end function igetrfel
+
351 
+
360 integer function imrkopr(nemo) result(iret)
+
361 
+
362  implicit none
+
363 
+
364  character*(*), intent(in) :: nemo
+
365 
+
366  if (len(nemo)<6) then
+
367  iret = 0
+
368  else if ( ( nemo(4:6)=='255' ) .and. &
+
369  ( ( nemo(1:3)=='223' ) .or. ( nemo(1:3)=='224' ) .or. ( nemo(1:3)=='225' ) .or. ( nemo(1:3)=='232' ) ) ) then
+
370  iret = 1
+
371  else
+
372  iret = 0
+
373  endif
+
374 
+
375  return
+
376 end function imrkopr
+
integer function igetrfel(n, lun)
Check whether a subset element refers to a previous element within the same subset via an internal bi...
Definition: bitmaps.F90:183
+
subroutine strbtm(n, lun, ival)
Store internal information in module moda_bitmaps if the input element is part of a bitmap.
Definition: bitmaps.F90:20
+
recursive subroutine gettagre(lunit, tagi, ntagi, tagre, ntagre, iret)
Check whether a specified Table B mnemonic references another Table B mnemonic within the same data s...
Definition: bitmaps.F90:110
+
integer function imrkopr(nemo)
Check whether a specified mnemonic is a Table C marker operator.
Definition: bitmaps.F90:361
subroutine bort(str)
Log an error message, then abort the application program.
Definition: borts.F90:15
-
subroutine nemtab(lun, nemo, idn, tab, iret)
Get information about a descriptor, based on a mnemonic.
Definition: fxy.F90:432
+
subroutine nemtab(lun, nemo, idn, tab, iret)
Get information about a descriptor, based on a mnemonic.
Definition: fxy.F90:434
character *(*) function adn30(idn, ldn)
Convert an FXY value from its WMO bit-wise representation to a character string of length 5 or 6.
Definition: fxy.F90:18
- - -
subroutine strsuc(str1, str2, lens)
Remove leading and trailing blanks from a character string.
Definition: misc.F90:220
+ + +
subroutine strsuc(str1, str2, lens)
Remove leading and trailing blanks from a character string.
Definition: misc.F90:199
Declare arrays and variables used to store bitmaps internally within a data subset definition.
integer, dimension(:), allocatable iszbtm
Size of bitmap (total number of entries, whether "set" (set to a value of 0) or not).
integer lstnod
Most recent jump/link table entry that was processed by function igetrfel() and whose corresponding v...
@@ -426,25 +426,24 @@
integer, dimension(:), allocatable ntco
Number of Table C operators (with an XX value of 21 or greater) within the data subset definition of ...
Declare arrays used to store information about the current BUFR message that is in the process of bei...
integer, dimension(:), allocatable inode
Table A mnemonic for type of BUFR message.
-
Declare arrays and variables for use with any 2-03-YYY (change reference value) operators present wit...
-
integer, dimension(:), allocatable ienrv
End of entry range in jump/link table, within which the corresponding new reference value in nrv will...
-
character *8, dimension(:), allocatable tagnrv
Table B mnemonic to which the corresponding new reference value in nrv applies.
-
integer, dimension(:), allocatable isnrv
Start of entry range in jump/link table, within which the corresponding new reference value in nrv wi...
-
integer nnrv
Number of entries in the jump/link table which contain new reference values (up to a maximum of mxnrv...
-
integer *8, dimension(:), allocatable nrv
New reference values corresponding to inodnrv.
-
integer, dimension(:), allocatable inodnrv
Entries within jump/link table which contain new reference values.
-
Declare arrays and variables used to store the internal jump/link table.
-
integer, dimension(:), allocatable irf
Reference values corresponding to tag and typ:
-
integer, dimension(:), allocatable isc
Scale factors corresponding to tag and typ:
-
integer, dimension(:), allocatable ibt
Bit widths corresponding to tag and typ:
-
character *10, dimension(:), allocatable tag
Mnemonics in the jump/link table.
-
integer, dimension(:), allocatable itp
Integer type values corresponding to typ:
-
Declare arrays used to store data values and associated metadata for the current BUFR data subset in ...
-
integer, dimension(:), allocatable nval
Number of data values in BUFR data subset.
-
real *8, dimension(:,:), allocatable, target val
Data values.
-
integer, dimension(:,:), allocatable, target inv
Inventory pointer which links each data value to its corresponding node in the internal jump/link tab...
-
integer, dimension(:,:), allocatable nrfelm
Referenced data value, for data values which refer to a previous data value in the BUFR data subset v...
-
recursive subroutine status(lunit, lun, il, im)
Check whether a specified Fortran logical unit number is currently connected to the NCEPLIBS-bufr sof...
+
Declare arrays and variables for use with any 2-03-YYY (change reference value) operators present wit...
+
integer, dimension(:), allocatable ienrv
End of entry range in jump/link table, within which the corresponding new reference value in nrv will...
+
character *8, dimension(:), allocatable tagnrv
Table B mnemonic to which the corresponding new reference value in nrv applies.
+
integer, dimension(:), allocatable isnrv
Start of entry range in jump/link table, within which the corresponding new reference value in nrv wi...
+
integer nnrv
Number of entries in the jump/link table which contain new reference values (up to a maximum of mxnrv...
+
integer *8, dimension(:), allocatable nrv
New reference values corresponding to inodnrv.
+
integer, dimension(:), allocatable inodnrv
Entries within jump/link table which contain new reference values.
+
Declare arrays and variables used to store the internal jump/link table.
+
integer, dimension(:), allocatable irf
Reference values corresponding to tag and typ:
+
integer, dimension(:), allocatable isc
Scale factors corresponding to tag and typ:
+
integer, dimension(:), allocatable ibt
Bit widths corresponding to tag and typ:
+
character *10, dimension(:), allocatable tag
Mnemonics in the jump/link table.
+
integer, dimension(:), allocatable itp
Integer type values corresponding to typ:
+
Declare arrays used to store data values and associated metadata for the current BUFR data subset in ...
+
integer, dimension(:), allocatable nval
Number of data values in BUFR data subset.
+
integer, dimension(:,:), allocatable, target inv
Inventory pointer which links each data value to its corresponding node in the internal jump/link tab...
+
integer, dimension(:,:), allocatable nrfelm
Referenced data value, for data values which refer to a previous data value in the BUFR data subset v...
+
recursive subroutine status(lunit, lun, il, im)
Check whether a specified Fortran logical unit number is currently connected to the NCEPLIBS-bufr sof...
subroutine x48(iin4, iout8, nval)
Encode one or more 4-byte integer values as 8-byte integer values.
Definition: x4884.F90:18
subroutine x84(iin8, iout4, nval)
Encode one or more 8-byte integer values as 4-byte integer values.
Definition: x4884.F90:65
diff --git a/blocks_8F90.html b/blocks_8F90.html index 8799b41ac..73471fc42 100644 --- a/blocks_8F90.html +++ b/blocks_8F90.html @@ -26,7 +26,7 @@
NCEPLIBS-bufr -  12.1.0 +  12.2.0
@@ -178,7 +178,7 @@

message-writing subroutines should be encapsulated with IEEE Fortran control words when being written to output files.

If control words are requested, then one 4-byte control word is written to the output file prior to the start of each BUFR message, and a second 4-byte control word is written to the output file after the end of each BUFR message. Each of these control words contains the byte count for the enclosed BUFR message, and they can be written using either big-endian or little-endian byte ordering, regardless of the native endianness of the local machine.

-

This subroutine can be called at any time after the first call to subroutine openbf(), and the specified value for iblk will remain in effect for all future calls to message-writing subroutines for all Fortran logical units that are open for output within the application program, unless a subsequent call is made to this subroutine to reset the value of iblk again. If this subroutine is never called, a default value of 0 is used for iblk, as set within subroutine bfrini().

+

This subroutine can be called at any time after the first call to subroutine openbf(), and the specified value for iblk will remain in effect for all future calls to message-writing subroutines for all Fortran logical units that are open for output within the application program, unless a subsequent call is made to this subroutine to reset the value of iblk again. If this subroutine is never called, a default value of 0 is used for iblk, as set within subroutine bfrini().

Remarks
  • This subroutine can be used to generate BUFR files consistent with historical archives, dating back to older versions of the NCEPLIBS-bufr software which used Fortran to directly read/write BUFR messages from/to files. Standard Fortran historically didn't have a way to read/write binary data streams without control words, so as a result many historical archives contain these by default. However, newer versions of the NCEPLIBS-bufr software use C to directly read/write BUFR messages from/to files (including historical archives), so control words are no longer necessary and are therefore now disabled by default when writing BUFR messages to output files.
diff --git a/blocks_8F90_source.html b/blocks_8F90_source.html index b3819a982..284aed7f6 100644 --- a/blocks_8F90_source.html +++ b/blocks_8F90_source.html @@ -26,7 +26,7 @@
NCEPLIBS-bufr -  12.1.0 +  12.2.0
diff --git a/borts_8F90.html b/borts_8F90.html index d6665c09b..3f19ca166 100644 --- a/borts_8F90.html +++ b/borts_8F90.html @@ -26,7 +26,7 @@
NCEPLIBS-bufr -  12.1.0 +  12.2.0
@@ -141,7 +141,7 @@

References errwrt().

-

Referenced by adn30(), arallocf(), atrcpt(), binv(), bufr_c2f_interface::bort_c(), bvers(), chekstab(), cktaba(), closmg(), cmpbqm(), cmpmsg(), cmsgini(), cnved4(), codflg(), copybf(), copymg(), copysb(), cpdxmm(), cpymem(), cpyupd(), datebf(), datelen(), dumpbf(), dxdump(), dxmini(), getcfmng(), gettbh(), getwin(), idn30(), ifbget(), igetntbi(), igetrfel(), igetsc(), igettdi(), inctab(), invmrg(), ipkm(), isize(), iupm(), iupvs01(), jstnum(), lcmgdf(), lstjpb(), makestab(), minimg(), msgini(), msgwrt(), nemtba(), nemtbax(), nemtbb(), nemtbd(), nenubd(), nevn(), newwin(), nmsub(), nvnwin(), nxtwin(), openbf(), openmb(), openmg(), pad(), padmsg(), parutg(), pkb(), pkb8(), pkbs1(), pkvs01(), posapx(), rcstpl(), rdbfdx(), rdcmps(), rdmemm(), rdmems(), rdmgsb(), rdmtbb(), rdmtbd(), rdmtbf(), readdx(), readerme(), readlc(), readmg(), readns(), reads3(), readsb(), rewnbf(), rtrcpt(), sinv(), sntbbe(), sntbde(), split_by_subset(), status(), stbfdx(), stdmsg(), stndrd(), stntbia(), strbtm(), strcpt(), tabent(), tabsub(), ufbcnt(), ufbcpy(), ufbcup(), ufbdmp(), ufbevn(), ufbget(), ufbin3(), ufbint(), ufbinx(), ufbmem(), ufbmex(), ufbmms(), ufbmns(), ufbovr(), ufbpos(), ufbqcd(), ufbqcp(), ufbrep(), ufbrms(), ufbseq(), ufbstp(), ufbtab(), ufbtam(), ufdump(), upb8(), upds3(), upftbv(), uptdd(), usrtpl(), wrcmps(), wrdxtb(), writdx(), writlc(), writsa(), writsb(), and wtstat().

+

Referenced by adn30(), arallocf(), atrcpt(), binv(), bufr_c2f_interface::bort_c(), bvers(), chekstab(), cktaba(), closmg(), cmpbqm(), cmpmsg(), cmsgini(), cnved4(), codflg(), copybf(), copymg(), copysb(), cpdxmm(), cpymem(), cpyupd(), datebf(), datelen(), dumpbf(), dxdump(), dxmini(), getcfmng(), gettbh(), getwin(), idn30(), ifbget(), igetntbi(), igetrfel(), igetsc(), igettdi(), inctab(), invmrg(), ipkm(), isize(), iupm(), iupvs01(), jstnum(), lcmgdf(), lstjpb(), makestab(), minimg(), msgini(), msgwrt(), nemtba(), nemtbax(), nemtbb(), nemtbd(), nenubd(), newwin(), nmsub(), nvnwin(), nxtwin(), openbf(), openmb(), openmg(), pad(), padmsg(), parutg(), pkb(), pkb8(), pkbs1(), pkvs01(), posapx(), rcstpl(), rdbfdx(), rdcmps(), rdmemm(), rdmems(), rdmgsb(), rdmtbb(), rdmtbd(), rdmtbf(), readdx(), readerme(), readlc(), readmg(), readns(), reads3(), readsb(), rewnbf(), rtrcpt(), sinv(), sntbbe(), sntbde(), split_by_subset(), status(), stbfdx(), stdmsg(), stndrd(), stntbia(), strbtm(), strcpt(), tabent(), tabsub(), ufbcnt(), ufbcpy(), ufbcup(), ufbdmp(), ufbevn(), ufbget(), ufbint(), ufbinx(), ufbmem(), ufbmex(), ufbmms(), ufbmns(), ufbovr(), ufbpos(), ufbqcd(), ufbqcp(), ufbrep(), ufbrms(), ufbseq(), ufbstp(), ufbtab(), ufbtam(), ufdump(), upb8(), upds3(), upftbv(), uptdd(), usrtpl(), wrcmps(), wrdxtb(), writdx(), writlc(), writsa(), writsb(), and wtstat().

diff --git a/borts_8F90_source.html b/borts_8F90_source.html index 9ac5449e6..ccb2e1835 100644 --- a/borts_8F90_source.html +++ b/borts_8F90_source.html @@ -26,7 +26,7 @@
NCEPLIBS-bufr -  12.1.0 +  12.2.0
diff --git a/bufr__c2f__interface_8F90.html b/bufr__c2f__interface_8F90.html index 3b559dd7e..901672670 100644 --- a/bufr__c2f__interface_8F90.html +++ b/bufr__c2f__interface_8F90.html @@ -26,7 +26,7 @@
NCEPLIBS-bufr -  12.1.0 +  12.2.0
diff --git a/bufr__c2f__interface_8F90_source.html b/bufr__c2f__interface_8F90_source.html index 896edc8f6..b7de85507 100644 --- a/bufr__c2f__interface_8F90_source.html +++ b/bufr__c2f__interface_8F90_source.html @@ -26,7 +26,7 @@
NCEPLIBS-bufr -  12.1.0 +  12.2.0
@@ -675,28 +675,28 @@
1091  end subroutine cmpmsg_c
1092 
1093 end module bufr_c2f_interface
-
integer function igetprm(cprmnm)
Return the current value of a parameter used for allocating one or more internal arrays within the NC...
Definition: arallocf.F90:1114
-
subroutine exitbufr
Free all dynamically-allocated memory, close all logical units that are open within the NCEPLIBS-bufr...
Definition: arallocf.F90:901
-
recursive integer function isetprm(cprmnm, ipval)
Set a specified parameter to a specified value for use in dynamically allocating one or more internal...
Definition: arallocf.F90:980
-
integer function imrkopr(nemo)
Check whether a specified mnemonic is a Table C marker operator.
Definition: bitmaps.F90:354
+
integer function igetprm(cprmnm)
Return the current value of a parameter used for allocating one or more internal arrays within the NC...
Definition: arallocf.F90:1109
+
subroutine exitbufr
Free all dynamically-allocated memory, close all logical units that are open within the NCEPLIBS-bufr...
Definition: arallocf.F90:899
+
recursive integer function isetprm(cprmnm, ipval)
Set a specified parameter to a specified value for use in dynamically allocating one or more internal...
Definition: arallocf.F90:975
+
integer function imrkopr(nemo)
Check whether a specified mnemonic is a Table C marker operator.
Definition: bitmaps.F90:361
subroutine bort(str)
Log an error message, then abort the application program.
Definition: borts.F90:15
subroutine cmpmsg(cf)
Specify whether BUFR messages output by future calls to message-writing subroutines and subset-writin...
Definition: compress.F90:33
subroutine elemdx(card, lun)
Decode the scale factor, reference value, bit width and units (i.e., the "elements") from a Table B m...
Definition: dxtable.F90:516
-
subroutine nemtbb(lun, itab, unit, iscl, iref, ibit)
Get information about a Table B descriptor from the internal DX BUFR tables.
Definition: dxtable.F90:1278
-
subroutine stntbi(n, lun, numb, nemo, celsq)
Store a new entry within internal BUFR Table B or D.
Definition: dxtable.F90:1621
-
subroutine pktdd(id, lun, idn, iret)
Store information about a child mnemonic within the internal BUFR Table D.
Definition: dxtable.F90:1666
-
recursive subroutine nemdefs(lunit, nemo, celem, cunit, iret)
Get the element name and units associated with a Table B descriptor.
Definition: dxtable.F90:1446
-
integer function igetntbi(lun, ctb)
Get the next available index for storing an entry within a specified internal DX BUFR table.
Definition: dxtable.F90:1153
-
subroutine uptdd(id, lun, ient, iret)
Get the WMO bit-wise representation of the FXY value corresponding to a child mnemonic in a Table D s...
Definition: dxtable.F90:1741
-
subroutine nemtab(lun, nemo, idn, tab, iret)
Get information about a descriptor, based on a mnemonic.
Definition: fxy.F90:432
+
subroutine nemtbb(lun, itab, unit, iscl, iref, ibit)
Get information about a Table B descriptor from the internal DX BUFR tables.
Definition: dxtable.F90:1269
+
subroutine stntbi(n, lun, numb, nemo, celsq)
Store a new entry within internal BUFR Table B or D.
Definition: dxtable.F90:1612
+
subroutine pktdd(id, lun, idn, iret)
Store information about a child mnemonic within the internal BUFR Table D.
Definition: dxtable.F90:1657
+
recursive subroutine nemdefs(lunit, nemo, celem, cunit, iret)
Get the element name and units associated with a Table B descriptor.
Definition: dxtable.F90:1437
+
integer function igetntbi(lun, ctb)
Get the next available index for storing an entry within a specified internal DX BUFR table.
Definition: dxtable.F90:1144
+
subroutine uptdd(id, lun, ient, iret)
Get the WMO bit-wise representation of the FXY value corresponding to a child mnemonic in a Table D s...
Definition: dxtable.F90:1731
+
subroutine nemtab(lun, nemo, idn, tab, iret)
Get information about a descriptor, based on a mnemonic.
Definition: fxy.F90:434
subroutine cadn30(idn, adn)
Convert an FXY value from its WMO bit-wise representation to its 6 character representation.
Definition: fxy.F90:65
subroutine numtbd(lun, idn, nemo, tab, iret)
Get information about a Table B or Table D descriptor, based on the WMO bit-wise representation of an...
Definition: fxy.F90:290
integer function ifxy(adsc)
Convert an FXY value from its 6 character representation to its WMO bit-wise representation.
Definition: fxy.F90:152
- -
integer function igettdi(iflag)
Depending on the value of the input flag, either return the next usable scratch Table D index for the...
+ +
integer function igettdi(iflag)
Depending on the value of the input flag, either return the next usable scratch Table D index for the...
recursive subroutine mtinfo(cmtdir, lunmt1, lunmt2)
Specify the directory location and Fortran logical unit numbers to be used when reading master BUFR t...
Definition: mastertable.F90:35
-
subroutine bvers(cverstr)
Get the version number of the NCEPLIBS-bufr software.
Definition: misc.F90:384
-
recursive subroutine strnum(str, num, iret)
Decode an integer from a character string.
Definition: misc.F90:177
+
subroutine bvers(cverstr)
Get the version number of the NCEPLIBS-bufr software.
Definition: misc.F90:361
+
recursive subroutine strnum(str, num, iret)
Decode an integer from a character string.
Definition: misc.F90:156
integer function ibfms(r8val)
Check whether a real*8 data value returned from a previous call to any of the NCEPLIBS-bufr values-re...
Definition: missing.F90:25
Wrap Fortran NCEPLIBS-bufr subprograms and variables so they can be called from within C.
subroutine, public get_isc_c(isc_ptr, isc_size)
Get copy of the moda_tables ISC array.
@@ -752,33 +752,33 @@
subroutine, public strnum_c(str, num, iret)
Decode an integer from a character string.
Declare arrays used to store information about the current BUFR message that is in the process of bei...
integer, dimension(:), allocatable inode
Table A mnemonic for type of BUFR message.
-
Declare arrays and variables needed to store information about long character strings (greater than 8...
-
Declare arrays and variables used to store the internal jump/link table.
-
integer, dimension(:), allocatable irf
Reference values corresponding to tag and typ:
-
integer, dimension(:), allocatable isc
Scale factors corresponding to tag and typ:
-
character *3, dimension(:), allocatable typ
Type indicators corresponding to tag:
-
integer, dimension(:), allocatable jmpb
Jump backward indices corresponding to tag and typ:
-
character *10, dimension(:), allocatable tag
Mnemonics in the jump/link table.
-
integer ntab
Number of entries in the jump/link table.
-
integer, dimension(:), allocatable itp
Integer type values corresponding to typ:
-
integer, dimension(:), allocatable link
Link indices corresponding to tag, typ and jmpb:
-
Declare arrays used to store data values and associated metadata for the current BUFR data subset in ...
-
integer, dimension(:), allocatable nval
Number of data values in BUFR data subset.
-
real *8, dimension(:,:), allocatable, target val
Data values.
-
integer, dimension(:,:), allocatable, target inv
Inventory pointer which links each data value to its corresponding node in the internal jump/link tab...
-
recursive subroutine closbf(lunit)
Close the connection between logical unit lunit and the NCEPLIBS-bufr software.
-
recursive subroutine openbf(lunit, io, lundx)
Connect a new file to the NCEPLIBS-bufr software for input or output operations, or initialize the li...
-
recursive subroutine status(lunit, lun, il, im)
Check whether a specified Fortran logical unit number is currently connected to the NCEPLIBS-bufr sof...
-
recursive subroutine maxout(maxo)
Specify the maximum length of a BUFR message that can be written to any output file by the NCEPLIBS-b...
-
recursive subroutine openmb(lunit, subset, jdate)
Open and initialize a new BUFR message within internal arrays, for eventual output to logical unit lu...
-
integer function igetmxby()
Get the maximum length of a BUFR message that can be written to an output file by the NCEPLIBS-bufr s...
-
recursive integer function ireadmg(lunit, subset, idate)
Call subroutine readmg() and pass back its return code as the function value.
+
Declare arrays and variables needed to store information about long character strings (greater than 8...
+
Declare arrays and variables used to store the internal jump/link table.
+
integer, dimension(:), allocatable irf
Reference values corresponding to tag and typ:
+
integer, dimension(:), allocatable isc
Scale factors corresponding to tag and typ:
+
character *3, dimension(:), allocatable typ
Type indicators corresponding to tag:
+
integer, dimension(:), allocatable jmpb
Jump backward indices corresponding to tag and typ:
+
character *10, dimension(:), allocatable tag
Mnemonics in the jump/link table.
+
integer ntab
Number of entries in the jump/link table.
+
integer, dimension(:), allocatable itp
Integer type values corresponding to typ:
+
integer, dimension(:), allocatable link
Link indices corresponding to tag, typ and jmpb:
+
Declare arrays used to store data values and associated metadata for the current BUFR data subset in ...
+
integer, dimension(:), allocatable nval
Number of data values in BUFR data subset.
+
real *8, dimension(:,:), allocatable, target val
Data values.
+
integer, dimension(:,:), allocatable, target inv
Inventory pointer which links each data value to its corresponding node in the internal jump/link tab...
+
recursive subroutine closbf(lunit)
Close the connection between logical unit lunit and the NCEPLIBS-bufr software.
+
recursive subroutine openbf(lunit, io, lundx)
Connect a new file to the NCEPLIBS-bufr software for input or output operations, or initialize the li...
+
recursive subroutine status(lunit, lun, il, im)
Check whether a specified Fortran logical unit number is currently connected to the NCEPLIBS-bufr sof...
+
recursive subroutine maxout(maxo)
Specify the maximum length of a BUFR message that can be written to any output file by the NCEPLIBS-b...
+
recursive subroutine openmb(lunit, subset, jdate)
Open and initialize a new BUFR message within internal arrays, for eventual output to logical unit lu...
+
integer function igetmxby()
Get the maximum length of a BUFR message that can be written to an output file by the NCEPLIBS-bufr s...
+
recursive integer function ireadmg(lunit, subset, idate)
Call subroutine readmg() and pass back its return code as the function value.
recursive integer function ireadns(lunit, subset, idate)
Call subroutine readns() and pass back its return code as the function value.
recursive integer function ireadsb(lunit)
Call subroutine readsb() and pass back its return code as the function value.
-
recursive subroutine ufbseq(lunin, usr, i1, i2, iret, str)
Read or write an entire sequence of data values from or to a data subset.
-
recursive subroutine ufbint(lunin, usr, i1, i2, iret, str)
Read or write one or more data values from or to a data subset.
-
recursive subroutine readlc(lunit, chr, str)
Read a long character string (greater than 8 bytes) from a data subset.
-
recursive subroutine ufbrep(lunin, usr, i1, i2, iret, str)
Read or write one or more data values from or to a data subset.
+
recursive subroutine ufbseq(lunin, usr, i1, i2, iret, str)
Read or write an entire sequence of data values from or to a data subset.
+
recursive subroutine ufbint(lunin, usr, i1, i2, iret, str)
Read or write one or more data values from or to a data subset.
+
recursive subroutine readlc(lunit, chr, str)
Read a long character string (greater than 8 bytes) from a data subset.
+
recursive subroutine ufbrep(lunin, usr, i1, i2, iret, str)
Read or write one or more data values from or to a data subset.
recursive integer function iupbs01(mbay, s01mnem)
Read a specified value from within Section 0 or Section 1 of a BUFR message.
Definition: s013vals.F90:247
integer function istdesc(idn)
Given the WMO bit-wise representation of an FXY value for a descriptor, check whether the descriptor ...
Definition: standard.F90:298
diff --git a/bufr__interface_8F90.html b/bufr__interface_8F90.html index fa40a6c72..ebfd6111c 100644 --- a/bufr__interface_8F90.html +++ b/bufr__interface_8F90.html @@ -26,7 +26,7 @@
NCEPLIBS-bufr -  12.1.0 +  12.2.0
@@ -105,8 +105,6 @@   interface  bufr_interface::cwbmg_c   -interface  bufr_interface::dlloctbf_c -  diff --git a/bufr__interface_8F90_source.html b/bufr__interface_8F90_source.html index eebb0b77d..5aa9c4ec9 100644 --- a/bufr__interface_8F90_source.html +++ b/bufr__interface_8F90_source.html @@ -26,7 +26,7 @@ @@ -117,18 +117,13 @@
75  use iso_c_binding
76  end subroutine ccbfl_c
77 
-
84  subroutine dlloctbf_c() bind(C, name='dlloctbf')
-
85  use iso_c_binding
-
86  end subroutine dlloctbf_c
-
87 
-
88  end interface
-
89 
-
90 end module bufr_interface
+
78  end interface
+
79 
+
80 end module bufr_interface
-
Wrap C NCEPLIBS-bufr functions so they can be called from within Fortran application programs.
diff --git a/bufr__interface_8h.html b/bufr__interface_8h.html index a844c2a7b..370245d69 100644 --- a/bufr__interface_8h.html +++ b/bufr__interface_8h.html @@ -26,7 +26,7 @@ @@ -322,7 +322,7 @@

Author
J. Ator
Date
2005-11-29
-

Definition at line 290 of file crwbmg.c.

+

Definition at line 289 of file crwbmg.c.

References pbf.

@@ -465,7 +465,7 @@

Author
J. Ator
Date
2005-11-29
-

Definition at line 120 of file crwbmg.c.

+

Definition at line 119 of file crwbmg.c.

References bort_f(), MXFNLEN, and pbf.

@@ -532,9 +532,9 @@

Author
J. Ator
Date
2005-11-29
-

Definition at line 195 of file crwbmg.c.

+

Definition at line 194 of file crwbmg.c.

-

References bort_f(), iupbs01_f(), pbf, and rbytes().

+

References BMCSTR, BMOSTR, bort_f(), iupbs01_f(), pbf, and rbytes().

@@ -587,7 +587,7 @@

Author
J. Ator
Date
2005-11-29
-

Definition at line 263 of file crwbmg.c.

+

Definition at line 262 of file crwbmg.c.

References bort_f(), and pbf.

@@ -1173,7 +1173,7 @@

Author
J. Ator
Date
2023-04-07
-

Referenced by arallocc(), inittbf(), restd(), and stseq().

+

Referenced by arallocc(), inittbf(), restd(), and stseq().

@@ -1408,7 +1408,7 @@

Author
J. Ator
Date
2023-04-07
-

Referenced by crbmg(), crdbufr(), and main().

+

Referenced by crbmg(), crdbufr(), and main().

@@ -1697,7 +1697,7 @@

Author
Ronald Mclaren
Date
2022-08-16
-

Referenced by stseq().

+

Referenced by stseq().

@@ -1774,7 +1774,7 @@

Author
Ronald McLaren
Date
2022-08-16
-

Referenced by restd().

+

Referenced by restd().

diff --git a/bufr__interface_8h_source.html b/bufr__interface_8h_source.html index cbdd5ca82..45ccc8126 100644 --- a/bufr__interface_8h_source.html +++ b/bufr__interface_8h_source.html @@ -26,7 +26,7 @@

@@ -214,8 +214,8 @@
void ufbrep_f(int bufr_unit, void **c_data, int dim_1, int dim_2, int *iret, const char *table_b_mnemonic)
Read/write one or more data values from/to a data subset.
void get_nval_f(int lun, int *num_nodes)
Get the number of values in the current subset.
void get_inode_f(int lun, int *start_node)
Get the bufr node idx for the start node of the subset.
-
void cobfl(char *bfl, char io)
Open a new file for reading or writing BUFR messages via a C language interface.
Definition: crwbmg.c:120
-
void cwbmg(char *bmg, int nmb, int *iret)
Write a BUFR message to the file that was opened via the most recent call to function cobfl() with io...
Definition: crwbmg.c:263
+
void cobfl(char *bfl, char io)
Open a new file for reading or writing BUFR messages via a C language interface.
Definition: crwbmg.c:119
+
void cwbmg(char *bmg, int nmb, int *iret)
Write a BUFR message to the file that was opened via the most recent call to function cobfl() with io...
Definition: crwbmg.c:262
void get_val_f(int lun, double **val_ptr, int *val_size)
Get pointer to the moda_usrint VAL array.
int iupbs01_f(int *bufr, char *mnemonic)
Read a data value from Section 0 or Section 1 of a BUFR message.
void ufbseq_f(int bufr_unit, void **c_data, int dim_1, int dim_2, int *iret, const char *table_d_mnemonic)
Read/write an entire sequence of data values from/to a data subset.
@@ -229,7 +229,7 @@
void status_f(int file_unit, int *lun, int *il, int *im)
Check whether a file is connected to the library.
void get_typ_f(char **typ_ptr, int *typ_len, int *mem_size)
Get copy of the moda_tables TYP array.
void get_link_f(int **link_ptr, int *link_size)
Get copy of the moda_tables LINK array.
-
void crbmg(char *bmg, int mxmb, int *nmb, int *iret)
Read the next BUFR message from the file that was opened via the most recent call to function cobfl()...
Definition: crwbmg.c:195
+
void crbmg(char *bmg, int mxmb, int *nmb, int *iret)
Read the next BUFR message from the file that was opened via the most recent call to function cobfl()...
Definition: crwbmg.c:194
int ireadmg_f(int bufr_unit, char *subset, int *iddate, int subset_len)
Read the next message from a BUFR file.
int ibfms_f(double r8val)
Test whether a data value is "missing".
void get_isc_f(int **isc_ptr, int *isc_size)
Get copy of the moda_tables ISC array.
@@ -237,7 +237,7 @@
void nemdefs_f(int file_unit, const char *mnemonic, char *unit_c, int unit_str_len, char *desc_c, int desc_str_len, int *iret)
Get the element name and units associated with a Table B mnemonic.
void openmb_f(int bufr_unit, char *c_subset, int iddate)
Open a new message for output in a BUFR file that was previously opened for writing.
void close_f(int unit)
Close a Fortran file from a C program.
-
void ccbfl(void)
Close all files that were opened via previous calls to function cobfl().
Definition: crwbmg.c:290
+
void ccbfl(void)
Close all files that were opened via previous calls to function cobfl().
Definition: crwbmg.c:289
void ufbint_f(int bufr_unit, void **c_data, int dim_1, int dim_2, int *iret, const char *table_b_mnemonic)
Read/write one or more data values from/to a data subset.
void readlc_f(int lunit, const char *str_id, char *output_str, int output_str_len)
Function used to get long strings from the BUFR file.
int ireadns_f(int bufr_unit, char *subset, int *iddate, int subset_len)
Read the next data subset from a BUFR file.
diff --git a/bufrlib_8F90.html b/bufrlib_8F90.html index 7298b1606..523edde0c 100644 --- a/bufrlib_8F90.html +++ b/bufrlib_8F90.html @@ -26,7 +26,7 @@ diff --git a/bufrlib_8F90_source.html b/bufrlib_8F90_source.html index bf1f122a3..06979b64b 100644 --- a/bufrlib_8F90_source.html +++ b/bufrlib_8F90_source.html @@ -26,7 +26,7 @@ diff --git a/bufrlib_8h.html b/bufrlib_8h.html index 691d57180..b8a3a9108 100644 --- a/bufrlib_8h.html +++ b/bufrlib_8h.html @@ -26,7 +26,7 @@ @@ -102,18 +102,42 @@

Modules

NCEPLIBS-bufr -  12.1.0 +  12.2.0
NCEPLIBS-bufr -  12.1.0 +  12.2.0
NCEPLIBS-bufr -  12.1.0 +  12.2.0
NCEPLIBS-bufr -  12.1.0 +  12.2.0
NCEPLIBS-bufr -  12.1.0 +  12.2.0
NCEPLIBS-bufr -  12.1.0 +  12.2.0
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - @@ -150,6 +174,9 @@ + + + @@ -196,7 +223,7 @@ - + @@ -210,32 +237,158 @@

Definition in file bufrlib.h.

Macro Definition Documentation

- -

◆ FXY_STR_LEN

+ +

◆ BMCSTR

Macros

#define BMCSTR   "7777"
 Closing string of a BUFR message. More...
 
#define BMOSTR   "BUFR"
 Opening string of a BUFR message. More...
 
#define FXY_DRF1   "031000"
 Character string containing FXY value for short (1-bit) delayed replication factor. More...
 
#define FXY_DRF16   "031002"
 Character string containing FXY value for long (16-bit) delayed replication factor. More...
 
#define FXY_DRF8   "031001"
 Character string containing FXY value for medium (8-bit) delayed replication factor. More...
 
#define FXY_DRP1   "360004"
 Character string containing FXY value for NCEP Table D local descriptor denoting 1-bit delayed replication of a sequence using < > notation. More...
 
#define FXY_DRP16   "360001"
 Character string containing FXY value for NCEP Table D local descriptor denoting 16-bit delayed replication of a sequence using ( ) notation. More...
 
#define FXY_DRP8   "360002"
 Character string containing FXY value for NCEP Table D local descriptor denoting 8-bit delayed replication of a sequence using { } notation. More...
 
#define FXY_MAXTB   "063255"
 Character string containing maximum FXY value for a Table B descriptor. More...
 
#define FXY_MINR   "101000"
 Character string containing minimum FXY value for a replication descriptor. More...
 
#define FXY_MINTD   "300000"
 Character string containing minimum FXY value for a Table D descriptor. More...
 
#define FXY_STR_LEN   6
 Size of a character string needed to store an FXY value. More...
 
#define MAX_FXY_TABLEB   "063255"
 Character string containing maximum FXY value for a Table B descriptor. More...
 
#define MIN_FXY_REPL   "101000"
 Character string containing minimum FXY value for a replication descriptor. More...
 
#define MIN_FXY_TABLED   "300000"
 Character string containing minimum FXY value for a Table D descriptor. More...
 
#define NEMO_STR_LEN   8
 Size of a character string needed to store a mnemonic. More...
 
void cwrbufr (int nfile, int *bufr, int nwrd)
 Write a BUFR message into a file that was previously opened for writing. More...
 
void dlloctbf (void)
 Free all dynamically-allocated memory for internal storage of master Code/Flag table entries. More...
 
void elemdx_f (char *card, int lun)
 Decode the scale factor, reference value, bit width, and units from a Table B mnemonic definition. More...
 
 Decode an integer from a character string. More...
 
void stseq (int lun, int *irepct, int idn, char *nemo, char *cseq, int *cdesc, int ncdesc)
 Store information about a standard Table D descriptor within internal DX BUFR tables. More...
 Store information about a Table D descriptor within internal DX BUFR tables. More...
 
void uptdd_f (int id, int lun, int ient, int *iret)
 Get the WMO bit-wise representation of the FXY value corresponding to a child mnemonic of a Table D sequence. More...
- +
#define FXY_STR_LEN   6#define BMCSTR   "7777"
-

Size of a character string needed to store an FXY value.

+

Closing string of a BUFR message.

-

Definition at line 34 of file bufrlib.h.

+

Definition at line 73 of file bufrlib.h.

+ +
+ + +

◆ BMOSTR

+ +
+
+ + + + +
#define BMOSTR   "BUFR"
+
+ +

Opening string of a BUFR message.

+ +

Definition at line 70 of file bufrlib.h.

+ +
+
+ +

◆ FXY_DRF1

+ +
+
+ + + + +
#define FXY_DRF1   "031000"
+
+ +

Character string containing FXY value for short (1-bit) delayed replication factor.

+ +

Definition at line 61 of file bufrlib.h.

+ +
+
+ +

◆ FXY_DRF16

+ +
+
+ + + + +
#define FXY_DRF16   "031002"
+
+ +

Character string containing FXY value for long (16-bit) delayed replication factor.

+ +

Definition at line 55 of file bufrlib.h.

+ +
+
+ +

◆ FXY_DRF8

+ +
+
+ + + + +
#define FXY_DRF8   "031001"
+
+ +

Character string containing FXY value for medium (8-bit) delayed replication factor.

+ +

Definition at line 58 of file bufrlib.h.

+ +
+
+ +

◆ FXY_DRP1

+ +
+
+ + + + +
#define FXY_DRP1   "360004"
+
+ +

Character string containing FXY value for NCEP Table D local descriptor denoting 1-bit delayed replication of a sequence using < > notation.

+ +

Definition at line 52 of file bufrlib.h.

- -

◆ MAX_FXY_TABLEB

+ +

◆ FXY_DRP16

- + + +
#define MAX_FXY_TABLEB   "063255"#define FXY_DRP16   "360001"
+
+ +

Character string containing FXY value for NCEP Table D local descriptor denoting 16-bit delayed replication of a sequence using ( ) notation.

+ +

Definition at line 46 of file bufrlib.h.

+ +
+
+ +

◆ FXY_DRP8

+ +
+
+ + + + +
#define FXY_DRP8   "360002"
+
+ +

Character string containing FXY value for NCEP Table D local descriptor denoting 8-bit delayed replication of a sequence using { } notation.

+ +

Definition at line 49 of file bufrlib.h.

+ +
+
+ +

◆ FXY_MAXTB

+ +
+
+ + +
#define FXY_MAXTB   "063255"
@@ -246,14 +399,14 @@

-

◆ MIN_FXY_REPL

+ +

◆ FXY_MINR

- +
#define MIN_FXY_REPL   "101000"#define FXY_MINR   "101000"
@@ -264,14 +417,14 @@

-

◆ MIN_FXY_TABLED

+ +

◆ FXY_MINTD

- +
#define MIN_FXY_TABLED   "300000"#define FXY_MINTD   "300000"
@@ -280,6 +433,24 @@

Definition at line 40 of file bufrlib.h.

+

+
+ +

◆ FXY_STR_LEN

+ +
+
+ + + + +
#define FXY_STR_LEN   6
+
+ +

Size of a character string needed to store an FXY value.

+ +

Definition at line 34 of file bufrlib.h.

+
@@ -296,7 +467,7 @@

Definition at line 46 of file bufrlib.h.

+

Definition at line 64 of file bufrlib.h.

@@ -314,7 +485,7 @@

Definition at line 49 of file bufrlib.h.

+

Definition at line 67 of file bufrlib.h.

@@ -341,9 +512,9 @@

Author
J. Ator

Date
2014-12-04
-

Definition at line 29 of file arallocc.c.

+

Definition at line 30 of file arallocc.c.

-

References bort_f(), cbbw_c, cbelem_c, cbmnem_c, cbscl_c, cbsref_c, cbunit_c, cdmnem_c, cdseq_c, iafpk, ibfxyn_c, idefxy_c, idfxyn_c, igetprm_f(), lstpos, ndelem_c, and pb.

+

References bort_f(), cbbw_c, cbelem_c, cbmnem_c, cbscl_c, cbsref_c, cbunit_c, cdescs, cdmnem_c, cdseq_c, iafpk, iafpks, ibfxyn_c, idefxy_c, idfxyn_c, igetprm_f(), lstpos, MAX_RPSQ, ndelem_c, and pb.

@@ -367,9 +538,9 @@

Author
J. Ator
Date
2014-12-04
-

Definition at line 90 of file arallocc.c.

+

Definition at line 83 of file arallocc.c.

-

References cbbw_c, cbelem_c, cbmnem_c, cbscl_c, cbsref_c, cbunit_c, cdmnem_c, cdseq_c, iafpk, ibfxyn_c, idefxy_c, idfxyn_c, lstpos, ndelem_c, and pb.

+

References cbbw_c, cbelem_c, cbmnem_c, cbscl_c, cbsref_c, cbunit_c, cdescs, cdmnem_c, cdseq_c, dlloctbf(), iafpk, iafpks, ibfxyn_c, idefxy_c, idfxyn_c, lstpos, ndelem_c, and pb.

@@ -432,7 +603,7 @@

Author
J. Ator
Date
2023-04-07
-

Referenced by arallocc(), cobfl(), crbmg(), cwbmg(), inittbf(), nummtb(), restd(), strtbfe(), stseq(), and wrdesc().

+

Referenced by arallocc(), cobfl(), crbmg(), cwbmg(), inittbf(), nummtb(), restd(), strtbfe(), stseq(), and wrdesc().

@@ -481,7 +652,7 @@

Author
J. Ator
Date
2004-08-18
-

Referenced by nummtb(), restd(), and stseq().

+

Referenced by nummtb(), restd(), and stseq().

@@ -602,7 +773,7 @@

Definition at line 114 of file cread.c.

-

References iupbs01_f(), lstpos, and pb.

+

References BMCSTR, BMOSTR, iupbs01_f(), lstpos, and pb.

@@ -654,6 +825,35 @@

References pb.

+ + + +

◆ dlloctbf()

+ +
+
+ + + + + + + + +
void dlloctbf (void )
+
+ +

Free all dynamically-allocated memory for internal storage of master Code/Flag table entries.

+

This memory would have been dynamically allocated during a previous call to function inittbf().

+
Author
J. Ator
+
Date
2017-11-03
+ +

Definition at line 81 of file cfe.c.

+ +

References cfe.

+ +

Referenced by ardllocc().

+
@@ -694,7 +894,7 @@

Author
J. Ator
Date
2003-11-04
-

Referenced by stseq().

+

Referenced by stseq().

@@ -746,7 +946,7 @@

Definition at line 22 of file icvidx.c.

-

Referenced by cpmstabs(), and stseq().

+

Referenced by cpmstabs(), srchrpsq(), strrpsq(), and stseq().

@@ -778,7 +978,7 @@

Author
J. Ator
Date
2023-04-07
-

Referenced by nummtb(), restd(), and stseq().

+

Referenced by nummtb(), restd(), and stseq().

@@ -821,7 +1021,7 @@

Author
J. Ator
Date
2009-03-23
-

Referenced by stseq().

+

Referenced by stseq().

@@ -857,7 +1057,7 @@

Author
J. Ator
Date
2009-03-23
-

Referenced by stseq().

+

Referenced by stseq().

@@ -893,7 +1093,7 @@

Author
J. Ator
Date
2016-05-04
-

Referenced by stseq().

+

Referenced by restd(), and stseq().

@@ -929,7 +1129,7 @@

Author
J. Ator
Date
2004-08-18
-

Referenced by restd().

+

Referenced by restd().

@@ -999,7 +1199,7 @@

Author
J. Ator
Date
2003-11-04
-

Referenced by restd(), and stseq().

+

Referenced by restd(), and stseq().

@@ -1184,7 +1384,7 @@

Author
J. Ator
Date
2003-11-04
-

Referenced by stseq().

+

Referenced by stseq().

@@ -1227,8 +1427,8 @@

Standardize a local Table D descriptor.

-

Given the bit-wise (integer) representation of a local (not WMO-standard) Table D descriptor, this subroutine returns an equivalent array of WMO-standard child descriptors.

-

Any child descriptors which are themselves local Table D descriptors are automatically resolved via a recursive call to this same subroutine. This recursive process continues until all child descriptors are either WMO-standard descriptors (from Table B, Table C, Table D, or replication descriptors) or else are local Table B descriptors, in which case they are preceded with an appropriate 2-06-YYY Table C operator in the output array. The output array is then useable by any standard BUFR decoder program in order to interpret the same data values as were represented by the input local Table D descriptor.

+

Given the bit-wise (integer) representation of a local (not WMO-standard) Table D descriptor, this function returns an equivalent array of WMO-standard child descriptors.

+

Any child descriptors which are themselves local Table D descriptors are automatically resolved via a recursive call to this same function. This recursive process continues until all child descriptors are either WMO-standard descriptors (from Table B, Table C, Table D, or replication descriptors) or else are local Table B descriptors, in which case they are preceded with an appropriate 2-06-YYY Table C operator in the output array. The output array is then useable by any standard BUFR decoder program in order to interpret the same data values as were represented by the input local Table D descriptor.

Parameters
@@ -1243,9 +1443,7 @@

Definition at line 73 of file restd.c.

-

References bort_f(), cadn30_f(), FXY_STR_LEN, moda_bitbuf::ibit, ifxy_f(), igetprm_f(), istdesc_f(), MIN_FXY_REPL, NEMO_STR_LEN, nemtbb_f(), numtbd_f(), restd(), UNIT_STR_LEN, uptdd_f(), and wrdesc().

- -

Referenced by restd().

+

References bort_f(), cadn30_f(), FXY_MINR, FXY_STR_LEN, moda_bitbuf::ibit, ifxy_f(), igetprm_f(), imrkopr_f(), istdesc_f(), NEMO_STR_LEN, nemtbb_f(), numtbd_f(), UNIT_STR_LEN, uptdd_f(), and wrdesc().

@@ -1308,7 +1506,7 @@

Author
J. Ator
Date
2009-03-23
-

Referenced by stseq().

+

Referenced by stseq().

@@ -1357,7 +1555,7 @@

Author
J. Ator
Date
2003-11-04
-

Referenced by stseq().

+

Referenced by stseq().

@@ -1417,28 +1615,26 @@

-

Store information about a standard Table D descriptor within internal DX BUFR tables.

-

Given the WMO bit-wise (integer) representation of a standard Table D descriptor, this subroutine uses the master BUFR tables to store all of the necessary information for that descriptor within the internal DX BUFR tables. Any child descriptors which are themselves Table D descriptors are automatically resolved via a recursive call to this same subroutine.

+

Store information about a Table D descriptor within internal DX BUFR tables.

+

Given the WMO bit-wise (integer) representation of a Table D descriptor, this function uses the master BUFR tables to store all of the necessary information for that descriptor within the internal DX BUFR tables. Any child descriptors which are themselves Table D descriptors are automatically resolved via a recursive call to this same function.

Parameters

lun- File ID
- + - - + +
lun- File ID
irepct- Replication sequence counter for the current master table; used internally to keep track of which sequence names have already been defined, and thereby avoid contention within the internal DX BUFR Table D
idn- WMO bit-wise representation of FXY value for standard Table D descriptor
idn- WMO bit-wise representation of FXY value for Table D descriptor
nemo- Mnemonic corresponding to idn
cseq- Description corresponding to idn
cdesc- Array of WMO-standard child descriptors equivalent to idn
ncdesc- Number of WMO-standard child descriptors in cdesc
cdesc- Array of child descriptors equivalent to idn
ncdesc- Number of child descriptors in cdesc
Author
J. Ator
Date
2009-03-23
-

Definition at line 107 of file stseq.c.

- -

References bort_f(), cadn30_f(), cbbw_c, cbelem_c, cbmnem_c, cbscl_c, cbsref_c, cbunit_c, cdmnem_c, cdseq_c, elemdx_f(), FXY_STR_LEN, iafpk, icvidx(), idefxy_c, ifxy_f(), igetntbi_f(), igetprm_f(), igettdi_f(), imrkopr_f(), MAX_FXY_TABLEB, MIN_FXY_REPL, MIN_FXY_TABLED, ndelem_c, NEMO_STR_LEN, nemtab_f(), nummtb(), numtbd_f(), pktdd_f(), stntbi_f(), strnum_f(), and stseq().

+

Definition at line 189 of file stseq.c.

-

Referenced by stseq().

+

References bort_f(), cadn30_f(), cbbw_c, cbelem_c, cbmnem_c, cbscl_c, cbsref_c, cbunit_c, cdmnem_c, cdseq_c, elemdx_f(), FXY_DRF1, FXY_DRF16, FXY_DRF8, FXY_DRP1, FXY_DRP16, FXY_DRP8, FXY_MAXTB, FXY_MINR, FXY_MINTD, FXY_STR_LEN, iafpk, icvidx(), idefxy_c, ifxy_f(), igetntbi_f(), igetprm_f(), igettdi_f(), imrkopr_f(), ndelem_c, NEMO_STR_LEN, nemtab_f(), nrpsq, nummtb(), numtbd_f(), pktdd_f(), srchrpsq(), stntbi_f(), strnum_f(), and strrpsq().

@@ -1494,7 +1690,7 @@

Author
J. Ator
Date
2003-11-04
-

Referenced by restd().

+

Referenced by restd().

@@ -1503,7 +1699,7 @@

diff --git a/bufrlib_8h.js b/bufrlib_8h.js index a79c45ad9..ccd4d9ec5 100644 --- a/bufrlib_8h.js +++ b/bufrlib_8h.js @@ -1,9 +1,17 @@ var bufrlib_8h = [ + [ "BMCSTR", "bufrlib_8h.html#a0eaedf1628e74c9cf33925349602c234", null ], + [ "BMOSTR", "bufrlib_8h.html#a6cac2647154ce58c562d8bcd3ebdfd30", null ], + [ "FXY_DRF1", "bufrlib_8h.html#a25dc173d68b3afa24cc277fd47351b08", null ], + [ "FXY_DRF16", "bufrlib_8h.html#ad4c1adc1bcab5f8db9b6b05f4f3d7da0", null ], + [ "FXY_DRF8", "bufrlib_8h.html#a0594bcf6e40e8c738c1b986531803103", null ], + [ "FXY_DRP1", "bufrlib_8h.html#a965d697089b48eb887e65dec5fa7565c", null ], + [ "FXY_DRP16", "bufrlib_8h.html#ad2fcc22b1b96013c10ae5464fe22836b", null ], + [ "FXY_DRP8", "bufrlib_8h.html#aa90cf4e9894a2ec47026ae5308746dab", null ], + [ "FXY_MAXTB", "bufrlib_8h.html#adadd9c7831a26b7410d97b12e47d19b3", null ], + [ "FXY_MINR", "bufrlib_8h.html#a59b3be3abd88311baddcaaabb93b9293", null ], + [ "FXY_MINTD", "bufrlib_8h.html#af87e679a3aed76b3e5809ddf209e2c67", null ], [ "FXY_STR_LEN", "bufrlib_8h.html#a320fb202c17784943f8223593c9123dd", null ], - [ "MAX_FXY_TABLEB", "bufrlib_8h.html#ab25c8c36df6eb956d84010bc74002858", null ], - [ "MIN_FXY_REPL", "bufrlib_8h.html#a6fa6d930bc1885cd5cf30d57dfcc6a4b", null ], - [ "MIN_FXY_TABLED", "bufrlib_8h.html#a87f18b149395d0c626a9ba310c959e3c", null ], [ "NEMO_STR_LEN", "bufrlib_8h.html#aaf134edc1efd697331c03effd4d056e0", null ], [ "UNIT_STR_LEN", "bufrlib_8h.html#a9043f4f41d0f9e6a276f936a03416f69", null ], [ "arallocc", "bufrlib_8h.html#a98efd59b32b1d2ed2c060d2564824e28", null ], @@ -15,6 +23,7 @@ var bufrlib_8h = [ "closfb", "bufrlib_8h.html#a7b13da152c5a09e0fc1c92d8eb41154b", null ], [ "crdbufr", "bufrlib_8h.html#a8b09f32462059d646e44ea6098a08edc", null ], [ "cwrbufr", "bufrlib_8h.html#a95bc32869561911e9ca020628802edc5", null ], + [ "dlloctbf", "bufrlib_8h.html#a1242c4d43753a37cdb9abfb3f01e5583", null ], [ "elemdx_f", "bufrlib_8h.html#a39fc8b2494bb5f754c2d800c4b5a2f1c", null ], [ "icvidx", "bufrlib_8h.html#ab3b665adb5a53a4c82d3c5caadbb2c38", null ], [ "ifxy_f", "bufrlib_8h.html#a9941f6596dafba1e4361eb2f5e173f24", null ], diff --git a/bufrlib_8h_source.html b/bufrlib_8h_source.html index 5dc9532b2..742234fbb 100644 --- a/bufrlib_8h_source.html +++ b/bufrlib_8h_source.html @@ -26,7 +26,7 @@
NCEPLIBS-bufr -  12.1.0 +  12.2.0
@@ -87,15 +87,16 @@
Go to the documentation of this file.
1 
-
12 #include <stdio.h>
-
13 #include <stdlib.h>
-
14 #include <string.h>
-
15 #include <ctype.h>
-
16 
-
17 #include "bufr_interface.h"
-
18 
-
19 void arallocc(void);
-
20 void ardllocc(void);
+
11 #include <stdio.h>
+
12 #include <stdlib.h>
+
13 #include <string.h>
+
14 #include <ctype.h>
+
15 
+
16 #include "bufr_interface.h"
+
17 
+
18 void arallocc(void);
+
19 void ardllocc(void);
+
20 void dlloctbf(void);
21 void openrb(int nfile, char *ufile);
22 void openwb(int nfile, char *ufile);
23 void openab(int nfile, char *ufile);
@@ -110,62 +111,79 @@
32 
34 #define FXY_STR_LEN 6
35 
-
37 #define MIN_FXY_REPL "101000"
+
37 #define FXY_MINR "101000"
38 
-
40 #define MIN_FXY_TABLED "300000"
+
40 #define FXY_MINTD "300000"
41 
-
43 #define MAX_FXY_TABLEB "063255"
+
43 #define FXY_MAXTB "063255"
44 
-
46 #define NEMO_STR_LEN 8
+
46 #define FXY_DRP16 "360001"
47 
-
49 #define UNIT_STR_LEN 24
+
49 #define FXY_DRP8 "360002"
50 
-
63 void cadn30_f(int idn, char *adn, int adn_str_len);
-
64 
-
77 int igetntbi_f(int lun, char *table_type);
-
78 
-
90 void elemdx_f(char *card, int lun);
-
91 
-
106 void numtbd_f(int lun, int idn, char *nemo, int nemo_str_len, char *tab, int *iret);
-
107 
-
120 int ifxy_f(char *cfxy);
-
121 
-
138 void uptdd_f(int id, int lun, int ient, int *iret);
-
139 
-
153 int imrkopr_f(char *nemo);
-
154 
-
168 int istdesc_f(int idn);
-
169 
-
181 void strnum_f(char *str, int *num, int *iret);
-
182 
-
196 void stntbi_f(int n, int lun, char *numb, char *nemo, char *celsq);
-
197 
-
212 int igettdi_f(int iflag);
-
213 
-
228 void pktdd_f(int id, int lun, int idn, int *iret);
-
229 
-
239 void bort_f(char *errstr);
+
52 #define FXY_DRP1 "360004"
+
53 
+
55 #define FXY_DRF16 "031002"
+
56 
+
58 #define FXY_DRF8 "031001"
+
59 
+
61 #define FXY_DRF1 "031000"
+
62 
+
64 #define NEMO_STR_LEN 8
+
65 
+
67 #define UNIT_STR_LEN 24
+
68 
+
70 #define BMOSTR "BUFR"
+
71 
+
73 #define BMCSTR "7777"
+
74 
+
87 void cadn30_f(int idn, char *adn, int adn_str_len);
+
88 
+
101 int igetntbi_f(int lun, char *table_type);
+
102 
+
114 void elemdx_f(char *card, int lun);
+
115 
+
130 void numtbd_f(int lun, int idn, char *nemo, int nemo_str_len, char *tab, int *iret);
+
131 
+
144 int ifxy_f(char *cfxy);
+
145 
+
162 void uptdd_f(int id, int lun, int ient, int *iret);
+
163 
+
177 int imrkopr_f(char *nemo);
+
178 
+
192 int istdesc_f(int idn);
+
193 
+
205 void strnum_f(char *str, int *num, int *iret);
+
206 
+
220 void stntbi_f(int n, int lun, char *numb, char *nemo, char *celsq);
+
221 
+
236 int igettdi_f(int iflag);
+
237 
+
252 void pktdd_f(int id, int lun, int idn, int *iret);
+
253 
+
263 void bort_f(char *errstr);
Enable a number of NCEPLIBS-bufr subprograms to be called from within C and C++ application programs.
int igettdi_f(int iflag)
Get the next usable Table D index for the current master table, or reset the index.
void cadn30_f(int idn, char *adn, int adn_str_len)
Convert an FXY value from its WMO bit-wise representation to its six-character representation.
+
void dlloctbf(void)
Free all dynamically-allocated memory for internal storage of master Code/Flag table entries.
Definition: cfe.c:81
void elemdx_f(char *card, int lun)
Decode the scale factor, reference value, bit width, and units from a Table B mnemonic definition.
int imrkopr_f(char *nemo)
Check whether a specified mnemonic is a Table C marker operator.
void numtbd_f(int lun, int idn, char *nemo, int nemo_str_len, char *tab, int *iret)
Search for a Table B or Table D descriptor within the internal DX BUFR tables.
void bort_f(char *errstr)
Log one error message and abort application program.
-
void stseq(int lun, int *irepct, int idn, char *nemo, char *cseq, int *cdesc, int ncdesc)
Store information about a standard Table D descriptor within internal DX BUFR tables.
Definition: stseq.c:107
+
void stseq(int lun, int *irepct, int idn, char *nemo, char *cseq, int *cdesc, int ncdesc)
Store information about a Table D descriptor within internal DX BUFR tables.
Definition: stseq.c:189
void stntbi_f(int n, int lun, char *numb, char *nemo, char *celsq)
Store a new entry within the internal BUFR Table B or D.
void closfb(int nfile)
Close a previously opened BUFR file.
Definition: cread.c:92
int crdbufr(int nfile, int *bufr, int mxwrd)
Read the next message from a BUFR file that was previously opened for reading.
Definition: cread.c:114
void openab(int nfile, char *ufile)
Open a new file for appending BUFR messages.
Definition: cread.c:56
void cwrbufr(int nfile, int *bufr, int nwrd)
Write a BUFR message into a file that was previously opened for writing.
Definition: cread.c:199
-
void arallocc(void)
Dynamically allocate C language arrays.
Definition: arallocc.c:29
+
void arallocc(void)
Dynamically allocate C language arrays.
Definition: arallocc.c:30
int ifxy_f(char *cfxy)
Convert an FXY value from its 6 character representation to its WMO bit-wise representation.
void restd(int lunb, int tddesc, int *nctddesc, int *ctddesc)
Standardize a local Table D descriptor.
Definition: restd.c:73
void openwb(int nfile, char *ufile)
Open a new file for writing BUFR messages.
Definition: cread.c:43
void strnum_f(char *str, int *num, int *iret)
Decode an integer from a character string.
void openrb(int nfile, char *ufile)
Open a new file for reading BUFR messages.
Definition: cread.c:30
int icvidx(int ii, int jj, int numjj)
Computes a unique 1-dimensional array index from 2-dimensional indices.
Definition: icvidx.c:22
-
void ardllocc(void)
Free all memory that was dynamically allocated during a previous call to subroutine arallocc().
Definition: arallocc.c:90
+
void ardllocc(void)
Free all memory that was dynamically allocated during a previous call to subroutine arallocc().
Definition: arallocc.c:83
void pktdd_f(int id, int lun, int idn, int *iret)
Store information about a child mnemonic within the internal arrays.
int igetntbi_f(int lun, char *table_type)
Get the next index for storing an entry within an internal DX BUFR table.
void backbufr(int nfile)
Backspace a BUFR file by one BUFR message.
Definition: cread.c:68
@@ -177,7 +195,7 @@ diff --git a/cfe_8c.html b/cfe_8c.html index 080262875..3bcfcde05 100644 --- a/cfe_8c.html +++ b/cfe_8c.html @@ -26,7 +26,7 @@
NCEPLIBS-bufr -  12.1.0 +  12.2.0
@@ -290,6 +290,8 @@

References cfe.

+

Referenced by ardllocc().

+

diff --git a/cfe_8c_source.html b/cfe_8c_source.html index c09950a56..4ffc46a78 100644 --- a/cfe_8c_source.html +++ b/cfe_8c_source.html @@ -26,7 +26,7 @@
NCEPLIBS-bufr -  12.1.0 +  12.2.0
diff --git a/cftbvs_8F90.html b/cftbvs_8F90.html index 75e7f01de..d329d4d8b 100644 --- a/cftbvs_8F90.html +++ b/cftbvs_8F90.html @@ -26,7 +26,7 @@
NCEPLIBS-bufr -  12.1.0 +  12.2.0
diff --git a/cftbvs_8F90_source.html b/cftbvs_8F90_source.html index 84ab2e522..9bd8b3a97 100644 --- a/cftbvs_8F90_source.html +++ b/cftbvs_8F90_source.html @@ -26,7 +26,7 @@
NCEPLIBS-bufr -  12.1.0 +  12.2.0
@@ -431,20 +431,20 @@
recursive subroutine ufbqcp(lunit, iqcp, nemo)
Given an event program code, which is equivalent to the Y value of a category 63 Table D descriptor f...
Definition: cftbvs.F90:456
recursive subroutine upftbv(lunit, nemo, val, mxib, ibit, nib)
Given a Table B mnemonic with flag table units and a corresponding numerical data value,...
Definition: cftbvs.F90:70
recursive subroutine getcfmng(lunit, nemoi, ivali, nemod, ivald, cmeang, lnmng, iret)
Decode the meaning of a numerical value from a code or flag table.
Definition: cftbvs.F90:220
-
subroutine nemtab(lun, nemo, idn, tab, iret)
Get information about a descriptor, based on a mnemonic.
Definition: fxy.F90:432
-
subroutine numtab(lun, idn, nemo, tab, iret)
Get information about a descriptor, based on the WMO bit-wise representation of an FXY value.
Definition: fxy.F90:357
+
subroutine nemtab(lun, nemo, idn, tab, iret)
Get information about a descriptor, based on a mnemonic.
Definition: fxy.F90:434
+
subroutine numtab(lun, idn, nemo, tab, iret)
Get information about a descriptor, based on the WMO bit-wise representation of an FXY value.
Definition: fxy.F90:359
subroutine numtbd(lun, idn, nemo, tab, iret)
Get information about a Table B or Table D descriptor, based on the WMO bit-wise representation of an...
Definition: fxy.F90:290
integer function ifxy(adsc)
Convert an FXY value from its 6 character representation to its WMO bit-wise representation.
Definition: fxy.F90:152
character *(*) function adn30(idn, ldn)
Convert an FXY value from its WMO bit-wise representation to a character string of length 5 or 6.
Definition: fxy.F90:18
-
integer function ireadmt(lun)
Check the most recent BUFR message that was read via a call to one of the message-reading subroutines...
-
recursive subroutine strnum(str, num, iret)
Decode an integer from a character string.
Definition: misc.F90:177
+
integer function ireadmt(lun)
Check the most recent BUFR message that was read via a call to one of the message-reading subroutines...
+
recursive subroutine strnum(str, num, iret)
Decode an integer from a character string.
Definition: misc.F90:156
Wrap C NCEPLIBS-bufr functions so they can be called from within the Fortran part of the library.
Definition: bufrlib.F90:11
-
Declare arrays and variables used to store DX BUFR tables internally for multiple file IDs.
-
character *128, dimension(:,:), allocatable tabb
Table B entries for each file ID.
-
Declare a variable used to indicate whether master code and flag tables should be read.
-
character cdmf
Flag indicating whether to include code and flag table information during reads of master BUFR tables...
-
recursive subroutine status(lunit, lun, il, im)
Check whether a specified Fortran logical unit number is currently connected to the NCEPLIBS-bufr sof...
+
Declare arrays and variables used to store DX BUFR tables internally for multiple file IDs.
+
character *128, dimension(:,:), allocatable tabb
Table B entries for each file ID.
+
Declare a variable used to indicate whether master code and flag tables should be read.
+
character cdmf
Flag indicating whether to include code and flag table information during reads of master BUFR tables...
+
recursive subroutine status(lunit, lun, il, im)
Check whether a specified Fortran logical unit number is currently connected to the NCEPLIBS-bufr sof...
subroutine parstr(str, tags, mtag, ntag, sep, limit80)
Parse a string containing one or more substrings into an array of substrings.
Definition: strings.F90:473
subroutine x48(iin4, iout8, nval)
Encode one or more 4-byte integer values as 8-byte integer values.
Definition: x4884.F90:18
subroutine x84(iin8, iout4, nval)
Encode one or more 8-byte integer values as 4-byte integer values.
Definition: x4884.F90:65
diff --git a/cidecode_8F90.html b/cidecode_8F90.html index 4b307d055..031ab6bf9 100644 --- a/cidecode_8F90.html +++ b/cidecode_8F90.html @@ -26,7 +26,7 @@
NCEPLIBS-bufr -  12.1.0 +  12.2.0
diff --git a/cidecode_8F90_source.html b/cidecode_8F90_source.html index 64e33da6e..6d4349c6a 100644 --- a/cidecode_8F90_source.html +++ b/cidecode_8F90_source.html @@ -26,7 +26,7 @@
NCEPLIBS-bufr -  12.1.0 +  12.2.0
@@ -151,7 +151,7 @@
99  elseif(nbits<=64) then
100  jbit=ibit; nvals=0
101  call upb(nvals(2),max(nbits-nbitw,0),ibay,jbit)
-
102  call upb(nvals(1),min(nbitw,nbits ),ibay,jbit)
+
102  call upb(nvals(1),min(nbitw,nbits),ibay,jbit)
103  nval=nval8
104  else
105  nval=0
@@ -336,19 +336,19 @@
recursive integer function iupm(cbay, nbits)
Decode an integer value from within a specified number of bits of a character string,...
Definition: cidecode.F90:265
subroutine up8(nval, nbits, ibay, ibit)
Decode an 8-byte integer value from within a specified number of bits of an integer array,...
Definition: cidecode.F90:128
subroutine upc(chr, nchr, ibay, ibit, cnvnull)
Decode a character string from within a specified number of bytes of an integer array,...
Definition: cidecode.F90:26
-
integer function irev(n)
Return a copy of an integer value with the bytes possibly reversed.
Definition: misc.F90:257
-
Declare arrays and variables for use with any 2-03-YYY (change reference value) operators present wit...
-
integer, dimension(:), allocatable ienrv
End of entry range in jump/link table, within which the corresponding new reference value in nrv will...
-
character *8, dimension(:), allocatable tagnrv
Table B mnemonic to which the corresponding new reference value in nrv applies.
-
integer, dimension(:), allocatable isnrv
Start of entry range in jump/link table, within which the corresponding new reference value in nrv wi...
-
integer nnrv
Number of entries in the jump/link table which contain new reference values (up to a maximum of mxnrv...
-
integer *8, dimension(:), allocatable nrv
New reference values corresponding to inodnrv.
-
integer, dimension(:), allocatable inodnrv
Entries within jump/link table which contain new reference values.
-
Declare arrays and variables used to store the internal jump/link table.
-
integer, dimension(:), allocatable irf
Reference values corresponding to tag and typ:
-
integer, dimension(:), allocatable isc
Scale factors corresponding to tag and typ:
-
integer, dimension(:), allocatable ibt
Bit widths corresponding to tag and typ:
-
character *10, dimension(:), allocatable tag
Mnemonics in the jump/link table.
+
integer function irev(n)
Return a copy of an integer value with the bytes possibly reversed.
Definition: misc.F90:236
+
Declare arrays and variables for use with any 2-03-YYY (change reference value) operators present wit...
+
integer, dimension(:), allocatable ienrv
End of entry range in jump/link table, within which the corresponding new reference value in nrv will...
+
character *8, dimension(:), allocatable tagnrv
Table B mnemonic to which the corresponding new reference value in nrv applies.
+
integer, dimension(:), allocatable isnrv
Start of entry range in jump/link table, within which the corresponding new reference value in nrv wi...
+
integer nnrv
Number of entries in the jump/link table which contain new reference values (up to a maximum of mxnrv...
+
integer *8, dimension(:), allocatable nrv
New reference values corresponding to inodnrv.
+
integer, dimension(:), allocatable inodnrv
Entries within jump/link table which contain new reference values.
+
Declare arrays and variables used to store the internal jump/link table.
+
integer, dimension(:), allocatable irf
Reference values corresponding to tag and typ:
+
integer, dimension(:), allocatable isc
Scale factors corresponding to tag and typ:
+
integer, dimension(:), allocatable ibt
Bit widths corresponding to tag and typ:
+
character *10, dimension(:), allocatable tag
Mnemonics in the jump/link table.
subroutine x84(iin8, iout4, nval)
Encode one or more 8-byte integer values as 4-byte integer values.
Definition: x4884.F90:65
diff --git a/ciencode_8F90.html b/ciencode_8F90.html index a2d6d9b01..698ef8651 100644 --- a/ciencode_8F90.html +++ b/ciencode_8F90.html @@ -26,7 +26,7 @@
NCEPLIBS-bufr -  12.1.0 +  12.2.0
diff --git a/ciencode_8F90_source.html b/ciencode_8F90_source.html index 6d3fd1408..9f3722664 100644 --- a/ciencode_8F90_source.html +++ b/ciencode_8F90_source.html @@ -26,7 +26,7 @@
NCEPLIBS-bufr -  12.1.0 +  12.2.0
@@ -168,7 +168,7 @@
116  nval4=nvals(2)
117  call pkb(nval4,max(nbits-nbitw,0),ibay,ibit)
118  nval4=nvals(1)
-
119  call pkb(nval4,min(nbits,nbitw ),ibay,ibit)
+
119  call pkb(nval4,min(nbits,nbitw),ibay,ibit)
120 
121  return
122 end subroutine pkb8
@@ -305,19 +305,19 @@
recursive subroutine ipkm(cbay, nbyt, n)
Encode an integer value within a specified number of bytes of a character string, up to a maximum of ...
Definition: ciencode.F90:194
subroutine pkb(nval, nbits, ibay, ibit)
Encode an integer value within a specified number of bits of an integer array, starting at the bit im...
Definition: ciencode.F90:140
subroutine pkb8(nval, nbits, ibay, ibit)
Encode an 8-byte integer value within a specified number of bits of an integer array,...
Definition: ciencode.F90:97
-
integer function irev(n)
Return a copy of an integer value with the bytes possibly reversed.
Definition: misc.F90:257
-
Declare arrays and variables for use with any 2-03-YYY (change reference value) operators present wit...
-
integer, dimension(:), allocatable ienrv
End of entry range in jump/link table, within which the corresponding new reference value in nrv will...
-
character *8, dimension(:), allocatable tagnrv
Table B mnemonic to which the corresponding new reference value in nrv applies.
-
integer, dimension(:), allocatable isnrv
Start of entry range in jump/link table, within which the corresponding new reference value in nrv wi...
-
integer nnrv
Number of entries in the jump/link table which contain new reference values (up to a maximum of mxnrv...
-
integer *8, dimension(:), allocatable nrv
New reference values corresponding to inodnrv.
-
integer, dimension(:), allocatable inodnrv
Entries within jump/link table which contain new reference values.
-
Declare arrays and variables used to store the internal jump/link table.
-
integer, dimension(:), allocatable irf
Reference values corresponding to tag and typ:
-
integer, dimension(:), allocatable isc
Scale factors corresponding to tag and typ:
-
integer, dimension(:), allocatable ibt
Bit widths corresponding to tag and typ:
-
character *10, dimension(:), allocatable tag
Mnemonics in the jump/link table.
+
integer function irev(n)
Return a copy of an integer value with the bytes possibly reversed.
Definition: misc.F90:236
+
Declare arrays and variables for use with any 2-03-YYY (change reference value) operators present wit...
+
integer, dimension(:), allocatable ienrv
End of entry range in jump/link table, within which the corresponding new reference value in nrv will...
+
character *8, dimension(:), allocatable tagnrv
Table B mnemonic to which the corresponding new reference value in nrv applies.
+
integer, dimension(:), allocatable isnrv
Start of entry range in jump/link table, within which the corresponding new reference value in nrv wi...
+
integer nnrv
Number of entries in the jump/link table which contain new reference values (up to a maximum of mxnrv...
+
integer *8, dimension(:), allocatable nrv
New reference values corresponding to inodnrv.
+
integer, dimension(:), allocatable inodnrv
Entries within jump/link table which contain new reference values.
+
Declare arrays and variables used to store the internal jump/link table.
+
integer, dimension(:), allocatable irf
Reference values corresponding to tag and typ:
+
integer, dimension(:), allocatable isc
Scale factors corresponding to tag and typ:
+
integer, dimension(:), allocatable ibt
Bit widths corresponding to tag and typ:
+
character *10, dimension(:), allocatable tag
Mnemonics in the jump/link table.
subroutine x84(iin8, iout4, nval)
Encode one or more 8-byte integer values as 4-byte integer values.
Definition: x4884.F90:65
diff --git a/classes.html b/classes.html index aa40964d9..487d3e807 100644 --- a/classes.html +++ b/classes.html @@ -26,7 +26,7 @@
NCEPLIBS-bufr -  12.1.0 +  12.2.0
@@ -86,7 +86,7 @@
Data Types
-
A | B | C | D | I | O | R | S
+
A | B | C | I | O | R | S
diff --git a/cmpbqm_8F90.html b/cmpbqm_8F90.html index 53303130a..cd59e7b28 100644 --- a/cmpbqm_8F90.html +++ b/cmpbqm_8F90.html @@ -26,7 +26,7 @@
NCEPLIBS-bufr -  12.1.0 +  12.2.0
diff --git a/cmpbqm_8F90_source.html b/cmpbqm_8F90_source.html index 718812251..eac50c826 100644 --- a/cmpbqm_8F90_source.html +++ b/cmpbqm_8F90_source.html @@ -26,7 +26,7 @@
NCEPLIBS-bufr -  12.1.0 +  12.2.0
@@ -88,21 +88,21 @@
Go to the documentation of this file.
1 
5 
-
11 PROGRAM cmpbqm
+
11 program cmpbqm
12 
-
13  CHARACTER*255 file
-
14  CHARACTER*50 headr,obstr,qmstr
-
15  CHARACTER*20 vars(7)
-
16  CHARACTER*8 subset,date
+
13  character*255 file
+
14  character*50 headr,obstr,qmstr
+
15  character*20 vars(7)
+
16  character*8 subset,date
17  dimension knt(300,7,0:17),hdr(5),obs(8,255),qms(8,255)
-
18  LOGICAL exist
+
18  logical exist
19  real*8 hdr,obs,qms
20 
-
21  DATA headr /'SID XOB YOB DHR TYP '/
-
22  DATA obstr /'POB QOB TOB ZOB UOB PWO RHO VOB '/
-
23  DATA qmstr /'PQM QQM TQM ZQM WQM PWQ RHQ '/
+
21  data headr /'SID XOB YOB DHR TYP '/
+
22  data obstr /'POB QOB TOB ZOB UOB PWO RHO VOB '/
+
23  data qmstr /'PQM QQM TQM ZQM WQM PWQ RHQ '/
24 
-
25  DATA vars /'PRESSURE ',&
+
25  data vars /'PRESSURE ',&
26  'SPECIFIC HUMIDTY',&
27  'TEMPERATURE ',&
28  'HEIGHT ',&
@@ -110,8 +110,8 @@
30  'PRECIPITABLE H2O',&
31  'RELATIVE HUMIDTY'/
32 
-
33  DATA lubfr /8 /
-
34  DATA vmax /10e10/
+
33  data lubfr /8 /
+
34  data vmax /10e10/
35 
36  !-----------------------------------------------------------------------
37  !-----------------------------------------------------------------------
@@ -119,100 +119,99 @@
39  irec = 0
40  knt = 0
41 
-
42  ! OPEN A FILE - GET A DATE
+
42  ! Open a file - get a date
43  ! ------------------------
44 
45  call get_command_argument(1,file); file=trim(adjustl(file))
46  if (file == '') then
47  print *, 'Usage: Usage: cmpbqm <prepbufrfile> will print prep inventory by variable, report type, and qc mark'
-
48  call exit(2)
+
48  stop 2
49  endif
50  inquire(file=file,exist=exist)
51  if (.not.exist) then
52  print *, trim(file)//' does not exist'
-
53  call exit(3)
+
53  stop 3
54  endif
55 
56  open(lubfr,file=file,form='unformatted')
-
57  CALL openbf(lubfr,'IN',lubfr)
-
58  CALL readmg(lubfr,subset,idate,iret)
-
59  IF(iret/=0) GOTO 900
-
60  WRITE(date,'(I8)') idate
-
61  DO i=1,8
-
62  IF(date(i:i)==' ') date(i:i) = '0'
-
63  ENDDO
+
57  call openbf(lubfr,'IN',lubfr)
+
58  call readmg(lubfr,subset,idate,iret)
+
59  if(iret/=0) call bort('CMPBQM - ERROR READING BUFR FILE ')
+
60  write(date,'(i8)') idate
+
61  do i=1,8
+
62  if(date(i:i)==' ') date(i:i) = '0'
+
63  enddo
64  print'(''DATA VALID AT '',A8)',date
65 
-
66  ! READ THRU THE PREPDA RECORDS
+
66  ! Read thru the prepda records
67  ! ----------------------------
68 
-
69 10 CALL readsb(lubfr,iret)
-
70  IF(iret/=0) THEN
-
71  CALL readmg(lubfr,subset,idate,iret)
-
72  IF(iret/=0) GOTO 100
-
73  CALL ufbcnt(lubfr,irec,isub)
-
74  GOTO 10
-
75  ENDIF
+
69 10 call readsb(lubfr,iret)
+
70  if(iret/=0) then
+
71  call readmg(lubfr,subset,idate,iret)
+
72  if(iret/=0) goto 100
+
73  call ufbcnt(lubfr,irec,isub)
+
74  goto 10
+
75  endif
76  qms = 10e10
-
77  CALL ufbint(lubfr,hdr,5,1,iret,headr)
-
78  CALL ufbint(lubfr,obs,8,255,nlev,obstr)
-
79  CALL ufbint(lubfr,qms,8,255,nlev,qmstr)
+
77  call ufbint(lubfr,hdr,5,1,iret,headr)
+
78  call ufbint(lubfr,obs,8,255,nlev,obstr)
+
79  call ufbint(lubfr,qms,8,255,nlev,qmstr)
80 
81  kx = nint(hdr(5))
82 
-
83  DO l=1,nlev
-
84  DO k=1,7
+
83  do l=1,nlev
+
84  do k=1,7
85  iq = -1
-
86  IF(k==5) obs(5,l) = max(obs(5,l),obs(8,l))
-
87  IF(obs(k,l)<vmax .AND. qms(k,l)<vmax) THEN
+
86  if(k==5) obs(5,l) = max(obs(5,l),obs(8,l))
+
87  if(obs(k,l)<vmax .and. qms(k,l)<vmax) then
88  iq = nint(qms(k,l))
-
89  ELSEIF(obs(k,l)<vmax .AND. qms(k,l)>=vmax) THEN
+
89  elseif(obs(k,l)<vmax .and. qms(k,l)>=vmax) then
90  iq = 16
-
91  ELSEIF(obs(k,l)>=vmax .AND. qms(k,l)<vmax) THEN
+
91  elseif(obs(k,l)>=vmax .and. qms(k,l)<vmax) then
92  iq = 17
-
93  ENDIF
-
94  IF(iq>=0) knt(kx,k,iq) = knt(kx,k,iq)+1
-
95  ENDDO
-
96  ENDDO
+
93  endif
+
94  if(iq>=0) knt(kx,k,iq) = knt(kx,k,iq)+1
+
95  enddo
+
96  enddo
97 
-
98  GOTO 10
+
98  goto 10
99 
-
100  ! FINISH UP
+
100  ! Finish up
101  ! ---------
102 
-
103 100 DO k=1,7
+
103 100 do k=1,7
104  print*,vars(k)
105  print*
-
106  DO kx=1,300
+
106  do kx=1,300
107  itot = 0; igood=0; ifail=0
-
108  DO iq=0,17
+
108  do iq=0,17
109  itot = itot+knt(kx,k,iq)
110  if(iq<=3) then
111  igood=igood+knt(kx,k,iq)
112  elseif(iq<=7) then
113  ifail=ifail+knt(kx,k,iq)
114  endif
-
115  ENDDO
-
116  IF(itot>0) print 101,kx,itot,igood,ifail,(knt(kx,k,iq),iq=8,17)
-
117 101 FORMAT(i3,i6,2('|', i6),&
+
115  enddo
+
116  if(itot>0) print 101,kx,itot,igood,ifail,(knt(kx,k,iq),iq=8,17)
+
117 101 format(i3,i6,2('|', i6),&
118  2('|', i6),&
119  1('|',6i6),&
120  2('|', i6))
-
121  ENDDO
+
121  enddo
122  print*
-
123  ENDDO
+
123  enddo
124 
125  print*,'******CMPBQM PROCESSED ',irec,' BUFR RECORDS******'
126  stop
-
127 900 CALL bort('CMPBQM - ERROR READING BUFR FILE ')
-
128 END PROGRAM cmpbqm
+
127 end program cmpbqm
subroutine bort(str)
Log an error message, then abort the application program.
Definition: borts.F90:15
program cmpbqm
Usage: cmpbqm <prepbufrfile> will print prep inventory by variable, report type, and qc mark.
Definition: cmpbqm.F90:11
-
recursive subroutine openbf(lunit, io, lundx)
Connect a new file to the NCEPLIBS-bufr software for input or output operations, or initialize the li...
-
recursive subroutine ufbcnt(lunit, kmsg, ksub)
Get the current location of the file pointer within a BUFR file, in terms of a message number countin...
+
recursive subroutine openbf(lunit, io, lundx)
Connect a new file to the NCEPLIBS-bufr software for input or output operations, or initialize the li...
+
recursive subroutine ufbcnt(lunit, kmsg, ksub)
Get the current location of the file pointer within a BUFR file, in terms of a message number countin...
recursive subroutine readmg(lunxx, subset, jdate, iret)
Read the next BUFR message from logical unit abs(lunxx) into internal arrays.
Definition: readwritemg.F90:44
recursive subroutine readsb(lunit, iret)
Read the next data subset from a BUFR message.
Definition: readwritesb.F90:32
-
recursive subroutine ufbint(lunin, usr, i1, i2, iret, str)
Read or write one or more data values from or to a data subset.
+
recursive subroutine ufbint(lunin, usr, i1, i2, iret, str)
Read or write one or more data values from or to a data subset.
diff --git a/compress_8F90.html b/compress_8F90.html index 27c6eaba7..44ff12d49 100644 --- a/compress_8F90.html +++ b/compress_8F90.html @@ -26,7 +26,7 @@
NCEPLIBS-bufr -  12.1.0 +  12.2.0
@@ -265,7 +265,7 @@

Definition at line 109 of file compress.F90.

-

References bort(), moda_rlccmn::crtag, moda_bitbuf::ibit, moda_tables::ibt, moda_usrint::inv, moda_rlccmn::irbit, moda_rlccmn::irnch, moda_stcode::iscodes, moda_tables::itp, moda_bitbuf::mbay, moda_bitbuf::mbyt, moda_msgcwd::msub, moda_usrint::nrfelm, moda_rlccmn::nrst, moda_msgcwd::nsub, moda_usrint::nval, strbtm(), moda_tables::tag, up8(), upb(), upc(), ups(), usrtpl(), and moda_usrint::val.

+

References bort(), moda_rlccmn::crtag, moda_bitbuf::ibit, moda_tables::ibt, moda_usrint::inv, moda_rlccmn::irbit, moda_rlccmn::irnch, moda_stcode::iscodes, moda_tables::itp, moda_bitbuf::mbay, moda_bitbuf::mbyt, moda_msgcwd::msub, moda_usrint::nrfelm, moda_rlccmn::nrst, moda_msgcwd::nsub, moda_usrint::nval, strbtm(), moda_tables::tag, up8(), upb(), upc(), ups(), usrtpl(), and moda_usrint::val.

Referenced by readsb().

@@ -289,7 +289,7 @@

moda_bitbuf), storing it for compression. Then, try to add it to the compressed BUFR message that is currently open within memory for abs(lunix). If the subset will not fit into the currently open message, then that compressed message is flushed to lunix and a new one is created in order to hold the current subset (still stored for compression).

-

This subroutine performs functions similar to NCEPLIBS-bufr subroutine msgupd() except that it acts on compressed bufr messages.

+

This subroutine performs functions similar to NCEPLIBS-bufr subroutine msgupd() except that it acts on compressed BUFR messages.

Parameters
@@ -150,7 +150,7 @@
121 
122  integer, intent(in) :: lun
123  integer*8 :: ival, lref, ninc, lps
-
124  integer nsbs, jbit, lbit, nbit, n, node, ityp, linc, lre4, nin4, nbmp, nchr, lelm, ibsv, igetrfel, icbfms
+
124  integer nsbs, jbit, lbit, nbit, n, node, ityp, linc, lre4, nin4, nbmp, nchr, lelm, ibsv, igetrfel, ibfms, icbfms
125 
126  real*8 rval, ups
127 
@@ -220,12 +220,12 @@
191  goto 11
192  endif
193  if(ival<lps(nbit)) val(n,lun) = ups(ival,node)
-
194  call strbtm(n,lun)
+
194  call strbtm(n,lun,ibfms(val(n,lun)))
195  ibit = ibit + linc*msub(lun)
196  elseif(ityp==3) then
197  ! This is a character element. If there are more than 8 characters, then only the first 8 will be unpacked by this
198  ! routine, and a separate subsequent call to subroutine readlc() will be required to unpack the remainder of the string.
-
199  ! In this case, pointers will be saved within common /rlccmn/ for later use within readlc().
+
199  ! In this case, pointers will be saved within module @ref moda_rlccmn for later use within readlc().
200  lelm = nbit/8
201  nchr = min(8,lelm)
202  ibsv = ibit
@@ -272,403 +272,404 @@
243 
258 subroutine cmsgini(lun,mesg,subset,idate,nsub,nbyt)
259 
-
260  implicit none
+
260  use modv_vars, only: mtv, nby1, nby5, bmostr
261 
-
262  integer, intent(in) :: lun, idate, nsub
-
263  integer, intent(inout) :: nbyt
-
264  integer, intent(out) :: mesg(*)
-
265  integer mtyp, msbt, inod, isub, iret, jdate, mcen, mear, mmon, mday, mour, mmin, mbit, mbyt, len1, len3, i4dy
-
266 
-
267  character*128 bort_str
-
268  character*8, intent(in) :: subset
-
269  character*4 bufr
-
270  character tab
-
271 
-
272  data bufr/'BUFR'/
-
273 
-
274  ! Get the message tag and type, and break up the date which can be either YYMMDDHH or YYYYMMDDHH
-
275 
-
276  call nemtba(lun,subset,mtyp,msbt,inod)
-
277  call nemtab(lun,subset,isub,tab,iret)
-
278  if(iret==0) then
-
279  write(bort_str,'("BUFRLIB: CMSGINI - TABLE A MESSAGE TYPE MNEMONIC ",A," NOT FOUND IN INTERNAL TABLE D ARRAYS")') subset
-
280  call bort(bort_str)
-
281  endif
-
282 
-
283  jdate = i4dy(idate)
-
284  mcen = mod(jdate/10**8,100)+1
-
285  mear = mod(jdate/10**6,100)
-
286  mmon = mod(jdate/10**4,100)
-
287  mday = mod(jdate/10**2,100)
-
288  mour = mod(jdate ,100)
-
289  mmin = 0
-
290 
-
291  if(mear==0) then
-
292  mcen = mcen-1
-
293  mear = 100
-
294  endif
-
295 
-
296  ! Initialize the message
-
297 
-
298  mbit = 0
-
299 
-
300  ! Section 0
-
301 
-
302  call pkc(bufr , 4 , mesg,mbit)
-
303  ! Note that the actual Section 0 length will be computed and stored below; for now, we're really only interested in
-
304  ! advancing mbit by the correct amount, so we'll just store a default value of 0.
-
305  call pkb( 0 , 24 , mesg,mbit)
-
306  call pkb( 3 , 8 , mesg,mbit)
-
307 
-
308  ! Section 1
-
309 
-
310  len1 = 18
-
311 
-
312  call pkb(len1 , 24 , mesg,mbit)
+
262  implicit none
+
263 
+
264  integer, intent(in) :: lun, idate, nsub
+
265  integer, intent(inout) :: nbyt
+
266  integer, intent(out) :: mesg(*)
+
267  integer mtyp, msbt, inod, isub, iret, jdate, mcen, mear, mmon, mday, mour, mmin, mbit, mbyt, len3, i4dy
+
268 
+
269  character*128 bort_str
+
270  character*8, intent(in) :: subset
+
271  character tab
+
272 
+
273  ! Get the message tag and type, and break up the date which can be either YYMMDDHH or YYYYMMDDHH
+
274 
+
275  call nemtba(lun,subset,mtyp,msbt,inod)
+
276  call nemtab(lun,subset,isub,tab,iret)
+
277  if(iret==0) then
+
278  write(bort_str,'("BUFRLIB: CMSGINI - TABLE A MESSAGE TYPE MNEMONIC ",A," NOT FOUND IN INTERNAL TABLE D ARRAYS")') subset
+
279  call bort(bort_str)
+
280  endif
+
281 
+
282  jdate = i4dy(idate)
+
283  mcen = mod(jdate/10**8,100)+1
+
284  mear = mod(jdate/10**6,100)
+
285  mmon = mod(jdate/10**4,100)
+
286  mday = mod(jdate/10**2,100)
+
287  mour = mod(jdate ,100)
+
288  mmin = 0
+
289 
+
290  if(mear==0) then
+
291  mcen = mcen-1
+
292  mear = 100
+
293  endif
+
294 
+
295  ! Initialize the message
+
296 
+
297  mbit = 0
+
298 
+
299  ! Section 0
+
300 
+
301  call pkc(bmostr, 4 , mesg,mbit)
+
302  ! Note that the actual Section 0 length will be computed and stored below; for now, we're really only interested in
+
303  ! advancing mbit by the correct amount, so we'll just store a default value of 0.
+
304  call pkb( 0 , 24 , mesg,mbit)
+
305  call pkb( 3 , 8 , mesg,mbit)
+
306 
+
307  ! Section 1
+
308 
+
309  call pkb(nby1 , 24 , mesg,mbit)
+
310  call pkb( 0 , 8 , mesg,mbit)
+
311  call pkb( 3 , 8 , mesg,mbit)
+
312  call pkb( 7 , 8 , mesg,mbit)
313  call pkb( 0 , 8 , mesg,mbit)
-
314  call pkb( 3 , 8 , mesg,mbit)
-
315  call pkb( 7 , 8 , mesg,mbit)
-
316  call pkb( 0 , 8 , mesg,mbit)
-
317  call pkb( 0 , 8 , mesg,mbit)
-
318  call pkb(mtyp , 8 , mesg,mbit)
-
319  call pkb(msbt , 8 , mesg,mbit)
-
320  call pkb( 36 , 8 , mesg,mbit)
-
321  call pkb( 0 , 8 , mesg,mbit)
-
322  call pkb(mear , 8 , mesg,mbit)
-
323  call pkb(mmon , 8 , mesg,mbit)
-
324  call pkb(mday , 8 , mesg,mbit)
-
325  call pkb(mour , 8 , mesg,mbit)
-
326  call pkb(mmin , 8 , mesg,mbit)
-
327  call pkb(mcen , 8 , mesg,mbit)
-
328 
-
329  ! Section 3
-
330 
-
331  len3 = 10
-
332 
-
333  call pkb(len3 , 24 , mesg,mbit)
-
334  call pkb( 0 , 8 , mesg,mbit)
-
335  call pkb(nsub , 16 , mesg,mbit)
-
336  call pkb( 192 , 8 , mesg,mbit)
-
337  call pkb(isub , 16 , mesg,mbit)
-
338  call pkb( 0 , 8 , mesg,mbit)
-
339 
-
340  ! Section 4
-
341 
-
342  ! Store the total length of Section 4. Remember that the input value of nbyt only contains the length of the compressed
-
343  ! data portion of Section 4, so we need to add four bytes to this number in order to account for the total length of
-
344  ! Section 4. The actual compressed data portion will be filled in later by subroutine wrcmps().
-
345  call pkb((nbyt+4) , 24 , mesg,mbit)
-
346  call pkb( 0 , 8 , mesg,mbit)
-
347 
-
348  ! Section 5
-
349 
-
350  ! This section will be filled in later by subroutine wrcmps(). However, for now, and noting that mbit currently points
-
351  ! to the last bit of the fourth byte of Section 4, then we have:
-
352  ! (total length of BUFR message (in Section 0)) =
-
353  ! (length of message up through fourth byte of Section 4)
-
354  ! + (length of compressed data portion of Section 4)
-
355  ! + (length of Section 5)
-
356  mbyt = mbit/8 + nbyt + 4
-
357 
-
358  ! For output, make nbyt point to the current location of mbit, which is the byte after which to actually begin writing the
-
359  ! compressed data into Section 4.
-
360  nbyt = mbit/8
-
361 
-
362  ! Now, store the total length of the BUFR message in Section 0.
-
363  mbit = 32
-
364  call pkb(mbyt,24,mesg,mbit)
+
314  call pkb( 0 , 8 , mesg,mbit)
+
315  call pkb(mtyp , 8 , mesg,mbit)
+
316  call pkb(msbt , 8 , mesg,mbit)
+
317  call pkb( mtv , 8 , mesg,mbit)
+
318  call pkb( 0 , 8 , mesg,mbit)
+
319  call pkb(mear , 8 , mesg,mbit)
+
320  call pkb(mmon , 8 , mesg,mbit)
+
321  call pkb(mday , 8 , mesg,mbit)
+
322  call pkb(mour , 8 , mesg,mbit)
+
323  call pkb(mmin , 8 , mesg,mbit)
+
324  call pkb(mcen , 8 , mesg,mbit)
+
325 
+
326  ! Section 3
+
327 
+
328  len3 = 10
+
329 
+
330  call pkb(len3 , 24 , mesg,mbit)
+
331  call pkb( 0 , 8 , mesg,mbit)
+
332  call pkb(nsub , 16 , mesg,mbit)
+
333  call pkb( 192 , 8 , mesg,mbit)
+
334  call pkb(isub , 16 , mesg,mbit)
+
335  call pkb( 0 , 8 , mesg,mbit)
+
336 
+
337  ! Section 4
+
338 
+
339  ! Store the total length of Section 4. Remember that the input value of nbyt only contains the length of the compressed
+
340  ! data portion of Section 4, so we need to add four bytes to this number in order to account for the total length of
+
341  ! Section 4. The actual compressed data portion will be filled in later by subroutine wrcmps().
+
342  call pkb((nbyt+4) , 24 , mesg,mbit)
+
343  call pkb( 0 , 8 , mesg,mbit)
+
344 
+
345  ! Section 5
+
346 
+
347  ! This section will be filled in later by subroutine wrcmps(). However, for now, and noting that mbit currently points
+
348  ! to the last bit of the fourth byte of Section 4, then we have:
+
349  ! (total length of BUFR message (in Section 0)) =
+
350  ! (length of message up through fourth byte of Section 4)
+
351  ! + (length of compressed data portion of Section 4)
+
352  ! + (length of Section 5)
+
353  mbyt = mbit/8 + nbyt + nby5
+
354 
+
355  ! For output, make nbyt point to the current location of mbit, which is the byte after which to actually begin writing the
+
356  ! compressed data into Section 4.
+
357  nbyt = mbit/8
+
358 
+
359  ! Now, store the total length of the BUFR message in Section 0.
+
360  mbit = 32
+
361  call pkb(mbyt,24,mesg,mbit)
+
362 
+
363  return
+
364 end subroutine cmsgini
365 
-
366  return
-
367 end subroutine cmsgini
-
368 
-
386 subroutine wrcmps(lunix)
-
387 
-
388  use modv_vars, only: mxcdv, mxcsb
-
389 
-
390  use moda_usrint
-
391  use moda_msgcwd
-
392  use moda_bitbuf
-
393  use moda_mgwa
-
394  use moda_tables
-
395  use moda_comprx
-
396  use moda_comprs
-
397  use moda_s01cm
-
398 
-
399  implicit none
+
383 subroutine wrcmps(lunix)
+
384 
+
385  use modv_vars, only: mxcdv, mxcsb, nby5, bmcstr
+
386 
+
387  use moda_usrint
+
388  use moda_msgcwd
+
389  use moda_bitbuf
+
390  use moda_mgwa
+
391  use moda_tables
+
392  use moda_comprx
+
393  use moda_comprs
+
394  use moda_s01cm
+
395 
+
396  implicit none
+
397 
+
398  integer, intent(in) :: lunix
+
399  integer ibyt, jbit, lunit, lun, il, im, icol, i, j, node, lbyt, nbyt, nchr, ldata, iupbs01, imrkopr
400 
-
401  integer, intent(in) :: lunix
-
402  integer ibyt, jbit, lunit, lun, il, im, icol, i, j, node, lbyt, nbyt, nchr, ldata, iupbs01
-
403 
-
404  character*128 bort_str
-
405  character*8 subset
-
406  character czero
-
407 
-
408  logical first, kmiss, edge4, msgfull, cmpres
+
401  character*128 bort_str
+
402  character*8 subset
+
403  character czero
+
404 
+
405  logical first, kmiss, edge4, msgfull, cmpres
+
406 
+
407  real, parameter :: rln2 = 1./log(2.)
+
408  real range
409 
-
410  real, parameter :: rln2 = 1./log(2.)
-
411  real range
-
412 
-
413  data first /.true./
-
414 
-
415  save first, ibyt, jbit, subset, edge4
-
416 
-
417  ! Get the unit and subset tag
+
410  data first /.true./
+
411 
+
412  save first, ibyt, jbit, subset, edge4
+
413 
+
414  ! Get the unit and subset tag
+
415 
+
416  lunit = abs(lunix)
+
417  call status(lunit,lun,il,im)
418 
-
419  lunit = abs(lunix)
-
420  call status(lunit,lun,il,im)
-
421 
-
422  do while (.true.)
-
423 
-
424  if(first) then
-
425  ! Initialize some values in order to prepare for the creation of a new compressed BUFR message for output.
-
426  kbyt = 0
-
427  ncol = 0
-
428  lunc = lun
-
429  nrow = nval(lun)
-
430  subset = tag(inode(lun))(1:8)
-
431  first = .false.
-
432  flush = .false.
-
433  writ1 = .false.
-
434  ! The following call to cmsgini() is just being done to determine how many bytes (kbyt) will be taken up in a message
-
435  ! by the information in Sections 0, 1, 2 and 3. This in turn will allow us to determine how many compressed data subsets
-
436  ! will fit into Section 4 without overflowing maxbyt. Then, later on, another separate call to cmsgini() will be done to
-
437  ! actually initialize Sections 0, 1, 2 and 3 of the final compressed BUFR message that will be written out.
-
438  call cmsgini(lun,mbay(1,lun),subset,idate(lun),ncol,kbyt)
-
439  ! Check the edition number of the BUFR message to be created
-
440  edge4 = .false.
-
441  if(ns01v>0) then
-
442  i = 1
-
443  do while ( (.not.edge4) .and. (i<=ns01v) )
-
444  if( (cmnem(i)=='BEN') .and. (ivmnem(i)>=4) ) then
-
445  edge4 = .true.
-
446  else
-
447  i = i+1
-
448  endif
-
449  enddo
-
450  endif
-
451  endif
-
452 
-
453  if(lun/=lunc) then
-
454  write(bort_str,.NE.'("BUFRLIB: WRCMPS - FILE ID FOR THIS CALL (",I3,") FILE ID FOR INITIAL CALL (",I3,")'// &
-
455  ' - UNIT NUMBER NOW IS",I4)') lun,lunc,lunix
-
456  call bort(bort_str)
-
457  endif
-
458 
-
459  cmpres = .true.
-
460  if(lunix<0) then
-
461  ! This is a "flush" call, so clear out the buffer (note that there is no current subset to be stored!) and prepare
-
462  ! to write the final compressed BUFR message.
-
463  if(ncol<=0) return
-
464  flush = .true.
-
465  writ1 = .true.
-
466  icol = 1
-
467  elseif(ncol+1>mxcsb) then
-
468  ! There's no more room in the internal compression arrays for another subset, so we'll need to write out a message
-
469  ! containing all of the data in those arrays, then initialize a new message to hold the current subset.
-
470  cmpres = .false.
-
471  else
-
472  ! Check on some other possibly problematic situations
-
473  if(nval(lun)/=nrow) then
-
474  writ1 = .true.
-
475  icol = 1
-
476  elseif(nval(lun)>mxcdv) then
-
477  write(bort_str,'("BUFRLIB: WRCMPS - NO. OF ELEMENTS IN THE '// &
-
478  .GT.'SUBSET (",I6,") THE NO. OF ROWS ALLOCATED FOR THE COMPRESSION MATRIX (",I6,")")') nval(lun),mxcdv
-
479  call bort(bort_str)
-
480  elseif(ncol>0) then
-
481  ! Confirm that all of the nodes are the same as in the previous subset for this same BUFR message. If not, then
-
482  ! there may be different nested replication sequences activated in the current subset vs. in the previous subset,
-
483  ! even though the total number of nodes is the same.
-
484  do i = 1, nval(lun)
-
485  if ( inv(i,lun) /= jlnode(i) ) then
-
486  writ1 = .true.
-
487  icol = 1
-
488  exit
-
489  endif
-
490  enddo
-
491  endif
-
492  if(.not.writ1) then
-
493  ! Store the next subset for compression
-
494  ncol = ncol+1
-
495  icol = ncol
-
496  ibit = 16
-
497  do i=1,nval(lun)
-
498  node = inv(i,lun)
-
499  jlnode(i) = node
-
500  ityp(i) = itp(node)
-
501  iwid(i) = ibt(node)
-
502  if(ityp(i)==1.or.ityp(i)==2) then
-
503  call up8(matx(i,ncol),ibt(node),ibay,ibit)
-
504  elseif(ityp(i)==3) then
-
505  catx(i,ncol) = ' '
-
506  call upc(catx(i,ncol),ibt(node)/8,ibay,ibit,.true.)
-
507  endif
-
508  enddo
-
509  endif
-
510  endif
-
511 
-
512  ! Will the next subset fit into the current message? The only way to find out is to actually re-do the compression
-
513  ! by re-computing all of the local reference values, increments, etc. to determine the new Section 4 length.
-
514 
-
515  do while (cmpres)
-
516  if(ncol<=0) then
-
517  write(bort_str,'("BUFRLIB: WRCMPS - NO. OF COLUMNS CALCULATED '// &
-
518  .LE.'FOR COMPRESSION MAXRIX IS 0 (=",I6,")")') ncol
-
519  call bort(bort_str)
-
520  endif
-
521  ! ldata will hold the length (in bits) of the compressed data, i.e. the sum total for all data values for all data
-
522  ! subsets in the message
-
523  ldata = 0
-
524  do i=1,nrow
-
525  if(ityp(i)==1 .or. ityp(i)==2) then
-
526  ! Row i of the compression matrix contains numeric values, so kmis(i) will store .true. if any such values are
-
527  ! "missing", or .false. otherwise
-
528  imiss = 2_8**iwid(i)-1
-
529  if(icol==1) then
-
530  kmin(i) = imiss
-
531  kmax(i) = 0
-
532  kmis(i) = .false.
-
533  endif
-
534  do j=icol,ncol
-
535  if(matx(i,j)<imiss) then
-
536  kmin(i) = min(kmin(i),matx(i,j))
-
537  kmax(i) = max(kmax(i),matx(i,j))
-
538  else
-
539  kmis(i) = .true.
-
540  endif
-
541  enddo
-
542  kmiss = kmis(i) .and. kmin(i)<imiss
-
543  range = real(max(1,kmax(i)-kmin(i)+1))
-
544  if(ityp(i)==2 .and. (range>1. .or. kmiss)) then
-
545  ! The data values in row i of the compression matrix are numeric values that aren't all identical. Compute the
-
546  ! number of bits needed to hold the largest of the increments.
-
547  kbit(i) = nint(log(range)*rln2)
-
548  if(2**kbit(i)-1<=range) kbit(i) = kbit(i)+1
-
549  ! However, under no circumstances should this number ever exceed the width of the original underlying descriptor!
-
550  if(kbit(i)>iwid(i)) kbit(i) = iwid(i)
-
551  else
-
552  ! The data values in row i of the compression matrix are numeric values that are all identical, so the increments
-
553  ! will be omitted from the message.
-
554  kbit(i) = 0
-
555  endif
-
556  ldata = ldata + iwid(i) + 6 + ncol*kbit(i)
-
557  elseif(ityp(i)==3) then
-
558  ! Row i of the compression matrix contains character values, so kmis(i) will store .false. if all such values are
-
559  ! identical, OR .true. otherwise
-
560  if(icol==1) then
-
561  cstr(i) = catx(i,1)
-
562  kmis(i) = .false.
-
563  endif
-
564  do j=icol,ncol
-
565  if ( (.not.kmis(i)) .and. (cstr(i)/=catx(i,j)) ) then
-
566  kmis(i) = .true.
-
567  endif
-
568  enddo
-
569  if (kmis(i)) then
-
570  ! The data values in row i of the compression matrix are character values that are not all identical
-
571  kbit(i) = iwid(i)
-
572  else
-
573  ! The data values in row i of the compression matrix are character values that are all identical, so the
-
574  ! increments will be omitted from the message
-
575  kbit(i) = 0
-
576  endif
-
577  ldata = ldata + iwid(i) + 6 + ncol*kbit(i)
-
578  endif
-
579  enddo
-
580  ! Round data length up to a whole byte count
-
581  ibyt = (ldata+8-mod(ldata,8))/8
-
582  ! Depending on the edition number of the message, we need to ensure that we round to an even byte count
-
583  if( (.not.edge4) .and. (mod(ibyt,2)/=0) ) ibyt = ibyt+1
-
584  jbit = ibyt*8-ldata
-
585  if(msgfull(ibyt,kbyt,maxbyt)) then
-
586  ! The current subset will not fit into the current message. Set the flag to indicate that a message write is needed,
-
587  ! then go back and re-compress the Section 4 data for this message while excluding the data for the current subset,
-
588  ! which will be held and stored as the first subset of a new message after writing the current message.
-
589  writ1 = .true.
-
590  ncol = ncol-1
-
591  icol = 1
-
592  elseif(.not.writ1) then
-
593  ! Add the current subset to the current message and return
-
594  call usrtpl(lun,1,1)
-
595  nsub(lun) = -ncol
-
596  return
-
597  else
-
598  ! Exit the loop and proceed to write out the current message
-
599  cmpres = .false.
-
600  endif
-
601  enddo
-
602 
-
603  ! Write the complete compressed message. First, we need to do another call to cmsgini() to initialize Sections 0, 1, 2,
-
604  ! and 3 of the final compressed BUFR message that will be written out.
-
605 
-
606  call cmsgini(lun,mgwa,subset,idate(lun),ncol,ibyt)
-
607 
-
608  ! Now add the Section 4 data
-
609 
-
610  ibit = ibyt*8
-
611  do i=1,nrow
-
612  if(ityp(i)==1.or.ityp(i)==2) then
-
613  call pkb8(kmin(i),iwid(i),mgwa,ibit)
-
614  call pkb(kbit(i),6,mgwa,ibit)
-
615  if(kbit(i)>0) then
-
616  do j=1,ncol
-
617  if(matx(i,j)<2_8**iwid(i)-1) then
-
618  incr = matx(i,j)-kmin(i)
-
619  else
-
620  incr = 2_8**kbit(i)-1
-
621  endif
-
622  call pkb8(incr,kbit(i),mgwa,ibit)
-
623  enddo
-
624  endif
-
625  elseif(ityp(i)==3) then
-
626  nchr = iwid(i)/8
-
627  if(kbit(i)>0) then
-
628  call ipkm(czero,1,0)
-
629  do j=1,nchr
-
630  call pkc(czero,1,mgwa,ibit)
-
631  enddo
-
632  call pkb(nchr,6,mgwa,ibit)
-
633  do j=1,ncol
-
634  call pkc(catx(i,j),nchr,mgwa,ibit)
-
635  enddo
-
636  else
-
637  call pkc(cstr(i),nchr,mgwa,ibit)
-
638  call pkb(0,6,mgwa,ibit)
-
639  endif
-
640  endif
-
641  enddo
-
642 
-
643  ! Pad the end of Section 4 with zeroes up to the necessary byte count
-
644 
-
645  call pkb(0,jbit,mgwa,ibit)
-
646 
-
647  ! Add Section 5
-
648 
-
649  call pkc('7777',4,mgwa,ibit)
-
650 
-
651  ! Check that the message byte counters agree, then write the message
-
652 
-
653  if(mod(ibit,8)/=0) call bort('BUFRLIB: WRCMPS - THE NUMBER OF BITS IN THE '// &
-
654  'COMPRESSED BUFR MSG IS NOT A MULTIPLE OF 8 - MSG MUST END ON A BYTE BOUNDARY')
-
655  lbyt = iupbs01(mgwa,'LENM')
-
656  nbyt = ibit/8
-
657  if(nbyt/=lbyt) then
-
658  write(bort_str,'("BUFRLIB: WRCMPS - OUTPUT MESSAGE LENGTH FROM '// &
-
659  'SECTION 0",I6," DOES NOT EQUAL FINAL PACKED MESSAGE LENGTH (",I6,")")') lbyt,nbyt
-
660  call bort(bort_str)
-
661  endif
-
662 
-
663  call msgwrt(lunit,mgwa,nbyt)
-
664 
-
665  ! Now, unless this was a "flush" call to this subroutine, go back and initialize a new message to hold the current subset
-
666  ! that we weren't able to fit into the message that was just written out.
-
667 
-
668  first = .true.
-
669  if(flush) return
-
670  end do
-
671 
-
672 end subroutine wrcmps
-
subroutine strbtm(n, lun)
Store internal information in module moda_bitmaps if the input element is part of a bitmap.
Definition: bitmaps.F90:13
+
419  do while (.true.)
+
420 
+
421  if(first) then
+
422  ! Initialize some values in order to prepare for the creation of a new compressed BUFR message for output.
+
423  kbyt = 0
+
424  ncol = 0
+
425  lunc = lun
+
426  nrow = nval(lun)
+
427  subset = tag(inode(lun))(1:8)
+
428  first = .false.
+
429  flush = .false.
+
430  writ1 = .false.
+
431  ! The following call to cmsgini() is just being done to determine how many bytes (kbyt) will be taken up in a message
+
432  ! by the information in Sections 0, 1, 2 and 3. This in turn will allow us to determine how many compressed data subsets
+
433  ! will fit into Section 4 without overflowing maxbyt. Then, later on, another separate call to cmsgini() will be done to
+
434  ! actually initialize Sections 0, 1, 2 and 3 of the final compressed BUFR message that will be written out.
+
435  call cmsgini(lun,mbay(1,lun),subset,idate(lun),ncol,kbyt)
+
436  ! Check the edition number of the BUFR message to be created
+
437  edge4 = .false.
+
438  if(ns01v>0) then
+
439  i = 1
+
440  do while ( (.not.edge4) .and. (i<=ns01v) )
+
441  if( (cmnem(i)=='BEN') .and. (ivmnem(i)>=4) ) then
+
442  edge4 = .true.
+
443  else
+
444  i = i+1
+
445  endif
+
446  enddo
+
447  endif
+
448  endif
+
449 
+
450  if(lun/=lunc) then
+
451  write(bort_str,.NE.'("BUFRLIB: WRCMPS - FILE ID FOR THIS CALL (",I3,") FILE ID FOR INITIAL CALL (",I3,")'// &
+
452  ' - UNIT NUMBER NOW IS",I4)') lun,lunc,lunix
+
453  call bort(bort_str)
+
454  endif
+
455 
+
456  cmpres = .true.
+
457  if(lunix<0) then
+
458  ! This is a "flush" call, so clear out the buffer (note that there is no current subset to be stored!) and prepare
+
459  ! to write the final compressed BUFR message.
+
460  if(ncol<=0) return
+
461  flush = .true.
+
462  writ1 = .true.
+
463  icol = 1
+
464  elseif(ncol+1>mxcsb) then
+
465  ! There's no more room in the internal compression arrays for another subset, so we'll need to write out a message
+
466  ! containing all of the data in those arrays, then initialize a new message to hold the current subset.
+
467  cmpres = .false.
+
468  else
+
469  ! Check on some other possibly problematic situations
+
470  if(nval(lun)/=nrow) then
+
471  writ1 = .true.
+
472  icol = 1
+
473  elseif(nval(lun)>mxcdv) then
+
474  write(bort_str,'("BUFRLIB: WRCMPS - NO. OF ELEMENTS IN THE '// &
+
475  .GT.'SUBSET (",I6,") THE NO. OF ROWS ALLOCATED FOR THE COMPRESSION MATRIX (",I6,")")') nval(lun),mxcdv
+
476  call bort(bort_str)
+
477  elseif(ncol>0) then
+
478  ! Confirm that all of the nodes are the same as in the previous subset for this same BUFR message. If not, then
+
479  ! there may be different nested replication sequences activated in the current subset vs. in the previous subset,
+
480  ! even though the total number of nodes is the same.
+
481  do i = 1, nval(lun)
+
482  if ( inv(i,lun) /= jlnode(i) ) then
+
483  writ1 = .true.
+
484  icol = 1
+
485  exit
+
486  endif
+
487  enddo
+
488  endif
+
489  if(.not.writ1) then
+
490  ! Store the next subset for compression
+
491  ncol = ncol+1
+
492  icol = ncol
+
493  ibit = 16
+
494  do i=1,nval(lun)
+
495  node = inv(i,lun)
+
496  jlnode(i) = node
+
497  ityp(i) = itp(node)
+
498  if(imrkopr(tag(node))==1) then
+
499  iwid(i) = ibt(inv(nrfelm(i,lun),lun))
+
500  else
+
501  iwid(i) = ibt(node)
+
502  endif
+
503  if(ityp(i)==1.or.ityp(i)==2) then
+
504  call up8(matx(i,ncol),iwid(i),ibay,ibit)
+
505  elseif(ityp(i)==3) then
+
506  catx(i,ncol) = ' '
+
507  call upc(catx(i,ncol),iwid(i)/8,ibay,ibit,.true.)
+
508  endif
+
509  enddo
+
510  endif
+
511  endif
+
512 
+
513  ! Will the next subset fit into the current message? The only way to find out is to actually re-do the compression
+
514  ! by re-computing all of the local reference values, increments, etc. to determine the new Section 4 length.
+
515 
+
516  do while (cmpres)
+
517  if(ncol<=0) then
+
518  write(bort_str,'("BUFRLIB: WRCMPS - NO. OF COLUMNS CALCULATED '// &
+
519  .LE.'FOR COMPRESSION MAXRIX IS 0 (=",I6,")")') ncol
+
520  call bort(bort_str)
+
521  endif
+
522  ! ldata will hold the length (in bits) of the compressed data, i.e. the sum total for all data values for all data
+
523  ! subsets in the message
+
524  ldata = 0
+
525  do i=1,nrow
+
526  if(ityp(i)==1 .or. ityp(i)==2) then
+
527  ! Row i of the compression matrix contains numeric values, so kmis(i) will store .true. if any such values are
+
528  ! "missing", or .false. otherwise
+
529  imiss = 2_8**iwid(i)-1
+
530  if(icol==1) then
+
531  kmin(i) = imiss
+
532  kmax(i) = 0
+
533  kmis(i) = .false.
+
534  endif
+
535  do j=icol,ncol
+
536  if(matx(i,j)<imiss) then
+
537  kmin(i) = min(kmin(i),matx(i,j))
+
538  kmax(i) = max(kmax(i),matx(i,j))
+
539  else
+
540  kmis(i) = .true.
+
541  endif
+
542  enddo
+
543  kmiss = kmis(i) .and. kmin(i)<imiss
+
544  range = real(max(1,kmax(i)-kmin(i)+1))
+
545  if(ityp(i)==2 .and. (range>1. .or. kmiss)) then
+
546  ! The data values in row i of the compression matrix are numeric values that aren't all identical. Compute the
+
547  ! number of bits needed to hold the largest of the increments.
+
548  kbit(i) = nint(log(range)*rln2)
+
549  if(2**kbit(i)-1<=range) kbit(i) = kbit(i)+1
+
550  ! However, under no circumstances should this number ever exceed the width of the original underlying descriptor!
+
551  if(kbit(i)>iwid(i)) kbit(i) = iwid(i)
+
552  else
+
553  ! The data values in row i of the compression matrix are numeric values that are all identical, so the increments
+
554  ! will be omitted from the message.
+
555  kbit(i) = 0
+
556  endif
+
557  ldata = ldata + iwid(i) + 6 + ncol*kbit(i)
+
558  elseif(ityp(i)==3) then
+
559  ! Row i of the compression matrix contains character values, so kmis(i) will store .false. if all such values are
+
560  ! identical, OR .true. otherwise
+
561  if(icol==1) then
+
562  cstr(i) = catx(i,1)
+
563  kmis(i) = .false.
+
564  endif
+
565  do j=icol,ncol
+
566  if ( (.not.kmis(i)) .and. (cstr(i)/=catx(i,j)) ) then
+
567  kmis(i) = .true.
+
568  endif
+
569  enddo
+
570  if (kmis(i)) then
+
571  ! The data values in row i of the compression matrix are character values that are not all identical
+
572  kbit(i) = iwid(i)
+
573  else
+
574  ! The data values in row i of the compression matrix are character values that are all identical, so the
+
575  ! increments will be omitted from the message
+
576  kbit(i) = 0
+
577  endif
+
578  ldata = ldata + iwid(i) + 6 + ncol*kbit(i)
+
579  endif
+
580  enddo
+
581  ! Round data length up to a whole byte count
+
582  ibyt = (ldata+8-mod(ldata,8))/8
+
583  ! Depending on the edition number of the message, we need to ensure that we round to an even byte count
+
584  if( (.not.edge4) .and. (mod(ibyt,2)/=0) ) ibyt = ibyt+1
+
585  jbit = ibyt*8-ldata
+
586  if(msgfull(ibyt,kbyt,maxbyt)) then
+
587  ! The current subset will not fit into the current message. Set the flag to indicate that a message write is needed,
+
588  ! then go back and re-compress the Section 4 data for this message while excluding the data for the current subset,
+
589  ! which will be held and stored as the first subset of a new message after writing the current message.
+
590  writ1 = .true.
+
591  ncol = ncol-1
+
592  icol = 1
+
593  elseif(.not.writ1) then
+
594  ! Add the current subset to the current message and return
+
595  call usrtpl(lun,1,1)
+
596  nsub(lun) = -ncol
+
597  return
+
598  else
+
599  ! Exit the loop and proceed to write out the current message
+
600  cmpres = .false.
+
601  endif
+
602  enddo
+
603 
+
604  ! Write the complete compressed message. First, we need to do another call to cmsgini() to initialize Sections 0, 1, 2,
+
605  ! and 3 of the final compressed BUFR message that will be written out.
+
606 
+
607  call cmsgini(lun,mgwa,subset,idate(lun),ncol,ibyt)
+
608 
+
609  ! Now add the Section 4 data
+
610 
+
611  ibit = ibyt*8
+
612  do i=1,nrow
+
613  if(ityp(i)==1.or.ityp(i)==2) then
+
614  call pkb8(kmin(i),iwid(i),mgwa,ibit)
+
615  call pkb(kbit(i),6,mgwa,ibit)
+
616  if(kbit(i)>0) then
+
617  do j=1,ncol
+
618  if(matx(i,j)<2_8**iwid(i)-1) then
+
619  incr = matx(i,j)-kmin(i)
+
620  else
+
621  incr = 2_8**kbit(i)-1
+
622  endif
+
623  call pkb8(incr,kbit(i),mgwa,ibit)
+
624  enddo
+
625  endif
+
626  elseif(ityp(i)==3) then
+
627  nchr = iwid(i)/8
+
628  if(kbit(i)>0) then
+
629  call ipkm(czero,1,0)
+
630  do j=1,nchr
+
631  call pkc(czero,1,mgwa,ibit)
+
632  enddo
+
633  call pkb(nchr,6,mgwa,ibit)
+
634  do j=1,ncol
+
635  call pkc(catx(i,j),nchr,mgwa,ibit)
+
636  enddo
+
637  else
+
638  call pkc(cstr(i),nchr,mgwa,ibit)
+
639  call pkb(0,6,mgwa,ibit)
+
640  endif
+
641  endif
+
642  enddo
+
643 
+
644  ! Pad the end of Section 4 with zeroes up to the necessary byte count
+
645 
+
646  call pkb(0,jbit,mgwa,ibit)
+
647 
+
648  ! Add Section 5
+
649 
+
650  call pkc(bmcstr,nby5,mgwa,ibit)
+
651 
+
652  ! Check that the message byte counters agree, then write the message
+
653 
+
654  if(mod(ibit,8)/=0) call bort('BUFRLIB: WRCMPS - THE NUMBER OF BITS IN THE '// &
+
655  'COMPRESSED BUFR MSG IS NOT A MULTIPLE OF 8 - MSG MUST END ON A BYTE BOUNDARY')
+
656  lbyt = iupbs01(mgwa,'LENM')
+
657  nbyt = ibit/8
+
658  if(nbyt/=lbyt) then
+
659  write(bort_str,'("BUFRLIB: WRCMPS - OUTPUT MESSAGE LENGTH FROM '// &
+
660  'SECTION 0",I6," DOES NOT EQUAL FINAL PACKED MESSAGE LENGTH (",I6,")")') lbyt,nbyt
+
661  call bort(bort_str)
+
662  endif
+
663 
+
664  call msgwrt(lunit,mgwa,nbyt)
+
665 
+
666  ! Now, unless this was a "flush" call to this subroutine, go back and initialize a new message to hold the current subset
+
667  ! that we weren't able to fit into the message that was just written out.
+
668 
+
669  first = .true.
+
670  if(flush) return
+
671  end do
+
672 
+
673 end subroutine wrcmps
+
subroutine strbtm(n, lun, ival)
Store internal information in module moda_bitmaps if the input element is part of a bitmap.
Definition: bitmaps.F90:20
subroutine bort(str)
Log an error message, then abort the application program.
Definition: borts.F90:15
subroutine upb(nval, nbits, ibay, ibit)
Decode an integer value from within a specified number of bits of an integer array,...
Definition: cidecode.F90:202
real *8 function ups(ival, node)
Unpack a real*8 value from an integer by applying the proper scale and reference values.
Definition: cidecode.F90:319
@@ -681,11 +682,11 @@
subroutine rdcmps(lun)
Read the next compressed BUFR data subset into internal arrays.
Definition: compress.F90:110
subroutine cmsgini(lun, mesg, subset, idate, nsub, nbyt)
Initialize a new BUFR message for output in compressed format.
Definition: compress.F90:259
recursive subroutine writcp(lunit)
Write a data subset into a BUFR message using compression.
Definition: compress.F90:72
-
subroutine wrcmps(lunix)
Write a compressed BUFR data subset.
Definition: compress.F90:387
+
subroutine wrcmps(lunix)
Write a compressed BUFR data subset.
Definition: compress.F90:384
subroutine cmpmsg(cf)
Specify whether BUFR messages output by future calls to message-writing subroutines and subset-writin...
Definition: compress.F90:33
-
subroutine nemtba(lun, nemo, mtyp, msbt, inod)
Get information about a Table A descriptor from the internal DX BUFR tables.
Definition: dxtable.F90:1247
-
subroutine nemtab(lun, nemo, idn, tab, iret)
Get information about a descriptor, based on a mnemonic.
Definition: fxy.F90:432
-
subroutine capit(str)
Capitalize all of the alphabetic characters in a string.
Definition: misc.F90:355
+
subroutine nemtba(lun, nemo, mtyp, msbt, inod)
Get information about a Table A descriptor from the internal DX BUFR tables.
Definition: dxtable.F90:1238
+
subroutine nemtab(lun, nemo, idn, tab, iret)
Get information about a descriptor, based on a mnemonic.
Definition: fxy.F90:434
+
subroutine capit(str)
Capitalize all of the alphabetic characters in a string.
Definition: misc.F90:334
Declare arrays and variables used to store BUFR messages internally for multiple file IDs.
integer, dimension(:), allocatable ibay
Current data subset.
integer ibit
Bit pointer within ibay.
@@ -714,36 +715,36 @@
integer *8, dimension(:), allocatable kmin
Minimum of each data value across all data subsets in message.
Declare an array used by various subroutines and functions to hold a temporary working copy of a BUFR...
integer, dimension(:), allocatable mgwa
Temporary working copy of BUFR message.
-
Declare a variable used to indicate whether output BUFR messages should be compressed.
-
character ccmf
Flag indicating whether BUFR output messages are to be compressed; this variable is initialized to a ...
+
Declare a variable used to indicate whether output BUFR messages should be compressed.
+
character ccmf
Flag indicating whether BUFR output messages are to be compressed; this variable is initialized to a ...
Declare arrays used to store information about the current BUFR message that is in the process of bei...
integer, dimension(:), allocatable inode
Table A mnemonic for type of BUFR message.
integer, dimension(:), allocatable idate
Section 1 date-time of message.
integer, dimension(:), allocatable msub
Total number of data subsets in message.
integer, dimension(:), allocatable nsub
Current subset pointer within message.
-
Declare arrays and variables needed to store information about long character strings (greater than 8...
-
integer nrst
Number of long character strings in data subset.
-
integer, dimension(:), allocatable irnch
Lengths (in bytes) of long character strings.
-
integer, dimension(:), allocatable irbit
Pointers in data subset to first bits of long character strings.
-
character *10, dimension(:), allocatable crtag
Table B mnemonics associated with long character strings.
-
Declare arrays and variables used to store custom values for certain mnemonics within Sections 0 and ...
-
integer, dimension(:), allocatable ivmnem
Custom values for use within Sections 0 and 1 of all future output BUFR messages written to all Fortr...
-
integer ns01v
Number of custom values stored.
-
character *8, dimension(:), allocatable cmnem
Section 0 and 1 mnemonics corresponding to ivmnem.
-
Declare an array used to store a status code for each file ID if an error or other abnormal result oc...
-
integer, dimension(:), allocatable iscodes
Abnormal status codes.
-
Declare arrays and variables used to store the internal jump/link table.
-
integer, dimension(:), allocatable ibt
Bit widths corresponding to tag and typ:
-
character *10, dimension(:), allocatable tag
Mnemonics in the jump/link table.
-
integer, dimension(:), allocatable itp
Integer type values corresponding to typ:
-
Declare arrays used to store data values and associated metadata for the current BUFR data subset in ...
-
integer, dimension(:), allocatable nval
Number of data values in BUFR data subset.
-
real *8, dimension(:,:), allocatable, target val
Data values.
-
integer, dimension(:,:), allocatable, target inv
Inventory pointer which links each data value to its corresponding node in the internal jump/link tab...
-
integer, dimension(:,:), allocatable nrfelm
Referenced data value, for data values which refer to a previous data value in the BUFR data subset v...
-
recursive subroutine status(lunit, lun, il, im)
Check whether a specified Fortran logical unit number is currently connected to the NCEPLIBS-bufr sof...
-
subroutine msgwrt(lunit, mesg, mgbyt)
Perform final checks and updates on a BUFR message before writing it to a specified Fortran logical u...
-
subroutine usrtpl(lun, invn, nbmp)
Expand a subset template within internal arrays.
+
Declare arrays and variables needed to store information about long character strings (greater than 8...
+
integer nrst
Number of long character strings in data subset.
+
integer, dimension(:), allocatable irnch
Lengths (in bytes) of long character strings.
+
integer, dimension(:), allocatable irbit
Pointers in data subset to first bits of long character strings.
+
character *10, dimension(:), allocatable crtag
Table B mnemonics associated with long character strings.
+
Declare arrays and variables used to store custom values for certain mnemonics within Sections 0 and ...
+
integer, dimension(:), allocatable ivmnem
Custom values for use within Sections 0 and 1 of all future output BUFR messages written to all Fortr...
+
integer ns01v
Number of custom values stored.
+
character *8, dimension(:), allocatable cmnem
Section 0 and 1 mnemonics corresponding to ivmnem.
+
Declare an array used to store a status code for each file ID if an error or other abnormal result oc...
+
integer, dimension(:), allocatable iscodes
Abnormal status codes.
+
Declare arrays and variables used to store the internal jump/link table.
+
integer, dimension(:), allocatable ibt
Bit widths corresponding to tag and typ:
+
character *10, dimension(:), allocatable tag
Mnemonics in the jump/link table.
+
integer, dimension(:), allocatable itp
Integer type values corresponding to typ:
+
Declare arrays used to store data values and associated metadata for the current BUFR data subset in ...
+
integer, dimension(:), allocatable nval
Number of data values in BUFR data subset.
+
real *8, dimension(:,:), allocatable, target val
Data values.
+
integer, dimension(:,:), allocatable, target inv
Inventory pointer which links each data value to its corresponding node in the internal jump/link tab...
+
integer, dimension(:,:), allocatable nrfelm
Referenced data value, for data values which refer to a previous data value in the BUFR data subset v...
+
recursive subroutine status(lunit, lun, il, im)
Check whether a specified Fortran logical unit number is currently connected to the NCEPLIBS-bufr sof...
+
subroutine msgwrt(lunit, mesg, mgbyt)
Perform final checks and updates on a BUFR message before writing it to a specified Fortran logical u...
+
subroutine usrtpl(lun, invn, nbmp)
Expand a subset template within internal arrays.
recursive subroutine writsb(lunit)
Write a complete data subset into a BUFR message, for eventual output to logical unit lunit.
subroutine x84(iin8, iout4, nval)
Encode one or more 8-byte integer values as 4-byte integer values.
Definition: x4884.F90:65
diff --git a/copydata_8F90.html b/copydata_8F90.html index 8e155cd0e..48f3f02fc 100644 --- a/copydata_8F90.html +++ b/copydata_8F90.html @@ -26,7 +26,7 @@ @@ -332,7 +332,7 @@

Author
Woollen
Date
1994-01-06
-

Definition at line 677 of file copydata.F90.

+

Definition at line 675 of file copydata.F90.

References dxinit(), moda_tababd::idna, moda_tababd::idnb, moda_tababd::idnd, moda_msgcwd::inode, moda_tababd::mtab, moda_tababd::ntba, moda_tababd::ntbb, moda_tababd::ntbd, moda_tababd::taba, moda_tababd::tabb, and moda_tababd::tabd.

@@ -599,7 +599,7 @@

Author
Woollen
Date
1994-01-06
-

Definition at line 730 of file copydata.F90.

+

Definition at line 728 of file copydata.F90.

References pkb(), and upb().

@@ -647,7 +647,7 @@

Author
J. Woollen
Date
1994-01-06
-

Definition at line 611 of file copydata.F90.

+

Definition at line 609 of file copydata.F90.

References bort(), moda_msgcwd::inode, moda_usrint::inv, iok2cpy(), moda_ufbcpl::luncpy, moda_usrint::nrfelm, moda_usrint::nval, status(), moda_tables::tag, moda_usrint::val, and x84().

@@ -701,7 +701,7 @@

Author
Woollen
Date
1994-01-06
-

Definition at line 767 of file copydata.F90.

+

Definition at line 765 of file copydata.F90.

References bort(), moda_msgcwd::inode, moda_usrint::inv, moda_ivttmp::itmp, moda_tables::itp, moda_usrint::nval, status(), moda_tables::tag, moda_ivttmp::ttmp, moda_usrint::val, and x84().

diff --git a/copydata_8F90_source.html b/copydata_8F90_source.html index 0d04e1c2d..c7082bed5 100644 --- a/copydata_8F90_source.html +++ b/copydata_8F90_source.html @@ -26,7 +26,7 @@

@@ -433,298 +433,296 @@
494 
512 subroutine cpyupd(lunit,lin,lun,ibyt)
513 
-
514  use moda_msgcwd
-
515  use moda_bitbuf
-
516 
-
517  implicit none
+
514  use modv_vars, only: iprt, nby0, nby1, nby2, nby3
+
515 
+
516  use moda_msgcwd
+
517  use moda_bitbuf
518 
-
519  integer, intent(in) :: lunit, lin, lun, ibyt
-
520  integer nby0, nby1, nby2, nby3, nby4, nby5, iprt, lbit, lbyt, nbyt, iupb
-
521 
-
522  common /msgptr/ nby0,nby1,nby2,nby3,nby4,nby5
+
519  implicit none
+
520 
+
521  integer, intent(in) :: lunit, lin, lun, ibyt
+
522  integer lbit, lbyt, nbyt, iupb
523 
-
524  common /quiet/ iprt
+
524  character*128 bort_str, errstr
525 
-
526  character*128 bort_str, errstr
+
526  logical msgfull
527 
-
528  logical msgfull
+
528  ! Check whether the new subset should be written into the currently open message
529 
-
530  ! Check whether the new subset should be written into the currently open message
-
531 
-
532  if(msgfull(mbyt(lun),ibyt,maxbyt) .or. ((ibyt>65530).and.(nsub(lun)>0))) then
-
533  ! NO it should not, either because:
-
534  ! 1) it doesn't fit,
-
535  ! -- OR --
-
536  ! 2) it has byte count > 65530 (sufficiently close to the upper limit for the 16 bit byte counter placed at the
-
537  ! beginning of each subset), AND the current message has at least one subset in it,
-
538  ! SO write the current message out and create a new one to hold the current subset
-
539  call msgwrt(lunit,mbay(1,lun),mbyt(lun))
-
540  call msgini(lun)
-
541  endif
-
542 
-
543  if(msgfull(mbyt(lun),ibyt,maxbyt)) then
-
544  write(bort_str,'("BUFRLIB: CPYUPD - THE LENGTH OF THIS SUBSET EXCEEDS THE MAXIMUM MESSAGE LENGTH (",I6,")")') maxbyt
-
545  call bort(bort_str)
-
546  endif
+
530  if(msgfull(mbyt(lun),ibyt,maxbyt) .or. ((ibyt>65530).and.(nsub(lun)>0))) then
+
531  ! NO it should not, either because:
+
532  ! 1) it doesn't fit,
+
533  ! -- OR --
+
534  ! 2) it has byte count > 65530 (sufficiently close to the upper limit for the 16 bit byte counter placed at the
+
535  ! beginning of each subset), AND the current message has at least one subset in it,
+
536  ! SO write the current message out and create a new one to hold the current subset
+
537  call msgwrt(lunit,mbay(1,lun),mbyt(lun))
+
538  call msgini(lun)
+
539  endif
+
540 
+
541  if(msgfull(mbyt(lun),ibyt,maxbyt)) then
+
542  write(bort_str,'("BUFRLIB: CPYUPD - THE LENGTH OF THIS SUBSET EXCEEDS THE MAXIMUM MESSAGE LENGTH (",I6,")")') maxbyt
+
543  call bort(bort_str)
+
544  endif
+
545 
+
546  ! Transfer subset from one message to the other.
547 
-
548  ! Transfer subset from one message to the other.
-
549 
-
550  ! Note that we want to append the data for this subset to the end of Section 4, but the value in mbyt(lun) already includes
-
551  ! the length of Section 5 (i.e. 4 bytes). Therefore, we need to begin writing at the point 3 bytes prior to the byte
-
552  ! currently pointed to by mbyt(lun).
+
548  ! Note that we want to append the data for this subset to the end of Section 4, but the value in mbyt(lun) already includes
+
549  ! the length of Section 5 (i.e. 4 bytes). Therefore, we need to begin writing at the point 3 bytes prior to the byte
+
550  ! currently pointed to by mbyt(lun).
+
551 
+
552  call mvb(mbay(1,lin),mbyt(lin)+1,mbay(1,lun),mbyt(lun)-3,ibyt)
553 
-
554  call mvb(mbay(1,lin),mbyt(lin)+1,mbay(1,lun),mbyt(lun)-3,ibyt)
+
554  ! Update the subset and byte counters
555 
-
556  ! Update the subset and byte counters
-
557 
-
558  mbyt(lun) = mbyt(lun) + ibyt
-
559  nsub(lun) = nsub(lun) + 1
-
560 
-
561  lbit = (nby0+nby1+nby2+4)*8
-
562  call pkb(nsub(lun),16,mbay(1,lun),lbit)
-
563 
-
564  lbyt = nby0+nby1+nby2+nby3
-
565  nbyt = iupb(mbay(1,lun),lbyt+1,24)
-
566  lbit = lbyt*8
-
567  call pkb(nbyt+ibyt,24,mbay(1,lun),lbit)
-
568 
-
569  ! If the subset byte count is > 65530, then give it its own one-subset message (i.e. we cannot have any other subsets
-
570  ! in this message because their beginning would be beyond the upper limit of 65535 in the 16-bit byte counter, meaning
-
571  ! they could not be located!)
-
572 
-
573  if(ibyt>65530) then
-
574  if(iprt>=1) then
-
575  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
-
576  write ( unit=errstr, fmt='(A,I7,A,A)') 'BUFRLIB: CPYUPD - SUBSET HAS BYTE COUNT = ',ibyt,' > UPPER LIMIT OF 65535'
-
577  call errwrt(errstr)
-
578  call errwrt('>>>>>>>WILL BE COPIED INTO ITS OWN MESSAGE<<<<<<<<')
-
579  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
-
580  call errwrt(' ')
-
581  endif
-
582  call msgwrt(lunit,mbay(1,lun),mbyt(lun))
-
583  call msgini(lun)
-
584  endif
-
585 
-
586  return
-
587 end subroutine cpyupd
-
588 
-
611 recursive subroutine ufbcpy(lubin,lubot)
+
556  mbyt(lun) = mbyt(lun) + ibyt
+
557  nsub(lun) = nsub(lun) + 1
+
558 
+
559  lbit = (nby0+nby1+nby2+4)*8
+
560  call pkb(nsub(lun),16,mbay(1,lun),lbit)
+
561 
+
562  lbyt = nby0+nby1+nby2+nby3
+
563  nbyt = iupb(mbay(1,lun),lbyt+1,24)
+
564  lbit = lbyt*8
+
565  call pkb(nbyt+ibyt,24,mbay(1,lun),lbit)
+
566 
+
567  ! If the subset byte count is > 65530, then give it its own one-subset message (i.e. we cannot have any other subsets
+
568  ! in this message because their beginning would be beyond the upper limit of 65535 in the 16-bit byte counter, meaning
+
569  ! they could not be located!)
+
570 
+
571  if(ibyt>65530) then
+
572  if(iprt>=1) then
+
573  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
+
574  write ( unit=errstr, fmt='(A,I7,A,A)') 'BUFRLIB: CPYUPD - SUBSET HAS BYTE COUNT = ',ibyt,' > UPPER LIMIT OF 65535'
+
575  call errwrt(errstr)
+
576  call errwrt('>>>>>>>WILL BE COPIED INTO ITS OWN MESSAGE<<<<<<<<')
+
577  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
+
578  call errwrt(' ')
+
579  endif
+
580  call msgwrt(lunit,mbay(1,lun),mbyt(lun))
+
581  call msgini(lun)
+
582  endif
+
583 
+
584  return
+
585 end subroutine cpyupd
+
586 
+
609 recursive subroutine ufbcpy(lubin,lubot)
+
610 
+
611  use modv_vars, only: im8b
612 
-
613  use modv_vars, only: im8b
-
614 
-
615  use moda_usrint
-
616  use moda_msgcwd
-
617  use moda_ufbcpl
-
618  use moda_tables
+
613  use moda_usrint
+
614  use moda_msgcwd
+
615  use moda_ufbcpl
+
616  use moda_tables
+
617 
+
618  implicit none
619 
-
620  implicit none
-
621 
-
622  integer, intent(in) :: lubin, lubot
-
623  integer my_lubin, my_lubot, lui, luo, il, im, n, iok2cpy
+
620  integer, intent(in) :: lubin, lubot
+
621  integer my_lubin, my_lubot, lui, luo, il, im, n, iok2cpy
+
622 
+
623  ! Check for I8 integers
624 
-
625  ! Check for I8 integers
-
626 
-
627  if(im8b) then
-
628  im8b=.false.
-
629 
-
630  call x84(lubin,my_lubin,1)
-
631  call x84(lubot,my_lubot,1)
-
632  call ufbcpy(my_lubin,my_lubot)
-
633 
-
634  im8b=.true.
-
635  return
-
636  endif
+
625  if(im8b) then
+
626  im8b=.false.
+
627 
+
628  call x84(lubin,my_lubin,1)
+
629  call x84(lubot,my_lubot,1)
+
630  call ufbcpy(my_lubin,my_lubot)
+
631 
+
632  im8b=.true.
+
633  return
+
634  endif
+
635 
+
636  ! Check the file statuses and inode
637 
-
638  ! Check the file statuses and inode
-
639 
-
640  call status(lubin,lui,il,im)
-
641  if(il==0) call bort('BUFRLIB: UFBCPY - INPUT BUFR FILE IS CLOSED, IT MUST BE OPEN FOR INPUT')
-
642  if(il>0) call bort('BUFRLIB: UFBCPY - INPUT BUFR FILE IS OPEN FOR OUTPUT, IT MUST BE OPEN FOR INPUT')
-
643  if(im==0) call bort('BUFRLIB: UFBCPY - A MESSAGE MUST BE OPEN IN INPUT BUFR FILE, NONE ARE')
-
644  if(inode(lui)/=inv(1,lui)) &
-
645  call bort('BUFRLIB: UFBCPY - LOCATION OF INTERNAL TABLE FOR INPUT BUFR FILE DOES NOT AGREE WITH EXPECTED LOCATION '// &
-
646  'IN INTERNAL SUBSET ARRAY')
-
647 
-
648  call status(lubot,luo,il,im)
-
649  if(il==0) call bort('BUFRLIB: UFBCPY - OUTPUT BUFR FILE IS CLOSED, IT MUST BE OPEN FOR OUTPUT')
-
650  if(il<0) call bort('BUFRLIB: UFBCPY - OUTPUT BUFR FILE IS OPEN FOR INPUT, IT MUST BE OPEN FOR OUTPUT')
-
651  if(im==0) call bort('BUFRLIB: UFBCPY - A MESSAGE MUST BE OPEN IN OUTPUT BUFR FILE, NONE ARE')
-
652 
-
653  if( (inode(lui)/=inode(luo)) .and. ( (tag(inode(lui))/=tag(inode(luo))) .or. (iok2cpy(lui,luo)/=1) ) ) &
-
654  call bort('BUFRLIB: UFBCPY - INPUT AND OUTPUT BUFR FILES MUST HAVE THE SAME INTERNAL TABLES, THEY ARE DIFFERENT HERE')
+
638  call status(lubin,lui,il,im)
+
639  if(il==0) call bort('BUFRLIB: UFBCPY - INPUT BUFR FILE IS CLOSED, IT MUST BE OPEN FOR INPUT')
+
640  if(il>0) call bort('BUFRLIB: UFBCPY - INPUT BUFR FILE IS OPEN FOR OUTPUT, IT MUST BE OPEN FOR INPUT')
+
641  if(im==0) call bort('BUFRLIB: UFBCPY - A MESSAGE MUST BE OPEN IN INPUT BUFR FILE, NONE ARE')
+
642  if(inode(lui)/=inv(1,lui)) &
+
643  call bort('BUFRLIB: UFBCPY - LOCATION OF INTERNAL TABLE FOR INPUT BUFR FILE DOES NOT AGREE WITH EXPECTED LOCATION '// &
+
644  'IN INTERNAL SUBSET ARRAY')
+
645 
+
646  call status(lubot,luo,il,im)
+
647  if(il==0) call bort('BUFRLIB: UFBCPY - OUTPUT BUFR FILE IS CLOSED, IT MUST BE OPEN FOR OUTPUT')
+
648  if(il<0) call bort('BUFRLIB: UFBCPY - OUTPUT BUFR FILE IS OPEN FOR INPUT, IT MUST BE OPEN FOR OUTPUT')
+
649  if(im==0) call bort('BUFRLIB: UFBCPY - A MESSAGE MUST BE OPEN IN OUTPUT BUFR FILE, NONE ARE')
+
650 
+
651  if( (inode(lui)/=inode(luo)) .and. ( (tag(inode(lui))/=tag(inode(luo))) .or. (iok2cpy(lui,luo)/=1) ) ) &
+
652  call bort('BUFRLIB: UFBCPY - INPUT AND OUTPUT BUFR FILES MUST HAVE THE SAME INTERNAL TABLES, THEY ARE DIFFERENT HERE')
+
653 
+
654  ! Everything okay, so copy user array from lui to luo
655 
-
656  ! Everything okay, so copy user array from lui to luo
+
656  nval(luo) = nval(lui)
657 
-
658  nval(luo) = nval(lui)
-
659 
-
660  do n=1,nval(lui)
-
661  inv(n,luo) = inv(n,lui)
-
662  nrfelm(n,luo) = nrfelm(n,lui)
-
663  val(n,luo) = val(n,lui)
-
664  enddo
+
658  do n=1,nval(lui)
+
659  inv(n,luo) = inv(n,lui)
+
660  nrfelm(n,luo) = nrfelm(n,lui)
+
661  val(n,luo) = val(n,lui)
+
662  enddo
+
663 
+
664  luncpy(luo)=lubin
665 
-
666  luncpy(luo)=lubin
-
667 
-
668  return
-
669 end subroutine ufbcpy
-
670 
-
677 subroutine cpbfdx(lud,lun)
-
678 
-
679  use moda_msgcwd
-
680  use moda_tababd
+
666  return
+
667 end subroutine ufbcpy
+
668 
+
675 subroutine cpbfdx(lud,lun)
+
676 
+
677  use moda_msgcwd
+
678  use moda_tababd
+
679 
+
680  implicit none
681 
-
682  implicit none
-
683 
-
684  integer, intent(in) :: lud, lun
-
685  integer i
+
682  integer, intent(in) :: lud, lun
+
683  integer i
+
684 
+
685  ! Initialize the dictionary table partition
686 
-
687  ! Initialize the dictionary table partition
+
687  call dxinit(lun,0)
688 
-
689  call dxinit(lun,0)
-
690 
-
691  ! Positional index for Table A mnem.
-
692  inode(lun) = inode(lud)
-
693 
-
694  ntba(lun) = ntba(lud)
-
695  ntbb(lun) = ntbb(lud)
-
696  ntbd(lun) = ntbd(lud)
-
697 
-
698  ! Table A entries
-
699  do i=1,ntba(lud)
-
700  idna(i,lun,1) = idna(i,lud,1)
-
701  idna(i,lun,2) = idna(i,lud,2)
-
702  taba(i,lun) = taba(i,lud)
-
703  mtab(i,lun) = mtab(i,lud)
-
704  enddo
-
705 
-
706  ! Table B entries
-
707  do i=1,ntbb(lud)
-
708  idnb(i,lun) = idnb(i,lud)
-
709  tabb(i,lun) = tabb(i,lud)
-
710  enddo
-
711 
-
712  ! Copy Table D entries
-
713  do i=1,ntbd(lud)
-
714  idnd(i,lun) = idnd(i,lud)
-
715  tabd(i,lun) = tabd(i,lud)
-
716  enddo
-
717 
-
718  return
-
719 end subroutine cpbfdx
-
720 
-
730 subroutine mvb(ib1,nb1,ib2,nb2,nbm)
+
689  ! Positional index for Table A mnem.
+
690  inode(lun) = inode(lud)
+
691 
+
692  ntba(lun) = ntba(lud)
+
693  ntbb(lun) = ntbb(lud)
+
694  ntbd(lun) = ntbd(lud)
+
695 
+
696  ! Table A entries
+
697  do i=1,ntba(lud)
+
698  idna(i,lun,1) = idna(i,lud,1)
+
699  idna(i,lun,2) = idna(i,lud,2)
+
700  taba(i,lun) = taba(i,lud)
+
701  mtab(i,lun) = mtab(i,lud)
+
702  enddo
+
703 
+
704  ! Table B entries
+
705  do i=1,ntbb(lud)
+
706  idnb(i,lun) = idnb(i,lud)
+
707  tabb(i,lun) = tabb(i,lud)
+
708  enddo
+
709 
+
710  ! Copy Table D entries
+
711  do i=1,ntbd(lud)
+
712  idnd(i,lun) = idnd(i,lud)
+
713  tabd(i,lun) = tabd(i,lud)
+
714  enddo
+
715 
+
716  return
+
717 end subroutine cpbfdx
+
718 
+
728 subroutine mvb(ib1,nb1,ib2,nb2,nbm)
+
729 
+
730  implicit none
731 
-
732  implicit none
-
733 
-
734  integer, intent(in) :: ib1(*), nb1, nb2, nbm
-
735  integer, intent(out) :: ib2(*)
-
736  integer jb1, jb2, n, nval
-
737 
-
738  jb1 = 8*(nb1-1)
-
739  jb2 = 8*(nb2-1)
-
740 
-
741  do n=1,nbm
-
742  call upb(nval,8,ib1,jb1)
-
743  call pkb(nval,8,ib2,jb2)
-
744  enddo
-
745 
-
746  return
-
747 end subroutine mvb
-
748 
-
767 recursive subroutine ufbcup(lubin,lubot)
+
732  integer, intent(in) :: ib1(*), nb1, nb2, nbm
+
733  integer, intent(out) :: ib2(*)
+
734  integer jb1, jb2, n, nval
+
735 
+
736  jb1 = 8*(nb1-1)
+
737  jb2 = 8*(nb2-1)
+
738 
+
739  do n=1,nbm
+
740  call upb(nval,8,ib1,jb1)
+
741  call pkb(nval,8,ib2,jb2)
+
742  enddo
+
743 
+
744  return
+
745 end subroutine mvb
+
746 
+
765 recursive subroutine ufbcup(lubin,lubot)
+
766 
+
767  use modv_vars, only: im8b
768 
-
769  use modv_vars, only: im8b
-
770 
-
771  use moda_usrint
-
772  use moda_msgcwd
-
773  use moda_tables
-
774  use moda_ivttmp
+
769  use moda_usrint
+
770  use moda_msgcwd
+
771  use moda_tables
+
772  use moda_ivttmp
+
773 
+
774  implicit none
775 
-
776  implicit none
-
777 
-
778  integer, intent(in) :: lubin, lubot
-
779  integer my_lubin, my_lubot, lui, luo, il, im, ntag, ni, no, nv, nin
+
776  integer, intent(in) :: lubin, lubot
+
777  integer my_lubin, my_lubot, lui, luo, il, im, ntag, ni, no, nv, nin
+
778 
+
779  character*10 tago
780 
-
781  character*10 tago
+
781  ! Check for I8 integers
782 
-
783  ! Check for I8 integers
-
784 
-
785  if(im8b) then
-
786  im8b=.false.
-
787  call x84(lubin,my_lubin,1)
-
788  call x84(lubot,my_lubot,1)
-
789  call ufbcup(my_lubin,my_lubot)
-
790  im8b=.true.
-
791  return
-
792  endif
+
783  if(im8b) then
+
784  im8b=.false.
+
785  call x84(lubin,my_lubin,1)
+
786  call x84(lubot,my_lubot,1)
+
787  call ufbcup(my_lubin,my_lubot)
+
788  im8b=.true.
+
789  return
+
790  endif
+
791 
+
792  ! Check the file statuses and inode
793 
-
794  ! Check the file statuses and inode
-
795 
-
796  call status(lubin,lui,il,im)
-
797  if(il==0) call bort('BUFRLIB: UFBCUP - INPUT BUFR FILE IS CLOSED, IT MUST BE OPEN FOR INPUT')
-
798  if(il>0) call bort('BUFRLIB: UFBCUP - INPUT BUFR FILE IS OPEN FOR OUTPUT, IT MUST BE OPEN FOR INPUT')
-
799  if(im==0) call bort('BUFRLIB: UFBCUP - A MESSAGE MUST BE OPEN IN INPUT BUFR FILE, NONE ARE')
-
800  if(inode(lui)/=inv(1,lui)) call bort('BUFRLIB: UFBCUP - LOCATION OF INTERNAL TABLE FOR '// &
-
801  'INPUT BUFR FILE DOES NOT AGREE WITH EXPECTED LOCATION IN INTERNAL SUBSET ARRAY')
-
802 
-
803  call status(lubot,luo,il,im)
-
804  if(il==0) call bort('BUFRLIB: UFBCUP - OUTPUT BUFR FILE IS CLOSED, IT MUST BE OPEN FOR OUTPUT')
-
805  if(il<0) call bort('BUFRLIB: UFBCUP - OUTPUT BUFR FILE IS OPEN FOR INPUT, IT MUST BE OPEN FOR OUTPUT')
-
806  if(im==0) call bort('BUFRLIB: UFBCUP - A MESSAGE MUST BE OPEN IN OUTPUT BUFR FILE, NONE ARE')
+
794  call status(lubin,lui,il,im)
+
795  if(il==0) call bort('BUFRLIB: UFBCUP - INPUT BUFR FILE IS CLOSED, IT MUST BE OPEN FOR INPUT')
+
796  if(il>0) call bort('BUFRLIB: UFBCUP - INPUT BUFR FILE IS OPEN FOR OUTPUT, IT MUST BE OPEN FOR INPUT')
+
797  if(im==0) call bort('BUFRLIB: UFBCUP - A MESSAGE MUST BE OPEN IN INPUT BUFR FILE, NONE ARE')
+
798  if(inode(lui)/=inv(1,lui)) call bort('BUFRLIB: UFBCUP - LOCATION OF INTERNAL TABLE FOR '// &
+
799  'INPUT BUFR FILE DOES NOT AGREE WITH EXPECTED LOCATION IN INTERNAL SUBSET ARRAY')
+
800 
+
801  call status(lubot,luo,il,im)
+
802  if(il==0) call bort('BUFRLIB: UFBCUP - OUTPUT BUFR FILE IS CLOSED, IT MUST BE OPEN FOR OUTPUT')
+
803  if(il<0) call bort('BUFRLIB: UFBCUP - OUTPUT BUFR FILE IS OPEN FOR INPUT, IT MUST BE OPEN FOR OUTPUT')
+
804  if(im==0) call bort('BUFRLIB: UFBCUP - A MESSAGE MUST BE OPEN IN OUTPUT BUFR FILE, NONE ARE')
+
805 
+
806  ! Make a list of unique tags in the input buffer
807 
-
808  ! Make a list of unique tags in the input buffer
+
808  ntag = 0
809 
-
810  ntag = 0
-
811 
-
812  outer1: do ni=1,nval(lui)
-
813  nin = inv(ni,lui)
-
814  if(itp(nin)>=2) then
-
815  do nv=1,ntag
-
816  if(ttmp(nv)==tag(nin)) cycle outer1
-
817  enddo
-
818  ntag = ntag+1
-
819  itmp(ntag) = ni
-
820  ttmp(ntag) = tag(nin)
-
821  endif
-
822  enddo outer1
+
810  outer1: do ni=1,nval(lui)
+
811  nin = inv(ni,lui)
+
812  if(itp(nin)>=2) then
+
813  do nv=1,ntag
+
814  if(ttmp(nv)==tag(nin)) cycle outer1
+
815  enddo
+
816  ntag = ntag+1
+
817  itmp(ntag) = ni
+
818  ttmp(ntag) = tag(nin)
+
819  endif
+
820  enddo outer1
+
821 
+
822  if(ntag==0) call bort('BUFRLIB: UFBCUP - THERE ARE NO ELEMENTS (TAGS) IN INPUT SUBSET BUFFER')
823 
-
824  if(ntag==0) call bort('BUFRLIB: UFBCUP - THERE ARE NO ELEMENTS (TAGS) IN INPUT SUBSET BUFFER')
+
824  ! Now, using the list of unique tags, make one copy of the common elements to the output buffer
825 
-
826  ! Now, using the list of unique tags, make one copy of the common elements to the output buffer
-
827 
-
828  outer2: do nv=1,ntag
-
829  ni = itmp(nv)
-
830  do no=1,nval(luo)
-
831  tago = tag(inv(no,luo))
-
832  if(ttmp(nv)==tago) then
-
833  val(no,luo) = val(ni,lui)
-
834  cycle outer2
-
835  endif
-
836  enddo
-
837  enddo outer2
-
838 
-
839  return
-
840 end subroutine ufbcup
+
826  outer2: do nv=1,ntag
+
827  ni = itmp(nv)
+
828  do no=1,nval(luo)
+
829  tago = tag(inv(no,luo))
+
830  if(ttmp(nv)==tago) then
+
831  val(no,luo) = val(ni,lui)
+
832  cycle outer2
+
833  endif
+
834  enddo
+
835  enddo outer2
+
836 
+
837  return
+
838 end subroutine ufbcup
subroutine bort(str)
Log an error message, then abort the application program.
Definition: borts.F90:15
subroutine upb(nval, nbits, ibay, ibit)
Decode an integer value from within a specified number of bits of an integer array,...
Definition: cidecode.F90:202
subroutine pkb(nval, nbits, ibay, ibit)
Encode an integer value within a specified number of bits of an integer array, starting at the bit im...
Definition: ciencode.F90:140
subroutine cmpmsg(cf)
Specify whether BUFR messages output by future calls to message-writing subroutines and subset-writin...
Definition: compress.F90:33
integer function iok2cpy(lui, luo)
Check whether a BUFR message, or a data subset from within a BUFR message, can be copied from one For...
Definition: copydata.F90:355
recursive integer function icopysb(lunin, lunot)
Copy a BUFR data subset from one Fortran logical unit to another.
Definition: copydata.F90:312
-
subroutine cpbfdx(lud, lun)
Copy all of the DX BUFR table information from one unit to another within internal memory.
Definition: copydata.F90:678
-
subroutine mvb(ib1, nb1, ib2, nb2, nbm)
Copy a specified number of bytes from one packed binary array to another.
Definition: copydata.F90:731
+
subroutine cpbfdx(lud, lun)
Copy all of the DX BUFR table information from one unit to another within internal memory.
Definition: copydata.F90:676
+
subroutine mvb(ib1, nb1, ib2, nb2, nbm)
Copy a specified number of bytes from one packed binary array to another.
Definition: copydata.F90:729
recursive subroutine copybf(lunin, lunot)
Copy an entire BUFR file from one Fortran logical unit to another.
Definition: copydata.F90:23
-
recursive subroutine ufbcup(lubin, lubot)
Copy unique elements of a data subset.
Definition: copydata.F90:768
+
recursive subroutine ufbcup(lubin, lubot)
Copy unique elements of a data subset.
Definition: copydata.F90:766
recursive subroutine copysb(lunin, lunot, iret)
Copy a BUFR data subset from one Fortran logical unit to another.
Definition: copydata.F90:203
subroutine cpyupd(lunit, lin, lun, ibyt)
Copy a BUFR data subset from one unit to another within internal memory.
Definition: copydata.F90:513
recursive subroutine cpymem(lunot)
Copy a BUFR message from internal arrays to a file.
Definition: copydata.F90:434
-
recursive subroutine ufbcpy(lubin, lubot)
Copy a BUFR data subset from one Fortran logical unit to another.
Definition: copydata.F90:612
+
recursive subroutine ufbcpy(lubin, lubot)
Copy a BUFR data subset from one Fortran logical unit to another.
Definition: copydata.F90:610
recursive subroutine copymg(lunin, lunot)
Copy a BUFR message from one file to another.
Definition: copydata.F90:108
-
subroutine nemtba(lun, nemo, mtyp, msbt, inod)
Get information about a Table A descriptor from the internal DX BUFR tables.
Definition: dxtable.F90:1247
-
subroutine nemtbax(lun, nemo, mtyp, msbt, inod)
Get information about a Table A descriptor from the internal DX BUFR tables.
Definition: dxtable.F90:1197
+
subroutine nemtba(lun, nemo, mtyp, msbt, inod)
Get information about a Table A descriptor from the internal DX BUFR tables.
Definition: dxtable.F90:1238
+
subroutine nemtbax(lun, nemo, mtyp, msbt, inod)
Get information about a Table A descriptor from the internal DX BUFR tables.
Definition: dxtable.F90:1188
subroutine dxinit(lun, ioi)
Clear out the internal arrays (in module moda_tababd) holding the DX BUFR table, then optionally init...
Definition: dxtable.F90:606
subroutine errwrt(str)
Specify a custom location for the logging of error and diagnostic messages generated by the NCEPLIBS-...
Definition: errwrt.F90:32
- +
Declare arrays and variables used to store BUFR messages internally for multiple file IDs.
integer ibit
Bit pointer within ibay.
integer, dimension(:,:), allocatable mbay
Current BUFR message for each file ID.
@@ -743,42 +741,42 @@
integer, dimension(:), allocatable nsub
Current subset pointer within message.
Declare arrays and variables used to store the contents of one or more BUFR files within internal mem...
integer munit
Fortran logical unit number for use in accessing contents of BUFR files within internal memory.
-
Declare arrays and variables used to store DX BUFR tables internally for multiple file IDs.
-
integer, dimension(:), allocatable ntba
Number of Table A entries for each file ID (up to a maximum of maxtba, whose value is stored in array...
-
character *600, dimension(:,:), allocatable tabd
Table D entries for each file ID.
-
character *128, dimension(:,:), allocatable taba
Table A entries for each file ID.
-
integer, dimension(:,:), allocatable mtab
Entries within jump/link table corresponding to taba.
-
integer, dimension(:,:,:), allocatable idna
Message types (in array element 1) and subtypes (in array element 2) corresponding to taba.
-
integer, dimension(:), allocatable ntbd
Number of Table D entries for each file ID (up to a maximum of maxtbd, whose value is stored in array...
-
integer, dimension(:), allocatable ntbb
Number of Table B entries for each file ID (up to a maximum of maxtbb, whose value is stored in array...
-
integer, dimension(:,:), allocatable idnd
WMO bit-wise representations of the FXY values corresponding to tabd.
-
integer, dimension(:,:), allocatable idnb
WMO bit-wise representations of the FXY values corresponding to tabb.
-
character *128, dimension(:,:), allocatable tabb
Table B entries for each file ID.
-
Declare arrays and variables used to store the internal jump/link table.
-
integer, dimension(:), allocatable irf
Reference values corresponding to tag and typ:
-
integer, dimension(:), allocatable isc
Scale factors corresponding to tag and typ:
-
integer, dimension(:), allocatable ibt
Bit widths corresponding to tag and typ:
-
character *3, dimension(:), allocatable typ
Type indicators corresponding to tag:
-
character *10, dimension(:), allocatable tag
Mnemonics in the jump/link table.
-
integer, dimension(:), allocatable itp
Integer type values corresponding to typ:
-
Declare an array used to store, for each file ID, the logical unit number corresponding to a separate...
-
integer, dimension(:), allocatable luncpy
Logical unit numbers used to copy long character strings between BUFR data subsets.
-
Declare arrays used to store data values and associated metadata for the current BUFR data subset in ...
-
integer, dimension(:), allocatable nval
Number of data values in BUFR data subset.
-
real *8, dimension(:,:), allocatable, target val
Data values.
-
integer, dimension(:,:), allocatable, target inv
Inventory pointer which links each data value to its corresponding node in the internal jump/link tab...
-
integer, dimension(:,:), allocatable nrfelm
Referenced data value, for data values which refer to a previous data value in the BUFR data subset v...
-
recursive subroutine closbf(lunit)
Close the connection between logical unit lunit and the NCEPLIBS-bufr software.
-
recursive subroutine openbf(lunit, io, lundx)
Connect a new file to the NCEPLIBS-bufr software for input or output operations, or initialize the li...
-
recursive subroutine status(lunit, lun, il, im)
Check whether a specified Fortran logical unit number is currently connected to the NCEPLIBS-bufr sof...
-
recursive subroutine getlens(mbay, ll, len0, len1, len2, len3, len4, len5)
Read the section lengths of a BUFR message, up to a specified point in the message.
-
subroutine rdmsgw(lunit, mesg, iret)
Read the next BUFR message from logical unit lunit as an array of integer words.
-
subroutine msgini(lun)
Initialize, within the internal arrays, a new uncompressed BUFR message for output.
-
subroutine msgwrt(lunit, mesg, mgbyt)
Perform final checks and updates on a BUFR message before writing it to a specified Fortran logical u...
+
Declare arrays and variables used to store DX BUFR tables internally for multiple file IDs.
+
integer, dimension(:), allocatable ntba
Number of Table A entries for each file ID (up to a maximum of maxtba, whose value is stored in array...
+
character *600, dimension(:,:), allocatable tabd
Table D entries for each file ID.
+
character *128, dimension(:,:), allocatable taba
Table A entries for each file ID.
+
integer, dimension(:,:), allocatable mtab
Entries within jump/link table corresponding to taba.
+
integer, dimension(:,:,:), allocatable idna
Message types (in array element 1) and subtypes (in array element 2) corresponding to taba.
+
integer, dimension(:), allocatable ntbd
Number of Table D entries for each file ID (up to a maximum of maxtbd, whose value is stored in array...
+
integer, dimension(:), allocatable ntbb
Number of Table B entries for each file ID (up to a maximum of maxtbb, whose value is stored in array...
+
integer, dimension(:,:), allocatable idnd
WMO bit-wise representations of the FXY values corresponding to tabd.
+
integer, dimension(:,:), allocatable idnb
WMO bit-wise representations of the FXY values corresponding to tabb.
+
character *128, dimension(:,:), allocatable tabb
Table B entries for each file ID.
+
Declare arrays and variables used to store the internal jump/link table.
+
integer, dimension(:), allocatable irf
Reference values corresponding to tag and typ:
+
integer, dimension(:), allocatable isc
Scale factors corresponding to tag and typ:
+
integer, dimension(:), allocatable ibt
Bit widths corresponding to tag and typ:
+
character *3, dimension(:), allocatable typ
Type indicators corresponding to tag:
+
character *10, dimension(:), allocatable tag
Mnemonics in the jump/link table.
+
integer, dimension(:), allocatable itp
Integer type values corresponding to typ:
+
Declare an array used to store, for each file ID, the logical unit number corresponding to a separate...
+
integer, dimension(:), allocatable luncpy
Logical unit numbers used to copy long character strings between BUFR data subsets.
+
Declare arrays used to store data values and associated metadata for the current BUFR data subset in ...
+
integer, dimension(:), allocatable nval
Number of data values in BUFR data subset.
+
real *8, dimension(:,:), allocatable, target val
Data values.
+
integer, dimension(:,:), allocatable, target inv
Inventory pointer which links each data value to its corresponding node in the internal jump/link tab...
+
integer, dimension(:,:), allocatable nrfelm
Referenced data value, for data values which refer to a previous data value in the BUFR data subset v...
+
recursive subroutine closbf(lunit)
Close the connection between logical unit lunit and the NCEPLIBS-bufr software.
+
recursive subroutine openbf(lunit, io, lundx)
Connect a new file to the NCEPLIBS-bufr software for input or output operations, or initialize the li...
+
recursive subroutine status(lunit, lun, il, im)
Check whether a specified Fortran logical unit number is currently connected to the NCEPLIBS-bufr sof...
+
recursive subroutine getlens(mbay, ll, len0, len1, len2, len3, len4, len5)
Read the section lengths of a BUFR message, up to a specified point in the message.
+
subroutine rdmsgw(lunit, mesg, iret)
Read the next BUFR message from logical unit lunit as an array of integer words.
+
subroutine msgini(lun)
Initialize, within the internal arrays, a new uncompressed BUFR message for output.
+
subroutine msgwrt(lunit, mesg, mgbyt)
Perform final checks and updates on a BUFR message before writing it to a specified Fortran logical u...
recursive subroutine writsb(lunit)
Write a complete data subset into a BUFR message, for eventual output to logical unit lunit.
recursive subroutine readsb(lunit, iret)
Read the next data subset from a BUFR message.
Definition: readwritesb.F90:32
recursive integer function iupbs01(mbay, s01mnem)
Read a specified value from within Section 0 or Section 1 of a BUFR message.
Definition: s013vals.F90:247
-
recursive subroutine mesgbc(lunin, mesgtyp, icomp)
Return the message type (from Section 1) and message compression indicator (from Section 3) of a BUFR...
Definition: s013vals.F90:1482
+
recursive subroutine mesgbc(lunin, mesgtyp, icomp)
Return the message type (from Section 1) and message compression indicator (from Section 3) of a BUFR...
Definition: s013vals.F90:1474
subroutine x48(iin4, iout8, nval)
Encode one or more 4-byte integer values as 8-byte integer values.
Definition: x4884.F90:18
subroutine x84(iin8, iout4, nval)
Encode one or more 8-byte integer values as 4-byte integer values.
Definition: x4884.F90:65
diff --git a/cpmstabs_8c.html b/cpmstabs_8c.html index 557310f05..ab5b7cb99 100644 --- a/cpmstabs_8c.html +++ b/cpmstabs_8c.html @@ -26,7 +26,7 @@ @@ -240,7 +240,7 @@

Definition at line 37 of file cpmstabs.c.

-

References moda_mstabs::cbbw, cbbw_c, moda_mstabs::cbelem, cbelem_c, moda_mstabs::cbmnem, cbmnem_c, moda_mstabs::cbscl, cbscl_c, moda_mstabs::cbsref, cbsref_c, moda_mstabs::cbunit, cbunit_c, moda_mstabs::cdmnem, cdmnem_c, moda_mstabs::cdseq, cdseq_c, moda_mstabs::ibfxyn, ibfxyn_c, icvidx(), moda_mstabs::idefxy, idefxy_c, moda_mstabs::idfxyn, idfxyn_c, moda_mstabs::ndelem, ndelem_c, moda_mstabs::nmtb, nmtb_c, moda_mstabs::nmtd, and nmtd_c.

+

References moda_mstabs::cbbw, cbbw_c, moda_mstabs::cbelem, cbelem_c, moda_mstabs::cbmnem, cbmnem_c, moda_mstabs::cbscl, cbscl_c, moda_mstabs::cbsref, cbsref_c, moda_mstabs::cbunit, cbunit_c, moda_mstabs::cdmnem, cdmnem_c, moda_mstabs::cdseq, cdseq_c, moda_mstabs::ibfxyn, ibfxyn_c, icvidx(), moda_mstabs::idefxy, idefxy_c, moda_mstabs::idfxyn, idfxyn_c, moda_mstabs::ndelem, ndelem_c, moda_mstabs::nmtb, nmtb_c, moda_mstabs::nmtd, and nmtd_c.

diff --git a/cpmstabs_8c_source.html b/cpmstabs_8c_source.html index 270cdef3c..d51aea8a0 100644 --- a/cpmstabs_8c_source.html +++ b/cpmstabs_8c_source.html @@ -26,7 +26,7 @@

@@ -125,7 +125,7 @@
68  idfxyn_c[ii] = idfxyn[ii];
69  ndelem_c[ii] = ndelem[ii];
70  for ( jj = 0; jj < ndelem[ii]; jj++ ) {
-
71  idx = icvidx( ii, jj, maxcd );
+
71  idx = icvidx( ii, jj, maxcd );
72  idefxy_c[idx] = idefxy[idx];
73  }
74  for ( jj = 0; jj < 8; jj++ ) {
@@ -138,8 +138,8 @@
81 
82 }
Enable a number of NCEPLIBS-bufr subprograms to be called from within the C part of the library.
-
int icvidx(int ii, int jj, int numjj)
Computes a unique 1-dimensional array index from 2-dimensional indices.
Definition: icvidx.c:22
void cpmstabs(int nmtb, int *ibfxyn, char(*cbscl)[4], char(*cbsref)[12], char(*cbbw)[4], char(*cbunit)[24], char(*cbmnem)[8], char(*cbelem)[120], int nmtd, int *idfxyn, char(*cdseq)[120], char(*cdmnem)[8], int *ndelem, int *idefxy, int maxcd)
Copy relevant information from the Fortran module moda_mstabs arrays to new arrays within C,...
Definition: cpmstabs.c:37
+
int icvidx(int ii, int jj, int numjj)
Computes a unique 1-dimensional array index from 2-dimensional indices.
Definition: icvidx.c:22
Declare variables for internal storage of master Table B and Table D entries.
int * idefxy_c
WMO bit-wise representations of child descriptors for master Table D sequences; copied from Fortran i...
char(* cbsref_c)[12]
Master Table B reference values; copied from Fortran cbsref array.
diff --git a/cread_8c.html b/cread_8c.html index 5ad2352d2..5e883c883 100644 --- a/cread_8c.html +++ b/cread_8c.html @@ -26,7 +26,7 @@ @@ -281,7 +281,7 @@

Definition at line 114 of file cread.c.

-

References iupbs01_f(), lstpos, and pb.

+

References BMCSTR, BMOSTR, iupbs01_f(), lstpos, and pb.

diff --git a/cread_8c_source.html b/cread_8c_source.html index e57ebc74b..a0301631d 100644 --- a/cread_8c_source.html +++ b/cread_8c_source.html @@ -26,7 +26,7 @@

@@ -91,37 +91,37 @@
19 #include "cread.h"
20 
29 void
-
30 openrb(int nfile, char *ufile) {
+
30 openrb(int nfile, char *ufile) {
31  pb[nfile] = fopen(ufile, "rb ");
32 }
33 
42 void
-
43 openwb(int nfile, char *ufile) {
+
43 openwb(int nfile, char *ufile) {
44  pb[nfile] = fopen(ufile, "wb ");
45 }
46 
55 void
-
56 openab(int nfile, char *ufile) {
+
56 openab(int nfile, char *ufile) {
57  pb[nfile] = fopen(ufile, "a+b");
58 }
59 
67 void
-
68 backbufr(int nfile) {
+
68 backbufr(int nfile) {
69  fsetpos(pb[nfile],&lstpos[nfile]);
70 }
71 
79 void
-
80 cewind(int nfile) {
+
80 cewind(int nfile) {
81  rewind(pb[nfile]);
82 }
83 
91 void
-
92 closfb(int nfile) {
+
92 closfb(int nfile) {
93  fclose(pb[nfile]);
94 }
95 
113 int
-
114 crdbufr(int nfile, int *bufr, int mxwrd) {
+
114 crdbufr(int nfile, int *bufr, int mxwrd) {
115 
116  int nbytrem, nintrem, nbytx, nintx, wkint[2], ii;
117  size_t nb = sizeof(int), nbdi8 = 8/sizeof(int);
@@ -130,7 +130,7 @@
120 
121  /* Find the start of the next BUFR message within the file. */
122  fgetpos(pb[nfile], &lstpos[nfile]);
-
123  while (strncmp(wkchr, "BUFR", 4) != 0) {
+
123  while (strncmp(wkchr, BMOSTR, 4) != 0) {
124  memmove(wkchr, &wkchr[1], 3);
125  if (fread(wkchr + 3, 1, 1, pb[nfile]) != 1)
126  return -1;
@@ -183,7 +183,7 @@
173  fsetpos(pb[nfile], &nxtpos);
174  return -2;
175  }
-
176  if (strncmp(&wkchr[nbytrem-4], "7777", 4) != 0) {
+
176  if (strncmp(&wkchr[nbytrem-4], BMCSTR, 4) != 0) {
177  fsetpos(pb[nfile], &nxtpos);
178  return -2;
179  }
@@ -196,13 +196,15 @@
186 }
187 
198 void
-
199 cwrbufr(int nfile, int *bufr, int nwrd) {
+
199 cwrbufr(int nfile, int *bufr, int nwrd) {
200  size_t nb = sizeof(int);
201 
202  fwrite(bufr, nb, nwrd, pb[nfile]);
203 }
int iupbs01_f(int *bufr, char *mnemonic)
Read a data value from Section 0 or Section 1 of a BUFR message.
Enable a number of NCEPLIBS-bufr subprograms to be called from within the C part of the library.
+
#define BMCSTR
Closing string of a BUFR message.
Definition: bufrlib.h:73
+
#define BMOSTR
Opening string of a BUFR message.
Definition: bufrlib.h:70
void closfb(int nfile)
Close a previously opened BUFR file.
Definition: cread.c:92
int crdbufr(int nfile, int *bufr, int mxwrd)
Read the next message from a BUFR file that was previously opened for reading.
Definition: cread.c:114
void openab(int nfile, char *ufile)
Open a new file for appending BUFR messages.
Definition: cread.c:56
diff --git a/cread_8h.html b/cread_8h.html index d19eb02d6..36d3ffa2d 100644 --- a/cread_8h.html +++ b/cread_8h.html @@ -26,7 +26,7 @@ @@ -105,7 +105,7 @@
lunix- Absolute value is Fortran logical unit number for BUFR file
NCEPLIBS-bufr -  12.1.0 +  12.2.0
NCEPLIBS-bufr -  12.1.0 +  12.2.0
NCEPLIBS-bufr -  12.1.0 +  12.2.0
NCEPLIBS-bufr -  12.1.0 +  12.2.0
NCEPLIBS-bufr -  12.1.0 +  12.2.0
NCEPLIBS-bufr -  12.1.0 +  12.2.0
NCEPLIBS-bufr -  12.1.0 +  12.2.0
NCEPLIBS-bufr -  12.1.0 +  12.2.0

Detailed Description

Declare variables for reading or writing BUFR messages via a C language interface.

-

These variables are used by the C language interface which encompasses functions openrb(), openwb(), openab(), backbufr(), cewind(), closfb(), crdbufr() and cwrbufr().

+

These variables are used by the C language interface which encompasses functions openrb(), openwb(), openab(), backbufr(), cewind(), closfb(), crdbufr() and cwrbufr().

When allocated, these variables are dimensioned as one larger than NFILES because of the difference in array indexing between Fortran and C. In each function, the value passed in for nfile will be a Fortran file ID ranging in value from 1 to NFILES, so we need to allow for this same range of values in C, which would otherwise expect the array indices to range from 0 to NFILES-1.

Author
J. Woollen
Date
2012-09-15
@@ -134,7 +134,7 @@

Referenced by arallocc(), ardllocc(), backbufr(), and crdbufr().

+

Referenced by arallocc(), ardllocc(), backbufr(), and crdbufr().

@@ -160,7 +160,7 @@

Referenced by arallocc(), ardllocc(), backbufr(), cewind(), closfb(), crdbufr(), cwrbufr(), openab(), openrb(), and openwb().

+

Referenced by arallocc(), ardllocc(), backbufr(), cewind(), closfb(), crdbufr(), cwrbufr(), openab(), openrb(), and openwb().

diff --git a/cread_8h_source.html b/cread_8h_source.html index 0a6743905..71980ebd0 100644 --- a/cread_8h_source.html +++ b/cread_8h_source.html @@ -26,7 +26,7 @@
NCEPLIBS-bufr -  12.1.0 +  12.2.0
diff --git a/crwbmg_8c.html b/crwbmg_8c.html index 24fd8b54e..e4fd8d4e9 100644 --- a/crwbmg_8c.html +++ b/crwbmg_8c.html @@ -26,7 +26,7 @@
NCEPLIBS-bufr -  12.1.0 +  12.2.0
@@ -173,7 +173,7 @@

Author
J. Ator

Date
2005-11-29
-

Definition at line 290 of file crwbmg.c.

+

Definition at line 289 of file crwbmg.c.

References pbf.

@@ -230,7 +230,7 @@

Author
J. Ator
Date
2005-11-29
-

Definition at line 120 of file crwbmg.c.

+

Definition at line 119 of file crwbmg.c.

References bort_f(), MXFNLEN, and pbf.

@@ -297,9 +297,9 @@

Author
J. Ator
Date
2005-11-29
-

Definition at line 195 of file crwbmg.c.

+

Definition at line 194 of file crwbmg.c.

-

References bort_f(), iupbs01_f(), pbf, and rbytes().

+

References BMCSTR, BMOSTR, bort_f(), iupbs01_f(), pbf, and rbytes().

@@ -352,7 +352,7 @@

Author
J. Ator
Date
2005-11-29
-

Definition at line 263 of file crwbmg.c.

+

Definition at line 262 of file crwbmg.c.

References bort_f(), and pbf.

@@ -416,7 +416,7 @@

Author
J. Ator
Date
2005-11-29
-

Definition at line 38 of file crwbmg.c.

+

Definition at line 37 of file crwbmg.c.

References pbf.

@@ -439,7 +439,7 @@

Definition at line 14 of file crwbmg.c.

+

Definition at line 13 of file crwbmg.c.

Referenced by ccbfl(), cobfl(), crbmg(), cwbmg(), and rbytes().

diff --git a/crwbmg_8c_source.html b/crwbmg_8c_source.html index 92693907c..f592b896e 100644 --- a/crwbmg_8c_source.html +++ b/crwbmg_8c_source.html @@ -26,7 +26,7 @@
NCEPLIBS-bufr -  12.1.0 +  12.2.0
@@ -91,176 +91,178 @@
7 
10 #define MXFNLEN 200
11 
-
14 FILE *pbf[2];
-
15 
-
37 int
-
38 rbytes(char *bmg, int mxmb, int isloc, int newbytes)
-
39 {
-
40  int iret;
-
41 
-
42  if ((isloc + newbytes) > mxmb) {
-
43  iret = 1;
-
44  }
-
45  else if (fread(&bmg[isloc], 1, newbytes, pbf[0]) != newbytes) {
-
46  iret = (feof(pbf[0]) ? -1 : -2);
-
47  }
-
48  else {
-
49  iret = 0;
-
50  }
-
51 
-
52  return iret;
-
53 }
-
54 
-
119 void
-
120 cobfl(char *bfl, char io)
-
121 {
-
122  char lbf[MXFNLEN+1];
-
123  char lio;
-
124 
-
125  char errstr[MXFNLEN+50];
-
126 
-
127  char foparg[3] = " b"; /* 3rd character will automatically initialize to NULL */
-
128  unsigned short i, j;
-
129 
-
130  /*
-
131  ** Copy the input arguments into local variables and check them for validity. This is especially
-
132  ** important in case either of the arguments was passed in as a string literal by the calling
-
133  ** program or else doesn't have a trailing NULL character.
-
134  */
-
135  for (i = 0; (! isspace(bfl[i]) && ! iscntrl(bfl[i])); i++) {
-
136  if (i == MXFNLEN) {
-
137  sprintf(errstr, "BUFRLIB: COBFL - INPUT FILENAME CONTAINS"
-
138  " MORE THAN %hu CHARACTERS", (unsigned short) MXFNLEN);
-
139  bort_f(errstr);
-
140  }
-
141  lbf[i] = bfl[i];
-
142  }
-
143  lbf[i] = '\0';
-
144 
-
145  lio = io;
-
146  if ((foparg[0] = (char) tolower(lio)) == 'r') {
-
147  j = 0;
-
148  }
-
149  else if (foparg[0] == 'w') {
-
150  j = 1;
-
151  }
-
152  else {
-
153  sprintf(errstr, "BUFRLIB: COBFL - SECOND ARGUMENT WAS (%c),"
-
154  " WHICH IS AN ILLEGAL VALUE", lio);
-
155  bort_f(errstr);
-
156  }
-
157 
-
158  /*
-
159  ** If a file of this type is already open, then close it before opening the new one.
-
160  */
-
161  if (pbf[j] != NULL) fclose(pbf[j]);
-
162 
-
163  /*
-
164  ** Open the requested file.
-
165  */
-
166  if ((pbf[j] = fopen(lbf, foparg)) == NULL) {
-
167  sprintf(errstr, "BUFRLIB: COBFL - COULD NOT OPEN FILE %s", lbf);
-
168  bort_f(errstr);
-
169  }
-
170 
-
171  return;
-
172 }
-
173 
-
194 void
-
195 crbmg(char *bmg, int mxmb, int *nmb, int *iret)
-
196 {
-
197  int wkint[2];
-
198 
-
199  char errstr[129];
-
200  char blanks[5] = " ";
-
201 
-
202  /*
-
203  ** Make sure that a file is open for reading.
-
204  */
-
205  if (pbf[0] == NULL) {
-
206  sprintf(errstr, "BUFRLIB: CRBMG - NO FILE IS OPEN FOR READING");
-
207  bort_f(errstr);
-
208  }
-
209 
-
210  /*
-
211  ** Initialize the first 4 characters of the output array to blanks.
-
212  */
-
213  if (mxmb < 5) {
-
214  *iret = 1;
-
215  return;
-
216  }
-
217  strcpy(bmg, blanks);
-
218 
-
219  /*
-
220  ** Look for the start of the next BUFR message.
-
221  */
-
222  while (strncmp("BUFR", bmg, 4) != 0) {
-
223  memmove(bmg, &bmg[1], 3);
-
224  if ((*iret = rbytes(bmg, mxmb, 3, 1)) != 0) return;
-
225  }
-
226 
-
227  /*
-
228  ** Read the next 4 bytes of the BUFR message and get the length of the message.
-
229  */
-
230  if ((*iret = rbytes(bmg, mxmb, 4, 4)) != 0) return;
-
231  memcpy(wkint, bmg, 8);
-
232  *nmb = iupbs01_f(wkint, "LENM");
-
233 
-
234  /*
-
235  ** Read the remainder of the BUFR message.
-
236  */
-
237  if ((*iret = rbytes(bmg, mxmb, 8, *nmb-8)) != 0) return;
-
238 
-
239  /*
-
240  ** Check that the "7777" is in the expected location.
-
241  */
-
242  *iret = ((strncmp("7777", &bmg[*nmb-4], 4) == 0) ? 0 : 2);
-
243 
-
244  return;
-
245 }
-
246 
-
262 void
-
263 cwbmg(char *bmg, int nmb, int *iret)
-
264 {
-
265  char errstr[129];
-
266 
-
267  /*
-
268  ** Make sure that a file is open for writing.
-
269  */
-
270  if (pbf[1] == NULL) {
-
271  sprintf(errstr, "BUFRLIB: CWBMG - NO FILE IS OPEN FOR WRITING");
-
272  bort_f(errstr);
-
273  }
-
274 
-
275  /*
-
276  ** Write the BUFR message to the file.
-
277  */
-
278  *iret = ((fwrite(bmg, 1, nmb, pbf[1]) == nmb) ? 0 : -1);
-
279 
-
280  return;
-
281 }
-
282 
-
289 void
-
290 ccbfl(void)
-
291 {
-
292  unsigned short i;
-
293 
-
294  for (i = 0; i < 2; i++) {
-
295  if (pbf[i] != NULL) fclose(pbf[i]);
-
296  }
-
297 
-
298  return;
-
299 }
+
13 FILE *pbf[2];
+
14 
+
36 int
+
37 rbytes(char *bmg, int mxmb, int isloc, int newbytes)
+
38 {
+
39  int iret;
+
40 
+
41  if ((isloc + newbytes) > mxmb) {
+
42  iret = 1;
+
43  }
+
44  else if (fread(&bmg[isloc], 1, newbytes, pbf[0]) != newbytes) {
+
45  iret = (feof(pbf[0]) ? -1 : -2);
+
46  }
+
47  else {
+
48  iret = 0;
+
49  }
+
50 
+
51  return iret;
+
52 }
+
53 
+
118 void
+
119 cobfl(char *bfl, char io)
+
120 {
+
121  char lbf[MXFNLEN+1];
+
122  char lio;
+
123 
+
124  char errstr[MXFNLEN+50];
+
125 
+
126  char foparg[3] = " b"; /* 3rd character will automatically initialize to NULL */
+
127  unsigned short i, j;
+
128 
+
129  /*
+
130  ** Copy the input arguments into local variables and check them for validity. This is especially
+
131  ** important in case either of the arguments was passed in as a string literal by the calling
+
132  ** program or else doesn't have a trailing NULL character.
+
133  */
+
134  for (i = 0; (! isspace(bfl[i]) && ! iscntrl(bfl[i])); i++) {
+
135  if (i == MXFNLEN) {
+
136  sprintf(errstr, "BUFRLIB: COBFL - INPUT FILENAME CONTAINS"
+
137  " MORE THAN %hu CHARACTERS", (unsigned short) MXFNLEN);
+
138  bort_f(errstr);
+
139  }
+
140  lbf[i] = bfl[i];
+
141  }
+
142  lbf[i] = '\0';
+
143 
+
144  lio = io;
+
145  if ((foparg[0] = (char) tolower(lio)) == 'r') {
+
146  j = 0;
+
147  }
+
148  else if (foparg[0] == 'w') {
+
149  j = 1;
+
150  }
+
151  else {
+
152  sprintf(errstr, "BUFRLIB: COBFL - SECOND ARGUMENT WAS (%c),"
+
153  " WHICH IS AN ILLEGAL VALUE", lio);
+
154  bort_f(errstr);
+
155  }
+
156 
+
157  /*
+
158  ** If a file of this type is already open, then close it before opening the new one.
+
159  */
+
160  if (pbf[j] != NULL) fclose(pbf[j]);
+
161 
+
162  /*
+
163  ** Open the requested file.
+
164  */
+
165  if ((pbf[j] = fopen(lbf, foparg)) == NULL) {
+
166  sprintf(errstr, "BUFRLIB: COBFL - COULD NOT OPEN FILE %s", lbf);
+
167  bort_f(errstr);
+
168  }
+
169 
+
170  return;
+
171 }
+
172 
+
193 void
+
194 crbmg(char *bmg, int mxmb, int *nmb, int *iret)
+
195 {
+
196  int wkint[2];
+
197 
+
198  char errstr[129];
+
199  char blanks[5] = " ";
+
200 
+
201  /*
+
202  ** Make sure that a file is open for reading.
+
203  */
+
204  if (pbf[0] == NULL) {
+
205  sprintf(errstr, "BUFRLIB: CRBMG - NO FILE IS OPEN FOR READING");
+
206  bort_f(errstr);
+
207  }
+
208 
+
209  /*
+
210  ** Initialize the first 4 characters of the output array to blanks.
+
211  */
+
212  if (mxmb < 5) {
+
213  *iret = 1;
+
214  return;
+
215  }
+
216  strcpy(bmg, blanks);
+
217 
+
218  /*
+
219  ** Look for the start of the next BUFR message.
+
220  */
+
221  while (strncmp(BMOSTR, bmg, 4) != 0) {
+
222  memmove(bmg, &bmg[1], 3);
+
223  if ((*iret = rbytes(bmg, mxmb, 3, 1)) != 0) return;
+
224  }
+
225 
+
226  /*
+
227  ** Read the next 4 bytes of the BUFR message and get the length of the message.
+
228  */
+
229  if ((*iret = rbytes(bmg, mxmb, 4, 4)) != 0) return;
+
230  memcpy(wkint, bmg, 8);
+
231  *nmb = iupbs01_f(wkint, "LENM");
+
232 
+
233  /*
+
234  ** Read the remainder of the BUFR message.
+
235  */
+
236  if ((*iret = rbytes(bmg, mxmb, 8, *nmb-8)) != 0) return;
+
237 
+
238  /*
+
239  ** Check that the "7777" is in the expected location.
+
240  */
+
241  *iret = ((strncmp(BMCSTR, &bmg[*nmb-4], 4) == 0) ? 0 : 2);
+
242 
+
243  return;
+
244 }
+
245 
+
261 void
+
262 cwbmg(char *bmg, int nmb, int *iret)
+
263 {
+
264  char errstr[129];
+
265 
+
266  /*
+
267  ** Make sure that a file is open for writing.
+
268  */
+
269  if (pbf[1] == NULL) {
+
270  sprintf(errstr, "BUFRLIB: CWBMG - NO FILE IS OPEN FOR WRITING");
+
271  bort_f(errstr);
+
272  }
+
273 
+
274  /*
+
275  ** Write the BUFR message to the file.
+
276  */
+
277  *iret = ((fwrite(bmg, 1, nmb, pbf[1]) == nmb) ? 0 : -1);
+
278 
+
279  return;
+
280 }
+
281 
+
288 void
+
289 ccbfl(void)
+
290 {
+
291  unsigned short i;
+
292 
+
293  for (i = 0; i < 2; i++) {
+
294  if (pbf[i] != NULL) fclose(pbf[i]);
+
295  }
+
296 
+
297  return;
+
298 }
int iupbs01_f(int *bufr, char *mnemonic)
Read a data value from Section 0 or Section 1 of a BUFR message.
Enable a number of NCEPLIBS-bufr subprograms to be called from within the C part of the library.
+
#define BMCSTR
Closing string of a BUFR message.
Definition: bufrlib.h:73
void bort_f(char *errstr)
Log one error message and abort application program.
-
void cobfl(char *bfl, char io)
Open a new file for reading or writing BUFR messages via a C language interface.
Definition: crwbmg.c:120
-
void cwbmg(char *bmg, int nmb, int *iret)
Write a BUFR message to the file that was opened via the most recent call to function cobfl() with io...
Definition: crwbmg.c:263
-
int rbytes(char *bmg, int mxmb, int isloc, int newbytes)
Read a specified number of bytes from the file that was opened via the most recent call to function c...
Definition: crwbmg.c:38
-
void crbmg(char *bmg, int mxmb, int *nmb, int *iret)
Read the next BUFR message from the file that was opened via the most recent call to function cobfl()...
Definition: crwbmg.c:195
-
void ccbfl(void)
Close all files that were opened via previous calls to function cobfl().
Definition: crwbmg.c:290
+
#define BMOSTR
Opening string of a BUFR message.
Definition: bufrlib.h:70
+
void cobfl(char *bfl, char io)
Open a new file for reading or writing BUFR messages via a C language interface.
Definition: crwbmg.c:119
+
void cwbmg(char *bmg, int nmb, int *iret)
Write a BUFR message to the file that was opened via the most recent call to function cobfl() with io...
Definition: crwbmg.c:262
+
int rbytes(char *bmg, int mxmb, int isloc, int newbytes)
Read a specified number of bytes from the file that was opened via the most recent call to function c...
Definition: crwbmg.c:37
+
void crbmg(char *bmg, int mxmb, int *nmb, int *iret)
Read the next BUFR message from the file that was opened via the most recent call to function cobfl()...
Definition: crwbmg.c:194
+
void ccbfl(void)
Close all files that were opened via previous calls to function cobfl().
Definition: crwbmg.c:289
#define MXFNLEN
Maximum length of a filename, including any directory prefixes or other local filesystem notation.
Definition: crwbmg.c:10
-
FILE * pbf[2]
File pointers; each element will automatically initialize to NULL.
Definition: crwbmg.c:14
+
FILE * pbf[2]
File pointers; each element will automatically initialize to NULL.
Definition: crwbmg.c:13
diff --git a/debufr_8F90.html b/debufr_8F90.html index 837126914..d50bf7d3a 100644 --- a/debufr_8F90.html +++ b/debufr_8F90.html @@ -26,7 +26,7 @@
NCEPLIBS-bufr -  12.1.0 +  12.2.0
diff --git a/debufr_8F90_source.html b/debufr_8F90_source.html index 007974792..a449067d3 100644 --- a/debufr_8F90_source.html +++ b/debufr_8F90_source.html @@ -26,7 +26,7 @@
NCEPLIBS-bufr -  12.1.0 +  12.2.0
@@ -106,7 +106,7 @@
60 
61  implicit none
62 
-
63  integer, parameter :: mxbf = 2500000
+
63  integer, parameter :: mxbf = 7500000
64  integer, parameter :: mxbfd4 = mxbf/4
65  integer, parameter :: mxds3 = 500
66  integer, parameter :: mxprms = 20
@@ -444,22 +444,22 @@
recursive subroutine getcfmng(lunit, nemoi, ivali, nemod, ivald, cmeang, lnmng, iret)
Decode the meaning of a numerical value from a code or flag table.
Definition: cftbvs.F90:220
subroutine fdebufr_c(ofile, lenof, tbldir, lentd, tblfil, lentf, prmstg, lenps, basic, forcemt, cfms)
This subroutine reads, decodes, and generates a verbose output listing of the contents of every BUFR ...
Definition: debufr.F90:56
recursive subroutine ufdump(lunit, luprt)
Print a verbose listing of the contents of a data subset, including all data values and replicated se...
Definition: dumpdata.F90:228
-
recursive subroutine dxdump(lunit, ldxot)
Print a copy of the DX BUFR table associated with a specified Fortran logical unit.
Definition: dumpdata.F90:580
+
recursive subroutine dxdump(lunit, ldxot)
Print a copy of the DX BUFR table associated with a specified Fortran logical unit.
Definition: dumpdata.F90:585
-
subroutine codflg(cf)
Specify whether or not code and flag table information should be included during all future reads of ...
+
subroutine codflg(cf)
Specify whether or not code and flag table information should be included during all future reads of ...
recursive subroutine mtinfo(cmtdir, lunmt1, lunmt2)
Specify the directory location and Fortran logical unit numbers to be used when reading master BUFR t...
Definition: mastertable.F90:35
-
recursive subroutine strnum(str, num, iret)
Decode an integer from a character string.
Definition: misc.F90:177
-
subroutine strsuc(str1, str2, lens)
Remove leading and trailing blanks from a character string.
Definition: misc.F90:220
+
recursive subroutine strnum(str, num, iret)
Decode an integer from a character string.
Definition: misc.F90:156
+
subroutine strsuc(str1, str2, lens)
Remove leading and trailing blanks from a character string.
Definition: misc.F90:199
Wrap C NCEPLIBS-bufr functions so they can be called from within Fortran application programs.
This module is used within the debufr utility to share information between subroutine fdebufr_c() and...
Definition: debufr.F90:11
integer ludx
Fortran logical unit number to use for referencing a DX table.
Definition: debufr.F90:20
integer ltbd
Length (in characters) of tbldir_f.
Definition: debufr.F90:17
character(len=:), allocatable tbldir_f
Directory containing DX BUFR tables to be used for decoding.
Definition: debufr.F90:14
recursive subroutine openbt(lundx, mtyp)
Specify a DX BUFR table of last resort, in case subroutine cktaba() is unable to locate a DX BUFR tab...
Definition: openbt.F90:31
-
recursive subroutine openbf(lunit, io, lundx)
Connect a new file to the NCEPLIBS-bufr software for input or output operations, or initialize the li...
-
recursive subroutine readerme(mesg, lunit, subset, jdate, iret)
Read a BUFR message from a memory array.
-
recursive subroutine upds3(mbay, lcds3, cds3, nds3)
Read the sequence of data descriptors contained within Section 3 of a BUFR message.
Definition: s013vals.F90:829
-
recursive subroutine datelen(len)
Specify the format of Section 1 date-time values that will be output by future calls to any of the NC...
Definition: s013vals.F90:889
+
recursive subroutine openbf(lunit, io, lundx)
Connect a new file to the NCEPLIBS-bufr software for input or output operations, or initialize the li...
+
recursive subroutine readerme(mesg, lunit, subset, jdate, iret)
Read a BUFR message from a memory array.
+
recursive subroutine upds3(mbay, lcds3, cds3, nds3)
Read the sequence of data descriptors contained within Section 3 of a BUFR message.
Definition: s013vals.F90:826
+
recursive subroutine datelen(len)
Specify the format of Section 1 date-time values that will be output by future calls to any of the NC...
Definition: s013vals.F90:886
subroutine parstr(str, tags, mtag, ntag, sep, limit80)
Parse a string containing one or more substrings into an array of substrings.
Definition: strings.F90:473
recursive subroutine rtrcptb(mbay, iyr, imo, idy, ihr, imi, iret)
Read the tank receipt time (if one exists) from Section 1 of a BUFR message.
Definition: tankrcpt.F90:114
diff --git a/debufr_8c.html b/debufr_8c.html index ab5a1c613..22d48aa9d 100644 --- a/debufr_8c.html +++ b/debufr_8c.html @@ -26,7 +26,7 @@
NCEPLIBS-bufr -  12.1.0 +  12.2.0
diff --git a/debufr_8c_source.html b/debufr_8c_source.html index 8419f6ad1..af99fae4a 100644 --- a/debufr_8c_source.html +++ b/debufr_8c_source.html @@ -26,7 +26,7 @@
NCEPLIBS-bufr -  12.1.0 +  12.2.0
@@ -339,8 +339,8 @@
361 }
Enable a number of NCEPLIBS-bufr subprograms to be called from within C and C++ application programs.
#define VERS_STR_LEN
Size of a character string needed to store a library version number.
-
void cobfl(char *bfl, char io)
Open a new file for reading or writing BUFR messages via a C language interface.
Definition: crwbmg.c:120
-
void ccbfl(void)
Close all files that were opened via previous calls to function cobfl().
Definition: crwbmg.c:290
+
void cobfl(char *bfl, char io)
Open a new file for reading or writing BUFR messages via a C language interface.
Definition: crwbmg.c:119
+
void ccbfl(void)
Close all files that were opened via previous calls to function cobfl().
Definition: crwbmg.c:289
void bvers_f(char *cverstr, int cverstr_len)
Get the version number of the NCEPLIBS-bufr software.
int main(int argc, char *argv[])
This program decodes a BUFR file and generates a verbose listing of the contents.
Definition: debufr.c:167
void prtusage(char *prgnam)
This function prints program usage information to standard output.
Definition: debufr.c:48
diff --git a/dir_22e12ea4559d63fc79cb69a343f5f5b4.html b/dir_22e12ea4559d63fc79cb69a343f5f5b4.html index e2c73d50e..4d00eebce 100644 --- a/dir_22e12ea4559d63fc79cb69a343f5f5b4.html +++ b/dir_22e12ea4559d63fc79cb69a343f5f5b4.html @@ -26,7 +26,7 @@
NCEPLIBS-bufr -  12.1.0 +  12.2.0
diff --git a/dir_49e56c817e5e54854c35e136979f97ca.html b/dir_49e56c817e5e54854c35e136979f97ca.html index cca8f5bf5..5e13c6675 100644 --- a/dir_49e56c817e5e54854c35e136979f97ca.html +++ b/dir_49e56c817e5e54854c35e136979f97ca.html @@ -26,7 +26,7 @@
NCEPLIBS-bufr -  12.1.0 +  12.2.0
diff --git a/dir_68267d1309a1af8e8297ef4c3efbcdba.html b/dir_68267d1309a1af8e8297ef4c3efbcdba.html index 5573139c1..141a6b8e2 100644 --- a/dir_68267d1309a1af8e8297ef4c3efbcdba.html +++ b/dir_68267d1309a1af8e8297ef4c3efbcdba.html @@ -26,7 +26,7 @@
NCEPLIBS-bufr -  12.1.0 +  12.2.0
@@ -116,9 +116,6 @@ file  bufrlib.F90 [code]  Enable a number of C NCEPLIBS-bufr functions to be called from within the Fortran part of the library.
  -file  bufrlib.h [code] - Enable a number of NCEPLIBS-bufr subprograms to be called from within the C part of the library.
-  file  cfe.c [code]  C language interface for processing master Code/Flag table entries.
  @@ -203,6 +200,9 @@ file  restd.c [code]  Standardize a local Table D descriptor.
  +file  rpseqs.h [code] + Declare variables for internal storage of replication sequences.
+  file  s013vals.F90 [code]  Read and write data values within Sections 0, 1, and 3 of BUFR messages.
  @@ -213,7 +213,7 @@  Process mnemonic strings.
  file  stseq.c [code] - Store information about a standard Table D descriptor within internal DX BUFR tables.
+ Store information about a Table D descriptor within internal DX BUFR tables.
  file  tankrcpt.F90 [code]  Read and write tank receipt times within BUFR messages.
diff --git a/dir_7a6c296ee00f7c8711e279503c1d5b5f.html b/dir_7a6c296ee00f7c8711e279503c1d5b5f.html index a251393c4..92966ab39 100644 --- a/dir_7a6c296ee00f7c8711e279503c1d5b5f.html +++ b/dir_7a6c296ee00f7c8711e279503c1d5b5f.html @@ -26,7 +26,7 @@
NCEPLIBS-bufr -  12.1.0 +  12.2.0
@@ -89,6 +89,9 @@ + + + diff --git a/dir_cbdb8362360e11eafe2fa3bc74cf0ffd.html b/dir_cbdb8362360e11eafe2fa3bc74cf0ffd.html index b933ea13d..d389005b1 100644 --- a/dir_cbdb8362360e11eafe2fa3bc74cf0ffd.html +++ b/dir_cbdb8362360e11eafe2fa3bc74cf0ffd.html @@ -26,7 +26,7 @@ diff --git a/dumpdata_8F90.html b/dumpdata_8F90.html index 15372bd48..982eeda1f 100644 --- a/dumpdata_8F90.html +++ b/dumpdata_8F90.html @@ -26,7 +26,7 @@ @@ -159,7 +159,7 @@

Author
J. Ator
Date
2004-08-18
-

Definition at line 579 of file dumpdata.F90.

+

Definition at line 584 of file dumpdata.F90.

References bort(), moda_nmikrp::irp, moda_nmikrp::krp, moda_nmikrp::nem, nemtbd(), moda_tababd::ntba, moda_tababd::ntbb, moda_tababd::ntbd, status(), strsuc(), moda_tababd::taba, moda_tababd::tabb, moda_tababd::tabd, and x84().

@@ -219,7 +219,7 @@

Author
J. Ator
Date
2005-11-29
-

Definition at line 828 of file dumpdata.F90.

+

Definition at line 834 of file dumpdata.F90.

References moda_nmikrp::irp, moda_nmikrp::krp, moda_nmikrp::nem, nemtbd(), moda_tababd::ntbb, moda_tababd::ntbd, status(), moda_tababd::tabb, moda_tababd::tabd, x48(), and x84().

@@ -324,7 +324,7 @@

Definition at line 227 of file dumpdata.F90.

-

References bort(), moda_tablef::cdmf, fstag(), ibfms(), moda_tables::ibt, icbfms(), moda_msgcwd::inode, moda_nrv203::inodnrv, moda_usrint::inv, ireadmt(), moda_tables::irf, moda_tables::isc, isize(), moda_tables::itp, nemtab(), moda_nrv203::nnrv, moda_usrint::nrfelm, moda_msgcwd::nsub, numtbd(), moda_usrint::nval, readlc(), status(), strsuc(), moda_tababd::tabb, moda_tables::tag, moda_tables::typ, upftbv(), moda_usrint::val, and x84().

+

References bort(), moda_tablef::cdmf, fstag(), ibfms(), moda_tables::ibt, icbfms(), imrkopr(), moda_msgcwd::inode, moda_nrv203::inodnrv, moda_usrint::inv, ireadmt(), moda_tables::irf, moda_tables::isc, isize(), moda_tables::itp, nemtab(), moda_nrv203::nnrv, moda_usrint::nrfelm, moda_msgcwd::nsub, numtbd(), moda_usrint::nval, readlc(), status(), strsuc(), moda_tababd::tabb, moda_tables::tag, moda_tables::typ, upftbv(), moda_usrint::val, and x84().

Referenced by fdebufr_c(), readbp(), and readmp().

diff --git a/dumpdata_8F90_source.html b/dumpdata_8F90_source.html index d965794ce..93050a319 100644 --- a/dumpdata_8F90_source.html +++ b/dumpdata_8F90_source.html @@ -26,7 +26,7 @@

@@ -259,7 +259,7 @@
243  integer, parameter :: mxfv = 31 , mxcfdp = 5, mxseq = 10, mxls = 10
244  integer ifv(mxfv), icfdp(mxcfdp), idxrep(mxseq), numrep(mxseq), lsqnam(mxseq), lsct(mxls), my_lunit, my_luprt, &
245  nseq, nls, lcfmeang, luout, lun, il, im, node, lnm2, lnm3, itmp, ityp, ii, jj, nifv, nv, n, nchr, idn, ipt, &
-
246  nrfe, nout, lcfmg, ifvd, iersf, ierbd, ierft, isz, isize, ireadmt, ibfms, icbfms
+
246  nrfe, nout, lcfmg, ifvd, iersf, ierbd, ierft, isz, isize, iscl, ireadmt, ibfms, icbfms, imrkopr
247  integer*8 ival
248 
249  real*8 rval
@@ -438,443 +438,450 @@
422  else
423  fmt = '(A6,2X,A10,2X, ,2X,A24,6X,A48)'
424  ! Based upon the corresponding scale factor, select an appropriate format for the printing of this value.
-
425  if(isc(node)>0) then
-
426  write(fmt(15:20),'(A,I2)') 'F20.', isc(node)
+
425  if(imrkopr(nemo)==1) then
+
426  iscl = isc(inv(nrfe,lun))
427  else
-
428  write(fmt(18:20),'(A)') 'I20'
+
428  iscl = isc(node)
429  endif
-
430  if(unit(1:4)=='FLAG') then
-
431  ! Print a listing of the bits corresponding to this value.
-
432  call upftbv(lunit,nemo,rval,mxfv,ifv,nifv)
-
433  if(nifv>0) then
-
434  unit(11:11) = '('
-
435  ipt = 12
-
436  do ii=1,nifv
-
437  isz = isize(ifv(ii))
-
438  write(fmtf,'(A2,I1,A4)') '(I', isz, ',A1)'
-
439  if((ipt+isz)<=24) then
-
440  write(unit(ipt:ipt+isz),fmtf) ifv(ii), ','
-
441  ipt = ipt + isz + 1
-
442  else
-
443  unit(12:23) = 'MANY BITS ON'
-
444  ipt = 25
-
445  endif
-
446  enddo
-
447  unit(ipt-1:ipt-1) = ')'
-
448  endif
-
449  endif
-
450  if(isc(node)>0) then
-
451  write(luout,fmt) numb,nemo,rval,unit,desc
-
452  else
-
453  ival = nint(rval,8)
-
454  write(luout,fmt) numb,nemo,ival,unit,desc
-
455  endif
-
456  if( (unit(1:4)=='FLAG' .or. unit(1:4)=='CODE') .and. (cdmf=='Y') ) then
-
457  ! Print the meanings of the code and flag values.
-
458  fmt = '(31X,I8,A,A)'
-
459  if(unit(1:4)=='CODE') then
-
460  nifv = 1
-
461  ifv(nifv) = nint(rval)
-
462  endif
-
463  do ii=1,nifv
-
464  icfdp(1) = (-1)
-
465  call srchtbf_c(idn,ifv(ii),icfdp(1),mxcfdp,-1,cfmeang,lcfmeang,lcfmg,iersf)
-
466  if(iersf==0) then
-
467  write(luout,fmt) ifv(ii),' = ',cfmeang(1:lcfmg)
-
468  elseif(iersf<0) then
-
469  write(luout,fmt) ifv(ii),' = ','***THIS IS AN ILLEGAL/UNDEFINED VALUE***'
-
470  else
-
471  ! The meaning of this value is dependent on the value of another mnemonic in the report. Look for
-
472  ! that other mnemonic within the report and then use it and its associated value to retrieve and print
-
473  ! the proper meaning from the code/flag tables.
-
474  ierft = (-1)
-
475  jj = 0
-
476  do while((jj<iersf).and.(ierft<0))
-
477  jj = jj + 1
-
478  call numtbd(lun,icfdp(jj),nemod,tab,ierbd)
-
479  if((ierbd>0).and.(tab=='B')) call fstag(lun,nemod,-1,nv,nout,ierft)
-
480  enddo
-
481  if(ierft==0) then
-
482  ifvd = nint(val(nout,lun))
-
483  if(jj>1) icfdp(1) = icfdp(jj)
-
484  call srchtbf_c(idn,ifv(ii),icfdp(1),mxcfdp,ifvd,cfmeang,lcfmeang,lcfmg,iersf)
-
485  if(iersf==0) write(luout,fmt) ifv(ii),' = ', cfmeang(1:lcfmg)
-
486  endif
-
487  endif
-
488  enddo
-
489  endif
-
490  endif
-
491  elseif(ityp==3) then
-
492 
-
493  ! Character (CCITT IA5) value
-
494 
-
495  nchr = ibt(node)/8
-
496 
-
497  if(ibfms(rval)/=0) then
-
498  lchr = pmiss
-
499  else if(nchr<=8) then
-
500  lchr = cval
-
501  else
-
502  ! Track the number of occurrences of this long character string, so that we can properly output each one.
-
503  ii = 1
-
504  found = .false.
-
505  do while((ii<=nls).and.(.not.found))
-
506  if(nemo==lsnemo(ii)) then
-
507  found = .true.
-
508  else
-
509  ii = ii + 1
-
510  endif
-
511  enddo
-
512  if(.not.found) then
-
513  nls = nls+1
-
514  if(nls>mxls) call bort('BUFRLIB: UFDUMP - MXLS OVERFLOW')
-
515  lsnemo(nls) = nemo
-
516  lsct(nls) = 1
-
517  nemo3 = nemo
-
518  else
-
519  call strsuc(nemo,nemo3,lnm3)
-
520  lsct(ii) = lsct(ii) + 1
-
521  write(fmtf,'(A,I1,A)') '(2A,I', isize(lsct(ii)), ')'
-
522  write(nemo3,fmtf) nemo(1:lnm3), '#', lsct(ii)
-
523  endif
-
524 
-
525  call readlc(lunit,lchr2,nemo3)
-
526  if (icbfms(lchr2,nchr)/=0) then
-
527  lchr = pmiss
-
528  else
-
529  lchr = lchr2(1:20)
-
530  endif
-
531  endif
-
532 
-
533  if ( nchr<=20 .or. lchr==pmiss ) then
-
534  lchr = adjustr(lchr)
-
535  fmt = '(A6,2X,A10,2X,A20,2X,"(",I2,")",A24,2X,A48)'
-
536  write(luout,fmt) numb,nemo,lchr,nchr,unit,desc
-
537  else
-
538  fmt = '(A6,2X,A10,2X,A,2X,"(",I3,")",A23,2X,A48)'
-
539  write(luout,fmt) numb,nemo,lchr2(1:nchr),nchr,unit,desc
-
540  endif
-
541  endif
-
542 
-
543  enddo
-
544 
-
545  write(luout,'(/A/)') ' >>> END OF SUBSET <<< '
-
546 
-
547  return
-
548 end subroutine ufdump
+
430  if(iscl>0) then
+
431  write(fmt(15:20),'(A,I2)') 'F20.', iscl
+
432  else
+
433  write(fmt(18:20),'(A)') 'I20'
+
434  endif
+
435  if(unit(1:4)=='FLAG') then
+
436  ! Print a listing of the bits corresponding to this value.
+
437  call upftbv(lunit,nemo,rval,mxfv,ifv,nifv)
+
438  if(nifv>0) then
+
439  unit(11:11) = '('
+
440  ipt = 12
+
441  do ii=1,nifv
+
442  isz = isize(ifv(ii))
+
443  write(fmtf,'(A2,I1,A4)') '(I', isz, ',A1)'
+
444  if((ipt+isz)<=24) then
+
445  write(unit(ipt:ipt+isz),fmtf) ifv(ii), ','
+
446  ipt = ipt + isz + 1
+
447  else
+
448  unit(12:23) = 'MANY BITS ON'
+
449  ipt = 25
+
450  endif
+
451  enddo
+
452  unit(ipt-1:ipt-1) = ')'
+
453  endif
+
454  endif
+
455  if(iscl>0) then
+
456  write(luout,fmt) numb,nemo,rval,unit,desc
+
457  else
+
458  ival = nint(rval,8)
+
459  write(luout,fmt) numb,nemo,ival,unit,desc
+
460  endif
+
461  if( (unit(1:4)=='FLAG' .or. unit(1:4)=='CODE') .and. (cdmf=='Y') ) then
+
462  ! Print the meanings of the code and flag values.
+
463  fmt = '(31X,I8,A,A)'
+
464  if(unit(1:4)=='CODE') then
+
465  nifv = 1
+
466  ifv(nifv) = nint(rval)
+
467  endif
+
468  do ii=1,nifv
+
469  icfdp(1) = (-1)
+
470  call srchtbf_c(idn,ifv(ii),icfdp(1),mxcfdp,-1,cfmeang,lcfmeang,lcfmg,iersf)
+
471  if(iersf==0) then
+
472  write(luout,fmt) ifv(ii),' = ',cfmeang(1:lcfmg)
+
473  elseif(iersf<0) then
+
474  write(luout,fmt) ifv(ii),' = ','***THIS IS AN ILLEGAL/UNDEFINED VALUE***'
+
475  else
+
476  ! The meaning of this value is dependent on the value of another mnemonic in the report. Look for
+
477  ! that other mnemonic within the report and then use it and its associated value to retrieve and print
+
478  ! the proper meaning from the code/flag tables.
+
479  ierft = (-1)
+
480  jj = 0
+
481  do while((jj<iersf).and.(ierft<0))
+
482  jj = jj + 1
+
483  call numtbd(lun,icfdp(jj),nemod,tab,ierbd)
+
484  if((ierbd>0).and.(tab=='B')) call fstag(lun,nemod,-1,nv,nout,ierft)
+
485  enddo
+
486  if(ierft==0) then
+
487  ifvd = nint(val(nout,lun))
+
488  if(jj>1) icfdp(1) = icfdp(jj)
+
489  call srchtbf_c(idn,ifv(ii),icfdp(1),mxcfdp,ifvd,cfmeang,lcfmeang,lcfmg,iersf)
+
490  if(iersf==0) write(luout,fmt) ifv(ii),' = ', cfmeang(1:lcfmg)
+
491  endif
+
492  endif
+
493  enddo
+
494  endif
+
495  endif
+
496  elseif(ityp==3) then
+
497 
+
498  ! Character (CCITT IA5) value
+
499 
+
500  nchr = ibt(node)/8
+
501 
+
502  if(ibfms(rval)/=0) then
+
503  lchr = pmiss
+
504  else if(nchr<=8) then
+
505  lchr = cval
+
506  else
+
507  ! Track the number of occurrences of this long character string, so that we can properly output each one.
+
508  ii = 1
+
509  found = .false.
+
510  do while((ii<=nls).and.(.not.found))
+
511  if(nemo==lsnemo(ii)) then
+
512  found = .true.
+
513  else
+
514  ii = ii + 1
+
515  endif
+
516  enddo
+
517  if(.not.found) then
+
518  nls = nls+1
+
519  if(nls>mxls) call bort('BUFRLIB: UFDUMP - MXLS OVERFLOW')
+
520  lsnemo(nls) = nemo
+
521  lsct(nls) = 1
+
522  nemo3 = nemo
+
523  else
+
524  call strsuc(nemo,nemo3,lnm3)
+
525  lsct(ii) = lsct(ii) + 1
+
526  write(fmtf,'(A,I1,A)') '(2A,I', isize(lsct(ii)), ')'
+
527  write(nemo3,fmtf) nemo(1:lnm3), '#', lsct(ii)
+
528  endif
+
529 
+
530  call readlc(lunit,lchr2,nemo3)
+
531  if (icbfms(lchr2,nchr)/=0) then
+
532  lchr = pmiss
+
533  else
+
534  lchr = lchr2(1:20)
+
535  endif
+
536  endif
+
537 
+
538  if ( nchr<=20 .or. lchr==pmiss ) then
+
539  lchr = adjustr(lchr)
+
540  fmt = '(A6,2X,A10,2X,A20,2X,"(",I2,")",A24,2X,A48)'
+
541  write(luout,fmt) numb,nemo,lchr,nchr,unit,desc
+
542  else
+
543  fmt = '(A6,2X,A10,2X,A,2X,"(",I3,")",A23,2X,A48)'
+
544  write(luout,fmt) numb,nemo,lchr2(1:nchr),nchr,unit,desc
+
545  endif
+
546  endif
+
547 
+
548  enddo
549 
-
579 recursive subroutine dxdump(lunit,ldxot)
-
580 
-
581  use modv_vars, only: im8b, reps
-
582 
-
583  use moda_tababd
-
584  use moda_nmikrp
+
550  write(luout,'(/A/)') ' >>> END OF SUBSET <<< '
+
551 
+
552  return
+
553 end subroutine ufdump
+
554 
+
584 recursive subroutine dxdump(lunit,ldxot)
585 
-
586  implicit none
-
587 
-
588  integer, intent(in) :: lunit, ldxot
-
589  integer my_lunit, my_ldxot, lun, il, im, n, na, nc, nch, ic, icms, nseq
-
590 
-
591  character card*80, cardi1*80, cardi2*80, cardi3*80, cardi4*80, cmstr*20, wrk3*10, wrk1*8, wrk2*8, adn*6
-
592 
-
593  logical tbskip, tdskip, xtrci1
-
594 
-
595  data cardi1 /'| | | |'/
-
596  data cardi2 /'| | |'/
-
597  data cardi3 /'| | | | | |-------------|'/
-
598  data cardi4 /'|------------------------------------------------------------------------------|'/
-
599 
-
600  ! Statement functions
-
601  tbskip(adn) = ((adn=='063000').or.(adn=='063255').or.(adn=='031000').or.(adn=='031001').or.(adn=='031002'))
-
602  tdskip(adn) = ((adn=='360001').or.(adn=='360002').or.(adn=='360003').or.(adn=='360004'))
-
603 
-
604  ! Check for I8 integers.
+
586  use modv_vars, only: im8b, reps, fxy_fbit, fxy_sbyct, fxy_drp16, fxy_drp8, fxy_drp8s, fxy_drp1, &
+
587  fxy_drf16, fxy_drf8, fxy_drf1
+
588 
+
589  use moda_tababd
+
590  use moda_nmikrp
+
591 
+
592  implicit none
+
593 
+
594  integer, intent(in) :: lunit, ldxot
+
595  integer my_lunit, my_ldxot, lun, il, im, n, na, nc, nch, ic, icms, nseq
+
596 
+
597  character card*80, cardi1*80, cardi2*80, cardi3*80, cardi4*80, cmstr*20, wrk3*10, wrk1*8, wrk2*8, adn*6
+
598 
+
599  logical tbskip, tdskip, xtrci1
+
600 
+
601  data cardi1 /'| | | |'/
+
602  data cardi2 /'| | |'/
+
603  data cardi3 /'| | | | | |-------------|'/
+
604  data cardi4 /'|------------------------------------------------------------------------------|'/
605 
-
606  if(im8b) then
-
607  im8b=.false.
-
608 
-
609  call x84(lunit,my_lunit,1)
-
610  call x84(ldxot,my_ldxot,1)
-
611  call dxdump(my_lunit,my_ldxot)
-
612 
-
613  im8b=.true.
-
614  return
-
615  endif
-
616 
-
617  ! Determine lun from lunit.
+
606  ! Statement functions
+
607  tbskip(adn) = ((adn==fxy_sbyct).or.(adn==fxy_fbit).or.(adn==fxy_drf16).or.(adn==fxy_drf8).or.(adn==fxy_drf1))
+
608  tdskip(adn) = ((adn==fxy_drp16).or.(adn==fxy_drp8).or.(adn==fxy_drp8s).or.(adn==fxy_drp1))
+
609 
+
610  ! Check for I8 integers.
+
611 
+
612  if(im8b) then
+
613  im8b=.false.
+
614 
+
615  call x84(lunit,my_lunit,1)
+
616  call x84(ldxot,my_ldxot,1)
+
617  call dxdump(my_lunit,my_ldxot)
618 
-
619  call status(lunit,lun,il,im)
-
620  if(il==0) call bort('BUFRLIB: DXDUMP - BUFR FILE IS CLOSED, IT MUST BE OPEN')
-
621 
-
622  ! Create and write out (to ldxot) the header cards for the descriptor definition section.
-
623 
-
624  card=cardi4
-
625  card( 1: 1)='.'
-
626  card(80:80)='.'
-
627  write (ldxot,'(A)') card
-
628 
-
629  card=cardi4
-
630  card( 2: 2)=' '
-
631  card(79:79)=' '
-
632  card(15:64)=' USER DEFINITIONS FOR TABLE-A TABLE-B TABLE D '
+
619  im8b=.true.
+
620  return
+
621  endif
+
622 
+
623  ! Determine lun from lunit.
+
624 
+
625  call status(lunit,lun,il,im)
+
626  if(il==0) call bort('BUFRLIB: DXDUMP - BUFR FILE IS CLOSED, IT MUST BE OPEN')
+
627 
+
628  ! Create and write out (to ldxot) the header cards for the descriptor definition section.
+
629 
+
630  card=cardi4
+
631  card( 1: 1)='.'
+
632  card(80:80)='.'
633  write (ldxot,'(A)') card
634 
-
635  write (ldxot,'(A)') cardi4
-
636 
-
637  card=cardi1
-
638  card( 3:10)='MNEMONIC'
-
639  card(14:19)='NUMBER'
-
640  card(23:33)='DESCRIPTION'
-
641  write (ldxot,'(A)') card
+
635  card=cardi4
+
636  card( 2: 2)=' '
+
637  card(79:79)=' '
+
638  card(15:64)=' USER DEFINITIONS FOR TABLE-A TABLE-B TABLE D '
+
639  write (ldxot,'(A)') card
+
640 
+
641  write (ldxot,'(A)') cardi4
642 
-
643  card=cardi4
-
644  card(12:12)='|'
-
645  card(21:21)='|'
-
646  write (ldxot,'(A)') card
-
647 
-
648  ! Create and write out (to ldxot) the Table D descriptor definition cards.
-
649 
-
650  write (ldxot,'(A)') cardi1
-
651 
-
652  xtrci1=.false.
-
653  do n=1,ntbd(lun)
-
654  if(.not.tdskip(tabd(n,lun)(1:6))) then
-
655  card=cardi1
-
656  card( 3:10)=tabd(n,lun)( 7:14)
-
657  card(14:19)=tabd(n,lun)( 1: 6)
-
658  card(23:77)=tabd(n,lun)(16:70)
-
659  ! Check if this Table D mnemonic is also a Table A mnemonic. If so, then label it as such and also check if it is the
-
660  ! last of the Table A mnemonics, in which case an extra cardi1 line will be written to ldxot in order to separate
-
661  ! the Table A mnemonics from the other Table D mnemonics.
-
662  do na=1,ntba(lun)
-
663  if(taba(na,lun)(4:11)==tabd(n,lun)(7:14)) then
-
664  card(14:14)='A'
-
665  if(na==ntba(lun)) xtrci1=.true.
-
666  exit
-
667  end if
-
668  end do
-
669  write (ldxot,'(A)') card
-
670  if(xtrci1) then
-
671  write (ldxot,'(A)') cardi1
-
672  xtrci1=.false.
-
673  end if
-
674  end if
-
675  end do
-
676 
-
677  ! Create and write out (to ldxot) the Table B descriptor definition cards.
-
678 
-
679  write (ldxot,'(A)') cardi1
-
680 
-
681  do n=1,ntbb(lun)
-
682  if(.not.tbskip(tabb(n,lun)(1:6))) then
-
683  card=cardi1
-
684  card( 3:10)=tabb(n,lun)( 7:14)
-
685  card(14:19)=tabb(n,lun)( 1: 6)
-
686  card(23:77)=tabb(n,lun)(16:70)
-
687  write (ldxot,'(A)') card
-
688  end if
-
689  end do
-
690 
-
691  write (ldxot,'(A)') cardi1
-
692 
-
693  ! Create and write out (to ldxot) the header cards for the sequence definition section.
-
694 
-
695  write (ldxot,'(A)') cardi4
+
643  card=cardi1
+
644  card( 3:10)='MNEMONIC'
+
645  card(14:19)='NUMBER'
+
646  card(23:33)='DESCRIPTION'
+
647  write (ldxot,'(A)') card
+
648 
+
649  card=cardi4
+
650  card(12:12)='|'
+
651  card(21:21)='|'
+
652  write (ldxot,'(A)') card
+
653 
+
654  ! Create and write out (to ldxot) the Table D descriptor definition cards.
+
655 
+
656  write (ldxot,'(A)') cardi1
+
657 
+
658  xtrci1=.false.
+
659  do n=1,ntbd(lun)
+
660  if(.not.tdskip(tabd(n,lun)(1:6))) then
+
661  card=cardi1
+
662  card( 3:10)=tabd(n,lun)( 7:14)
+
663  card(14:19)=tabd(n,lun)( 1: 6)
+
664  card(23:77)=tabd(n,lun)(16:70)
+
665  ! Check if this Table D mnemonic is also a Table A mnemonic. If so, then label it as such and also check if it is the
+
666  ! last of the Table A mnemonics, in which case an extra cardi1 line will be written to ldxot in order to separate
+
667  ! the Table A mnemonics from the other Table D mnemonics.
+
668  do na=1,ntba(lun)
+
669  if(taba(na,lun)(4:11)==tabd(n,lun)(7:14)) then
+
670  card(14:14)='A'
+
671  if(na==ntba(lun)) xtrci1=.true.
+
672  exit
+
673  end if
+
674  end do
+
675  write (ldxot,'(A)') card
+
676  if(xtrci1) then
+
677  write (ldxot,'(A)') cardi1
+
678  xtrci1=.false.
+
679  end if
+
680  end if
+
681  end do
+
682 
+
683  ! Create and write out (to ldxot) the Table B descriptor definition cards.
+
684 
+
685  write (ldxot,'(A)') cardi1
+
686 
+
687  do n=1,ntbb(lun)
+
688  if(.not.tbskip(tabb(n,lun)(1:6))) then
+
689  card=cardi1
+
690  card( 3:10)=tabb(n,lun)( 7:14)
+
691  card(14:19)=tabb(n,lun)( 1: 6)
+
692  card(23:77)=tabb(n,lun)(16:70)
+
693  write (ldxot,'(A)') card
+
694  end if
+
695  end do
696 
-
697  card=cardi2
-
698  card( 3:10)='MNEMONIC'
-
699  card(14:21)='SEQUENCE'
-
700  write (ldxot,'(A)') card
-
701 
-
702  card=cardi4
-
703  card(12:12)='|'
-
704  write (ldxot,'(A)') card
-
705 
-
706  ! Create and write out (to ldxot) the Table D sequence definition cards.
+
697  write (ldxot,'(A)') cardi1
+
698 
+
699  ! Create and write out (to ldxot) the header cards for the sequence definition section.
+
700 
+
701  write (ldxot,'(A)') cardi4
+
702 
+
703  card=cardi2
+
704  card( 3:10)='MNEMONIC'
+
705  card(14:21)='SEQUENCE'
+
706  write (ldxot,'(A)') card
707 
-
708  write (ldxot,'(A)') cardi2
-
709 
-
710  do n=1,ntbd(lun)
-
711  if(.not.tdskip(tabd(n,lun)(1:6))) then
-
712  card=cardi2
-
713  card( 3:10)=tabd(n,lun)( 7:14)
-
714  ic = 14
-
715  ! Get the list of child mnemonics for this Table D descriptor, and then add each one (including any replication tags)
-
716  ! to the sequence definition card for this Table D descriptor.
-
717  call nemtbd(lun,n,nseq,nem(1,1),irp(1,1),krp(1,1))
-
718  if(nseq>0) then
-
719  do nc=1,nseq
-
720  cmstr=' '
-
721  icms=0
-
722  call strsuc(nem(nc,1),wrk2,nch)
-
723  if(irp(nc,1)/=0) then
-
724  ! Add the opening replication tag.
-
725  icms=icms+1
-
726  cmstr(icms:icms)=reps(irp(nc,1))
-
727  end if
-
728  cmstr(icms+1:icms+nch)=wrk2(1:nch)
-
729  icms=icms+nch
-
730  if(irp(nc,1)/=0) then
-
731  ! Add the closing replication tag.
-
732  icms=icms+1
-
733  cmstr(icms:icms)=reps(irp(nc,1)+5)
-
734  end if
-
735  if(krp(nc,1)/=0) then
-
736  ! Add the fixed replication count.
-
737  wrk1=' '
-
738  write (wrk1,'(I3)') krp(nc,1)
-
739  call strsuc(wrk1,wrk2,nch)
-
740  cmstr(icms+1:icms+nch)=wrk2(1:nch)
-
741  icms=icms+nch
-
742  end if
-
743  ! Will this child (and its replication tags, if any) fit into the current sequence definition card? If not, then
-
744  ! write out (to ldxot) the current card and initialize a new one to hold this child.
-
745  if(ic>(79-icms)) then
-
746  write (ldxot,'(A)') card
-
747  card=cardi2
-
748  card( 3:10)=tabd(n,lun)( 7:14)
-
749  ic = 14
-
750  end if
-
751  card(ic:ic+icms-1)=cmstr(1:icms)
-
752  ! Note that we want to leave 2 blank spaces between each child within the sequence definition card, to improve
-
753  ! readability.
-
754  ic=ic+icms+2
-
755  end do
-
756  write (ldxot,'(A)') card
-
757  write (ldxot,'(A)') cardi2
-
758  end if
-
759  end if
-
760  end do
-
761 
-
762  ! Create and write out (to ldxot) the header cards for the element definition section.
-
763 
-
764  write (ldxot,'(A)') cardi4
-
765 
-
766  card=cardi3
-
767  card( 3:10)='MNEMONIC'
-
768  card(14:17)='SCAL'
-
769  card(21:29)='REFERENCE'
-
770  card(35:37)='BIT'
-
771  card(41:45)='UNITS'
-
772  write (ldxot,'(A)') card
-
773 
-
774  card=cardi4
-
775  card(12:12)='|'
-
776  card(19:19)='|'
-
777  card(33:33)='|'
-
778  card(39:39)='|'
-
779  card(66:66)='|'
-
780  write (ldxot,'(A)') card
-
781 
-
782  ! Create and write out (to ldxot) the Table B element definition cards.
-
783 
-
784  write (ldxot,'(A)') cardi3
-
785 
-
786  do n=1,ntbb(lun)
-
787  if(.not.tbskip(tabb(n,lun)(1:6))) then
-
788  card=cardi3
-
789  card( 3:10)=tabb(n,lun)( 7:14)
-
790  card(41:64)=tabb(n,lun)(71:94)
-
791  ! Add the scale factor.
-
792  call strsuc(tabb(n,lun)(96:98),wrk2,nch)
-
793  card(17-nch+1:17)=wrk2
-
794  if(tabb(n,lun)(95:95)=='-') card(17-nch:17-nch)='-'
-
795  ! Add the reference value.
-
796  call strsuc(tabb(n,lun)(100:109),wrk3,nch)
-
797  card(31-nch+1:31)=wrk3
-
798  if(tabb(n,lun)(99:99)=='-') card(31-nch:31-nch)='-'
-
799  ! Add the bit width.
-
800  call strsuc(tabb(n,lun)(110:112),wrk2,nch)
-
801  card(37-nch+1:37)=wrk2
-
802  write (ldxot,'(a)') card
-
803  end if
-
804  end do
-
805 
-
806  write (ldxot,'(A)') cardi3
-
807 
-
808  ! Create and write out (to ldxot) the closing card.
-
809 
-
810  card=cardi4
-
811  card( 1: 1)='`'
-
812  card(80:80)=''''
-
813  write (ldxot,'(A)') card
-
814 
-
815  return
-
816 end subroutine dxdump
-
817 
-
828 recursive subroutine getabdb(lunit,tabdb,itab,jtab)
-
829 
-
830  use modv_vars, only: im8b
-
831 
-
832  use moda_tababd
-
833  use moda_nmikrp
-
834 
-
835  implicit none
-
836 
-
837  integer, intent(in) :: lunit, itab
-
838  integer, intent(out) :: jtab
-
839  integer my_lunit, my_itab, lun, il, im, i, j, k, nseq
+
708  card=cardi4
+
709  card(12:12)='|'
+
710  write (ldxot,'(A)') card
+
711 
+
712  ! Create and write out (to ldxot) the Table D sequence definition cards.
+
713 
+
714  write (ldxot,'(A)') cardi2
+
715 
+
716  do n=1,ntbd(lun)
+
717  if(.not.tdskip(tabd(n,lun)(1:6))) then
+
718  card=cardi2
+
719  card( 3:10)=tabd(n,lun)( 7:14)
+
720  ic = 14
+
721  ! Get the list of child mnemonics for this Table D descriptor, and then add each one (including any replication tags)
+
722  ! to the sequence definition card for this Table D descriptor.
+
723  call nemtbd(lun,n,nseq,nem(1,1),irp(1,1),krp(1,1))
+
724  if(nseq>0) then
+
725  do nc=1,nseq
+
726  cmstr=' '
+
727  icms=0
+
728  call strsuc(nem(nc,1),wrk2,nch)
+
729  if(irp(nc,1)/=0) then
+
730  ! Add the opening replication tag.
+
731  icms=icms+1
+
732  cmstr(icms:icms)=reps(irp(nc,1))
+
733  end if
+
734  cmstr(icms+1:icms+nch)=wrk2(1:nch)
+
735  icms=icms+nch
+
736  if(irp(nc,1)/=0) then
+
737  ! Add the closing replication tag.
+
738  icms=icms+1
+
739  cmstr(icms:icms)=reps(irp(nc,1)+5)
+
740  end if
+
741  if(krp(nc,1)/=0) then
+
742  ! Add the fixed replication count.
+
743  wrk1=' '
+
744  write (wrk1,'(I3)') krp(nc,1)
+
745  call strsuc(wrk1,wrk2,nch)
+
746  cmstr(icms+1:icms+nch)=wrk2(1:nch)
+
747  icms=icms+nch
+
748  end if
+
749  ! Will this child (and its replication tags, if any) fit into the current sequence definition card? If not, then
+
750  ! write out (to ldxot) the current card and initialize a new one to hold this child.
+
751  if(ic>(79-icms)) then
+
752  write (ldxot,'(A)') card
+
753  card=cardi2
+
754  card( 3:10)=tabd(n,lun)( 7:14)
+
755  ic = 14
+
756  end if
+
757  card(ic:ic+icms-1)=cmstr(1:icms)
+
758  ! Note that we want to leave 2 blank spaces between each child within the sequence definition card, to improve
+
759  ! readability.
+
760  ic=ic+icms+2
+
761  end do
+
762  write (ldxot,'(A)') card
+
763  write (ldxot,'(A)') cardi2
+
764  end if
+
765  end if
+
766  end do
+
767 
+
768  ! Create and write out (to ldxot) the header cards for the element definition section.
+
769 
+
770  write (ldxot,'(A)') cardi4
+
771 
+
772  card=cardi3
+
773  card( 3:10)='MNEMONIC'
+
774  card(14:17)='SCAL'
+
775  card(21:29)='REFERENCE'
+
776  card(35:37)='BIT'
+
777  card(41:45)='UNITS'
+
778  write (ldxot,'(A)') card
+
779 
+
780  card=cardi4
+
781  card(12:12)='|'
+
782  card(19:19)='|'
+
783  card(33:33)='|'
+
784  card(39:39)='|'
+
785  card(66:66)='|'
+
786  write (ldxot,'(A)') card
+
787 
+
788  ! Create and write out (to ldxot) the Table B element definition cards.
+
789 
+
790  write (ldxot,'(A)') cardi3
+
791 
+
792  do n=1,ntbb(lun)
+
793  if(.not.tbskip(tabb(n,lun)(1:6))) then
+
794  card=cardi3
+
795  card( 3:10)=tabb(n,lun)( 7:14)
+
796  card(41:64)=tabb(n,lun)(71:94)
+
797  ! Add the scale factor.
+
798  call strsuc(tabb(n,lun)(96:98),wrk2,nch)
+
799  card(17-nch+1:17)=wrk2
+
800  if(tabb(n,lun)(95:95)=='-') card(17-nch:17-nch)='-'
+
801  ! Add the reference value.
+
802  call strsuc(tabb(n,lun)(100:109),wrk3,nch)
+
803  card(31-nch+1:31)=wrk3
+
804  if(tabb(n,lun)(99:99)=='-') card(31-nch:31-nch)='-'
+
805  ! Add the bit width.
+
806  call strsuc(tabb(n,lun)(110:112),wrk2,nch)
+
807  card(37-nch+1:37)=wrk2
+
808  write (ldxot,'(a)') card
+
809  end if
+
810  end do
+
811 
+
812  write (ldxot,'(A)') cardi3
+
813 
+
814  ! Create and write out (to ldxot) the closing card.
+
815 
+
816  card=cardi4
+
817  card( 1: 1)='`'
+
818  card(80:80)=''''
+
819  write (ldxot,'(A)') card
+
820 
+
821  return
+
822 end subroutine dxdump
+
823 
+
834 recursive subroutine getabdb(lunit,tabdb,itab,jtab)
+
835 
+
836  use modv_vars, only: im8b
+
837 
+
838  use moda_tababd
+
839  use moda_nmikrp
840 
-
841  character*128, intent(out) :: tabdb(*)
-
842  character*8 nemo
-
843 
-
844  ! Check for I8 integers
-
845 
-
846  if(im8b) then
-
847  im8b=.false.
-
848  call x84(lunit,my_lunit,1)
-
849  call x84(itab,my_itab,1)
-
850  call getabdb(my_lunit,tabdb,my_itab,jtab)
-
851  call x48(jtab,jtab,1)
-
852  im8b=.true.
-
853  return
-
854  endif
-
855 
-
856  jtab = 0
-
857 
-
858  ! Make sure the file is open
-
859 
-
860  call status(lunit,lun,il,im)
-
861  if(il==0) return
-
862 
-
863  ! Write out the Table D entries for this file
-
864 
-
865  do i=1,ntbd(lun)
-
866  nemo = tabd(i,lun)(7:14)
-
867  call nemtbd(lun,i,nseq,nem(1,1),irp(1,1),krp(1,1))
-
868  do j=1,nseq,10
-
869  jtab = jtab+1
-
870  if(jtab<=itab) then
-
871  write(tabdb(jtab),fmt='(A,A8,10(1X,A10))') 'D ', nemo, (nem(k,1),k=j,min(j+9,nseq))
-
872  endif
-
873  enddo
-
874  enddo
-
875 
-
876  ! Add the Table B entries
-
877 
-
878  do i=1,ntbb(lun)
-
879  jtab = jtab+1
-
880  if(jtab<=itab) then
-
881  write(tabdb(jtab),fmt='(A,A8,1X,A42)') 'B ', tabb(i,lun)(7:14), tabb(i,lun)(71:112)
-
882  endif
-
883  enddo
-
884 
-
885  return
-
886 end subroutine getabdb
+
841  implicit none
+
842 
+
843  integer, intent(in) :: lunit, itab
+
844  integer, intent(out) :: jtab
+
845  integer my_lunit, my_itab, lun, il, im, i, j, k, nseq
+
846 
+
847  character*128, intent(out) :: tabdb(*)
+
848  character*8 nemo
+
849 
+
850  ! Check for I8 integers
+
851 
+
852  if(im8b) then
+
853  im8b=.false.
+
854  call x84(lunit,my_lunit,1)
+
855  call x84(itab,my_itab,1)
+
856  call getabdb(my_lunit,tabdb,my_itab,jtab)
+
857  call x48(jtab,jtab,1)
+
858  im8b=.true.
+
859  return
+
860  endif
+
861 
+
862  jtab = 0
+
863 
+
864  ! Make sure the file is open
+
865 
+
866  call status(lunit,lun,il,im)
+
867  if(il==0) return
+
868 
+
869  ! Write out the Table D entries for this file
+
870 
+
871  do i=1,ntbd(lun)
+
872  nemo = tabd(i,lun)(7:14)
+
873  call nemtbd(lun,i,nseq,nem(1,1),irp(1,1),krp(1,1))
+
874  do j=1,nseq,10
+
875  jtab = jtab+1
+
876  if(jtab<=itab) then
+
877  write(tabdb(jtab),fmt='(A,A8,10(1X,A10))') 'D ', nemo, (nem(k,1),k=j,min(j+9,nseq))
+
878  endif
+
879  enddo
+
880  enddo
+
881 
+
882  ! Add the Table B entries
+
883 
+
884  do i=1,ntbb(lun)
+
885  jtab = jtab+1
+
886  if(jtab<=itab) then
+
887  write(tabdb(jtab),fmt='(A,A8,1X,A42)') 'B ', tabb(i,lun)(7:14), tabb(i,lun)(71:112)
+
888  endif
+
889  enddo
+
890 
+
891  return
+
892 end subroutine getabdb
+
integer function imrkopr(nemo)
Check whether a specified mnemonic is a Table C marker operator.
Definition: bitmaps.F90:361
subroutine bort(str)
Log an error message, then abort the application program.
Definition: borts.F90:15
recursive subroutine upftbv(lunit, nemo, val, mxib, ibit, nib)
Given a Table B mnemonic with flag table units and a corresponding numerical data value,...
Definition: cftbvs.F90:70
recursive subroutine ufdump(lunit, luprt)
Print a verbose listing of the contents of a data subset, including all data values and replicated se...
Definition: dumpdata.F90:228
-
recursive subroutine getabdb(lunit, tabdb, itab, jtab)
Get Table B and Table D information from the internal DX BUFR tables.
Definition: dumpdata.F90:829
-
recursive subroutine dxdump(lunit, ldxot)
Print a copy of the DX BUFR table associated with a specified Fortran logical unit.
Definition: dumpdata.F90:580
+
recursive subroutine getabdb(lunit, tabdb, itab, jtab)
Get Table B and Table D information from the internal DX BUFR tables.
Definition: dumpdata.F90:835
+
recursive subroutine dxdump(lunit, ldxot)
Print a copy of the DX BUFR table associated with a specified Fortran logical unit.
Definition: dumpdata.F90:585
recursive subroutine ufbdmp(lunin, luprt)
Print a verbose listing of the contents of a data subset, including all data values and replicated se...
Definition: dumpdata.F90:42
-
subroutine nemtbd(lun, itab, nseq, nems, irps, knts)
Get information about a Table D descriptor from the internal DX BUFR tables.
Definition: dxtable.F90:1346
-
subroutine nemtab(lun, nemo, idn, tab, iret)
Get information about a descriptor, based on a mnemonic.
Definition: fxy.F90:432
+
subroutine nemtbd(lun, itab, nseq, nems, irps, knts)
Get information about a Table D descriptor from the internal DX BUFR tables.
Definition: dxtable.F90:1337
+
subroutine nemtab(lun, nemo, idn, tab, iret)
Get information about a descriptor, based on a mnemonic.
Definition: fxy.F90:434
subroutine numtbd(lun, idn, nemo, tab, iret)
Get information about a Table B or Table D descriptor, based on the WMO bit-wise representation of an...
Definition: fxy.F90:290
- -
integer function ireadmt(lun)
Check the most recent BUFR message that was read via a call to one of the message-reading subroutines...
-
subroutine strsuc(str1, str2, lens)
Remove leading and trailing blanks from a character string.
Definition: misc.F90:220
-
integer function isize(num)
Compute the number of characters needed to encode an integer as a string.
Definition: misc.F90:408
+ +
integer function ireadmt(lun)
Check the most recent BUFR message that was read via a call to one of the message-reading subroutines...
+
subroutine strsuc(str1, str2, lens)
Remove leading and trailing blanks from a character string.
Definition: misc.F90:199
+
integer function isize(num)
Compute the number of characters needed to encode an integer as a string.
Definition: misc.F90:385
recursive integer function icbfms(str, lstr)
Check whether a character string returned from a previous call to subroutine readlc() was encoded as ...
Definition: missing.F90:56
integer function ibfms(r8val)
Check whether a real*8 data value returned from a previous call to any of the NCEPLIBS-bufr values-re...
Definition: missing.F90:25
Wrap C NCEPLIBS-bufr functions so they can be called from within the Fortran part of the library.
Definition: bufrlib.F90:11
@@ -885,35 +892,35 @@
integer, dimension(:,:), allocatable krp
Replication counts corresponding to nem:
integer, dimension(:,:), allocatable irp
Replication indicators corresponding to nem:
character *8, dimension(:,:), allocatable nem
Child mnemonics within Table D sequences.
-
Declare arrays and variables for use with any 2-03-YYY (change reference value) operators present wit...
-
integer nnrv
Number of entries in the jump/link table which contain new reference values (up to a maximum of mxnrv...
-
integer, dimension(:), allocatable inodnrv
Entries within jump/link table which contain new reference values.
-
Declare arrays and variables used to store DX BUFR tables internally for multiple file IDs.
-
integer, dimension(:), allocatable ntba
Number of Table A entries for each file ID (up to a maximum of maxtba, whose value is stored in array...
-
character *600, dimension(:,:), allocatable tabd
Table D entries for each file ID.
-
character *128, dimension(:,:), allocatable taba
Table A entries for each file ID.
-
integer, dimension(:), allocatable ntbd
Number of Table D entries for each file ID (up to a maximum of maxtbd, whose value is stored in array...
-
integer, dimension(:), allocatable ntbb
Number of Table B entries for each file ID (up to a maximum of maxtbb, whose value is stored in array...
-
character *128, dimension(:,:), allocatable tabb
Table B entries for each file ID.
-
Declare a variable used to indicate whether master code and flag tables should be read.
-
character cdmf
Flag indicating whether to include code and flag table information during reads of master BUFR tables...
-
Declare arrays and variables used to store the internal jump/link table.
-
integer, dimension(:), allocatable irf
Reference values corresponding to tag and typ:
-
integer, dimension(:), allocatable isc
Scale factors corresponding to tag and typ:
-
integer, dimension(:), allocatable ibt
Bit widths corresponding to tag and typ:
-
character *3, dimension(:), allocatable typ
Type indicators corresponding to tag:
-
integer, dimension(:), allocatable jmpb
Jump backward indices corresponding to tag and typ:
-
character *10, dimension(:), allocatable tag
Mnemonics in the jump/link table.
-
integer, dimension(:), allocatable jump
Jump forward indices corresponding to tag and typ:
-
integer, dimension(:), allocatable itp
Integer type values corresponding to typ:
-
integer, dimension(:), allocatable link
Link indices corresponding to tag, typ and jmpb:
-
Declare arrays used to store data values and associated metadata for the current BUFR data subset in ...
-
integer, dimension(:), allocatable nval
Number of data values in BUFR data subset.
-
real *8, dimension(:,:), allocatable, target val
Data values.
-
integer, dimension(:,:), allocatable, target inv
Inventory pointer which links each data value to its corresponding node in the internal jump/link tab...
-
integer, dimension(:,:), allocatable nrfelm
Referenced data value, for data values which refer to a previous data value in the BUFR data subset v...
-
recursive subroutine status(lunit, lun, il, im)
Check whether a specified Fortran logical unit number is currently connected to the NCEPLIBS-bufr sof...
-
recursive subroutine readlc(lunit, chr, str)
Read a long character string (greater than 8 bytes) from a data subset.
+
Declare arrays and variables for use with any 2-03-YYY (change reference value) operators present wit...
+
integer nnrv
Number of entries in the jump/link table which contain new reference values (up to a maximum of mxnrv...
+
integer, dimension(:), allocatable inodnrv
Entries within jump/link table which contain new reference values.
+
Declare arrays and variables used to store DX BUFR tables internally for multiple file IDs.
+
integer, dimension(:), allocatable ntba
Number of Table A entries for each file ID (up to a maximum of maxtba, whose value is stored in array...
+
character *600, dimension(:,:), allocatable tabd
Table D entries for each file ID.
+
character *128, dimension(:,:), allocatable taba
Table A entries for each file ID.
+
integer, dimension(:), allocatable ntbd
Number of Table D entries for each file ID (up to a maximum of maxtbd, whose value is stored in array...
+
integer, dimension(:), allocatable ntbb
Number of Table B entries for each file ID (up to a maximum of maxtbb, whose value is stored in array...
+
character *128, dimension(:,:), allocatable tabb
Table B entries for each file ID.
+
Declare a variable used to indicate whether master code and flag tables should be read.
+
character cdmf
Flag indicating whether to include code and flag table information during reads of master BUFR tables...
+
Declare arrays and variables used to store the internal jump/link table.
+
integer, dimension(:), allocatable irf
Reference values corresponding to tag and typ:
+
integer, dimension(:), allocatable isc
Scale factors corresponding to tag and typ:
+
integer, dimension(:), allocatable ibt
Bit widths corresponding to tag and typ:
+
character *3, dimension(:), allocatable typ
Type indicators corresponding to tag:
+
integer, dimension(:), allocatable jmpb
Jump backward indices corresponding to tag and typ:
+
character *10, dimension(:), allocatable tag
Mnemonics in the jump/link table.
+
integer, dimension(:), allocatable jump
Jump forward indices corresponding to tag and typ:
+
integer, dimension(:), allocatable itp
Integer type values corresponding to typ:
+
integer, dimension(:), allocatable link
Link indices corresponding to tag, typ and jmpb:
+
Declare arrays used to store data values and associated metadata for the current BUFR data subset in ...
+
integer, dimension(:), allocatable nval
Number of data values in BUFR data subset.
+
real *8, dimension(:,:), allocatable, target val
Data values.
+
integer, dimension(:,:), allocatable, target inv
Inventory pointer which links each data value to its corresponding node in the internal jump/link tab...
+
integer, dimension(:,:), allocatable nrfelm
Referenced data value, for data values which refer to a previous data value in the BUFR data subset v...
+
recursive subroutine status(lunit, lun, il, im)
Check whether a specified Fortran logical unit number is currently connected to the NCEPLIBS-bufr sof...
+
recursive subroutine readlc(lunit, chr, str)
Read a long character string (greater than 8 bytes) from a data subset.
subroutine x48(iin4, iout8, nval)
Encode one or more 4-byte integer values as 8-byte integer values.
Definition: x4884.F90:18
subroutine x84(iin8, iout4, nval)
Encode one or more 8-byte integer values as 4-byte integer values.
Definition: x4884.F90:65
diff --git a/dxtable_8F90.html b/dxtable_8F90.html index 44f1b5937..1b403ed5e 100644 --- a/dxtable_8F90.html +++ b/dxtable_8F90.html @@ -26,7 +26,7 @@ @@ -288,7 +288,7 @@

Author
Woollen
Date
1994-01-06
-

Definition at line 696 of file dxtable.F90.

+

Definition at line 692 of file dxtable.F90.

References bort(), pkb(), and pkc().

@@ -373,7 +373,7 @@

Author
J. Ator
Date
2009-03-23
-

Definition at line 1122 of file dxtable.F90.

+

Definition at line 1113 of file dxtable.F90.

References iupbs01().

@@ -424,7 +424,7 @@

Author
J. Ator
Date
2009-03-23
-

Definition at line 1152 of file dxtable.F90.

+

Definition at line 1143 of file dxtable.F90.

References bort(), moda_tababd::ntba, moda_tababd::ntbb, and moda_tababd::ntbd.

@@ -496,7 +496,7 @@

Author
J. Ator
Date
2014-10-02
-

Definition at line 1445 of file dxtable.F90.

+

Definition at line 1436 of file dxtable.F90.

References nemtab(), status(), moda_tababd::tabb, x48(), and x84().

@@ -563,7 +563,7 @@

Author
J. Woollen
Date
1999-11-18
-

Definition at line 1246 of file dxtable.F90.

+

Definition at line 1237 of file dxtable.F90.

References bort(), and nemtbax().

@@ -633,7 +633,7 @@

Author
J. Woollen
Date
1999-11-18
-

Definition at line 1196 of file dxtable.F90.

+

Definition at line 1187 of file dxtable.F90.

References bort(), moda_tababd::idna, moda_tababd::mtab, moda_tababd::ntba, and moda_tababd::taba.

@@ -706,7 +706,7 @@

Author
J. Woollen
Date
1994-01-06
-

Definition at line 1277 of file dxtable.F90.

+

Definition at line 1268 of file dxtable.F90.

References bort(), moda_tababd::idnb, moda_tababd::ntbb, strnum(), and moda_tababd::tabb.

@@ -795,7 +795,7 @@

Author
J. Woollen
Date
1994-01-06
-

Definition at line 1345 of file dxtable.F90.

+

Definition at line 1336 of file dxtable.F90.

References bort(), moda_tababd::idnd, moda_tababd::ntbd, numtab(), rsvfvm(), moda_tababd::tabd, and uptdd().

@@ -848,7 +848,7 @@

Author
J. Woollen
Date
1994-01-06
-

Definition at line 1513 of file dxtable.F90.

+

Definition at line 1504 of file dxtable.F90.

References bort(), moda_tababd::ntbb, moda_tababd::ntbd, moda_tababd::tabb, and moda_tababd::tabd.

@@ -915,7 +915,7 @@

Author
Woollen
Date
1994-01-06
-

Definition at line 1665 of file dxtable.F90.

+

Definition at line 1656 of file dxtable.F90.

References errwrt(), ipkm(), and moda_tababd::tabd.

@@ -1123,7 +1123,7 @@

Author
Woollen
Date
1994-01-06
-

Definition at line 1794 of file dxtable.F90.

+

Definition at line 1786 of file dxtable.F90.

Referenced by nemtbd(), and seqsdx().

@@ -1211,7 +1211,7 @@

Author
J. Ator
Date
2009-03-23
-

Definition at line 989 of file dxtable.F90.

+

Definition at line 980 of file dxtable.F90.

References bort(), capit(), getlens(), moda_tababd::idnb, moda_tababd::idnd, nenubd(), moda_tababd::ntbb, moda_tababd::ntbd, pktdd(), stntbia(), moda_tababd::taba, moda_tababd::tabb, moda_tababd::tabd, and upc().

@@ -1277,7 +1277,7 @@

Author
Ator
Date
2009-03-23
-

Definition at line 1620 of file dxtable.F90.

+

Definition at line 1611 of file dxtable.F90.

References moda_tababd::idnb, moda_tababd::idnd, nenubd(), moda_tababd::ntbb, moda_tababd::ntbd, moda_tababd::tabb, and moda_tababd::tabd.

@@ -1343,7 +1343,7 @@

Author
Ator
Date
2009-03-23
-

Definition at line 1559 of file dxtable.F90.

+

Definition at line 1550 of file dxtable.F90.

References bort(), moda_tababd::idna, moda_tababd::ntba, and moda_tababd::taba.

@@ -1410,7 +1410,7 @@

Author
J. Woollen
Date
1994-01-06
-

Definition at line 1740 of file dxtable.F90.

+

Definition at line 1730 of file dxtable.F90.

References bort(), and moda_tababd::tabd.

@@ -1456,9 +1456,9 @@

Author
J. Ator
Date
2009-03-23
-

Definition at line 849 of file dxtable.F90.

+

Definition at line 839 of file dxtable.F90.

-

References adn30(), bort(), cpbfdx(), dxmini(), getlens(), iupb(), iupm(), moda_mgwa::mgwa, msgfull(), msgwrt(), moda_tababd::ntba, moda_tababd::ntbb, moda_tababd::ntbd, pkb(), pkc(), status(), moda_tababd::taba, moda_tababd::tabb, moda_tababd::tabd, and x84().

+

References adn30(), bort(), cpbfdx(), dxmini(), getlens(), iupb(), iupm(), moda_bitbuf::maxbyt, moda_mgwa::mgwa, msgfull(), msgwrt(), moda_tababd::ntba, moda_tababd::ntbb, moda_tababd::ntbd, pkb(), pkc(), status(), moda_tababd::taba, moda_tababd::tabb, moda_tababd::tabd, and x84().

Referenced by apxdx(), makestab(), and writdx().

@@ -1509,7 +1509,7 @@

Author
Woollen
Date
1994-01-06
-

Definition at line 811 of file dxtable.F90.

+

Definition at line 801 of file dxtable.F90.

References bort(), readdx(), and wrdxtb().

diff --git a/dxtable_8F90_source.html b/dxtable_8F90_source.html index 8b7515df5..e539ecd97 100644 --- a/dxtable_8F90_source.html +++ b/dxtable_8F90_source.html @@ -26,7 +26,7 @@

@@ -90,14 +90,14 @@
5 
28 subroutine readdx(lunit,lun,lundx)
29 
-
30  implicit none
+
30  use modv_vars, only: iprt
31 
-
32  integer, intent(in) :: lunit, lun, lundx
-
33  integer iprt, lud, ildx, imdx
-
34 
-
35  character*128 errstr
+
32  implicit none
+
33 
+
34  integer, intent(in) :: lunit, lun, lundx
+
35  integer lud, ildx, imdx
36 
-
37  common /quiet/ iprt
+
37  character*128 errstr
38 
39  ! Get the status of unit lundx
40 
@@ -164,18 +164,18 @@
121 
122  use bufrlib
123 
-
124  use moda_mgwa
+
124  use modv_vars, only: iprt
125 
-
126  implicit none
+
126  use moda_mgwa
127 
-
128  integer, intent(in) :: lunit, lun
-
129  integer iprt, ict, ier, idxmsg, iupbs3
-
130 
-
131  character*128 errstr
+
128  implicit none
+
129 
+
130  integer, intent(in) :: lunit, lun
+
131  integer ict, ier, idxmsg, iupbs3
132 
-
133  logical done
+
133  character*128 errstr
134 
-
135  common /quiet/ iprt
+
135  logical done
136 
137  call dxinit(lun,0)
138 
@@ -610,992 +610,984 @@
595 
605 subroutine dxinit(lun,ioi)
606 
-
607  use modv_vars, only: idnr
+
607  use modv_vars, only: idnr, fxy_fbit, fxy_sbyct, fxy_drf16, fxy_drf8, fxy_drf1
608 
609  use moda_tababd
610 
611  implicit none
612 
613  integer, intent(in) :: lun, ioi
-
614  integer ibct, ipd1, ipd2, ipd3, ipd4, ninib, ninid, n, i, iret, ifxy
+
614  integer ninib, ninid, n, i, iret, ifxy
615 
616  character*8 inib(6,5),inid(5)
617  character*6 adn30
618 
-
619  common /padesc/ ibct, ipd1, ipd2, ipd3, ipd4
-
620 
-
621  data inib /'------','BYTCNT ','BYTES ','+0','+0','16', &
-
622  '------','BITPAD ','NONE ','+0','+0','1 ', &
-
623  '031000','DRF1BIT ','NUMERIC','+0','+0','1 ', &
-
624  '031001','DRF8BIT ','NUMERIC','+0','+0','8 ', &
-
625  '031002','DRF16BIT','NUMERIC','+0','+0','16'/
-
626  data ninib /5/
-
627 
-
628  data inid /' ', &
-
629  'DRP16BIT', &
-
630  'DRP8BIT ', &
-
631  'DRPSTAK ', &
-
632  'DRP1BIT '/
-
633  data ninid /5/
+
619  data inib / '------','BYTCNT ','BYTES ','+0','+0','16', &
+
620  '------','BITPAD ','NONE ','+0','+0','1 ', &
+
621  fxy_drf1,'DRF1BIT ','NUMERIC','+0','+0','1 ', &
+
622  fxy_drf8,'DRF8BIT ','NUMERIC','+0','+0','8 ', &
+
623  fxy_drf16,'DRF16BIT','NUMERIC','+0','+0','16'/
+
624  data ninib /5/
+
625 
+
626  data inid /' ', &
+
627  'DRP16BIT', &
+
628  'DRP8BIT ', &
+
629  'DRPSTAK ', &
+
630  'DRP1BIT '/
+
631  data ninid /5/
+
632 
+
633  ! Clear out a table partition
634 
-
635  ! Clear out a table partition
-
636 
-
637  ntba(lun) = 0
-
638  do i=1,ntba(0)
-
639  taba(i,lun) = ' '
-
640  mtab(i,lun) = 0
-
641  enddo
-
642 
-
643  ntbb(lun) = 0
-
644  do i=1,ntbb(0)
-
645  tabb(i,lun) = ' '
-
646  enddo
-
647 
-
648  ntbd(lun) = 0
-
649  do i=1,ntbd(0)
-
650  tabd(i,lun) = ' '
-
651  call pktdd(i,lun,0,iret)
-
652  enddo
+
635  ntba(lun) = 0
+
636  do i=1,ntba(0)
+
637  taba(i,lun) = ' '
+
638  mtab(i,lun) = 0
+
639  enddo
+
640 
+
641  ntbb(lun) = 0
+
642  tabb(1:ntbb(0),lun) = ' '
+
643 
+
644  ntbd(lun) = 0
+
645  do i=1,ntbd(0)
+
646  tabd(i,lun) = ' '
+
647  call pktdd(i,lun,0,iret)
+
648  enddo
+
649 
+
650  if(ioi==0) return
+
651 
+
652  ! Initialize table with apriori Table B and D entries
653 
-
654  if(ioi==0) return
-
655 
-
656  ! Initialize table with apriori Table B and D entries
-
657 
-
658  inib(1,1) = adn30(ibct,6)
-
659  inib(1,2) = adn30(ipd4,6)
-
660 
-
661  do i=1,ninib
-
662  ntbb(lun) = ntbb(lun)+1
-
663  idnb(i,lun) = ifxy(inib(1,i))
-
664  tabb(i,lun)( 1: 6) = inib(1,i)(1:6)
-
665  tabb(i,lun)( 7: 70) = inib(2,i)
-
666  tabb(i,lun)( 71: 94) = inib(3,i)
-
667  tabb(i,lun)( 95: 98) = inib(4,i)(1:4)
-
668  tabb(i,lun)( 99:109) = inib(5,i)
-
669  tabb(i,lun)(110:112) = inib(6,i)(1:3)
-
670  enddo
-
671 
-
672  do i=2,ninid
-
673  n = ntbd(lun)+1
-
674  idnd(n,lun) = idnr(i)
-
675  tabd(n,lun)(1: 6) = adn30(idnr(i),6)
-
676  tabd(n,lun)(7:70) = inid(i)
-
677  call pktdd(n,lun,idnr(1),iret)
-
678  call pktdd(n,lun,idnr(i+5),iret)
-
679  ntbd(lun) = n
-
680  enddo
-
681 
-
682  return
-
683 end subroutine dxinit
-
684 
-
696 subroutine dxmini(mbay,mbyt,mb4,mba,mbb,mbd)
+
654  inib(1,1) = fxy_sbyct
+
655  inib(1,2) = fxy_fbit
+
656 
+
657  do i=1,ninib
+
658  ntbb(lun) = ntbb(lun)+1
+
659  idnb(i,lun) = ifxy(inib(1,i))
+
660  tabb(i,lun)( 1: 6) = inib(1,i)(1:6)
+
661  tabb(i,lun)( 7: 70) = inib(2,i)
+
662  tabb(i,lun)( 71: 94) = inib(3,i)
+
663  tabb(i,lun)( 95: 98) = inib(4,i)(1:4)
+
664  tabb(i,lun)( 99:109) = inib(5,i)
+
665  tabb(i,lun)(110:112) = inib(6,i)(1:3)
+
666  enddo
+
667 
+
668  do i=2,ninid
+
669  n = ntbd(lun)+1
+
670  idnd(n,lun) = idnr(i)
+
671  tabd(n,lun)(1: 6) = adn30(idnr(i),6)
+
672  tabd(n,lun)(7:70) = inid(i)
+
673  call pktdd(n,lun,idnr(1),iret)
+
674  call pktdd(n,lun,idnr(i+5),iret)
+
675  ntbd(lun) = n
+
676  enddo
+
677 
+
678  return
+
679 end subroutine dxinit
+
680 
+
692 subroutine dxmini(mbay,mbyt,mb4,mba,mbb,mbd)
+
693 
+
694  use modv_vars, only: mxmsgld4, mtv, nby0, nby1, nby2, nby5, bmostr, idxv
+
695 
+
696  implicit none
697 
-
698  use modv_vars, only: mxmsgld4
-
699 
-
700  implicit none
+
698  integer, intent(out) :: mbay(*), mbyt, mb4, mba, mbb, mbd
+
699  integer nxstr, ldxa, ldxb, ldxd, ld30, mtyp, msbt, mbit, ih, id, im, iy, i, nsub, idxs, ldxs, &
+
700  len3, nby4, iupm
701 
-
702  integer, intent(out) :: mbay(*), mbyt, mb4, mba, mbb, mbd
-
703  integer maxdx, idxv, nxstr, ldxa, ldxb, ldxd, ld30, mtyp, msbt, mbit, ih, id, im, iy, i, nsub, idxs, ldxs, &
-
704  nby0, nby1, nby2, nby3, nby4, nby5, iupm
-
705 
-
706  character*128 bort_str
-
707  character*56 dxstr
+
702  character*128 bort_str
+
703  character*56 dxstr
+
704 
+
705  common /dxtab/ nxstr(10), ldxa(10), ldxb(10), ldxd(10), ld30(10), dxstr(10)
+
706 
+
707  msbt = idxv
708 
-
709  common /dxtab/ maxdx, idxv, nxstr(10), ldxa(10), ldxb(10), ldxd(10), ld30(10), dxstr(10)
+
709  ! Initialize the message
710 
-
711  msbt = idxv
-
712 
-
713  ! Initialize the message
-
714 
-
715  mbit = 0
-
716  do i=1,mxmsgld4
-
717  mbay(i) = 0
-
718  enddo
-
719 
-
720  ! For DX table messages, the Section 1 date is simply zeroed out. Note that there is logic in function idxmsg()
-
721  ! which relies on this.
-
722  ih = 0
-
723  id = 0
-
724  im = 0
-
725  iy = 0
+
711  mbit = 0
+
712  mbay(1:mxmsgld4) = 0
+
713 
+
714  ! For DX table messages, the Section 1 date is simply zeroed out. Note that there is logic in function idxmsg()
+
715  ! which relies on this.
+
716  ih = 0
+
717  id = 0
+
718  im = 0
+
719  iy = 0
+
720 
+
721  mtyp = 11 ! DX table messages are always type 11, per WMO BUFR Table A
+
722  nsub = 1
+
723 
+
724  idxs = idxv+1
+
725  ldxs = nxstr(idxs)
726 
-
727  mtyp = 11 ! DX table messages are always type 11, per WMO BUFR Table A
-
728  nsub = 1
-
729 
-
730  idxs = idxv+1
-
731  ldxs = nxstr(idxs)
+
727  len3 = 7 + nxstr(idxs) + 1
+
728  nby4 = 7
+
729  mbyt = nby0+nby1+nby2+len3+nby4+nby5
+
730 
+
731  if(mod(len3,2)/=0) call bort ('BUFRLIB: DXMINI - LENGTH OF SECTION 3 IS NOT A MULTIPLE OF 2')
732 
-
733  nby0 = 8
-
734  nby1 = 18
-
735  nby2 = 0
-
736  nby3 = 7 + nxstr(idxs) + 1
-
737  nby4 = 7
-
738  nby5 = 4
-
739  mbyt = nby0+nby1+nby2+nby3+nby4+nby5
+
733  ! Section 0
+
734 
+
735  call pkc(bmostr , 4 , mbay,mbit)
+
736  call pkb( mbyt , 24 , mbay,mbit)
+
737  call pkb( 3 , 8 , mbay,mbit)
+
738 
+
739  ! Section 1
740 
-
741  if(mod(nby3,2)/=0) call bort ('BUFRLIB: DXMINI - LENGTH OF SECTION 3 IS NOT A MULTIPLE OF 2')
-
742 
-
743  ! Section 0
-
744 
-
745  call pkc('BUFR' , 4 , mbay,mbit)
-
746  call pkb( mbyt , 24 , mbay,mbit)
-
747  call pkb( 3 , 8 , mbay,mbit)
-
748 
-
749  ! Section 1
-
750 
-
751  call pkb( nby1 , 24 , mbay,mbit)
-
752  call pkb( 0 , 8 , mbay,mbit)
-
753  call pkb( 3 , 8 , mbay,mbit)
-
754  call pkb( 7 , 8 , mbay,mbit)
+
741  call pkb( nby1 , 24 , mbay,mbit)
+
742  call pkb( 0 , 8 , mbay,mbit)
+
743  call pkb( 3 , 8 , mbay,mbit)
+
744  call pkb( 7 , 8 , mbay,mbit)
+
745  call pkb( 0 , 8 , mbay,mbit)
+
746  call pkb( 0 , 8 , mbay,mbit)
+
747  call pkb( mtyp , 8 , mbay,mbit)
+
748  call pkb( msbt , 8 , mbay,mbit)
+
749  call pkb( mtv , 8 , mbay,mbit)
+
750  call pkb( idxv , 8 , mbay,mbit)
+
751  call pkb( iy , 8 , mbay,mbit)
+
752  call pkb( im , 8 , mbay,mbit)
+
753  call pkb( id , 8 , mbay,mbit)
+
754  call pkb( ih , 8 , mbay,mbit)
755  call pkb( 0 , 8 , mbay,mbit)
756  call pkb( 0 , 8 , mbay,mbit)
-
757  call pkb( mtyp , 8 , mbay,mbit)
-
758  call pkb( msbt , 8 , mbay,mbit)
-
759  call pkb( 36 , 8 , mbay,mbit)
-
760  call pkb( idxv , 8 , mbay,mbit)
-
761  call pkb( iy , 8 , mbay,mbit)
-
762  call pkb( im , 8 , mbay,mbit)
-
763  call pkb( id , 8 , mbay,mbit)
-
764  call pkb( ih , 8 , mbay,mbit)
-
765  call pkb( 0 , 8 , mbay,mbit)
-
766  call pkb( 0 , 8 , mbay,mbit)
-
767 
-
768  ! Section 3
-
769 
-
770  call pkb( nby3 , 24 , mbay,mbit)
-
771  call pkb( 0 , 8 , mbay,mbit)
-
772  call pkb( 1 , 16 , mbay,mbit)
-
773  call pkb( 2**7 , 8 , mbay,mbit)
-
774  do i=1,ldxs
-
775  call pkb(iupm(dxstr(idxs)(i:i),8),8,mbay,mbit)
-
776  enddo
+
757 
+
758  ! Section 3
+
759 
+
760  call pkb( len3 , 24 , mbay,mbit)
+
761  call pkb( 0 , 8 , mbay,mbit)
+
762  call pkb( 1 , 16 , mbay,mbit)
+
763  call pkb( 2**7 , 8 , mbay,mbit)
+
764  do i=1,ldxs
+
765  call pkb(iupm(dxstr(idxs)(i:i),8),8,mbay,mbit)
+
766  enddo
+
767  call pkb( 0 , 8 , mbay,mbit)
+
768 
+
769  ! Section 4
+
770 
+
771  mb4 = mbit/8+1
+
772  call pkb( nby4 , 24 , mbay,mbit)
+
773  call pkb( 0 , 8 , mbay,mbit)
+
774  mba = mbit/8+1
+
775  call pkb( 0 , 8 , mbay,mbit)
+
776  mbb = mbit/8+1
777  call pkb( 0 , 8 , mbay,mbit)
-
778 
-
779  ! Section 4
+
778  mbd = mbit/8+1
+
779  call pkb( 0 , 8 , mbay,mbit)
780 
-
781  mb4 = mbit/8+1
-
782  call pkb( nby4 , 24 , mbay,mbit)
-
783  call pkb( 0 , 8 , mbay,mbit)
-
784  mba = mbit/8+1
-
785  call pkb( 0 , 8 , mbay,mbit)
-
786  mbb = mbit/8+1
-
787  call pkb( 0 , 8 , mbay,mbit)
-
788  mbd = mbit/8+1
-
789  call pkb( 0 , 8 , mbay,mbit)
-
790 
-
791  if(mbit/8+nby5/=mbyt) then
-
792  write(bort_str,'("BUFRLIB: DXMINI - NUMBER OF BYTES STORED FOR '// &
-
793  'A MESSAGE (",I6,") IS NOT THE SAME AS FIRST CALCULATED, MBYT (",I6)') mbit/8+nby5,mbyt
-
794  call bort(bort_str)
-
795  endif
-
796 
-
797  return
-
798 end subroutine dxmini
-
799 
-
811 subroutine writdx(lunit,lun,lundx)
-
812 
-
813  implicit none
-
814 
-
815  integer, intent(in) :: lunit, lun, lundx
+
781  if(mbit/8+nby5/=mbyt) then
+
782  write(bort_str,'("BUFRLIB: DXMINI - NUMBER OF BYTES STORED FOR '// &
+
783  'A MESSAGE (",I6,") IS NOT THE SAME AS FIRST CALCULATED, MBYT (",I6)') mbit/8+nby5,mbyt
+
784  call bort(bort_str)
+
785  endif
+
786 
+
787  return
+
788 end subroutine dxmini
+
789 
+
801 subroutine writdx(lunit,lun,lundx)
+
802 
+
803  implicit none
+
804 
+
805  integer, intent(in) :: lunit, lun, lundx
+
806 
+
807  character*128 bort_str
+
808 
+
809  ! The table must be coming from an input file
+
810 
+
811  if(lunit==lundx) then
+
812  write(bort_str,'("BUFRLIB: WRITDX - FILES CONTAINING BUFR DATA '// &
+
813  'AND DICTIONARY TABLE CANNOT BE THE SAME (HERE BOTH SHARE FORTRAN UNIT NUMBER ",I3,")")') lunit
+
814  call bort(bort_str)
+
815  endif
816 
-
817  character*128 bort_str
+
817  ! Must first call readdx() to generate internal dictionary table arrays, before calling wrdxtb()
818 
-
819  ! The table must be coming from an input file
-
820 
-
821  if(lunit==lundx) then
-
822  write(bort_str,'("BUFRLIB: WRITDX - FILES CONTAINING BUFR DATA '// &
-
823  'AND DICTIONARY TABLE CANNOT BE THE SAME (HERE BOTH SHARE FORTRAN UNIT NUMBER ",I3,")")') lunit
-
824  call bort(bort_str)
-
825  endif
-
826 
-
827  ! Must first call readdx() to generate internal dictionary table arrays, before calling wrdxtb()
-
828 
-
829  call readdx(lunit,lun,lundx)
-
830  call wrdxtb(lunit,lunit)
-
831 
-
832  return
-
833 end subroutine writdx
-
834 
-
849 recursive subroutine wrdxtb(lundx,lunot)
-
850 
-
851  use modv_vars, only: im8b
+
819  call readdx(lunit,lun,lundx)
+
820  call wrdxtb(lunit,lunit)
+
821 
+
822  return
+
823 end subroutine writdx
+
824 
+
839 recursive subroutine wrdxtb(lundx,lunot)
+
840 
+
841  use modv_vars, only: im8b, idxv
+
842 
+
843  use moda_tababd
+
844  use moda_mgwa
+
845  use moda_bitbuf, only: maxbyt
+
846 
+
847  implicit none
+
848 
+
849  integer, intent(in) :: lundx, lunot
+
850  integer nxstr, ldxa, ldxb, ldxd, ld30, my_lundx, my_lunot, ldx, lot, il, im, lda, ldb, ldd, l30, nseq, &
+
851  mbit, mbyt, mby4, mbya, mbyb, mbyd, i, j, jj, idn, lend, len0, len1, len2, l3, l4, l5, iupb, iupm
852 
-
853  use moda_tababd
-
854  use moda_mgwa
-
855 
-
856  implicit none
+
853  common /dxtab/ nxstr(10), ldxa(10), ldxb(10), ldxd(10), ld30(10), dxstr(10)
+
854 
+
855  character*56 dxstr
+
856  character*6 adn30
857 
-
858  integer, intent(in) :: lundx, lunot
-
859  integer maxdx, idxv, nxstr, ldxa, ldxb, ldxd, ld30, my_lundx, my_lunot, ldx, lot, il, im, lda, ldb, ldd, l30, nseq, &
-
860  mbit, mbyt, mby4, mbya, mbyb, mbyd, i, j, jj, idn, lend, len0, len1, len2, l3, l4, l5, iupb, iupm
+
858  logical msgfull
+
859 
+
860  ! Check for I8 integers
861 
-
862  common /dxtab/ maxdx, idxv, nxstr(10), ldxa(10), ldxb(10), ldxd(10), ld30(10), dxstr(10)
-
863 
-
864  character*56 dxstr
-
865  character*6 adn30
-
866 
-
867  logical msgfull
+
862  if(im8b) then
+
863  im8b=.false.
+
864 
+
865  call x84(lundx,my_lundx,1)
+
866  call x84(lunot,my_lunot,1)
+
867  call wrdxtb(my_lundx,my_lunot)
868 
-
869  ! Check for I8 integers
-
870 
-
871  if(im8b) then
-
872  im8b=.false.
-
873 
-
874  call x84(lundx,my_lundx,1)
-
875  call x84(lunot,my_lunot,1)
-
876  call wrdxtb(my_lundx,my_lunot)
-
877 
-
878  im8b=.true.
-
879  return
-
880  endif
+
869  im8b=.true.
+
870  return
+
871  endif
+
872 
+
873  ! Check file statuses
+
874 
+
875  call status(lunot,lot,il,im)
+
876  if(il==0) call bort('BUFRLIB: WRDXTB - OUTPUT BUFR FILE IS CLOSED, IT MUST BE OPEN FOR OUTPUT')
+
877  if(il<0) call bort('BUFRLIB: WRDXTB - OUTPUT BUFR FILE IS OPEN FOR INPUT, IT MUST BE OPEN FOR OUTPUT')
+
878 
+
879  call status(lundx,ldx,il,im)
+
880  if(il==0) call bort('BUFRLIB: WRDXTB - DX TABLE FILE IS CLOSED, IT MUST BE OPEN')
881 
-
882  ! Check file statuses
+
882  ! If files are different, copy internal table information from lundx to lunot
883 
-
884  call status(lunot,lot,il,im)
-
885  if(il==0) call bort('BUFRLIB: WRDXTB - OUTPUT BUFR FILE IS CLOSED, IT MUST BE OPEN FOR OUTPUT')
-
886  if(il<0) call bort('BUFRLIB: WRDXTB - OUTPUT BUFR FILE IS OPEN FOR INPUT, IT MUST BE OPEN FOR OUTPUT')
+
884  if(lundx/=lunot) call cpbfdx(ldx,lot)
+
885 
+
886  ! Generate and write out BUFR dictionary messages to lunot
887 
-
888  call status(lundx,ldx,il,im)
-
889  if(il==0) call bort('BUFRLIB: WRDXTB - DX TABLE FILE IS CLOSED, IT MUST BE OPEN')
-
890 
-
891  ! If files are different, copy internal table information from lundx to lunot
-
892 
-
893  if(lundx/=lunot) call cpbfdx(ldx,lot)
+
888  call dxmini(mgwa,mbyt,mby4,mbya,mbyb,mbyd)
+
889 
+
890  lda = ldxa(idxv+1)
+
891  ldb = ldxb(idxv+1)
+
892  ldd = ldxd(idxv+1)
+
893  l30 = ld30(idxv+1)
894 
-
895  ! Generate and write out BUFR dictionary messages to lunot
+
895  ! Table A information
896 
-
897  call dxmini(mgwa,mbyt,mby4,mbya,mbyb,mbyd)
-
898 
-
899  lda = ldxa(idxv+1)
-
900  ldb = ldxb(idxv+1)
-
901  ldd = ldxd(idxv+1)
-
902  l30 = ld30(idxv+1)
-
903 
-
904  ! Table A information
-
905 
-
906  do i=1,ntba(lot)
-
907  if(msgfull(mbyt,lda,maxdx).or.(iupb(mgwa,mbya,8)==255)) then
-
908  call msgwrt(lunot,mgwa,mbyt)
-
909  call dxmini(mgwa,mbyt,mby4,mbya,mbyb,mbyd)
-
910  endif
-
911  mbit = 8*(mby4-1)
-
912  call pkb(iupb(mgwa,mby4,24)+lda,24,mgwa,mbit)
-
913  mbit = 8*(mbya-1)
-
914  call pkb(iupb(mgwa,mbya,8)+1,8,mgwa,mbit)
-
915  mbit = 8*(mbyb-1)
-
916  call pkc(taba(i,lot),lda,mgwa,mbit)
-
917  call pkb(0,8,mgwa,mbit)
-
918  call pkb(0,8,mgwa,mbit)
-
919  mbyt = mbyt+lda
-
920  mbyb = mbyb+lda
-
921  mbyd = mbyd+lda
-
922  enddo
-
923 
-
924  ! Table B information
-
925 
-
926  do i=1,ntbb(lot)
-
927  if(msgfull(mbyt,ldb,maxdx).or.(iupb(mgwa,mbyb,8)==255)) then
-
928  call msgwrt(lunot,mgwa,mbyt)
-
929  call dxmini(mgwa,mbyt,mby4,mbya,mbyb,mbyd)
-
930  endif
-
931  mbit = 8*(mby4-1)
-
932  call pkb(iupb(mgwa,mby4,24)+ldb,24,mgwa,mbit)
-
933  mbit = 8*(mbyb-1)
-
934  call pkb(iupb(mgwa,mbyb,8)+1,8,mgwa,mbit)
-
935  mbit = 8*(mbyd-1)
-
936  call pkc(tabb(i,lot),ldb,mgwa,mbit)
-
937  call pkb(0,8,mgwa,mbit)
-
938  mbyt = mbyt+ldb
-
939  mbyd = mbyd+ldb
-
940  enddo
-
941 
-
942  ! Table D information
-
943 
-
944  do i=1,ntbd(lot)
-
945  nseq = iupm(tabd(i,lot)(ldd+1:ldd+1),8)
-
946  lend = ldd+1 + l30*nseq
-
947  if(msgfull(mbyt,lend,maxdx).or.(iupb(mgwa,mbyd,8)==255)) then
-
948  call msgwrt(lunot,mgwa,mbyt)
-
949  call dxmini(mgwa,mbyt,mby4,mbya,mbyb,mbyd)
-
950  endif
-
951  mbit = 8*(mby4-1)
-
952  call pkb(iupb(mgwa,mby4,24)+lend,24,mgwa,mbit)
-
953  mbit = 8*(mbyd-1)
-
954  call pkb(iupb(mgwa,mbyd,8)+1,8,mgwa,mbit)
-
955  mbit = 8*(mbyt-4)
-
956  call pkc(tabd(i,lot),ldd,mgwa,mbit)
-
957  call pkb(nseq,8,mgwa,mbit)
-
958  do j=1,nseq
-
959  jj = ldd+2 + (j-1)*2
-
960  idn = iupm(tabd(i,lot)(jj:jj),16)
-
961  call pkc(adn30(idn,l30),l30,mgwa,mbit)
-
962  enddo
-
963  mbyt = mbyt+lend
-
964  enddo
-
965 
-
966  ! Write the unwritten (leftover) message.
-
967 
-
968  call msgwrt(lunot,mgwa,mbyt)
-
969 
-
970  ! Write out one additional (dummy) DX message containing zero subsets. This will serve as a delimiter for this set of
-
971  ! table messages within output unit lunot, just in case the next thing written to lunot ends up being another set of
-
972  ! table messages.
+
897  do i=1,ntba(lot)
+
898  if(msgfull(mbyt,lda,maxbyt).or.(iupb(mgwa,mbya,8)==255)) then
+
899  call msgwrt(lunot,mgwa,mbyt)
+
900  call dxmini(mgwa,mbyt,mby4,mbya,mbyb,mbyd)
+
901  endif
+
902  mbit = 8*(mby4-1)
+
903  call pkb(iupb(mgwa,mby4,24)+lda,24,mgwa,mbit)
+
904  mbit = 8*(mbya-1)
+
905  call pkb(iupb(mgwa,mbya,8)+1,8,mgwa,mbit)
+
906  mbit = 8*(mbyb-1)
+
907  call pkc(taba(i,lot),lda,mgwa,mbit)
+
908  call pkb(0,8,mgwa,mbit)
+
909  call pkb(0,8,mgwa,mbit)
+
910  mbyt = mbyt+lda
+
911  mbyb = mbyb+lda
+
912  mbyd = mbyd+lda
+
913  enddo
+
914 
+
915  ! Table B information
+
916 
+
917  do i=1,ntbb(lot)
+
918  if(msgfull(mbyt,ldb,maxbyt).or.(iupb(mgwa,mbyb,8)==255)) then
+
919  call msgwrt(lunot,mgwa,mbyt)
+
920  call dxmini(mgwa,mbyt,mby4,mbya,mbyb,mbyd)
+
921  endif
+
922  mbit = 8*(mby4-1)
+
923  call pkb(iupb(mgwa,mby4,24)+ldb,24,mgwa,mbit)
+
924  mbit = 8*(mbyb-1)
+
925  call pkb(iupb(mgwa,mbyb,8)+1,8,mgwa,mbit)
+
926  mbit = 8*(mbyd-1)
+
927  call pkc(tabb(i,lot),ldb,mgwa,mbit)
+
928  call pkb(0,8,mgwa,mbit)
+
929  mbyt = mbyt+ldb
+
930  mbyd = mbyd+ldb
+
931  enddo
+
932 
+
933  ! Table D information
+
934 
+
935  do i=1,ntbd(lot)
+
936  nseq = iupm(tabd(i,lot)(ldd+1:ldd+1),8)
+
937  lend = ldd+1 + l30*nseq
+
938  if(msgfull(mbyt,lend,maxbyt).or.(iupb(mgwa,mbyd,8)==255)) then
+
939  call msgwrt(lunot,mgwa,mbyt)
+
940  call dxmini(mgwa,mbyt,mby4,mbya,mbyb,mbyd)
+
941  endif
+
942  mbit = 8*(mby4-1)
+
943  call pkb(iupb(mgwa,mby4,24)+lend,24,mgwa,mbit)
+
944  mbit = 8*(mbyd-1)
+
945  call pkb(iupb(mgwa,mbyd,8)+1,8,mgwa,mbit)
+
946  mbit = 8*(mbyt-4)
+
947  call pkc(tabd(i,lot),ldd,mgwa,mbit)
+
948  call pkb(nseq,8,mgwa,mbit)
+
949  do j=1,nseq
+
950  jj = ldd+2 + (j-1)*2
+
951  idn = iupm(tabd(i,lot)(jj:jj),16)
+
952  call pkc(adn30(idn,l30),l30,mgwa,mbit)
+
953  enddo
+
954  mbyt = mbyt+lend
+
955  enddo
+
956 
+
957  ! Write the unwritten (leftover) message.
+
958 
+
959  call msgwrt(lunot,mgwa,mbyt)
+
960 
+
961  ! Write out one additional (dummy) DX message containing zero subsets. This will serve as a delimiter for this set of
+
962  ! table messages within output unit lunot, just in case the next thing written to lunot ends up being another set of
+
963  ! table messages.
+
964 
+
965  call dxmini(mgwa,mbyt,mby4,mbya,mbyb,mbyd)
+
966  call getlens(mgwa,2,len0,len1,len2,l3,l4,l5)
+
967  mbit = (len0+len1+len2+4)*8
+
968  call pkb(0,16,mgwa,mbit)
+
969  call msgwrt(lunot,mgwa,mbyt)
+
970 
+
971  return
+
972 end subroutine wrdxtb
973 
-
974  call dxmini(mgwa,mbyt,mby4,mbya,mbyb,mbyd)
-
975  call getlens(mgwa,2,len0,len1,len2,l3,l4,l5)
-
976  mbit = (len0+len1+len2+4)*8
-
977  call pkb(0,16,mgwa,mbit)
-
978  call msgwrt(lunot,mgwa,mbyt)
-
979 
-
980  return
-
981 end subroutine wrdxtb
-
982 
-
989 subroutine stbfdx(lun,mesg)
-
990 
-
991  use modv_vars, only: maxcd
+
980 subroutine stbfdx(lun,mesg)
+
981 
+
982  use modv_vars, only: maxcd, idxv
+
983 
+
984  use moda_tababd
+
985 
+
986  implicit none
+
987 
+
988  integer, intent(in) :: lun, mesg(*)
+
989  integer nxstr, ldxa, ldxb, ldxd, ld30, ldxbd(10), ldxbe(10), ja, jb, idxs, i3, i, j, n, nd, ndd, idn, &
+
990  jbit, len0, len1, len2, len3, l4, l5, lda, ldb, ldd, ldbd, ldbe, l30, ia, la, ib, lb, id, ld, iret, &
+
991  ifxy, iupb, iupbs01, igetntbi, idn30
992 
-
993  use moda_tababd
-
994 
-
995  implicit none
-
996 
-
997  integer, intent(in) :: lun, mesg(*)
-
998  integer maxdx, idxv, nxstr, ldxa, ldxb, ldxd, ld30, ldxbd(10), ldxbe(10), ja, jb, idxs, i3, i, j, n, nd, ndd, idn, &
-
999  jbit, len0, len1, len2, len3, l4, l5, lda, ldb, ldd, ldbd, ldbe, l30, ia, la, ib, lb, id, ld, iret, &
-
1000  ifxy, iupb, iupbs01, igetntbi, idn30
+
993  character*128 bort_str
+
994  character*128 tabb1, tabb2
+
995  character*56 dxstr
+
996  character*55 cseq
+
997  character*50 dxcmp
+
998  character*24 unit
+
999  character*8 nemo
+
1000  character*6 numb, cidn
1001 
-
1002  character*128 bort_str
-
1003  character*128 tabb1, tabb2
-
1004  character*56 dxstr
-
1005  character*55 cseq
-
1006  character*50 dxcmp
-
1007  character*24 unit
-
1008  character*8 nemo
-
1009  character*6 numb, cidn
+
1002  common /dxtab/ nxstr(10), ldxa(10), ldxb(10), ldxd(10), ld30(10), dxstr(10)
+
1003 
+
1004  data ldxbd /38, 70, 8*0/
+
1005  data ldxbe /42, 42, 8*0/
+
1006 
+
1007  ! Statement functions
+
1008  ja(i) = ia+1+lda*(i-1)
+
1009  jb(i) = ib+1+ldb*(i-1)
1010 
-
1011  common /dxtab/ maxdx, idxv, nxstr(10), ldxa(10), ldxb(10), ldxd(10), ld30(10), dxstr(10)
+
1011  ! Get some preliminary information from the message
1012 
-
1013  data ldxbd /38, 70, 8*0/
-
1014  data ldxbe /42, 42, 8*0/
-
1015 
-
1016  ! Statement functions
-
1017  ja(i) = ia+1+lda*(i-1)
-
1018  jb(i) = ib+1+ldb*(i-1)
-
1019 
-
1020  ! Get some preliminary information from the message
-
1021 
-
1022  idxs = iupbs01(mesg,'MSBT')+1
-
1023  if(idxs>idxv+1) idxs = iupbs01(mesg,'MTVL')+1
-
1024  if(ldxa(idxs)==0 .or. ldxb(idxs)==0 .or. ldxd(idxs)==0) call bort('BUFRLIB: STBFDX - UNEXPECTED DICTIONARY '// &
-
1025  'MESSAGE SUBTYPE OR LOCAL VERSION NUMBER (E.G., L.V.N. HIGHER THAN KNOWN)')
+
1013  idxs = iupbs01(mesg,'MSBT')+1
+
1014  if(idxs>idxv+1) idxs = iupbs01(mesg,'MTVL')+1
+
1015  if(ldxa(idxs)==0 .or. ldxb(idxs)==0 .or. ldxd(idxs)==0) call bort('BUFRLIB: STBFDX - UNEXPECTED DICTIONARY '// &
+
1016  'MESSAGE SUBTYPE OR LOCAL VERSION NUMBER (E.G., L.V.N. HIGHER THAN KNOWN)')
+
1017 
+
1018  call getlens(mesg,3,len0,len1,len2,len3,l4,l5)
+
1019  i3 = len0+len1+len2
+
1020  dxcmp = ' '
+
1021  jbit = 8*(i3+7)
+
1022  call upc(dxcmp,nxstr(idxs),mesg,jbit,.false.)
+
1023  if(dxcmp/=dxstr(idxs)) call bort('BUFRLIB: STBFDX - UNEXPECTED DICTIONARY MESSAGE CONTENTS')
+
1024 
+
1025  ! Section 4 - read definitions for Tables A, B and D
1026 
-
1027  call getlens(mesg,3,len0,len1,len2,len3,l4,l5)
-
1028  i3 = len0+len1+len2
-
1029  dxcmp = ' '
-
1030  jbit = 8*(i3+7)
-
1031  call upc(dxcmp,nxstr(idxs),mesg,jbit,.false.)
-
1032  if(dxcmp/=dxstr(idxs)) call bort('BUFRLIB: STBFDX - UNEXPECTED DICTIONARY MESSAGE CONTENTS')
+
1027  lda = ldxa(idxs)
+
1028  ldb = ldxb(idxs)
+
1029  ldd = ldxd(idxs)
+
1030  ldbd = ldxbd(idxs)
+
1031  ldbe = ldxbe(idxs)
+
1032  l30 = ld30(idxs)
1033 
-
1034  ! Section 4 - read definitions for Tables A, B and D
-
1035 
-
1036  lda = ldxa(idxs)
-
1037  ldb = ldxb(idxs)
-
1038  ldd = ldxd(idxs)
-
1039  ldbd = ldxbd(idxs)
-
1040  ldbe = ldxbe(idxs)
-
1041  l30 = ld30(idxs)
+
1034  ia = i3+len3+5
+
1035  la = iupb(mesg,ia,8)
+
1036  ib = ja(la+1)
+
1037  lb = iupb(mesg,ib,8)
+
1038  id = jb(lb+1)
+
1039  ld = iupb(mesg,id,8)
+
1040 
+
1041  ! Table A
1042 
-
1043  ia = i3+len3+5
-
1044  la = iupb(mesg,ia,8)
-
1045  ib = ja(la+1)
-
1046  lb = iupb(mesg,ib,8)
-
1047  id = jb(lb+1)
-
1048  ld = iupb(mesg,id,8)
-
1049 
-
1050  ! Table A
-
1051 
-
1052  do i=1,la
-
1053  n = igetntbi(lun,'A')
-
1054  jbit = 8*(ja(i)-1)
-
1055  call upc(taba(n,lun),lda,mesg,jbit,.true.)
-
1056  numb = ' '//taba(n,lun)(1:3)
-
1057  nemo = taba(n,lun)(4:11)
-
1058  cseq = taba(n,lun)(13:67)
-
1059  call stntbia(n,lun,numb,nemo,cseq)
-
1060  enddo
-
1061 
-
1062  ! Table B
-
1063 
-
1064  do i=1,lb
-
1065  n = igetntbi(lun,'B')
-
1066  jbit = 8*(jb(i)-1)
-
1067  call upc(tabb1,ldbd,mesg,jbit,.true.)
-
1068  jbit = 8*(jb(i)+ldbd-1)
-
1069  call upc(tabb2,ldbe,mesg,jbit,.true.)
-
1070  tabb(n,lun) = tabb1(1:ldxbd(idxv+1))//tabb2(1:ldxbe(idxv+1))
-
1071  numb = tabb(n,lun)(1:6)
-
1072  nemo = tabb(n,lun)(7:14)
-
1073  call nenubd(nemo,numb,lun)
-
1074  idnb(n,lun) = ifxy(numb)
-
1075  unit = tabb(n,lun)(71:94)
-
1076  call capit(unit)
-
1077  tabb(n,lun)(71:94) = unit
-
1078  ntbb(lun) = n
-
1079  enddo
-
1080 
-
1081  ! Table D
-
1082 
-
1083  do i=1,ld
-
1084  n = igetntbi(lun,'D')
-
1085  jbit = 8*id
-
1086  call upc(tabd(n,lun),ldd,mesg,jbit,.true.)
-
1087  numb = tabd(n,lun)(1:6)
-
1088  nemo = tabd(n,lun)(7:14)
-
1089  call nenubd(nemo,numb,lun)
-
1090  idnd(n,lun) = ifxy(numb)
-
1091  nd = iupb(mesg,id+ldd+1,8)
-
1092  if(nd>maxcd) then
-
1093  write(bort_str,'("BUFRLIB: STBFDX - NUMBER OF DESCRIPTORS IN '// &
-
1094  'TABLE D ENTRY ",A," IN BUFR TABLE (",I4,") EXCEEDS THE LIMIT (",I4,")")') nemo,nd,maxcd
-
1095  call bort(bort_str)
-
1096  endif
-
1097  do j=1,nd
-
1098  ndd = id+ldd+2 + (j-1)*l30
-
1099  jbit = 8*(ndd-1)
-
1100  call upc(cidn,l30,mesg,jbit,.true.)
-
1101  idn = idn30(cidn,l30)
-
1102  call pktdd(n,lun,idn,iret)
-
1103  if(iret<0) call bort('BUFRLIB: STBFDX - BAD RETURN FROM BUFRLIB ROUTINE PKTDD, SEE PREVIOUS WARNING MESSAGE')
-
1104  enddo
-
1105  id = id+ldd+1 + nd*l30
-
1106  if(iupb(mesg,id+1,8)==0) id = id+1
-
1107  ntbd(lun) = n
-
1108  enddo
-
1109 
-
1110  return
-
1111 end subroutine stbfdx
-
1112 
-
1122 integer function idxmsg( mesg ) result( iret )
-
1123 
-
1124  implicit none
-
1125 
-
1126  integer, intent(in) :: mesg(*)
-
1127  integer iupbs01
-
1128 
-
1129  ! Note that the following test relies upon logic within subroutine dxmini() which zeroes out the Section 1 date of
-
1130  ! all DX dictionary messages.
-
1131 
-
1132  if ( (iupbs01(mesg,'MTYP')==11) .and. &
-
1133  (iupbs01(mesg,'MNTH')==0) .and. (iupbs01(mesg,'DAYS')==0) .and. (iupbs01(mesg,'HOUR')==0) ) then
-
1134  iret = 1
-
1135  else
-
1136  iret = 0
-
1137  end if
-
1138 
-
1139  return
-
1140 end function idxmsg
-
1141 
-
1152 integer function igetntbi ( lun, ctb ) result(iret)
-
1153 
-
1154  use moda_tababd
-
1155 
-
1156  implicit none
-
1157 
-
1158  integer, intent(in) :: lun
-
1159  integer imax
-
1160 
-
1161  character, intent(in) :: ctb
-
1162  character*128 bort_str
-
1163 
-
1164  if ( ctb == 'A' ) then
-
1165  iret = ntba(lun) + 1
-
1166  imax = ntba(0)
-
1167  else if ( ctb == 'B' ) then
-
1168  iret = ntbb(lun) + 1
-
1169  imax = ntbb(0)
-
1170  else ! ctb == 'D'
-
1171  iret = ntbd(lun) + 1
-
1172  imax = ntbd(0)
-
1173  endif
-
1174  if ( iret > imax ) then
-
1175  write(bort_str,'("BUFRLIB: IGETNTBI - NUMBER OF INTERNAL TABLE",A1," ENTRIES EXCEEDS THE LIMIT (",I4,")")') ctb, imax
-
1176  call bort(bort_str)
-
1177  endif
-
1178 
-
1179  return
-
1180 end function igetntbi
-
1181 
-
1196 subroutine nemtbax(lun,nemo,mtyp,msbt,inod)
-
1197 
-
1198  use moda_tababd
+
1043  do i=1,la
+
1044  n = igetntbi(lun,'A')
+
1045  jbit = 8*(ja(i)-1)
+
1046  call upc(taba(n,lun),lda,mesg,jbit,.true.)
+
1047  numb = ' '//taba(n,lun)(1:3)
+
1048  nemo = taba(n,lun)(4:11)
+
1049  cseq = taba(n,lun)(13:67)
+
1050  call stntbia(n,lun,numb,nemo,cseq)
+
1051  enddo
+
1052 
+
1053  ! Table B
+
1054 
+
1055  do i=1,lb
+
1056  n = igetntbi(lun,'B')
+
1057  jbit = 8*(jb(i)-1)
+
1058  call upc(tabb1,ldbd,mesg,jbit,.true.)
+
1059  jbit = 8*(jb(i)+ldbd-1)
+
1060  call upc(tabb2,ldbe,mesg,jbit,.true.)
+
1061  tabb(n,lun) = tabb1(1:ldxbd(idxv+1))//tabb2(1:ldxbe(idxv+1))
+
1062  numb = tabb(n,lun)(1:6)
+
1063  nemo = tabb(n,lun)(7:14)
+
1064  call nenubd(nemo,numb,lun)
+
1065  idnb(n,lun) = ifxy(numb)
+
1066  unit = tabb(n,lun)(71:94)
+
1067  call capit(unit)
+
1068  tabb(n,lun)(71:94) = unit
+
1069  ntbb(lun) = n
+
1070  enddo
+
1071 
+
1072  ! Table D
+
1073 
+
1074  do i=1,ld
+
1075  n = igetntbi(lun,'D')
+
1076  jbit = 8*id
+
1077  call upc(tabd(n,lun),ldd,mesg,jbit,.true.)
+
1078  numb = tabd(n,lun)(1:6)
+
1079  nemo = tabd(n,lun)(7:14)
+
1080  call nenubd(nemo,numb,lun)
+
1081  idnd(n,lun) = ifxy(numb)
+
1082  nd = iupb(mesg,id+ldd+1,8)
+
1083  if(nd>maxcd) then
+
1084  write(bort_str,'("BUFRLIB: STBFDX - NUMBER OF DESCRIPTORS IN '// &
+
1085  'TABLE D ENTRY ",A," IN BUFR TABLE (",I4,") EXCEEDS THE LIMIT (",I4,")")') nemo,nd,maxcd
+
1086  call bort(bort_str)
+
1087  endif
+
1088  do j=1,nd
+
1089  ndd = id+ldd+2 + (j-1)*l30
+
1090  jbit = 8*(ndd-1)
+
1091  call upc(cidn,l30,mesg,jbit,.true.)
+
1092  idn = idn30(cidn,l30)
+
1093  call pktdd(n,lun,idn,iret)
+
1094  if(iret<0) call bort('BUFRLIB: STBFDX - BAD RETURN FROM BUFRLIB ROUTINE PKTDD, SEE PREVIOUS WARNING MESSAGE')
+
1095  enddo
+
1096  id = id+ldd+1 + nd*l30
+
1097  if(iupb(mesg,id+1,8)==0) id = id+1
+
1098  ntbd(lun) = n
+
1099  enddo
+
1100 
+
1101  return
+
1102 end subroutine stbfdx
+
1103 
+
1113 integer function idxmsg( mesg ) result( iret )
+
1114 
+
1115  implicit none
+
1116 
+
1117  integer, intent(in) :: mesg(*)
+
1118  integer iupbs01
+
1119 
+
1120  ! Note that the following test relies upon logic within subroutine dxmini() which zeroes out the Section 1 date of
+
1121  ! all DX dictionary messages.
+
1122 
+
1123  if ( (iupbs01(mesg,'MTYP')==11) .and. &
+
1124  (iupbs01(mesg,'MNTH')==0) .and. (iupbs01(mesg,'DAYS')==0) .and. (iupbs01(mesg,'HOUR')==0) ) then
+
1125  iret = 1
+
1126  else
+
1127  iret = 0
+
1128  end if
+
1129 
+
1130  return
+
1131 end function idxmsg
+
1132 
+
1143 integer function igetntbi ( lun, ctb ) result(iret)
+
1144 
+
1145  use moda_tababd
+
1146 
+
1147  implicit none
+
1148 
+
1149  integer, intent(in) :: lun
+
1150  integer imax
+
1151 
+
1152  character, intent(in) :: ctb
+
1153  character*128 bort_str
+
1154 
+
1155  if ( ctb == 'A' ) then
+
1156  iret = ntba(lun) + 1
+
1157  imax = ntba(0)
+
1158  else if ( ctb == 'B' ) then
+
1159  iret = ntbb(lun) + 1
+
1160  imax = ntbb(0)
+
1161  else ! ctb == 'D'
+
1162  iret = ntbd(lun) + 1
+
1163  imax = ntbd(0)
+
1164  endif
+
1165  if ( iret > imax ) then
+
1166  write(bort_str,'("BUFRLIB: IGETNTBI - NUMBER OF INTERNAL TABLE",A1," ENTRIES EXCEEDS THE LIMIT (",I4,")")') ctb, imax
+
1167  call bort(bort_str)
+
1168  endif
+
1169 
+
1170  return
+
1171 end function igetntbi
+
1172 
+
1187 subroutine nemtbax(lun,nemo,mtyp,msbt,inod)
+
1188 
+
1189  use moda_tababd
+
1190 
+
1191  implicit none
+
1192 
+
1193  integer, intent(in) :: lun
+
1194  integer, intent(out) :: mtyp, msbt, inod
+
1195  integer i
+
1196 
+
1197  character*(*), intent(in) :: nemo
+
1198  character*128 bort_str
1199 
-
1200  implicit none
+
1200  inod = 0
1201 
-
1202  integer, intent(in) :: lun
-
1203  integer, intent(out) :: mtyp, msbt, inod
-
1204  integer i
-
1205 
-
1206  character*(*), intent(in) :: nemo
-
1207  character*128 bort_str
-
1208 
-
1209  inod = 0
-
1210 
-
1211  ! Look for nemo in Table A
-
1212 
-
1213  do i=1,ntba(lun)
-
1214  if(taba(i,lun)(4:11)==nemo) then
-
1215  mtyp = idna(i,lun,1)
-
1216  msbt = idna(i,lun,2)
-
1217  inod = mtab(i,lun)
-
1218  if(mtyp<0 .or. mtyp>255) then
-
1219  write(bort_str,'("BUFRLIB: NEMTBAX - INVALID MESSAGE TYPE (",I4,") RETURNED FOR MENMONIC ",A)') mtyp, nemo
-
1220  call bort(bort_str)
-
1221  endif
-
1222  if(msbt<0 .or. msbt>255) then
-
1223  write(bort_str,'("BUFRLIB: NEMTBAX - INVALID MESSAGE SUBTYPE (",I4,") RETURNED FOR MENMONIC ",A)') msbt, nemo
-
1224  call bort(bort_str)
-
1225  endif
-
1226  exit
-
1227  endif
-
1228  enddo
-
1229 
-
1230  return
-
1231 end subroutine nemtbax
-
1232 
-
1246 subroutine nemtba(lun,nemo,mtyp,msbt,inod)
-
1247 
-
1248  implicit none
-
1249 
-
1250  integer, intent(in) :: lun
-
1251  integer, intent(out) :: mtyp, msbt, inod
-
1252 
-
1253  character*(*), intent(in) :: nemo
-
1254  character*128 bort_str
-
1255 
-
1256  ! Look for nemo in Table A
+
1202  ! Look for nemo in Table A
+
1203 
+
1204  do i=1,ntba(lun)
+
1205  if(taba(i,lun)(4:11)==nemo) then
+
1206  mtyp = idna(i,lun,1)
+
1207  msbt = idna(i,lun,2)
+
1208  inod = mtab(i,lun)
+
1209  if(mtyp<0 .or. mtyp>255) then
+
1210  write(bort_str,'("BUFRLIB: NEMTBAX - INVALID MESSAGE TYPE (",I4,") RETURNED FOR MENMONIC ",A)') mtyp, nemo
+
1211  call bort(bort_str)
+
1212  endif
+
1213  if(msbt<0 .or. msbt>255) then
+
1214  write(bort_str,'("BUFRLIB: NEMTBAX - INVALID MESSAGE SUBTYPE (",I4,") RETURNED FOR MENMONIC ",A)') msbt, nemo
+
1215  call bort(bort_str)
+
1216  endif
+
1217  exit
+
1218  endif
+
1219  enddo
+
1220 
+
1221  return
+
1222 end subroutine nemtbax
+
1223 
+
1237 subroutine nemtba(lun,nemo,mtyp,msbt,inod)
+
1238 
+
1239  implicit none
+
1240 
+
1241  integer, intent(in) :: lun
+
1242  integer, intent(out) :: mtyp, msbt, inod
+
1243 
+
1244  character*(*), intent(in) :: nemo
+
1245  character*128 bort_str
+
1246 
+
1247  ! Look for nemo in Table A
+
1248 
+
1249  call nemtbax(lun,nemo,mtyp,msbt,inod)
+
1250  if(inod==0) then
+
1251  write(bort_str,'("BUFRLIB: NEMTBA - CAN''T FIND MNEMONIC ",A)') nemo
+
1252  call bort(bort_str)
+
1253  endif
+
1254 
+
1255  return
+
1256 end subroutine nemtba
1257 
-
1258  call nemtbax(lun,nemo,mtyp,msbt,inod)
-
1259  if(inod==0) then
-
1260  write(bort_str,'("BUFRLIB: NEMTBA - CAN''T FIND MNEMONIC ",A)') nemo
-
1261  call bort(bort_str)
-
1262  endif
-
1263 
-
1264  return
-
1265 end subroutine nemtba
-
1266 
-
1277 subroutine nemtbb(lun,itab,unit,iscl,iref,ibit)
-
1278 
-
1279  use moda_tababd
-
1280 
-
1281  implicit none
-
1282 
-
1283  integer, intent(in) :: lun, itab
-
1284  integer, intent(out) :: iscl, iref, ibit
-
1285  integer idn, ierns
+
1268 subroutine nemtbb(lun,itab,unit,iscl,iref,ibit)
+
1269 
+
1270  use moda_tababd
+
1271 
+
1272  implicit none
+
1273 
+
1274  integer, intent(in) :: lun, itab
+
1275  integer, intent(out) :: iscl, iref, ibit
+
1276  integer idn, ierns
+
1277 
+
1278  character*128 bort_str
+
1279  character*24, intent(out) :: unit
+
1280  character*8 nemo
+
1281 
+
1282  if(itab<=0 .or. itab>ntbb(lun)) then
+
1283  write(bort_str,'("BUFRLIB: NEMTBB - ITAB (",I7,") NOT FOUND IN TABLE B")') itab
+
1284  call bort(bort_str)
+
1285  endif
1286 
-
1287  character*128 bort_str
-
1288  character*24, intent(out) :: unit
-
1289  character*8 nemo
-
1290 
-
1291  if(itab<=0 .or. itab>ntbb(lun)) then
-
1292  write(bort_str,'("BUFRLIB: NEMTBB - ITAB (",I7,") NOT FOUND IN TABLE B")') itab
-
1293  call bort(bort_str)
-
1294  endif
+
1287  ! Pull out Table B information
+
1288 
+
1289  idn = idnb(itab,lun)
+
1290  nemo = tabb(itab,lun)( 7:14)
+
1291  unit = tabb(itab,lun)(71:94)
+
1292  call strnum(tabb(itab,lun)( 95: 98),iscl,ierns)
+
1293  call strnum(tabb(itab,lun)( 99:109),iref,ierns)
+
1294  call strnum(tabb(itab,lun)(110:112),ibit,ierns)
1295 
-
1296  ! Pull out Table B information
+
1296  ! Check Table B contents
1297 
-
1298  idn = idnb(itab,lun)
-
1299  nemo = tabb(itab,lun)( 7:14)
-
1300  unit = tabb(itab,lun)(71:94)
-
1301  call strnum(tabb(itab,lun)( 95: 98),iscl,ierns)
-
1302  call strnum(tabb(itab,lun)( 99:109),iref,ierns)
-
1303  call strnum(tabb(itab,lun)(110:112),ibit,ierns)
-
1304 
-
1305  ! Check Table B contents
-
1306 
-
1307  if(unit(1:5)/='CCITT' .and. ibit>32) then
-
1308  write(bort_str,'("BUFRLIB: NEMTBB - BIT WIDTH FOR NON-CHARACTER TABLE B MNEMONIC ",A," (",I7,") IS > 32")') nemo,ibit
-
1309  call bort(bort_str)
-
1310  endif
-
1311  if(unit(1:5)=='CCITT' .and. mod(ibit,8)/=0) then
-
1312  write(bort_str,'("BUFRLIB: NEMTBB - BIT WIDTH FOR CHARACTER TABLE B MNEMONIC ",A," (",I7,") IS NOT A MULTIPLE OF 8")') &
-
1313  nemo,ibit
-
1314  call bort(bort_str)
-
1315  endif
-
1316 
-
1317  return
-
1318 end subroutine nemtbb
-
1319 
-
1345 subroutine nemtbd(lun,itab,nseq,nems,irps,knts)
-
1346 
-
1347  use modv_vars, only: maxcd
-
1348 
-
1349  use moda_tababd
-
1350 
-
1351  implicit none
+
1298  if(unit(1:5)/='CCITT' .and. ibit>32) then
+
1299  write(bort_str,'("BUFRLIB: NEMTBB - BIT WIDTH FOR NON-CHARACTER TABLE B MNEMONIC ",A," (",I7,") IS > 32")') nemo,ibit
+
1300  call bort(bort_str)
+
1301  endif
+
1302  if(unit(1:5)=='CCITT' .and. mod(ibit,8)/=0) then
+
1303  write(bort_str,'("BUFRLIB: NEMTBB - BIT WIDTH FOR CHARACTER TABLE B MNEMONIC ",A," (",I7,") IS NOT A MULTIPLE OF 8")') &
+
1304  nemo,ibit
+
1305  call bort(bort_str)
+
1306  endif
+
1307 
+
1308  return
+
1309 end subroutine nemtbb
+
1310 
+
1336 subroutine nemtbd(lun,itab,nseq,nems,irps,knts)
+
1337 
+
1338  use modv_vars, only: maxcd
+
1339 
+
1340  use moda_tababd
+
1341 
+
1342  implicit none
+
1343 
+
1344  integer, intent(in) :: lun, itab
+
1345  integer, intent(out) :: nseq, irps(*), knts(*)
+
1346  integer i, j, ndsc, idsc, iret
+
1347 
+
1348  character*128 bort_str
+
1349  character*8, intent(out) :: nems(*)
+
1350  character*8 nemo, nemt, nemf
+
1351  character tab
1352 
-
1353  integer, intent(in) :: lun, itab
-
1354  integer, intent(out) :: nseq, irps(*), knts(*)
-
1355  integer i, j, ndsc, idsc, iret
-
1356 
-
1357  character*128 bort_str
-
1358  character*8, intent(out) :: nems(*)
-
1359  character*8 nemo, nemt, nemf
-
1360  character tab
+
1353  if(itab<=0 .or. itab>ntbd(lun)) then
+
1354  write(bort_str,'("BUFRLIB: NEMTBD - ITAB (",I7,") NOT FOUND IN TABLE D")') itab
+
1355  call bort(bort_str)
+
1356  endif
+
1357 
+
1358  ! Clear the return values
+
1359 
+
1360  nseq = 0
1361 
-
1362  if(itab<=0 .or. itab>ntbd(lun)) then
-
1363  write(bort_str,'("BUFRLIB: NEMTBD - ITAB (",I7,") NOT FOUND IN TABLE D")') itab
-
1364  call bort(bort_str)
-
1365  endif
-
1366 
-
1367  ! Clear the return values
-
1368 
-
1369  nseq = 0
-
1370 
-
1371  do i=1,maxcd
-
1372  nems(i) = ' '
-
1373  irps(i) = 0
-
1374  knts(i) = 0
-
1375  enddo
-
1376 
-
1377  ! Parse the Table D entry
-
1378 
-
1379  nemo = tabd(itab,lun)(7:14)
-
1380  idsc = idnd(itab,lun)
-
1381  call uptdd(itab,lun,0,ndsc)
-
1382 
-
1383  ! Loop through each child mnemonic
-
1384 
-
1385  do j=1,ndsc
-
1386  if(nseq+1>maxcd) then
-
1387  write(bort_str,'("BUFRLIB: NEMTBD - THERE ARE MORE THAN '// &
-
1388  '(",I4,") DESCRIPTORS (THE LIMIT) IN TABLE D SEQUENCE MNEMONIC ",A)') maxcd, nemo
-
1389  call bort(bort_str)
-
1390  endif
-
1391  call uptdd(itab,lun,j,idsc)
-
1392  call numtab(lun,idsc,nemt,tab,iret)
-
1393  if(tab=='R') then
-
1394  if(iret<0) then
-
1395  ! Regular (i.e. non-delayed) replication
-
1396  irps(nseq+1) = 1
-
1397  knts(nseq+1) = abs(iret)
-
1398  elseif(iret>0) then
-
1399  ! Delayed replication
-
1400  irps(nseq+1) = iret
-
1401  endif
-
1402  elseif(tab=='F') then
-
1403  ! Replication factor
-
1404  irps(nseq+1) = iret
-
1405  elseif(tab=='D'.or.tab=='C') then
-
1406  nseq = nseq+1
+
1362  do i=1,maxcd
+
1363  nems(i) = ' '
+
1364  irps(i) = 0
+
1365  knts(i) = 0
+
1366  enddo
+
1367 
+
1368  ! Parse the Table D entry
+
1369 
+
1370  nemo = tabd(itab,lun)(7:14)
+
1371  idsc = idnd(itab,lun)
+
1372  call uptdd(itab,lun,0,ndsc)
+
1373 
+
1374  ! Loop through each child mnemonic
+
1375 
+
1376  do j=1,ndsc
+
1377  if(nseq+1>maxcd) then
+
1378  write(bort_str,'("BUFRLIB: NEMTBD - THERE ARE MORE THAN '// &
+
1379  '(",I4,") DESCRIPTORS (THE LIMIT) IN TABLE D SEQUENCE MNEMONIC ",A)') maxcd, nemo
+
1380  call bort(bort_str)
+
1381  endif
+
1382  call uptdd(itab,lun,j,idsc)
+
1383  call numtab(lun,idsc,nemt,tab,iret)
+
1384  if(tab=='R') then
+
1385  if(iret<0) then
+
1386  ! Regular (i.e. non-delayed) replication
+
1387  irps(nseq+1) = 1
+
1388  knts(nseq+1) = abs(iret)
+
1389  elseif(iret>0) then
+
1390  ! Delayed replication
+
1391  irps(nseq+1) = iret
+
1392  endif
+
1393  elseif(tab=='F') then
+
1394  ! Replication factor
+
1395  irps(nseq+1) = iret
+
1396  elseif(tab=='D'.or.tab=='C') then
+
1397  nseq = nseq+1
+
1398  nems(nseq) = nemt
+
1399  elseif(tab=='B') then
+
1400  nseq = nseq+1
+
1401  if((nemt(1:1)=='.').and.(j<ndsc)) then
+
1402  ! This is a "following value" mnemonic
+
1403  call uptdd(itab,lun,j+1,idsc)
+
1404  call numtab(lun,idsc,nemf,tab,iret)
+
1405  call rsvfvm(nemt,nemf)
+
1406  endif
1407  nems(nseq) = nemt
-
1408  elseif(tab=='B') then
-
1409  nseq = nseq+1
-
1410  if((nemt(1:1)=='.').and.(j<ndsc)) then
-
1411  ! This is a "following value" mnemonic
-
1412  call uptdd(itab,lun,j+1,idsc)
-
1413  call numtab(lun,idsc,nemf,tab,iret)
-
1414  call rsvfvm(nemt,nemf)
-
1415  endif
-
1416  nems(nseq) = nemt
-
1417  endif
-
1418  enddo
-
1419 
-
1420  return
-
1421 end subroutine nemtbd
-
1422 
-
1445 recursive subroutine nemdefs ( lunit, nemo, celem, cunit, iret )
-
1446 
-
1447  use modv_vars, only: im8b
-
1448 
-
1449  use moda_tababd
-
1450 
-
1451  implicit none
-
1452 
-
1453  integer, intent(in) :: lunit
-
1454  integer, intent(out) :: iret
-
1455  integer my_lunit, lun, il, im, idn, iloc, ls
-
1456 
-
1457  character*(*), intent(in) :: nemo
-
1458  character*(*), intent(out) :: celem, cunit
-
1459  character tab
-
1460 
-
1461  ! Check for I8 integers.
+
1408  endif
+
1409  enddo
+
1410 
+
1411  return
+
1412 end subroutine nemtbd
+
1413 
+
1436 recursive subroutine nemdefs ( lunit, nemo, celem, cunit, iret )
+
1437 
+
1438  use modv_vars, only: im8b
+
1439 
+
1440  use moda_tababd
+
1441 
+
1442  implicit none
+
1443 
+
1444  integer, intent(in) :: lunit
+
1445  integer, intent(out) :: iret
+
1446  integer my_lunit, lun, il, im, idn, iloc, ls
+
1447 
+
1448  character*(*), intent(in) :: nemo
+
1449  character*(*), intent(out) :: celem, cunit
+
1450  character tab
+
1451 
+
1452  ! Check for I8 integers.
+
1453 
+
1454  if(im8b) then
+
1455  im8b=.false.
+
1456  call x84 ( lunit, my_lunit, 1 )
+
1457  call nemdefs ( my_lunit, nemo, celem, cunit, iret )
+
1458  call x48 ( iret, iret, 1 )
+
1459  im8b=.true.
+
1460  return
+
1461  endif
1462 
-
1463  if(im8b) then
-
1464  im8b=.false.
-
1465  call x84 ( lunit, my_lunit, 1 )
-
1466  call nemdefs ( my_lunit, nemo, celem, cunit, iret )
-
1467  call x48 ( iret, iret, 1 )
-
1468  im8b=.true.
-
1469  return
-
1470  endif
+
1463  iret = -1
+
1464 
+
1465  ! Get lun from lunit.
+
1466 
+
1467  call status( lunit, lun, il, im )
+
1468  if ( il == 0 ) return
+
1469 
+
1470  ! Find the requested mnemonic in the internal Table B arrays.
1471 
-
1472  iret = -1
-
1473 
-
1474  ! Get lun from lunit.
-
1475 
-
1476  call status( lunit, lun, il, im )
-
1477  if ( il == 0 ) return
-
1478 
-
1479  ! Find the requested mnemonic in the internal Table B arrays.
+
1472  call nemtab( lun, nemo, idn, tab, iloc )
+
1473  if ( ( iloc == 0 ) .or. ( tab /= 'B' ) ) return
+
1474 
+
1475  ! Get the element name and units of the requested mnemonic.
+
1476 
+
1477  celem = ' '
+
1478  ls = min(len(celem),55)
+
1479  celem(1:ls) = tabb(iloc,lun)(16:15+ls)
1480 
-
1481  call nemtab( lun, nemo, idn, tab, iloc )
-
1482  if ( ( iloc == 0 ) .or. ( tab /= 'B' ) ) return
-
1483 
-
1484  ! Get the element name and units of the requested mnemonic.
-
1485 
-
1486  celem = ' '
-
1487  ls = min(len(celem),55)
-
1488  celem(1:ls) = tabb(iloc,lun)(16:15+ls)
+
1481  cunit = ' '
+
1482  ls = min(len(cunit),24)
+
1483  cunit(1:ls) = tabb(iloc,lun)(71:70+ls)
+
1484 
+
1485  iret = 0
+
1486 
+
1487  return
+
1488 end subroutine nemdefs
1489 
-
1490  cunit = ' '
-
1491  ls = min(len(cunit),24)
-
1492  cunit(1:ls) = tabb(iloc,lun)(71:70+ls)
-
1493 
-
1494  iret = 0
-
1495 
-
1496  return
-
1497 end subroutine nemdefs
-
1498 
-
1513 subroutine nenubd(nemo,numb,lun)
-
1514 
-
1515  use moda_tababd
-
1516 
-
1517  implicit none
-
1518 
-
1519  character, intent(in) :: nemo*8, numb*6
-
1520  character*128 bort_str
-
1521 
-
1522  integer, intent(in) :: lun
-
1523  integer n
-
1524 
-
1525  do n=1,ntbb(lun)
-
1526  if(numb==tabb(n,lun)(1:6)) then
-
1527  write(bort_str,'("BUFRLIB: NENUBD - TABLE B FXY VALUE (",A,") HAS ALREADY BEEN DEFINED (DUPLICATE)")') numb
-
1528  call bort(bort_str)
-
1529  endif
-
1530  if(nemo==tabb(n,lun)(7:14)) then
-
1531  write(bort_str,'("BUFRLIB: NENUBD - TABLE B MNEMONIC (",A,") HAS ALREADY BEEN DEFINED (DUPLICATE)")') nemo
-
1532  call bort(bort_str)
-
1533  endif
-
1534  enddo
-
1535 
-
1536  do n=1,ntbd(lun)
-
1537  if(numb==tabd(n,lun)(1:6)) then
-
1538  write(bort_str,'("BUFRLIB: NENUBD - TABLE D FXY VALUE (",A,") HAS ALREADY BEEN DEFINED (DUPLICATE)")') numb
-
1539  call bort(bort_str)
-
1540  endif
-
1541  if(nemo==tabd(n,lun)(7:14)) then
-
1542  write(bort_str,'("BUFRLIB: NENUBD - TABLE D MNEMONIC (",A,") HAS ALREADY BEEN DEFINED (DUPLICATE)")') nemo
-
1543  call bort(bort_str)
-
1544  endif
-
1545  enddo
-
1546 
-
1547  return
-
1548 end subroutine nenubd
-
1549 
-
1559 subroutine stntbia ( n, lun, numb, nemo, celsq )
-
1560 
-
1561  use moda_tababd
-
1562 
-
1563  implicit none
-
1564 
-
1565  integer, intent(in) :: n, lun
-
1566  integer i, mtyp, msbt
-
1567 
-
1568  character*(*), intent(in) :: numb, nemo, celsq
-
1569  character*128 bort_str
-
1570 
-
1571  ! Confirm that neither nemo nor numb has already been defined within the internal BUFR Table A for the given lun.
-
1572 
-
1573  do i=1,ntba(lun)
-
1574  if(numb(4:6)==taba(i,lun)(1:3)) then
-
1575  write(bort_str,'("BUFRLIB: STNTBIA - TABLE A FXY VALUE (",A,") HAS ALREADY BEEN DEFINED (DUPLICATE)")') numb
-
1576  call bort(bort_str)
-
1577  endif
-
1578  if(nemo(1:8)==taba(i,lun)(4:11)) then
-
1579  write(bort_str,'("BUFRLIB: STNTBIA - TABLE A MNEMONIC (",A,") HAS ALREADY BEEN DEFINED (DUPLICATE)")') nemo
-
1580  call bort(bort_str)
-
1581  endif
-
1582  enddo
-
1583 
-
1584  ! Store the values within the internal BUFR Table A.
-
1585 
-
1586  taba(n,lun)(1:3) = numb(4:6)
-
1587  taba(n,lun)(4:11) = nemo(1:8)
-
1588  taba(n,lun)(13:67) = celsq(1:55)
-
1589 
-
1590  ! Decode and store the message type and subtype.
-
1591 
-
1592  if ( verify( nemo(3:8), '1234567890' ) == 0 ) then
-
1593  ! Message type & subtype obtained directly from Table A mnemonic
-
1594  read ( nemo,'(2X,2I3)') mtyp, msbt
-
1595  idna(n,lun,1) = mtyp
-
1596  idna(n,lun,2) = msbt
-
1597  else
-
1598  ! Message type obtained from Y value of Table A seq. descriptor
-
1599  read ( numb(4:6),'(I3)') idna(n,lun,1)
-
1600  ! Message subtype hardwired to zero
-
1601  idna(n,lun,2) = 0
-
1602  endif
-
1603 
-
1604  ! Update the count of internal Table A entries.
-
1605 
-
1606  ntba(lun) = n
-
1607 
-
1608  return
-
1609 end subroutine stntbia
-
1610 
-
1620 subroutine stntbi ( n, lun, numb, nemo, celsq )
+
1504 subroutine nenubd(nemo,numb,lun)
+
1505 
+
1506  use moda_tababd
+
1507 
+
1508  implicit none
+
1509 
+
1510  character, intent(in) :: nemo*8, numb*6
+
1511  character*128 bort_str
+
1512 
+
1513  integer, intent(in) :: lun
+
1514  integer n
+
1515 
+
1516  do n=1,ntbb(lun)
+
1517  if(numb==tabb(n,lun)(1:6)) then
+
1518  write(bort_str,'("BUFRLIB: NENUBD - TABLE B FXY VALUE (",A,") HAS ALREADY BEEN DEFINED (DUPLICATE)")') numb
+
1519  call bort(bort_str)
+
1520  endif
+
1521  if(nemo==tabb(n,lun)(7:14)) then
+
1522  write(bort_str,'("BUFRLIB: NENUBD - TABLE B MNEMONIC (",A,") HAS ALREADY BEEN DEFINED (DUPLICATE)")') nemo
+
1523  call bort(bort_str)
+
1524  endif
+
1525  enddo
+
1526 
+
1527  do n=1,ntbd(lun)
+
1528  if(numb==tabd(n,lun)(1:6)) then
+
1529  write(bort_str,'("BUFRLIB: NENUBD - TABLE D FXY VALUE (",A,") HAS ALREADY BEEN DEFINED (DUPLICATE)")') numb
+
1530  call bort(bort_str)
+
1531  endif
+
1532  if(nemo==tabd(n,lun)(7:14)) then
+
1533  write(bort_str,'("BUFRLIB: NENUBD - TABLE D MNEMONIC (",A,") HAS ALREADY BEEN DEFINED (DUPLICATE)")') nemo
+
1534  call bort(bort_str)
+
1535  endif
+
1536  enddo
+
1537 
+
1538  return
+
1539 end subroutine nenubd
+
1540 
+
1550 subroutine stntbia ( n, lun, numb, nemo, celsq )
+
1551 
+
1552  use moda_tababd
+
1553 
+
1554  implicit none
+
1555 
+
1556  integer, intent(in) :: n, lun
+
1557  integer i, mtyp, msbt
+
1558 
+
1559  character*(*), intent(in) :: numb, nemo, celsq
+
1560  character*128 bort_str
+
1561 
+
1562  ! Confirm that neither nemo nor numb has already been defined within the internal BUFR Table A for the given lun.
+
1563 
+
1564  do i=1,ntba(lun)
+
1565  if(numb(4:6)==taba(i,lun)(1:3)) then
+
1566  write(bort_str,'("BUFRLIB: STNTBIA - TABLE A FXY VALUE (",A,") HAS ALREADY BEEN DEFINED (DUPLICATE)")') numb
+
1567  call bort(bort_str)
+
1568  endif
+
1569  if(nemo(1:8)==taba(i,lun)(4:11)) then
+
1570  write(bort_str,'("BUFRLIB: STNTBIA - TABLE A MNEMONIC (",A,") HAS ALREADY BEEN DEFINED (DUPLICATE)")') nemo
+
1571  call bort(bort_str)
+
1572  endif
+
1573  enddo
+
1574 
+
1575  ! Store the values within the internal BUFR Table A.
+
1576 
+
1577  taba(n,lun)(1:3) = numb(4:6)
+
1578  taba(n,lun)(4:11) = nemo(1:8)
+
1579  taba(n,lun)(13:67) = celsq(1:55)
+
1580 
+
1581  ! Decode and store the message type and subtype.
+
1582 
+
1583  if ( verify( nemo(3:8), '1234567890' ) == 0 ) then
+
1584  ! Message type & subtype obtained directly from Table A mnemonic
+
1585  read ( nemo,'(2X,2I3)') mtyp, msbt
+
1586  idna(n,lun,1) = mtyp
+
1587  idna(n,lun,2) = msbt
+
1588  else
+
1589  ! Message type obtained from Y value of Table A seq. descriptor
+
1590  read ( numb(4:6),'(I3)') idna(n,lun,1)
+
1591  ! Message subtype hardwired to zero
+
1592  idna(n,lun,2) = 0
+
1593  endif
+
1594 
+
1595  ! Update the count of internal Table A entries.
+
1596 
+
1597  ntba(lun) = n
+
1598 
+
1599  return
+
1600 end subroutine stntbia
+
1601 
+
1611 subroutine stntbi ( n, lun, numb, nemo, celsq )
+
1612 
+
1613  use moda_tababd
+
1614 
+
1615  implicit none
+
1616 
+
1617  integer, intent(in) :: n, lun
+
1618  integer ifxy
+
1619 
+
1620  character*(*), intent(in) :: numb, nemo, celsq
1621 
-
1622  use moda_tababd
+
1622  call nenubd ( nemo, numb, lun )
1623 
-
1624  implicit none
-
1625 
-
1626  integer, intent(in) :: n, lun
-
1627  integer ifxy
-
1628 
-
1629  character*(*), intent(in) :: numb, nemo, celsq
-
1630 
-
1631  call nenubd ( nemo, numb, lun )
-
1632 
-
1633  if ( numb(1:1) == '0') then
-
1634  idnb(n,lun) = ifxy(numb)
-
1635  tabb(n,lun)(1:6) = numb(1:6)
-
1636  tabb(n,lun)(7:14) = nemo(1:8)
-
1637  tabb(n,lun)(16:70) = celsq(1:55)
-
1638  ntbb(lun) = n
-
1639  else ! numb(1:1) == '3'
-
1640  idnd(n,lun) = ifxy(numb)
-
1641  tabd(n,lun)(1:6) = numb(1:6)
-
1642  tabd(n,lun)(7:14) = nemo(1:8)
-
1643  tabd(n,lun)(16:70) = celsq(1:55)
-
1644  ntbd(lun) = n
-
1645  endif
-
1646 
-
1647  return
-
1648 end subroutine stntbi
-
1649 
-
1665 subroutine pktdd(id,lun,idn,iret)
-
1666 
-
1667  use modv_vars, only: maxcd
-
1668 
-
1669  use moda_tababd
+
1624  if ( numb(1:1) == '0') then
+
1625  idnb(n,lun) = ifxy(numb)
+
1626  tabb(n,lun)(1:6) = numb(1:6)
+
1627  tabb(n,lun)(7:14) = nemo(1:8)
+
1628  tabb(n,lun)(16:70) = celsq(1:55)
+
1629  ntbb(lun) = n
+
1630  else ! numb(1:1) == '3'
+
1631  idnd(n,lun) = ifxy(numb)
+
1632  tabd(n,lun)(1:6) = numb(1:6)
+
1633  tabd(n,lun)(7:14) = nemo(1:8)
+
1634  tabd(n,lun)(16:70) = celsq(1:55)
+
1635  ntbd(lun) = n
+
1636  endif
+
1637 
+
1638  return
+
1639 end subroutine stntbi
+
1640 
+
1656 subroutine pktdd(id,lun,idn,iret)
+
1657 
+
1658  use modv_vars, only: maxcd, iprt, idxv
+
1659 
+
1660  use moda_tababd
+
1661 
+
1662  implicit none
+
1663 
+
1664  integer, intent(in) :: id, lun, idn
+
1665  integer, intent(out) :: iret
+
1666  integer nxstr, ldxa, ldxb, ldxd, ld30, ldd, nd, idm, iupm
+
1667 
+
1668  character*128 errstr
+
1669  character*56 dxstr
1670 
-
1671  implicit none
+
1671  common /dxtab/ nxstr(10), ldxa(10), ldxb(10), ldxd(10), ld30(10), dxstr(10)
1672 
-
1673  integer, intent(in) :: id, lun, idn
-
1674  integer, intent(out) :: iret
-
1675  integer maxdx, idxv, nxstr, ldxa, ldxb, ldxd, ld30, iprt, ldd, nd, idm, iupm
+
1673  ! ldd points to the byte within tabd(id,lun) which contains (in packed integer format) a count of the number of child
+
1674  ! mnemonics stored thus far for this parent mnemonic.
+
1675  ldd = ldxd(idxv+1)+1
1676 
-
1677  character*128 errstr
-
1678  character*56 dxstr
-
1679 
-
1680  common /dxtab/ maxdx, idxv, nxstr(10), ldxa(10), ldxb(10), ldxd(10), ld30(10), dxstr(10)
-
1681  common /quiet/ iprt
-
1682 
-
1683  ! ldd points to the byte within tabd(id,lun) which contains (in packed integer format) a count of the number of child
-
1684  ! mnemonics stored thus far for this parent mnemonic.
-
1685  ldd = ldxd(idxv+1)+1
-
1686 
-
1687  ! Zero the counter if idn is zero
-
1688  if(idn==0) then
-
1689  call ipkm(tabd(id,lun)(ldd:ldd),1,0)
-
1690  iret = 0
-
1691  return
-
1692  endif
-
1693 
-
1694  ! Update the stored descriptor count for this Table D entry. nd is the (unpacked) count of the number of child mnemonics
-
1695  ! stored thus far for this parent mnemonic.
-
1696  nd = iupm(tabd(id,lun)(ldd:ldd),8)
-
1697 
-
1698  if(nd<0 .or. nd==maxcd) then
-
1699  if(iprt>=0) then
-
1700  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
-
1701  if(nd<0) then
-
1702  write ( unit=errstr, fmt='(A,I4,A)' ) 'BUFRLIB: PKTDD - BAD COUNTER VALUE (=', nd, ') - RETURN WITH IRET = -1'
-
1703  else
-
1704  write ( unit=errstr, fmt='(A,I4,A,A)' ) 'BUFRLIB: PKTDD - MAXIMUM NUMBER OF CHILD MNEMONICS (=', &
-
1705  maxcd, ') ALREADY STORED FOR THIS PARENT - RETURN WITH IRET = -1'
-
1706  endif
-
1707  call errwrt(errstr)
-
1708  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
-
1709  call errwrt(' ')
-
1710  endif
-
1711  iret = -1
-
1712  return
-
1713  else
-
1714  nd = nd+1
-
1715  call ipkm(tabd(id,lun)(ldd:ldd),1,nd)
-
1716  iret = nd
-
1717  endif
-
1718 
-
1719  ! Pack and store the descriptor. idm points to the starting byte within tabd(id,lun) at which the idn value for this
-
1720  ! child mnemonic will be stored (as a packed integer of width = 2 bytes).
-
1721  idm = ldd+1 + (nd-1)*2
-
1722  call ipkm(tabd(id,lun)(idm:idm),2,idn)
-
1723 
-
1724  return
-
1725 end subroutine pktdd
-
1726 
-
1740 subroutine uptdd(id,lun,ient,iret)
+
1677  ! Zero the counter if idn is zero
+
1678  if(idn==0) then
+
1679  call ipkm(tabd(id,lun)(ldd:ldd),1,0)
+
1680  iret = 0
+
1681  return
+
1682  endif
+
1683 
+
1684  ! Update the stored descriptor count for this Table D entry. nd is the (unpacked) count of the number of child mnemonics
+
1685  ! stored thus far for this parent mnemonic.
+
1686  nd = iupm(tabd(id,lun)(ldd:ldd),8)
+
1687 
+
1688  if(nd<0 .or. nd==maxcd) then
+
1689  if(iprt>=0) then
+
1690  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
+
1691  if(nd<0) then
+
1692  write ( unit=errstr, fmt='(A,I4,A)' ) 'BUFRLIB: PKTDD - BAD COUNTER VALUE (=', nd, ') - RETURN WITH IRET = -1'
+
1693  else
+
1694  write ( unit=errstr, fmt='(A,I4,A,A)' ) 'BUFRLIB: PKTDD - MAXIMUM NUMBER OF CHILD MNEMONICS (=', &
+
1695  maxcd, ') ALREADY STORED FOR THIS PARENT - RETURN WITH IRET = -1'
+
1696  endif
+
1697  call errwrt(errstr)
+
1698  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
+
1699  call errwrt(' ')
+
1700  endif
+
1701  iret = -1
+
1702  return
+
1703  else
+
1704  nd = nd+1
+
1705  call ipkm(tabd(id,lun)(ldd:ldd),1,nd)
+
1706  iret = nd
+
1707  endif
+
1708 
+
1709  ! Pack and store the descriptor. idm points to the starting byte within tabd(id,lun) at which the idn value for this
+
1710  ! child mnemonic will be stored (as a packed integer of width = 2 bytes).
+
1711  idm = ldd+1 + (nd-1)*2
+
1712  call ipkm(tabd(id,lun)(idm:idm),2,idn)
+
1713 
+
1714  return
+
1715 end subroutine pktdd
+
1716 
+
1730 subroutine uptdd(id,lun,ient,iret)
+
1731 
+
1732  use modv_vars, only: idxv
+
1733 
+
1734  use moda_tababd
+
1735 
+
1736  implicit none
+
1737 
+
1738  integer, intent(in) :: id, lun, ient
+
1739  integer, intent(out) :: iret
+
1740  integer nxstr, ldxa, ldxb, ldxd, ld30, ldd, ndsc, idsc, iupm
1741 
-
1742  use moda_tababd
-
1743 
-
1744  implicit none
-
1745 
-
1746  integer, intent(in) :: id, lun, ient
-
1747  integer, intent(out) :: iret
-
1748  integer maxdx, idxv, nxstr, ldxa, ldxb, ldxd, ld30, ldd, ndsc, idsc, iupm
-
1749 
-
1750  character*128 bort_str
-
1751  character*56 dxstr
-
1752 
-
1753  common /dxtab/ maxdx, idxv, nxstr(10), ldxa(10), ldxb(10), ldxd(10), ld30(10), dxstr(10)
-
1754 
-
1755  ! Check if ient is in bounds
-
1756 
-
1757  ldd = ldxd(idxv+1)+1
-
1758  ndsc = iupm(tabd(id,lun)(ldd:ldd),8)
-
1759  if(ient==0) then
-
1760  iret = ndsc
-
1761  return
-
1762  elseif(ient<0 .or. ient>ndsc) then
-
1763  write(bort_str,'("BUFRLIB: UPTDD - VALUE OF THIRD ARGUMENT IENT (INPUT) IS OUT OF RANGE (IENT =",I4,")")') ient
-
1764  call bort(bort_str)
-
1765  endif
+
1742  character*128 bort_str
+
1743  character*56 dxstr
+
1744 
+
1745  common /dxtab/ nxstr(10), ldxa(10), ldxb(10), ldxd(10), ld30(10), dxstr(10)
+
1746 
+
1747  ! Check if ient is in bounds
+
1748 
+
1749  ldd = ldxd(idxv+1)+1
+
1750  ndsc = iupm(tabd(id,lun)(ldd:ldd),8)
+
1751  if(ient==0) then
+
1752  iret = ndsc
+
1753  return
+
1754  elseif(ient<0 .or. ient>ndsc) then
+
1755  write(bort_str,'("BUFRLIB: UPTDD - VALUE OF THIRD ARGUMENT IENT (INPUT) IS OUT OF RANGE (IENT =",I4,")")') ient
+
1756  call bort(bort_str)
+
1757  endif
+
1758 
+
1759  ! Return the descriptor indicated by ient
+
1760 
+
1761  idsc = ldd+1 + (ient-1)*2
+
1762  iret = iupm(tabd(id,lun)(idsc:idsc),16)
+
1763 
+
1764  return
+
1765 end subroutine uptdd
1766 
-
1767  ! Return the descriptor indicated by ient
-
1768 
-
1769  idsc = ldd+1 + (ient-1)*2
-
1770  iret = iupm(tabd(id,lun)(idsc:idsc),16)
-
1771 
-
1772  return
-
1773 end subroutine uptdd
-
1774 
-
1794 subroutine rsvfvm(nem1,nem2)
-
1795 
-
1796  implicit none
-
1797 
-
1798  character*8, intent(inout) :: nem1
-
1799  character*8, intent(in) :: nem2
-
1800 
-
1801  integer i, j
-
1802 
-
1803  do i=1,len(nem1)
-
1804  if(i==1) then
-
1805  ! Skip the initial ".", and initialize J.
-
1806  j = 1
-
1807  else
-
1808  if(nem1(i:i)=='.') then
-
1809  nem1(i:i) = nem2(j:j)
-
1810  j = j+1
-
1811  endif
-
1812  endif
-
1813  enddo
-
1814 
-
1815  return
-
1816 end subroutine rsvfvm
+
1786 subroutine rsvfvm(nem1,nem2)
+
1787 
+
1788  implicit none
+
1789 
+
1790  character*8, intent(inout) :: nem1
+
1791  character*8, intent(in) :: nem2
+
1792 
+
1793  integer i, j
+
1794 
+
1795  do i=1,len(nem1)
+
1796  if(i==1) then
+
1797  ! Skip the initial ".", and initialize J.
+
1798  j = 1
+
1799  else
+
1800  if(nem1(i:i)=='.') then
+
1801  nem1(i:i) = nem2(j:j)
+
1802  j = j+1
+
1803  endif
+
1804  endif
+
1805  enddo
+
1806 
+
1807  return
+
1808 end subroutine rsvfvm
subroutine bort(str)
Log an error message, then abort the application program.
Definition: borts.F90:15
subroutine bort2(str1, str2)
Log two error messages, then abort the application program.
Definition: borts.F90:39
recursive integer function iupb(mbay, nbyt, nbit)
Decode an integer value from within a specified number of bits of an integer array,...
Definition: cidecode.F90:226
@@ -1604,58 +1596,60 @@
subroutine pkc(chr, nchr, ibay, ibit)
Encode a character string within a specified number of bytes of an integer array, starting at the bit...
Definition: ciencode.F90:25
recursive subroutine ipkm(cbay, nbyt, n)
Encode an integer value within a specified number of bytes of a character string, up to a maximum of ...
Definition: ciencode.F90:194
subroutine pkb(nval, nbits, ibay, ibit)
Encode an integer value within a specified number of bits of an integer array, starting at the bit im...
Definition: ciencode.F90:140
-
subroutine cpbfdx(lud, lun)
Copy all of the DX BUFR table information from one unit to another within internal memory.
Definition: copydata.F90:678
+
subroutine cpbfdx(lud, lun)
Copy all of the DX BUFR table information from one unit to another within internal memory.
Definition: copydata.F90:676
subroutine elemdx(card, lun)
Decode the scale factor, reference value, bit width and units (i.e., the "elements") from a Table B m...
Definition: dxtable.F90:516
-
subroutine nemtbb(lun, itab, unit, iscl, iref, ibit)
Get information about a Table B descriptor from the internal DX BUFR tables.
Definition: dxtable.F90:1278
-
subroutine dxmini(mbay, mbyt, mb4, mba, mbb, mbd)
Initialize a DX BUFR tables (dictionary) message, writing all the preliminary information into Sectio...
Definition: dxtable.F90:697
-
subroutine nemtba(lun, nemo, mtyp, msbt, inod)
Get information about a Table A descriptor from the internal DX BUFR tables.
Definition: dxtable.F90:1247
+
subroutine nemtbb(lun, itab, unit, iscl, iref, ibit)
Get information about a Table B descriptor from the internal DX BUFR tables.
Definition: dxtable.F90:1269
+
subroutine dxmini(mbay, mbyt, mb4, mba, mbb, mbd)
Initialize a DX BUFR tables (dictionary) message, writing all the preliminary information into Sectio...
Definition: dxtable.F90:693
+
subroutine nemtba(lun, nemo, mtyp, msbt, inod)
Get information about a Table A descriptor from the internal DX BUFR tables.
Definition: dxtable.F90:1238
subroutine rdusdx(lundx, lun)
Read and parse a file containing a user-supplied DX BUFR table in character format,...
Definition: dxtable.F90:197
-
subroutine rsvfvm(nem1, nem2)
Process a "following value" mnemonic.
Definition: dxtable.F90:1795
+
subroutine rsvfvm(nem1, nem2)
Process a "following value" mnemonic.
Definition: dxtable.F90:1787
subroutine seqsdx(card, lun)
Decode the Table D sequence information from a mnemonic definition card that was previously read from...
Definition: dxtable.F90:333
-
recursive subroutine wrdxtb(lundx, lunot)
Generate one or more BUFR messages from the DX BUFR tables information associated with a given BUFR f...
Definition: dxtable.F90:850
-
subroutine nemtbax(lun, nemo, mtyp, msbt, inod)
Get information about a Table A descriptor from the internal DX BUFR tables.
Definition: dxtable.F90:1197
-
subroutine nemtbd(lun, itab, nseq, nems, irps, knts)
Get information about a Table D descriptor from the internal DX BUFR tables.
Definition: dxtable.F90:1346
-
subroutine stntbi(n, lun, numb, nemo, celsq)
Store a new entry within internal BUFR Table B or D.
Definition: dxtable.F90:1621
-
subroutine pktdd(id, lun, idn, iret)
Store information about a child mnemonic within the internal BUFR Table D.
Definition: dxtable.F90:1666
-
subroutine stntbia(n, lun, numb, nemo, celsq)
Store a new entry within internal BUFR Table A.
Definition: dxtable.F90:1560
-
subroutine stbfdx(lun, mesg)
Copy a DX BUFR tables message into the internal memory arrays in module moda_tababd.
Definition: dxtable.F90:990
-
subroutine writdx(lunit, lun, lundx)
Write DX BUFR table (dictionary) messages to the beginning of an output BUFR file in lunit.
Definition: dxtable.F90:812
-
recursive subroutine nemdefs(lunit, nemo, celem, cunit, iret)
Get the element name and units associated with a Table B descriptor.
Definition: dxtable.F90:1446
-
integer function igetntbi(lun, ctb)
Get the next available index for storing an entry within a specified internal DX BUFR table.
Definition: dxtable.F90:1153
+
recursive subroutine wrdxtb(lundx, lunot)
Generate one or more BUFR messages from the DX BUFR tables information associated with a given BUFR f...
Definition: dxtable.F90:840
+
subroutine nemtbax(lun, nemo, mtyp, msbt, inod)
Get information about a Table A descriptor from the internal DX BUFR tables.
Definition: dxtable.F90:1188
+
subroutine nemtbd(lun, itab, nseq, nems, irps, knts)
Get information about a Table D descriptor from the internal DX BUFR tables.
Definition: dxtable.F90:1337
+
subroutine stntbi(n, lun, numb, nemo, celsq)
Store a new entry within internal BUFR Table B or D.
Definition: dxtable.F90:1612
+
subroutine pktdd(id, lun, idn, iret)
Store information about a child mnemonic within the internal BUFR Table D.
Definition: dxtable.F90:1657
+
subroutine stntbia(n, lun, numb, nemo, celsq)
Store a new entry within internal BUFR Table A.
Definition: dxtable.F90:1551
+
subroutine stbfdx(lun, mesg)
Copy a DX BUFR tables message into the internal memory arrays in module moda_tababd.
Definition: dxtable.F90:981
+
subroutine writdx(lunit, lun, lundx)
Write DX BUFR table (dictionary) messages to the beginning of an output BUFR file in lunit.
Definition: dxtable.F90:802
+
recursive subroutine nemdefs(lunit, nemo, celem, cunit, iret)
Get the element name and units associated with a Table B descriptor.
Definition: dxtable.F90:1437
+
integer function igetntbi(lun, ctb)
Get the next available index for storing an entry within a specified internal DX BUFR table.
Definition: dxtable.F90:1144
subroutine readdx(lunit, lun, lundx)
Initialize modules moda_tababd and moda_msgcwd with DX BUFR (dictionary) tables.
Definition: dxtable.F90:29
subroutine dxinit(lun, ioi)
Clear out the internal arrays (in module moda_tababd) holding the DX BUFR table, then optionally init...
Definition: dxtable.F90:606
-
subroutine nenubd(nemo, numb, lun)
Confirm that a mnemonic and FXY value haven't already been defined.
Definition: dxtable.F90:1514
-
integer function idxmsg(mesg)
Check whether a BUFR message contains DX BUFR tables information that was generated by the NCEPLIBS-b...
Definition: dxtable.F90:1123
-
subroutine uptdd(id, lun, ient, iret)
Get the WMO bit-wise representation of the FXY value corresponding to a child mnemonic in a Table D s...
Definition: dxtable.F90:1741
+
subroutine nenubd(nemo, numb, lun)
Confirm that a mnemonic and FXY value haven't already been defined.
Definition: dxtable.F90:1505
+
integer function idxmsg(mesg)
Check whether a BUFR message contains DX BUFR tables information that was generated by the NCEPLIBS-b...
Definition: dxtable.F90:1114
+
subroutine uptdd(id, lun, ient, iret)
Get the WMO bit-wise representation of the FXY value corresponding to a child mnemonic in a Table D s...
Definition: dxtable.F90:1731
subroutine rdbfdx(lunit, lun)
Beginning at the current file pointer location within lunit, read a complete DX BUFR table into inter...
Definition: dxtable.F90:121
subroutine errwrt(str)
Specify a custom location for the logging of error and diagnostic messages generated by the NCEPLIBS-...
Definition: errwrt.F90:32
-
subroutine nemtab(lun, nemo, idn, tab, iret)
Get information about a descriptor, based on a mnemonic.
Definition: fxy.F90:432
-
subroutine numtab(lun, idn, nemo, tab, iret)
Get information about a descriptor, based on the WMO bit-wise representation of an FXY value.
Definition: fxy.F90:357
+
subroutine nemtab(lun, nemo, idn, tab, iret)
Get information about a descriptor, based on a mnemonic.
Definition: fxy.F90:434
+
subroutine numtab(lun, idn, nemo, tab, iret)
Get information about a descriptor, based on the WMO bit-wise representation of an FXY value.
Definition: fxy.F90:359
character *(*) function adn30(idn, ldn)
Convert an FXY value from its WMO bit-wise representation to a character string of length 5 or 6.
Definition: fxy.F90:18
-
subroutine jstnum(str, sign, iret)
Left-justify a character string containing an encoded integer, by removing all leading blanks and any...
Definition: misc.F90:303
-
recursive subroutine strnum(str, num, iret)
Decode an integer from a character string.
Definition: misc.F90:177
-
subroutine capit(str)
Capitalize all of the alphabetic characters in a string.
Definition: misc.F90:355
+
subroutine jstnum(str, sign, iret)
Left-justify a character string containing an encoded integer, by removing all leading blanks and any...
Definition: misc.F90:282
+
recursive subroutine strnum(str, num, iret)
Decode an integer from a character string.
Definition: misc.F90:156
+
subroutine capit(str)
Capitalize all of the alphabetic characters in a string.
Definition: misc.F90:334
Wrap C NCEPLIBS-bufr functions so they can be called from within the Fortran part of the library.
Definition: bufrlib.F90:11
+
Declare arrays and variables used to store BUFR messages internally for multiple file IDs.
+
integer maxbyt
Maximum length of an output BUFR message.
Declare an array used by various subroutines and functions to hold a temporary working copy of a BUFR...
integer, dimension(:), allocatable mgwa
Temporary working copy of BUFR message.
-
Declare arrays and variables used to store DX BUFR tables internally for multiple file IDs.
-
integer, dimension(:), allocatable ntba
Number of Table A entries for each file ID (up to a maximum of maxtba, whose value is stored in array...
-
character *600, dimension(:,:), allocatable tabd
Table D entries for each file ID.
-
character *128, dimension(:,:), allocatable taba
Table A entries for each file ID.
-
integer, dimension(:,:), allocatable mtab
Entries within jump/link table corresponding to taba.
-
integer, dimension(:,:,:), allocatable idna
Message types (in array element 1) and subtypes (in array element 2) corresponding to taba.
-
integer, dimension(:), allocatable ntbd
Number of Table D entries for each file ID (up to a maximum of maxtbd, whose value is stored in array...
-
integer, dimension(:), allocatable ntbb
Number of Table B entries for each file ID (up to a maximum of maxtbb, whose value is stored in array...
-
integer, dimension(:,:), allocatable idnd
WMO bit-wise representations of the FXY values corresponding to tabd.
-
integer, dimension(:,:), allocatable idnb
WMO bit-wise representations of the FXY values corresponding to tabb.
-
character *128, dimension(:,:), allocatable tabb
Table B entries for each file ID.
-
recursive subroutine status(lunit, lun, il, im)
Check whether a specified Fortran logical unit number is currently connected to the NCEPLIBS-bufr sof...
-
logical function msgfull(msiz, itoadd, mxsiz)
Check whether the current data subset in the internal arrays will fit within the current BUFR message...
-
recursive subroutine getlens(mbay, ll, len0, len1, len2, len3, len4, len5)
Read the section lengths of a BUFR message, up to a specified point in the message.
-
subroutine rdmsgw(lunit, mesg, iret)
Read the next BUFR message from logical unit lunit as an array of integer words.
-
subroutine msgwrt(lunit, mesg, mgbyt)
Perform final checks and updates on a BUFR message before writing it to a specified Fortran logical u...
+
Declare arrays and variables used to store DX BUFR tables internally for multiple file IDs.
+
integer, dimension(:), allocatable ntba
Number of Table A entries for each file ID (up to a maximum of maxtba, whose value is stored in array...
+
character *600, dimension(:,:), allocatable tabd
Table D entries for each file ID.
+
character *128, dimension(:,:), allocatable taba
Table A entries for each file ID.
+
integer, dimension(:,:), allocatable mtab
Entries within jump/link table corresponding to taba.
+
integer, dimension(:,:,:), allocatable idna
Message types (in array element 1) and subtypes (in array element 2) corresponding to taba.
+
integer, dimension(:), allocatable ntbd
Number of Table D entries for each file ID (up to a maximum of maxtbd, whose value is stored in array...
+
integer, dimension(:), allocatable ntbb
Number of Table B entries for each file ID (up to a maximum of maxtbb, whose value is stored in array...
+
integer, dimension(:,:), allocatable idnd
WMO bit-wise representations of the FXY values corresponding to tabd.
+
integer, dimension(:,:), allocatable idnb
WMO bit-wise representations of the FXY values corresponding to tabb.
+
character *128, dimension(:,:), allocatable tabb
Table B entries for each file ID.
+
recursive subroutine status(lunit, lun, il, im)
Check whether a specified Fortran logical unit number is currently connected to the NCEPLIBS-bufr sof...
+
logical function msgfull(msiz, itoadd, mxsiz)
Check whether the current data subset in the internal arrays will fit within the current BUFR message...
+
recursive subroutine getlens(mbay, ll, len0, len1, len2, len3, len4, len5)
Read the section lengths of a BUFR message, up to a specified point in the message.
+
subroutine rdmsgw(lunit, mesg, iret)
Read the next BUFR message from logical unit lunit as an array of integer words.
+
subroutine msgwrt(lunit, mesg, mgbyt)
Perform final checks and updates on a BUFR message before writing it to a specified Fortran logical u...
recursive integer function iupbs01(mbay, s01mnem)
Read a specified value from within Section 0 or Section 1 of a BUFR message.
Definition: s013vals.F90:247
subroutine parstr(str, tags, mtag, ntag, sep, limit80)
Parse a string containing one or more substrings into an array of substrings.
Definition: strings.F90:473
subroutine x48(iin4, iout8, nval)
Encode one or more 4-byte integer values as 8-byte integer values.
Definition: x4884.F90:18
diff --git a/errwrt_8F90.html b/errwrt_8F90.html index 38f7b8c4e..1090022ab 100644 --- a/errwrt_8F90.html +++ b/errwrt_8F90.html @@ -26,7 +26,7 @@ @@ -140,7 +140,7 @@

Definition at line 31 of file errwrt.F90.

-

Referenced by arallocf(), bort(), bort2(), cktaba(), closbf(), cpdxmm(), cpyupd(), datebf(), dumpbf(), hold4wlc(), igetprm(), invcon(), invtag(), invwin(), ireadmt(), isetprm(), jstnum(), makestab(), maxout(), mrginv(), msgupd(), msgwrt(), mtfnam(), nvnwin(), openbf(), openbt(), pktdd(), rcstpl(), rdbfdx(), rdmemm(), rdmems(), rdmsgw(), readdx(), readerme(), readlc(), readmg(), reads3(), status(), ufbevn(), ufbin3(), ufbint(), ufbmem(), ufbmex(), ufbovr(), ufbrep(), ufbrms(), ufbrw(), ufbseq(), ufbstp(), ufbtab(), ufbtam(), usrtpl(), and writlc().

+

Referenced by arallocf(), bort(), bort2(), cktaba(), closbf(), cpdxmm(), cpyupd(), datebf(), dumpbf(), hold4wlc(), igetprm(), invcon(), invtag(), invwin(), ireadmt(), isetprm(), jstnum(), makestab(), maxout(), mrginv(), msgupd(), msgwrt(), mtfnam(), nvnwin(), openbf(), openbt(), pktdd(), rcstpl(), rdbfdx(), rdmemm(), rdmems(), rdmsgw(), readdx(), readerme(), readlc(), readmg(), reads3(), status(), ufbevn(), ufbint(), ufbmem(), ufbmex(), ufbovr(), ufbrep(), ufbrms(), ufbrw(), ufbseq(), ufbstp(), ufbtab(), ufbtam(), usrtpl(), and writlc().

diff --git a/errwrt_8F90_source.html b/errwrt_8F90_source.html index 6b7597e87..68b2517c7 100644 --- a/errwrt_8F90_source.html +++ b/errwrt_8F90_source.html @@ -26,7 +26,7 @@

diff --git a/files.html b/files.html index 23530e06c..5fa53356f 100644 --- a/files.html +++ b/files.html @@ -26,7 +26,7 @@ @@ -135,15 +135,16 @@ - - - - - - - - - + + + + + + + + + +

Files

file  bufrlib.h [code]
 Enable a number of NCEPLIBS-bufr subprograms to be called from within the C part of the library.
 
file  misc.F90 [code]
 Miscellaneous subroutines and functions.
 
NCEPLIBS-bufr -  12.1.0 +  12.2.0
NCEPLIBS-bufr -  12.1.0 +  12.2.0
NCEPLIBS-bufr -  12.1.0 +  12.2.0
NCEPLIBS-bufr -  12.1.0 +  12.2.0
NCEPLIBS-bufr -  12.1.0 +  12.2.0
NCEPLIBS-bufr -  12.1.0 +  12.2.0
NCEPLIBS-bufr -  12.1.0 +  12.2.0
NCEPLIBS-bufr -  12.1.0 +  12.2.0
 readwritesb.F90Read or write a BUFR data subset
 readwriteval.F90Read or write data values within a BUFR data subset
 restd.cStandardize a local Table D descriptor
 s013vals.F90Read and write data values within Sections 0, 1, and 3 of BUFR messages
 sinv.F90Produces a BUFR file inventory by satellite type
 split_by_subset.F90Split a BUFR file into separate BUFR files by subset type
 standard.F90Write WMO-standard BUFR messages
 strings.F90Process mnemonic strings
 stseq.cStore information about a standard Table D descriptor within internal DX BUFR tables
 tankrcpt.F90Read and write tank receipt times within BUFR messages
 x4884.F90Convert between 4-byte integers and 8-byte integers
 xbfmg.cSplit a BUFR file into separate BUFR files by message
 rpseqs.hDeclare variables for internal storage of replication sequences
 s013vals.F90Read and write data values within Sections 0, 1, and 3 of BUFR messages
 sinv.F90Produces a BUFR file inventory by satellite type
 split_by_subset.F90Split a BUFR file into separate BUFR files by subset type
 standard.F90Write WMO-standard BUFR messages
 strings.F90Process mnemonic strings
 stseq.cStore information about a Table D descriptor within internal DX BUFR tables
 tankrcpt.F90Read and write tank receipt times within BUFR messages
 x4884.F90Convert between 4-byte integers and 8-byte integers
 xbfmg.cSplit a BUFR file into separate BUFR files by message
diff --git a/files_dup.js b/files_dup.js index 518500e4b..b8bdaf4fd 100644 --- a/files_dup.js +++ b/files_dup.js @@ -12,8 +12,7 @@ var files_dup = [ "ccbfl_c", "interfacebufr__interface_1_1ccbfl__c.html", "interfacebufr__interface_1_1ccbfl__c" ], [ "cobfl_c", "interfacebufr__interface_1_1cobfl__c.html", "interfacebufr__interface_1_1cobfl__c" ], [ "crbmg_c", "interfacebufr__interface_1_1crbmg__c.html", "interfacebufr__interface_1_1crbmg__c" ], - [ "cwbmg_c", "interfacebufr__interface_1_1cwbmg__c.html", "interfacebufr__interface_1_1cwbmg__c" ], - [ "dlloctbf_c", "interfacebufr__interface_1_1dlloctbf__c.html", "interfacebufr__interface_1_1dlloctbf__c" ] + [ "cwbmg_c", "interfacebufr__interface_1_1cwbmg__c.html", "interfacebufr__interface_1_1cwbmg__c" ] ] ], [ "bufr_interface.h", "bufr__interface_8h.html", "bufr__interface_8h" ], [ "bufrlib.F90", "bufrlib_8F90.html", [ @@ -72,6 +71,7 @@ var files_dup = [ "readwritesb.F90", "readwritesb_8F90.html", "readwritesb_8F90" ], [ "readwriteval.F90", "readwriteval_8F90.html", "readwriteval_8F90" ], [ "restd.c", "restd_8c.html", "restd_8c" ], + [ "rpseqs.h", "rpseqs_8h.html", "rpseqs_8h" ], [ "s013vals.F90", "s013vals_8F90.html", "s013vals_8F90" ], [ "sinv.F90", "sinv_8F90.html", "sinv_8F90" ], [ "split_by_subset.F90", "split__by__subset_8F90.html", "split__by__subset_8F90" ], diff --git a/functions.html b/functions.html index 85aad7104..4a358136a 100644 --- a/functions.html +++ b/functions.html @@ -26,7 +26,7 @@
NCEPLIBS-bufr -  12.1.0 +  12.2.0
@@ -119,9 +119,6 @@
  • cwrbufr_c() : bufrlib::cwrbufr_c
  • -
  • dlloctbf_c() -: bufr_interface::dlloctbf_c -
  • icvidx_c() : bufrlib::icvidx_c
  • diff --git a/functions_func.html b/functions_func.html index 68861eb46..f2c7e49d2 100644 --- a/functions_func.html +++ b/functions_func.html @@ -26,7 +26,7 @@
    NCEPLIBS-bufr -  12.1.0 +  12.2.0
    @@ -119,9 +119,6 @@
  • cwrbufr_c() : bufrlib::cwrbufr_c
  • -
  • dlloctbf_c() -: bufr_interface::dlloctbf_c -
  • icvidx_c() : bufrlib::icvidx_c
  • diff --git a/fxy_8F90.html b/fxy_8F90.html index d7c0e0779..c0aea4501 100644 --- a/fxy_8F90.html +++ b/fxy_8F90.html @@ -26,7 +26,7 @@
    NCEPLIBS-bufr -  12.1.0 +  12.2.0
    @@ -433,7 +433,7 @@

    Author
    J. Woollen
    Date
    1994-01-06
    -

    Definition at line 431 of file fxy.F90.

    +

    Definition at line 433 of file fxy.F90.

    References moda_tababd::idnb, moda_tababd::idnd, moda_tababd::ntbb, moda_tababd::ntbd, moda_tababd::tabb, and moda_tababd::tabd.

    @@ -558,7 +558,7 @@

    Author
    J. Woollen
    Date
    1994-01-06
    -

    Definition at line 356 of file fxy.F90.

    +

    Definition at line 358 of file fxy.F90.

    References numtbd().

    diff --git a/fxy_8F90_source.html b/fxy_8F90_source.html index d8abfce6f..96a6405cc 100644 --- a/fxy_8F90_source.html +++ b/fxy_8F90_source.html @@ -26,7 +26,7 @@
    NCEPLIBS-bufr -  12.1.0 +  12.2.0
    @@ -273,189 +273,191 @@
    272 
    289 subroutine numtbd(lun,idn,nemo,tab,iret)
    290 
    -
    291  use moda_tababd
    +
    291  use modv_vars, only: fxy_mintd
    292 
    -
    293  implicit none
    +
    293  use moda_tababd
    294 
    -
    295  integer, intent(in) :: lun, idn
    -
    296  integer, intent(out) :: iret
    -
    297  integer i, ifxy
    -
    298 
    -
    299  character*(*), intent(out) :: nemo
    -
    300  character, intent(out) :: tab
    -
    301 
    -
    302  nemo = ' '
    -
    303  iret = 0
    -
    304  tab = ' '
    -
    305 
    -
    306  if(idn>=ifxy('300000')) then
    -
    307  ! Look for idn in Table D
    -
    308  do i=1,ntbd(lun)
    -
    309  if(idn==idnd(i,lun)) then
    -
    310  nemo = tabd(i,lun)(7:14)
    -
    311  tab = 'D'
    -
    312  iret = i
    -
    313  return
    -
    314  endif
    -
    315  enddo
    -
    316  else
    -
    317  ! Look for idn in Table B
    -
    318  do i=1,ntbb(lun)
    -
    319  if(idn==idnb(i,lun)) then
    -
    320  nemo = tabb(i,lun)(7:14)
    -
    321  tab = 'B'
    -
    322  iret = i
    -
    323  return
    -
    324  endif
    -
    325  enddo
    -
    326  endif
    -
    327 
    -
    328  return
    -
    329 end subroutine numtbd
    -
    330 
    -
    356 subroutine numtab(lun,idn,nemo,tab,iret)
    -
    357 
    -
    358  use modv_vars, only: idnr
    +
    295  implicit none
    +
    296 
    +
    297  integer, intent(in) :: lun, idn
    +
    298  integer, intent(out) :: iret
    +
    299  integer i, ifxy
    +
    300 
    +
    301  character*(*), intent(out) :: nemo
    +
    302  character, intent(out) :: tab
    +
    303 
    +
    304  nemo = ' '
    +
    305  iret = 0
    +
    306  tab = ' '
    +
    307 
    +
    308  if(idn>=ifxy(fxy_mintd)) then
    +
    309  ! Look for idn in Table D
    +
    310  do i=1,ntbd(lun)
    +
    311  if(idn==idnd(i,lun)) then
    +
    312  nemo = tabd(i,lun)(7:14)
    +
    313  tab = 'D'
    +
    314  iret = i
    +
    315  return
    +
    316  endif
    +
    317  enddo
    +
    318  else
    +
    319  ! Look for idn in Table B
    +
    320  do i=1,ntbb(lun)
    +
    321  if(idn==idnb(i,lun)) then
    +
    322  nemo = tabb(i,lun)(7:14)
    +
    323  tab = 'B'
    +
    324  iret = i
    +
    325  return
    +
    326  endif
    +
    327  enddo
    +
    328  endif
    +
    329 
    +
    330  return
    +
    331 end subroutine numtbd
    +
    332 
    +
    358 subroutine numtab(lun,idn,nemo,tab,iret)
    359 
    -
    360  implicit none
    +
    360  use modv_vars, only: idnr
    361 
    -
    362  integer, intent(in) :: lun, idn
    -
    363  integer, intent(out) :: iret
    -
    364  integer i, iokoper
    -
    365 
    -
    366  character*(*), intent(out) :: nemo
    -
    367  character, intent(out) :: tab
    -
    368  character*6 adn30, cid
    -
    369 
    -
    370  nemo = ' '
    -
    371  iret = 0
    -
    372  tab = ' '
    -
    373 
    -
    374  ! Look for a replicator or a replication factor descriptor
    +
    362  implicit none
    +
    363 
    +
    364  integer, intent(in) :: lun, idn
    +
    365  integer, intent(out) :: iret
    +
    366  integer i, iokoper
    +
    367 
    +
    368  character*(*), intent(out) :: nemo
    +
    369  character, intent(out) :: tab
    +
    370  character*6 adn30, cid
    +
    371 
    +
    372  nemo = ' '
    +
    373  iret = 0
    +
    374  tab = ' '
    375 
    -
    376  if(idn>=idnr(1) .and. idn<=idnr(6)) then
    -
    377  ! Note that the above test is checking whether idn is the bit-wise representation of a FXY (descriptor) value
    -
    378  ! denoting F=1 regular (i.e. non-delayed) replication, since, as was initialized within subroutine bfrini(),
    -
    379  ! idnr(1) = ifxy('101000'), and idnr(6) = ifxy('101255').
    -
    380  tab = 'R'
    -
    381  iret = -mod(idn,256)
    -
    382  return
    -
    383  endif
    -
    384 
    -
    385  do i=2,5
    -
    386  if(idn==idnr(i)) then
    -
    387  tab = 'R'
    -
    388  iret = i
    -
    389  return
    -
    390  elseif(idn==idnr(i+5)) then
    -
    391  tab = 'F'
    -
    392  iret = i
    -
    393  return
    -
    394  endif
    -
    395  enddo
    -
    396 
    -
    397  ! Look for idn in Table B and Table D
    +
    376  ! Look for a replicator or a replication factor descriptor
    +
    377 
    +
    378  if(idn>=idnr(1) .and. idn<=idnr(6)) then
    +
    379  ! Note that the above test is checking whether idn is the bit-wise representation of a FXY (descriptor) value
    +
    380  ! denoting F=1 regular (i.e. non-delayed) replication, since, as was initialized within subroutine bfrini(),
    +
    381  ! idnr(1) = ifxy('101000'), and idnr(6) = ifxy('101255').
    +
    382  tab = 'R'
    +
    383  iret = -mod(idn,256)
    +
    384  return
    +
    385  endif
    +
    386 
    +
    387  do i=2,5
    +
    388  if(idn==idnr(i)) then
    +
    389  tab = 'R'
    +
    390  iret = i
    +
    391  return
    +
    392  elseif(idn==idnr(i+5)) then
    +
    393  tab = 'F'
    +
    394  iret = i
    +
    395  return
    +
    396  endif
    +
    397  enddo
    398 
    -
    399  call numtbd(lun,idn,nemo,tab,iret)
    -
    400  if(iret/=0) return
    -
    401 
    -
    402  ! Look for idn in Table C
    +
    399  ! Look for idn in Table B and Table D
    +
    400 
    +
    401  call numtbd(lun,idn,nemo,tab,iret)
    +
    402  if(iret/=0) return
    403 
    -
    404  cid = adn30(idn,6)
    -
    405  if (iokoper(cid)==1) then
    -
    406  nemo = cid(1:6)
    -
    407  read(nemo,'(1X,I2)') iret
    -
    408  tab = 'C'
    -
    409  return
    -
    410  endif
    -
    411 
    -
    412  return
    -
    413 end subroutine numtab
    -
    414 
    -
    431 subroutine nemtab(lun,nemo,idn,tab,iret)
    -
    432 
    -
    433  use moda_tababd
    +
    404  ! Look for idn in Table C
    +
    405 
    +
    406  cid = adn30(idn,6)
    +
    407  if (iokoper(cid)==1) then
    +
    408  nemo = cid(1:6)
    +
    409  read(nemo,'(1X,I2)') iret
    +
    410  tab = 'C'
    +
    411  return
    +
    412  endif
    +
    413 
    +
    414  return
    +
    415 end subroutine numtab
    +
    416 
    +
    433 subroutine nemtab(lun,nemo,idn,tab,iret)
    434 
    -
    435  implicit none
    +
    435  use moda_tababd
    436 
    -
    437  integer, intent(in) :: lun
    -
    438  integer, intent(out) :: idn, iret
    -
    439  integer i, j, ifxy, iokoper
    -
    440 
    -
    441  character*(*), intent(in) :: nemo
    -
    442  character, intent(out) :: tab
    -
    443  character*8 nemt
    -
    444 
    -
    445  logical folval
    +
    437  implicit none
    +
    438 
    +
    439  integer, intent(in) :: lun
    +
    440  integer, intent(out) :: idn, iret
    +
    441  integer i, j, ifxy, iokoper
    +
    442 
    +
    443  character*(*), intent(in) :: nemo
    +
    444  character, intent(out) :: tab
    +
    445  character*8 nemt
    446 
    -
    447  folval = nemo(1:1)=='.'
    -
    448  iret = 0
    -
    449  tab = ' '
    -
    450 
    -
    451  ! Look for nemo in Table B
    +
    447  logical folval
    +
    448 
    +
    449  folval = nemo(1:1)=='.'
    +
    450  iret = 0
    +
    451  tab = ' '
    452 
    -
    453  outer: do i=1,ntbb(lun)
    -
    454  nemt = tabb(i,lun)(7:14)
    -
    455  if(nemt==nemo) then
    -
    456  idn = idnb(i,lun)
    -
    457  tab = 'B'
    -
    458  iret = i
    -
    459  return
    -
    460  elseif(folval.and.nemt(1:1)=='.') then
    -
    461  do j=2,len(nemt)
    -
    462  if(nemt(j:j)/='.' .and. nemt(j:j)/=nemo(j:j)) cycle outer
    -
    463  enddo
    -
    464  idn = idnb(i,lun)
    -
    465  tab = 'B'
    -
    466  iret = i
    -
    467  return
    -
    468  endif
    -
    469  enddo outer
    -
    470 
    -
    471  ! Don't look in Table D for following value-mnemonics
    +
    453  ! Look for nemo in Table B
    +
    454 
    +
    455  outer: do i=1,ntbb(lun)
    +
    456  nemt = tabb(i,lun)(7:14)
    +
    457  if(nemt==nemo) then
    +
    458  idn = idnb(i,lun)
    +
    459  tab = 'B'
    +
    460  iret = i
    +
    461  return
    +
    462  elseif(folval.and.nemt(1:1)=='.') then
    +
    463  do j=2,len(nemt)
    +
    464  if(nemt(j:j)/='.' .and. nemt(j:j)/=nemo(j:j)) cycle outer
    +
    465  enddo
    +
    466  idn = idnb(i,lun)
    +
    467  tab = 'B'
    +
    468  iret = i
    +
    469  return
    +
    470  endif
    +
    471  enddo outer
    472 
    -
    473  if(folval) return
    +
    473  ! Don't look in Table D for following value-mnemonics
    474 
    -
    475  ! Look in Table D if we got this far
    +
    475  if(folval) return
    476 
    -
    477  do i=1,ntbd(lun)
    -
    478  nemt = tabd(i,lun)(7:14)
    -
    479  if(nemt==nemo) then
    -
    480  idn = idnd(i,lun)
    -
    481  tab = 'D'
    -
    482  iret = i
    -
    483  return
    -
    484  endif
    -
    485  enddo
    -
    486 
    -
    487  ! If still nothing, check for Table C operator descriptors
    +
    477  ! Look in Table D if we got this far
    +
    478 
    +
    479  do i=1,ntbd(lun)
    +
    480  nemt = tabd(i,lun)(7:14)
    +
    481  if(nemt==nemo) then
    +
    482  idn = idnd(i,lun)
    +
    483  tab = 'D'
    +
    484  iret = i
    +
    485  return
    +
    486  endif
    +
    487  enddo
    488 
    -
    489  if (iokoper(nemo)==1) then
    -
    490  read(nemo,'(1X,I2)') iret
    -
    491  idn = ifxy(nemo)
    -
    492  tab = 'C'
    -
    493  return
    -
    494  endif
    -
    495 
    -
    496  return
    -
    497 end subroutine nemtab
    +
    489  ! If still nothing, check for Table C operator descriptors
    +
    490 
    +
    491  if (iokoper(nemo)==1) then
    +
    492  read(nemo,'(1X,I2)') iret
    +
    493  idn = ifxy(nemo)
    +
    494  tab = 'C'
    +
    495  return
    +
    496  endif
    +
    497 
    +
    498  return
    +
    499 end subroutine nemtab
    subroutine bort(str)
    Log an error message, then abort the application program.
    Definition: borts.F90:15
    -
    subroutine nemtab(lun, nemo, idn, tab, iret)
    Get information about a descriptor, based on a mnemonic.
    Definition: fxy.F90:432
    +
    subroutine nemtab(lun, nemo, idn, tab, iret)
    Get information about a descriptor, based on a mnemonic.
    Definition: fxy.F90:434
    integer function numbck(numb)
    Check an FXY number for validity.
    Definition: fxy.F90:237
    subroutine cadn30(idn, adn)
    Convert an FXY value from its WMO bit-wise representation to its 6 character representation.
    Definition: fxy.F90:65
    -
    subroutine numtab(lun, idn, nemo, tab, iret)
    Get information about a descriptor, based on the WMO bit-wise representation of an FXY value.
    Definition: fxy.F90:357
    +
    subroutine numtab(lun, idn, nemo, tab, iret)
    Get information about a descriptor, based on the WMO bit-wise representation of an FXY value.
    Definition: fxy.F90:359
    integer function idn30(adn, ldn)
    Convert an FXY value from a character string to the WMO bit-wise representation.
    Definition: fxy.F90:91
    subroutine numtbd(lun, idn, nemo, tab, iret)
    Get information about a Table B or Table D descriptor, based on the WMO bit-wise representation of an...
    Definition: fxy.F90:290
    integer function igetfxy(str, cfxy)
    Search for and return a valid FXY number from within a character string.
    Definition: fxy.F90:179
    integer function ifxy(adsc)
    Convert an FXY value from its 6 character representation to its WMO bit-wise representation.
    Definition: fxy.F90:152
    character *(*) function adn30(idn, ldn)
    Convert an FXY value from its WMO bit-wise representation to a character string of length 5 or 6.
    Definition: fxy.F90:18
    -
    Declare arrays and variables used to store DX BUFR tables internally for multiple file IDs.
    -
    character *600, dimension(:,:), allocatable tabd
    Table D entries for each file ID.
    -
    integer, dimension(:), allocatable ntbd
    Number of Table D entries for each file ID (up to a maximum of maxtbd, whose value is stored in array...
    -
    integer, dimension(:), allocatable ntbb
    Number of Table B entries for each file ID (up to a maximum of maxtbb, whose value is stored in array...
    -
    integer, dimension(:,:), allocatable idnd
    WMO bit-wise representations of the FXY values corresponding to tabd.
    -
    integer, dimension(:,:), allocatable idnb
    WMO bit-wise representations of the FXY values corresponding to tabb.
    -
    character *128, dimension(:,:), allocatable tabb
    Table B entries for each file ID.
    +
    Declare arrays and variables used to store DX BUFR tables internally for multiple file IDs.
    +
    character *600, dimension(:,:), allocatable tabd
    Table D entries for each file ID.
    +
    integer, dimension(:), allocatable ntbd
    Number of Table D entries for each file ID (up to a maximum of maxtbd, whose value is stored in array...
    +
    integer, dimension(:), allocatable ntbb
    Number of Table B entries for each file ID (up to a maximum of maxtbb, whose value is stored in array...
    +
    integer, dimension(:,:), allocatable idnd
    WMO bit-wise representations of the FXY values corresponding to tabd.
    +
    integer, dimension(:,:), allocatable idnb
    WMO bit-wise representations of the FXY values corresponding to tabb.
    +
    character *128, dimension(:,:), allocatable tabb
    Table B entries for each file ID.
    diff --git a/gettab_8F90.html b/gettab_8F90.html index dd7029027..815f18209 100644 --- a/gettab_8F90.html +++ b/gettab_8F90.html @@ -26,7 +26,7 @@
    NCEPLIBS-bufr -  12.1.0 +  12.2.0
    diff --git a/gettab_8F90_source.html b/gettab_8F90_source.html index edbf0f749..b3029be2a 100644 --- a/gettab_8F90_source.html +++ b/gettab_8F90_source.html @@ -26,7 +26,7 @@
    NCEPLIBS-bufr -  12.1.0 +  12.2.0
    @@ -101,12 +101,12 @@
    23  call get_command_argument(1,file); file=trim(adjustl(file))
    24  if (file == '') then
    25  print *,'Usage: gettab <bufrfile> will print the internal BUFR table'
    -
    26  call exit(2)
    +
    26  stop 2
    27  else
    28  inquire(file=file,exist=exist)
    29  if (.not.exist) then
    30  print *,trim(file)//' does not exist'
    -
    31  call exit(3)
    +
    31  stop 3
    32  endif
    33  endif
    34 
    @@ -120,12 +120,11 @@
    42 
    43  stop
    44 end program gettab
    -
    45 
    -
    recursive subroutine dxdump(lunit, ldxot)
    Print a copy of the DX BUFR table associated with a specified Fortran logical unit.
    Definition: dumpdata.F90:580
    +
    recursive subroutine dxdump(lunit, ldxot)
    Print a copy of the DX BUFR table associated with a specified Fortran logical unit.
    Definition: dumpdata.F90:585
    program gettab
    Read BUFR file containing embedded DX BUFR tables, and print the tables to stdout.
    Definition: gettab.F90:13
    -
    recursive subroutine closbf(lunit)
    Close the connection between logical unit lunit and the NCEPLIBS-bufr software.
    -
    recursive subroutine openbf(lunit, io, lundx)
    Connect a new file to the NCEPLIBS-bufr software for input or output operations, or initialize the li...
    -
    recursive subroutine status(lunit, lun, il, im)
    Check whether a specified Fortran logical unit number is currently connected to the NCEPLIBS-bufr sof...
    +
    recursive subroutine closbf(lunit)
    Close the connection between logical unit lunit and the NCEPLIBS-bufr software.
    +
    recursive subroutine openbf(lunit, io, lundx)
    Connect a new file to the NCEPLIBS-bufr software for input or output operations, or initialize the li...
    +
    recursive subroutine status(lunit, lun, il, im)
    Check whether a specified Fortran logical unit number is currently connected to the NCEPLIBS-bufr sof...
    diff --git a/globals.html b/globals.html index 8d83e389d..7344f7e06 100644 --- a/globals.html +++ b/globals.html @@ -26,7 +26,7 @@
    NCEPLIBS-bufr -  12.1.0 +  12.2.0
    diff --git a/globals_b.html b/globals_b.html index 8d8cf458b..bdcf349a8 100644 --- a/globals_b.html +++ b/globals_b.html @@ -26,7 +26,7 @@
    NCEPLIBS-bufr -  12.1.0 +  12.2.0
    @@ -86,8 +86,8 @@

    - b -

    • backbufr() -: bufrlib.h -, cread.c +: cread.c +, bufrlib.h
    • bfrini() : misc.F90 @@ -98,6 +98,12 @@

      - b -

      • blocks() : blocks.F90
      • +
      • BMCSTR +: bufrlib.h +
      • +
      • BMOSTR +: bufrlib.h +
      • bort() : borts.F90
      • diff --git a/globals_c.html b/globals_c.html index 245114ac9..7be1b54b2 100644 --- a/globals_c.html +++ b/globals_c.html @@ -26,7 +26,7 @@
        NCEPLIBS-bufr -  12.1.0 +  12.2.0
        @@ -116,6 +116,9 @@

        - c -

          : bufr_interface.h , crwbmg.c +
        • cdescs +: rpseqs.h +
        • cdmnem_c : mstabs.h
        • @@ -145,8 +148,8 @@

          - c -

            : bufr_interface.h
          • closfb() -: bufrlib.h -, cread.c +: cread.c +, bufrlib.h
          • closmg() : readwritemg.F90 @@ -214,16 +217,16 @@

            - c -

            diff --git a/globals_d.html b/globals_d.html index 8cb1a5fe4..59ae37113 100644 --- a/globals_d.html +++ b/globals_d.html @@ -26,7 +26,7 @@
            NCEPLIBS-bufr -  12.1.0 +  12.2.0
            @@ -96,6 +96,7 @@

            - d -

            • dlloctbf() : cfe.c +, bufrlib.h
            • drfini() : readwriteval.F90 diff --git a/globals_defs.html b/globals_defs.html index a4adf0193..46c3a0f15 100644 --- a/globals_defs.html +++ b/globals_defs.html @@ -26,7 +26,7 @@
              NCEPLIBS-bufr -  12.1.0 +  12.2.0
              @@ -83,23 +83,50 @@
               
              diff --git a/globals_func_d.html b/globals_func_d.html index ff7c62cdc..5b7531f08 100644 --- a/globals_func_d.html +++ b/globals_func_d.html @@ -26,7 +26,7 @@
              NCEPLIBS-bufr -  12.1.0 +  12.2.0
              @@ -96,6 +96,7 @@

              - d -

              • dlloctbf() : cfe.c +, bufrlib.h
              • drfini() : readwriteval.F90 diff --git a/globals_func_e.html b/globals_func_e.html index d7faf7856..0bc8c8f2c 100644 --- a/globals_func_e.html +++ b/globals_func_e.html @@ -26,7 +26,7 @@
                NCEPLIBS-bufr -  12.1.0 +  12.2.0
                diff --git a/globals_func_f.html b/globals_func_f.html index 92870c0fe..d10ec102d 100644 --- a/globals_func_f.html +++ b/globals_func_f.html @@ -26,7 +26,7 @@
                NCEPLIBS-bufr -  12.1.0 +  12.2.0
                diff --git a/globals_func_g.html b/globals_func_g.html index 36cee3324..ed8533cfc 100644 --- a/globals_func_g.html +++ b/globals_func_g.html @@ -26,7 +26,7 @@
                NCEPLIBS-bufr -  12.1.0 +  12.2.0
                diff --git a/globals_func_h.html b/globals_func_h.html index 0029025e0..2307c3a0c 100644 --- a/globals_func_h.html +++ b/globals_func_h.html @@ -26,7 +26,7 @@
                NCEPLIBS-bufr -  12.1.0 +  12.2.0
                diff --git a/globals_func_i.html b/globals_func_i.html index 80dbce038..e57726ebe 100644 --- a/globals_func_i.html +++ b/globals_func_i.html @@ -26,7 +26,7 @@
                NCEPLIBS-bufr -  12.1.0 +  12.2.0
                @@ -104,8 +104,8 @@

                - i -

                  : copydata.F90
                • icvidx() -: bufrlib.h -, icvidx.c +: icvidx.c +, bufrlib.h
                • idn30() : fxy.F90 diff --git a/globals_func_j.html b/globals_func_j.html index 7056a45b8..1c914a3a8 100644 --- a/globals_func_j.html +++ b/globals_func_j.html @@ -26,7 +26,7 @@
                  NCEPLIBS-bufr -  12.1.0 +  12.2.0
                  diff --git a/globals_func_l.html b/globals_func_l.html index de2e5f3d1..e492babb7 100644 --- a/globals_func_l.html +++ b/globals_func_l.html @@ -26,7 +26,7 @@
                  NCEPLIBS-bufr -  12.1.0 +  12.2.0
                  diff --git a/globals_func_m.html b/globals_func_m.html index 9b1bd168b..5f9a267f9 100644 --- a/globals_func_m.html +++ b/globals_func_m.html @@ -26,7 +26,7 @@
                  NCEPLIBS-bufr -  12.1.0 +  12.2.0
                  diff --git a/globals_func_n.html b/globals_func_n.html index 0e7535761..d66fac07d 100644 --- a/globals_func_n.html +++ b/globals_func_n.html @@ -26,7 +26,7 @@
                  NCEPLIBS-bufr -  12.1.0 +  12.2.0
                  @@ -124,9 +124,6 @@

                  - n -

                  • nenubd() : dxtable.F90
                  • -
                  • nevn() -: readwriteval.F90 -
                  • newwin() : jumplink.F90
                  • diff --git a/globals_func_o.html b/globals_func_o.html index 6107756a7..1999ee5f6 100644 --- a/globals_func_o.html +++ b/globals_func_o.html @@ -26,7 +26,7 @@
                    NCEPLIBS-bufr -  12.1.0 +  12.2.0
                    @@ -89,8 +89,8 @@

                    - o -

                      : bufr_interface.h
                    • openab() -: bufrlib.h -, cread.c +: cread.c +, bufrlib.h
                    • openbf() : openclosebf.F90 @@ -112,12 +112,12 @@

                      - o -

                      diff --git a/globals_func_p.html b/globals_func_p.html index 1ef050ead..7f56a67db 100644 --- a/globals_func_p.html +++ b/globals_func_p.html @@ -26,7 +26,7 @@
                      NCEPLIBS-bufr -  12.1.0 +  12.2.0
                      diff --git a/globals_func_r.html b/globals_func_r.html index b54f52cc9..ac59cb8c6 100644 --- a/globals_func_r.html +++ b/globals_func_r.html @@ -26,7 +26,7 @@
                      NCEPLIBS-bufr -  12.1.0 +  12.2.0
                      @@ -158,8 +158,8 @@

                      - r -

                        : readwritesb.F90
                      • restd() -: bufrlib.h -, restd.c +: restd.c +, bufrlib.h
                      • rewnbf() : openclosebf.F90 diff --git a/globals_func_s.html b/globals_func_s.html index 3b114844f..74a691d4f 100644 --- a/globals_func_s.html +++ b/globals_func_s.html @@ -26,7 +26,7 @@
                        NCEPLIBS-bufr -  12.1.0 +  12.2.0
                        @@ -124,6 +124,9 @@

                        - s -

                        • split_by_subset() : split_by_subset.F90
                        • +
                        • srchrpsq() +: stseq.c +
                        • srchtbf() : cfe.c
                        • @@ -152,7 +155,7 @@

                          - s -

                            : dxtable.F90
                          • strbtm() -: bitmaps.F90 +: bitmaps.F90
                          • strcln() : strings.F90 @@ -169,6 +172,9 @@

                            - s -

                            • strnum_f() : bufrlib.h
                            • +
                            • strrpsq() +: stseq.c +
                            • strsuc() : misc.F90
                            • @@ -176,8 +182,8 @@

                              - s -

                              diff --git a/globals_func_t.html b/globals_func_t.html index 1929b1df7..8c55b4db8 100644 --- a/globals_func_t.html +++ b/globals_func_t.html @@ -26,7 +26,7 @@
                              NCEPLIBS-bufr -  12.1.0 +  12.2.0
                              diff --git a/globals_func_u.html b/globals_func_u.html index 298460f97..dd48556b7 100644 --- a/globals_func_u.html +++ b/globals_func_u.html @@ -26,7 +26,7 @@
                              NCEPLIBS-bufr -  12.1.0 +  12.2.0
                              @@ -103,9 +103,6 @@

                              - u -

                              • ufbget() : readwriteval.F90
                              • -
                              • ufbin3() -: readwriteval.F90 -
                              • ufbint() : readwriteval.F90
                              • diff --git a/globals_func_w.html b/globals_func_w.html index 7ccdbbf75..850687dc4 100644 --- a/globals_func_w.html +++ b/globals_func_w.html @@ -26,7 +26,7 @@
                                NCEPLIBS-bufr -  12.1.0 +  12.2.0
                                diff --git a/globals_func_x.html b/globals_func_x.html index ad2fc04be..9a01f01ad 100644 --- a/globals_func_x.html +++ b/globals_func_x.html @@ -26,7 +26,7 @@
                                NCEPLIBS-bufr -  12.1.0 +  12.2.0
                                diff --git a/globals_g.html b/globals_g.html index 441e9f298..406fc199f 100644 --- a/globals_g.html +++ b/globals_g.html @@ -26,7 +26,7 @@
                                NCEPLIBS-bufr -  12.1.0 +  12.2.0
                                diff --git a/globals_h.html b/globals_h.html index b26b48dc0..e8149ab86 100644 --- a/globals_h.html +++ b/globals_h.html @@ -26,7 +26,7 @@
                                NCEPLIBS-bufr -  12.1.0 +  12.2.0
                                diff --git a/globals_i.html b/globals_i.html index 150502f25..837dd52d6 100644 --- a/globals_i.html +++ b/globals_i.html @@ -26,7 +26,7 @@
                                NCEPLIBS-bufr -  12.1.0 +  12.2.0
                                @@ -91,6 +91,9 @@

                                - i -

                                • iafpk : mstabs.h
                                • +
                                • iafpks +: rpseqs.h +
                                • ibfms() : missing.F90
                                • @@ -110,8 +113,8 @@

                                  - i -

                                    : copydata.F90
                                  • icvidx() -: bufrlib.h -, icvidx.c +: icvidx.c +, bufrlib.h
                                  • idefxy_c : mstabs.h diff --git a/globals_j.html b/globals_j.html index d13a32048..39e9e1755 100644 --- a/globals_j.html +++ b/globals_j.html @@ -26,7 +26,7 @@
                                    NCEPLIBS-bufr -  12.1.0 +  12.2.0
                                    diff --git a/globals_l.html b/globals_l.html index 6d893d414..166cc85ca 100644 --- a/globals_l.html +++ b/globals_l.html @@ -26,7 +26,7 @@
                                    NCEPLIBS-bufr -  12.1.0 +  12.2.0
                                    diff --git a/globals_m.html b/globals_m.html index 90258a18e..43166fcdb 100644 --- a/globals_m.html +++ b/globals_m.html @@ -26,7 +26,7 @@
                                    NCEPLIBS-bufr -  12.1.0 +  12.2.0
                                    @@ -92,12 +92,12 @@

                                    - m -

                                    • makestab() : jumplink.F90
                                    • -
                                    • MAX_FXY_TABLEB -: bufrlib.h -
                                    • MAX_MEANING_LEN : cfe.c
                                    • +
                                    • MAX_RPSQ +: rpseqs.h +
                                    • maxout() : readwritemg.F90
                                    • @@ -110,12 +110,6 @@

                                      - m -

                                      • mesgbf() : s013vals.F90
                                      • -
                                      • MIN_FXY_REPL -: bufrlib.h -
                                      • -
                                      • MIN_FXY_TABLED -: bufrlib.h -
                                      • minimg() : s013vals.F90
                                      • diff --git a/globals_n.html b/globals_n.html index 3acb3d3a8..6fd803d8e 100644 --- a/globals_n.html +++ b/globals_n.html @@ -26,7 +26,7 @@
                                        NCEPLIBS-bufr -  12.1.0 +  12.2.0
                                        @@ -85,6 +85,12 @@
                                        Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:

                                        - n -

                                          +
                                        • nafs +: rpseqs.h +
                                        • +
                                        • ncdescs +: rpseqs.h +
                                        • ndelem_c : mstabs.h
                                        • @@ -130,9 +136,6 @@

                                          - n -

                                          • nenubd() : dxtable.F90
                                          • -
                                          • nevn() -: readwriteval.F90 -
                                          • newwin() : jumplink.F90
                                          • @@ -151,6 +154,9 @@

                                            - n -

                                            • nmwrd() : readwritemg.F90
                                            • +
                                            • nrpsq +: rpseqs.h +
                                            • numbck() : fxy.F90
                                            • diff --git a/globals_o.html b/globals_o.html index 5ca557263..7ef817f29 100644 --- a/globals_o.html +++ b/globals_o.html @@ -26,7 +26,7 @@
                                              NCEPLIBS-bufr -  12.1.0 +  12.2.0
                                              @@ -89,8 +89,8 @@

                                              - o -

                                                : bufr_interface.h
                                              • openab() -: bufrlib.h -, cread.c +: cread.c +, bufrlib.h
                                              • openbf() : openclosebf.F90 @@ -112,12 +112,12 @@

                                                - o -

                                                diff --git a/globals_p.html b/globals_p.html index 9ffdbbc0c..2d66c3cee 100644 --- a/globals_p.html +++ b/globals_p.html @@ -26,7 +26,7 @@
                                                NCEPLIBS-bufr -  12.1.0 +  12.2.0
                                                diff --git a/globals_r.html b/globals_r.html index 230bd16d0..2b52d613f 100644 --- a/globals_r.html +++ b/globals_r.html @@ -26,7 +26,7 @@
                                                NCEPLIBS-bufr -  12.1.0 +  12.2.0
                                                @@ -158,12 +158,15 @@

                                                - r -

                                                  : readwritesb.F90
                                                • restd() -: bufrlib.h -, restd.c +: restd.c +, bufrlib.h
                                                • rewnbf() : openclosebf.F90
                                                • +
                                                • rpidns +: rpseqs.h +
                                                • rsvfvm() : dxtable.F90
                                                • diff --git a/globals_s.html b/globals_s.html index bca83d635..112e09b19 100644 --- a/globals_s.html +++ b/globals_s.html @@ -26,7 +26,7 @@
                                                  NCEPLIBS-bufr -  12.1.0 +  12.2.0
                                                  @@ -124,6 +124,9 @@

                                                  - s -

                                                  • split_by_subset() : split_by_subset.F90
                                                  • +
                                                  • srchrpsq() +: stseq.c +
                                                  • srchtbf() : cfe.c
                                                  • @@ -152,7 +155,7 @@

                                                    - s -

                                                      : dxtable.F90
                                                    • strbtm() -: bitmaps.F90 +: bitmaps.F90
                                                    • strcln() : strings.F90 @@ -169,6 +172,9 @@

                                                      - s -

                                                      • strnum_f() : bufrlib.h
                                                      • +
                                                      • strrpsq() +: stseq.c +
                                                      • strsuc() : misc.F90
                                                      • @@ -176,8 +182,8 @@

                                                        - s -

                                                        diff --git a/globals_t.html b/globals_t.html index 91b26a3b9..a6664947d 100644 --- a/globals_t.html +++ b/globals_t.html @@ -26,7 +26,7 @@
                                                        NCEPLIBS-bufr -  12.1.0 +  12.2.0
                                                        diff --git a/globals_u.html b/globals_u.html index a096d83b0..a19bd8daf 100644 --- a/globals_u.html +++ b/globals_u.html @@ -26,7 +26,7 @@
                                                        NCEPLIBS-bufr -  12.1.0 +  12.2.0
                                                        @@ -103,9 +103,6 @@

                                                        - u -

                                                        • ufbget() : readwriteval.F90
                                                        • -
                                                        • ufbin3() -: readwriteval.F90 -
                                                        • ufbint() : readwriteval.F90
                                                        • diff --git a/globals_v.html b/globals_v.html index 8a07449f0..4ed688665 100644 --- a/globals_v.html +++ b/globals_v.html @@ -26,7 +26,7 @@
                                                          NCEPLIBS-bufr -  12.1.0 +  12.2.0
                                                          diff --git a/globals_vars.html b/globals_vars.html index ec6e08ccd..7e51b4120 100644 --- a/globals_vars.html +++ b/globals_vars.html @@ -26,7 +26,7 @@
                                                          NCEPLIBS-bufr -  12.1.0 +  12.2.0
                                                          @@ -101,6 +101,9 @@
                                                        • cbunit_c : mstabs.h
                                                        • +
                                                        • cdescs +: rpseqs.h +
                                                        • cdmnem_c : mstabs.h
                                                        • @@ -113,6 +116,9 @@
                                                        • iafpk : mstabs.h
                                                        • +
                                                        • iafpks +: rpseqs.h +
                                                        • ibfxyn_c : mstabs.h
                                                        • @@ -128,6 +134,12 @@
                                                        • mxmtbf : cfe.c
                                                        • +
                                                        • nafs +: rpseqs.h +
                                                        • +
                                                        • ncdescs +: rpseqs.h +
                                                        • ndelem_c : mstabs.h
                                                        • @@ -140,12 +152,18 @@
                                                        • nmtf : cfe.c
                                                        • +
                                                        • nrpsq +: rpseqs.h +
                                                        • pb : cread.h
                                                        • pbf : crwbmg.c
                                                        • +
                                                        • rpidns +: rpseqs.h +
                                                        diff --git a/globals_w.html b/globals_w.html index eca4406d0..f2bf58a34 100644 --- a/globals_w.html +++ b/globals_w.html @@ -26,7 +26,7 @@
                                                        NCEPLIBS-bufr -  12.1.0 +  12.2.0
                                                        diff --git a/globals_x.html b/globals_x.html index 20f33b0f1..92551dbb4 100644 --- a/globals_x.html +++ b/globals_x.html @@ -26,7 +26,7 @@
                                                        NCEPLIBS-bufr -  12.1.0 +  12.2.0
                                                        diff --git a/icvidx_8c.html b/icvidx_8c.html index 655cc7c46..8f385c0bc 100644 --- a/icvidx_8c.html +++ b/icvidx_8c.html @@ -26,7 +26,7 @@
                                                        NCEPLIBS-bufr -  12.1.0 +  12.2.0
                                                        @@ -155,7 +155,7 @@

                                                        Definition at line 22 of file icvidx.c.

                                                        -

                                                        Referenced by cpmstabs(), and stseq().

                                                        +

                                                        Referenced by cpmstabs(), srchrpsq(), strrpsq(), and stseq().

                                                        diff --git a/icvidx_8c_source.html b/icvidx_8c_source.html index 054eb4732..59a3805fb 100644 --- a/icvidx_8c_source.html +++ b/icvidx_8c_source.html @@ -26,7 +26,7 @@
                                                        NCEPLIBS-bufr -  12.1.0 +  12.2.0
                                                        @@ -88,7 +88,7 @@
                                                        Go to the documentation of this file.
                                                        1 
                                                        21 int
                                                        -
                                                        22 icvidx(int ii, int jj, int numjj)
                                                        +
                                                        22 icvidx(int ii, int jj, int numjj)
                                                        23 {
                                                        24  return ( numjj * ii ) + jj;
                                                        25 }
                                                        diff --git a/index.html b/index.html index 74d70261b..bfb5084fb 100644 --- a/index.html +++ b/index.html @@ -26,7 +26,7 @@
                                                        NCEPLIBS-bufr -  12.1.0 +  12.2.0
                                                        @@ -86,9 +86,10 @@
                                                        NCEPLIBS-bufr Documentation
                                                        -

                                                        +

                                                        Documentation for Previous Versions of NCEPLIBS-bufr

                                                        -

                                                        +

                                                        Documentation for the Python API for NCEPLIBS-bufr

                                                        -

                                                        +

                                                        Introduction

                                                        This library contains subroutines, functions and other utilities that can be used to read (decode) and write (encode) data in BUFR, which is a WMO standard format for the exchange of meteorological data.

                                                        -

                                                        +

                                                        The BUFR Format

                                                        -

                                                        The BUFR format is officially documented in WMO Manual 306, Volume I.2. The latest edition of BUFR is edition 4, although edition 3 is still in use in many parts of the world. A complete BUFR message consists of the following sections:

                                                        +

                                                        The BUFR format is officially documented in WMO Manual 306, Volume I.2. The latest edition of BUFR is edition 4, although edition 3 is still in use in many parts of the world. A complete BUFR message consists of the following sections:

                                                        @@ -123,11 +124,11 @@

                                                        Section Number Name Contents
                                                        5 End section "7777"
                                                        -

                                                        BUFR is a table-driven format, meaning that new descriptors can be encoded and decoded by adding them to tables which are read in by the software, rather than having to modify the software itself. To that end, WMO periodically releases new versions of their official WMO master BUFR tables, to facilitate the continued exchange of meteorological data throughout the global community.

                                                        +

                                                        BUFR is a table-driven format, meaning that new descriptors can be encoded and decoded by adding them to tables which are read in by the software, rather than having to modify the software itself. To that end, WMO periodically releases new versions of their official WMO master BUFR tables, to facilitate the continued exchange of meteorological data throughout the global community.

                                                        NCEPLIBS-bufr can read (decode) and write (encode) data in both edition 3 and edition 4 of BUFR. It consists of more than 300 different subroutines and functions; however, a typical application program will never directly call more than 10 to 20 of them, and the rest are lower-level routines that the library uses to accomplish various underlying tasks, and which can therefore be considered as "black box" from a user perspective.

                                                        Whenever new versions of the official WMO master BUFR tables are released by WMO (as noted above), they are downloaded and reformatted as new NCEPLIBS-bufr master BUFR tables for use with the software and distributed with the next release of the library. However, users can also generate their own custom NCEPLIBS-bufr DX BUFR tables for use with the software as needed.

                                                        More details are available throughout the documentation, including sample utilities which demonstrate how to use many of the various library subroutines and functions to accomplish different tasks.

                                                        -

                                                        +

                                                        NCEPLIBS-bufr Library Subroutines and Functions

                                                        It's important to understand the following hierarchy:

                                                          diff --git a/interfacebufr__interface_1_1ccbfl__c.html b/interfacebufr__interface_1_1ccbfl__c.html index ea71eca66..4fe057158 100644 --- a/interfacebufr__interface_1_1ccbfl__c.html +++ b/interfacebufr__interface_1_1ccbfl__c.html @@ -26,7 +26,7 @@
                                                          NCEPLIBS-bufr -  12.1.0 +  12.2.0
                                                          diff --git a/interfacebufr__interface_1_1cobfl__c.html b/interfacebufr__interface_1_1cobfl__c.html index 0cdd0419b..709ce3122 100644 --- a/interfacebufr__interface_1_1cobfl__c.html +++ b/interfacebufr__interface_1_1cobfl__c.html @@ -26,7 +26,7 @@
                                                          NCEPLIBS-bufr -  12.1.0 +  12.2.0
                                                          diff --git a/interfacebufr__interface_1_1crbmg__c.html b/interfacebufr__interface_1_1crbmg__c.html index 16edb18f9..e9a9e006c 100644 --- a/interfacebufr__interface_1_1crbmg__c.html +++ b/interfacebufr__interface_1_1crbmg__c.html @@ -26,7 +26,7 @@
                                                          NCEPLIBS-bufr -  12.1.0 +  12.2.0
                                                          diff --git a/interfacebufr__interface_1_1cwbmg__c.html b/interfacebufr__interface_1_1cwbmg__c.html index 65139468e..5405f8381 100644 --- a/interfacebufr__interface_1_1cwbmg__c.html +++ b/interfacebufr__interface_1_1cwbmg__c.html @@ -26,7 +26,7 @@
                                                          NCEPLIBS-bufr -  12.1.0 +  12.2.0
                                                          diff --git a/interfacebufrlib_1_1arallocc__c.html b/interfacebufrlib_1_1arallocc__c.html index a418e2195..646320e24 100644 --- a/interfacebufrlib_1_1arallocc__c.html +++ b/interfacebufrlib_1_1arallocc__c.html @@ -26,7 +26,7 @@
                                                          NCEPLIBS-bufr -  12.1.0 +  12.2.0
                                                          diff --git a/interfacebufrlib_1_1ardllocc__c.html b/interfacebufrlib_1_1ardllocc__c.html index 30b456e73..0d037d513 100644 --- a/interfacebufrlib_1_1ardllocc__c.html +++ b/interfacebufrlib_1_1ardllocc__c.html @@ -26,7 +26,7 @@
                                                          NCEPLIBS-bufr -  12.1.0 +  12.2.0
                                                          diff --git a/interfacebufrlib_1_1backbufr__c.html b/interfacebufrlib_1_1backbufr__c.html index 57773279d..e766bf87d 100644 --- a/interfacebufrlib_1_1backbufr__c.html +++ b/interfacebufrlib_1_1backbufr__c.html @@ -26,7 +26,7 @@
                                                          NCEPLIBS-bufr -  12.1.0 +  12.2.0
                                                          @@ -116,7 +116,7 @@

                                                          Backspace a BUFR file by one BUFR message.

                                                          -

                                                          Wraps backbufr() function.

                                                          +

                                                          Wraps backbufr() function.

                                                          Parameters
                                                          diff --git a/interfacebufrlib_1_1cewind__c.html b/interfacebufrlib_1_1cewind__c.html index 3171f52b1..4e8895133 100644 --- a/interfacebufrlib_1_1cewind__c.html +++ b/interfacebufrlib_1_1cewind__c.html @@ -26,7 +26,7 @@ @@ -116,7 +116,7 @@

                                                          Rewind a BUFR file back to its beginning.

                                                          -

                                                          Wraps cewind() function.

                                                          +

                                                          Wraps cewind() function.

                                                          Parameters

                                                          nfile- File ID.
                                                          NCEPLIBS-bufr -  12.1.0 +  12.2.0
                                                          diff --git a/interfacebufrlib_1_1closfb__c.html b/interfacebufrlib_1_1closfb__c.html index 726918670..e77357565 100644 --- a/interfacebufrlib_1_1closfb__c.html +++ b/interfacebufrlib_1_1closfb__c.html @@ -26,7 +26,7 @@ @@ -116,7 +116,7 @@

                                                          Close a previously opened BUFR file.

                                                          -

                                                          Wraps closfb() function.

                                                          +

                                                          Wraps closfb() function.

                                                          Parameters

                                                          nfile- File ID.
                                                          NCEPLIBS-bufr -  12.1.0 +  12.2.0
                                                          diff --git a/interfacebufrlib_1_1cpmstabs__c.html b/interfacebufrlib_1_1cpmstabs__c.html index 8178680e5..1b6a73bc9 100644 --- a/interfacebufrlib_1_1cpmstabs__c.html +++ b/interfacebufrlib_1_1cpmstabs__c.html @@ -26,7 +26,7 @@ diff --git a/interfacebufrlib_1_1crdbufr__c.html b/interfacebufrlib_1_1crdbufr__c.html index 51ca71260..cd3439873 100644 --- a/interfacebufrlib_1_1crdbufr__c.html +++ b/interfacebufrlib_1_1crdbufr__c.html @@ -26,7 +26,7 @@ @@ -132,7 +132,7 @@

                                                          Read the next message from a BUFR file that was previously opened for reading.

                                                          -

                                                          Wraps crdbufr() function.

                                                          +

                                                          Wraps crdbufr() function.

                                                          Parameters

                                                          nfile- File ID.
                                                          NCEPLIBS-bufr -  12.1.0 +  12.2.0
                                                          NCEPLIBS-bufr -  12.1.0 +  12.2.0
                                                          diff --git a/interfacebufrlib_1_1cwrbufr__c.html b/interfacebufrlib_1_1cwrbufr__c.html index 7b83a587a..5c9d15c44 100644 --- a/interfacebufrlib_1_1cwrbufr__c.html +++ b/interfacebufrlib_1_1cwrbufr__c.html @@ -26,7 +26,7 @@ @@ -132,7 +132,7 @@

                                                          Write a BUFR message into a file that was previously opened for writing.

                                                          -

                                                          Wraps cwrbufr() function.

                                                          +

                                                          Wraps cwrbufr() function.

                                                          Parameters

                                                          nfile- File ID.
                                                          NCEPLIBS-bufr -  12.1.0 +  12.2.0
                                                          diff --git a/interfacebufrlib_1_1icvidx__c.html b/interfacebufrlib_1_1icvidx__c.html index 8c83927d0..8fed4478c 100644 --- a/interfacebufrlib_1_1icvidx__c.html +++ b/interfacebufrlib_1_1icvidx__c.html @@ -26,7 +26,7 @@ @@ -132,7 +132,7 @@

                                                          Compute a 1-dimensional array index from 2-dimensional indices.

                                                          -

                                                          Wraps icvidx() function.

                                                          +

                                                          Wraps icvidx() function.

                                                          Author
                                                          J. Ator
                                                          Date
                                                          2022-09-01
                                                          Parameters
                                                          diff --git a/interfacebufrlib_1_1inittbf__c.html b/interfacebufrlib_1_1inittbf__c.html index 058275ce8..3450d03b0 100644 --- a/interfacebufrlib_1_1inittbf__c.html +++ b/interfacebufrlib_1_1inittbf__c.html @@ -26,7 +26,7 @@

                                                          diff --git a/interfacebufrlib_1_1openab__c.html b/interfacebufrlib_1_1openab__c.html index e0dfdc893..f3fbd5ded 100644 --- a/interfacebufrlib_1_1openab__c.html +++ b/interfacebufrlib_1_1openab__c.html @@ -26,7 +26,7 @@ @@ -126,7 +126,7 @@

                                                          Open a new file for appending BUFR messages.

                                                          -

                                                          Wraps openab() function.

                                                          +

                                                          Wraps openab() function.

                                                          Parameters

                                                          nfile- File ID.
                                                          NCEPLIBS-bufr -  12.1.0 +  12.2.0
                                                          NCEPLIBS-bufr -  12.1.0 +  12.2.0
                                                          NCEPLIBS-bufr -  12.1.0 +  12.2.0
                                                          diff --git a/interfacebufrlib_1_1openrb__c.html b/interfacebufrlib_1_1openrb__c.html index fd07bc438..d97f22ad0 100644 --- a/interfacebufrlib_1_1openrb__c.html +++ b/interfacebufrlib_1_1openrb__c.html @@ -26,7 +26,7 @@ @@ -126,7 +126,7 @@

                                                          Open a new file for reading BUFR messages.

                                                          -

                                                          Wraps openrb() function.

                                                          +

                                                          Wraps openrb() function.

                                                          Parameters

                                                          nfile- File ID.
                                                          NCEPLIBS-bufr -  12.1.0 +  12.2.0
                                                          diff --git a/interfacebufrlib_1_1openwb__c.html b/interfacebufrlib_1_1openwb__c.html index 16a708d10..3f3a21ebc 100644 --- a/interfacebufrlib_1_1openwb__c.html +++ b/interfacebufrlib_1_1openwb__c.html @@ -26,7 +26,7 @@ @@ -126,7 +126,7 @@

                                                          Open a new file for writing BUFR messages.

                                                          -

                                                          Wraps openwb() function.

                                                          +

                                                          Wraps openwb() function.

                                                          Parameters

                                                          nfile- File ID.
                                                          NCEPLIBS-bufr -  12.1.0 +  12.2.0
                                                          diff --git a/interfacebufrlib_1_1restd__c.html b/interfacebufrlib_1_1restd__c.html index 09942b898..b6e40b9f7 100644 --- a/interfacebufrlib_1_1restd__c.html +++ b/interfacebufrlib_1_1restd__c.html @@ -26,7 +26,7 @@ @@ -138,7 +138,7 @@

                                                          Standardize a local Table D descriptor.

                                                          -

                                                          Wraps restd() function.

                                                          +

                                                          Wraps restd() function.

                                                          Parameters

                                                          nfile- File ID.
                                                          NCEPLIBS-bufr -  12.1.0 +  12.2.0
                                                          diff --git a/interfacebufrlib_1_1sorttbf__c.html b/interfacebufrlib_1_1sorttbf__c.html index 9e5517f20..d68f604cb 100644 --- a/interfacebufrlib_1_1sorttbf__c.html +++ b/interfacebufrlib_1_1sorttbf__c.html @@ -26,7 +26,7 @@ diff --git a/interfacebufrlib_1_1srchtbf__c.html b/interfacebufrlib_1_1srchtbf__c.html index fc89b7b9d..8950b57a5 100644 --- a/interfacebufrlib_1_1srchtbf__c.html +++ b/interfacebufrlib_1_1srchtbf__c.html @@ -26,7 +26,7 @@ diff --git a/interfacebufrlib_1_1strtbfe__c.html b/interfacebufrlib_1_1strtbfe__c.html index bc171b8e5..a70accdb6 100644 --- a/interfacebufrlib_1_1strtbfe__c.html +++ b/interfacebufrlib_1_1strtbfe__c.html @@ -26,7 +26,7 @@ diff --git a/interfacebufrlib_1_1stseq__c.html b/interfacebufrlib_1_1stseq__c.html index 920794e41..569a77d7e 100644 --- a/interfacebufrlib_1_1stseq__c.html +++ b/interfacebufrlib_1_1stseq__c.html @@ -26,7 +26,7 @@ @@ -156,7 +156,7 @@

                                                          Store information about a standard Table D descriptor.

                                                          -

                                                          Wraps stseq() function.

                                                          +

                                                          Wraps stseq() function.

                                                          Parameters

                                                          lun- File ID.
                                                          NCEPLIBS-bufr -  12.1.0 +  12.2.0
                                                          NCEPLIBS-bufr -  12.1.0 +  12.2.0
                                                          NCEPLIBS-bufr -  12.1.0 +  12.2.0
                                                          NCEPLIBS-bufr -  12.1.0 +  12.2.0
                                                          diff --git a/jumplink_8F90.html b/jumplink_8F90.html index 27b1e2c9b..d9aa9e0ba 100644 --- a/jumplink_8F90.html +++ b/jumplink_8F90.html @@ -26,7 +26,7 @@ @@ -191,7 +191,7 @@

                                                          Author
                                                          Woollen
                                                          Date
                                                          1994-01-06
                                                          -

                                                          Definition at line 279 of file jumplink.F90.

                                                          +

                                                          Definition at line 273 of file jumplink.F90.

                                                          References bort(), moda_nmikrp::irp, moda_nmikrp::krp, moda_nmikrp::nem, nemtab(), nemtbb(), nemtbd(), moda_tababd::ntba, moda_tababd::ntbb, moda_tababd::ntbd, and moda_tababd::taba.

                                                          @@ -253,11 +253,11 @@

                                                          Author
                                                          Woollen
                                                          Date
                                                          1994-01-06
                                                          -

                                                          Definition at line 1382 of file jumplink.F90.

                                                          +

                                                          Definition at line 1372 of file jumplink.F90.

                                                          References getwin(), and moda_usrint::nval.

                                                          -

                                                          Referenced by ufbevn(), ufbin3(), and ufbrw().

                                                          +

                                                          Referenced by ufbevn(), and ufbrw().

                                                          @@ -327,7 +327,7 @@

                                                          Author
                                                          Woollen
                                                          Date
                                                          1994-01-06
                                                          -

                                                          Definition at line 897 of file jumplink.F90.

                                                          +

                                                          Definition at line 888 of file jumplink.F90.

                                                          References moda_tables::jmpb, newwin(), moda_tables::typ, and usrtpl().

                                                          @@ -405,7 +405,7 @@

                                                          Author
                                                          J. Ator
                                                          Date
                                                          2014-10-02
                                                          -

                                                          Definition at line 1064 of file jumplink.F90.

                                                          +

                                                          Definition at line 1055 of file jumplink.F90.

                                                          References moda_usrint::inv, moda_usrint::nval, parstr(), and moda_tables::tag.

                                                          @@ -476,7 +476,7 @@

                                                          Author
                                                          J. Ator
                                                          Date
                                                          2012-09-12
                                                          -

                                                          Definition at line 1125 of file jumplink.F90.

                                                          +

                                                          Definition at line 1116 of file jumplink.F90.

                                                          References fstag(), moda_msgcwd::inode, moda_usrint::inv, moda_tables::jmpb, status(), moda_tables::tag, x48(), and x84().

                                                          @@ -523,7 +523,7 @@

                                                          Note
                                                          This is one of a number of subroutines which operate on "windows" (i.e. contiguous portions) of the internal subset buffer. The subset buffer is an array of values arranged according to the overall template definition for a subset. A window can be any contiguous portion of the subset buffer up to and including the entire subset buffer itself. For the purposes of these "window - operator" subroutines, a window essentially consists of all of the elements within a particular delayed replication group, since such groups effectively define the dimensions within a BUFR subset for subroutines such as ufbint(), ufbin3(), etc. which read/write individual data values. A BUFR subset with no delayed replication groups is considered to have only one dimension, and therefore only one "window" which spans the entire subset. On the other hand, each delayed replication sequence within a BUFR subset consists of some number of "windows", which are a de-facto second dimension of the subset and where the number of windows is the delayed descriptor replication factor (i.e. the number of iterations) of the sequence. If nested delayed replication is used, then there may be three or more dimensions within the subset.
                                                          + operator" subroutines, a window essentially consists of all of the elements within a particular delayed replication group, since such groups effectively define the dimensions within a BUFR subset for subroutines such as ufbint() which read/write individual data values. A BUFR subset with no delayed replication groups is considered to have only one dimension, and therefore only one "window" which spans the entire subset. On the other hand, each delayed replication sequence within a BUFR subset consists of some number of "windows", which are a de-facto second dimension of the subset and where the number of windows is the delayed descriptor replication factor (i.e. the number of iterations) of the sequence. If nested delayed replication is used, then there may be three or more dimensions within the subset.
                                                          Parameters

                                                          lun- File ID.
                                                          NCEPLIBS-bufr -  12.1.0 +  12.2.0
                                                          @@ -539,11 +539,11 @@

                                                          Author
                                                          Woollen
                                                          Date
                                                          1994-01-06
                                                          -

                                                          Definition at line 1313 of file jumplink.F90.

                                                          +

                                                          Definition at line 1303 of file jumplink.F90.

                                                          References bort(), moda_usrint::nval, and moda_usrint::val.

                                                          -

                                                          Referenced by conwin(), ufbevn(), ufbin3(), and ufbrw().

                                                          +

                                                          Referenced by conwin(), ufbevn(), and ufbrw().

                                                          @@ -590,7 +590,7 @@

                                                          Author
                                                          J. Ator
                                                          Date
                                                          2009-06-18
                                                          -

                                                          Definition at line 831 of file jumplink.F90.

                                                          +

                                                          Definition at line 822 of file jumplink.F90.

                                                          References moda_tababd::idna, moda_tababd::idnb, moda_tababd::idnd, ishrdx(), moda_tababd::ntba, moda_tababd::ntbb, moda_tababd::ntbd, moda_tababd::taba, moda_tababd::tabb, and moda_tababd::tabd.

                                                          @@ -643,7 +643,7 @@

                                                          Author
                                                          Woollen
                                                          Date
                                                          1994-01-06
                                                          -

                                                          Definition at line 695 of file jumplink.F90.

                                                          +

                                                          Definition at line 686 of file jumplink.F90.

                                                          References bort(), moda_tables::ntab, moda_tables::tag, and moda_tables::typ.

                                                          @@ -714,7 +714,7 @@

                                                          Author
                                                          Woollen
                                                          Date
                                                          1994-01-06
                                                          -

                                                          Definition at line 1440 of file jumplink.F90.

                                                          +

                                                          Definition at line 1430 of file jumplink.F90.

                                                          References errwrt(), moda_usrint::inv, moda_usrint::nval, and moda_usrint::val.

                                                          @@ -776,7 +776,7 @@

                                                          Author
                                                          Woollen
                                                          Date
                                                          1994-01-06
                                                          -

                                                          Definition at line 1190 of file jumplink.F90.

                                                          +

                                                          Definition at line 1181 of file jumplink.F90.

                                                          References errwrt(), moda_usrint::inv, and moda_tables::tag.

                                                          @@ -840,11 +840,11 @@

                                                          Author
                                                          Woollen
                                                          Date
                                                          1994-01-06
                                                          -

                                                          Definition at line 1238 of file jumplink.F90.

                                                          +

                                                          Definition at line 1228 of file jumplink.F90.

                                                          References errwrt(), and moda_usrint::inv.

                                                          -

                                                          Referenced by nevn(), ufbget(), and ufbseq().

                                                          +

                                                          Referenced by ufbget(), and ufbseq().

                                                          @@ -890,7 +890,7 @@

                                                          Author
                                                          J. Ator
                                                          Date
                                                          2009-06-18
                                                          -

                                                          Definition at line 786 of file jumplink.F90.

                                                          +

                                                          Definition at line 777 of file jumplink.F90.

                                                          References moda_tababd::mtab, and moda_tababd::ntba.

                                                          @@ -948,11 +948,11 @@

                                                          Author
                                                          Woollen
                                                          Date
                                                          1994-01-06
                                                          -

                                                          Definition at line 740 of file jumplink.F90.

                                                          +

                                                          Definition at line 731 of file jumplink.F90.

                                                          References bort(), moda_msgcwd::inode, moda_tables::isc, moda_tables::jmpb, and moda_tables::typ.

                                                          -

                                                          Referenced by igetrfel(), and nevn().

                                                          +

                                                          Referenced by igetrfel().

                                                          @@ -1060,7 +1060,7 @@

                                                          Author
                                                          J. Ator
                                                          Date
                                                          2014-10-02
                                                          -

                                                          Definition at line 961 of file jumplink.F90.

                                                          +

                                                          Definition at line 952 of file jumplink.F90.

                                                          References fstag(), moda_tables::ibt, moda_nrv203::ienrv, moda_msgcwd::inode, moda_nrv203::inodnrv, moda_usrint::inv, moda_tables::irf, moda_tables::isc, moda_nrv203::isnrv, moda_nrv203::nnrv, moda_nrv203::nrv, status(), strsuc(), moda_nrv203::tagnrv, moda_tables::typ, x48(), and x84().

                                                          @@ -1114,7 +1114,7 @@

                                                          Author
                                                          J. Woollen
                                                          Date
                                                          1994-01-06
                                                          -

                                                          Definition at line 1490 of file jumplink.F90.

                                                          +

                                                          Definition at line 1481 of file jumplink.F90.

                                                          References bort(), moda_usrint::inv, moda_usrint::nval, and moda_usrint::val.

                                                          @@ -1189,7 +1189,7 @@

                                                          Author
                                                          Woollen
                                                          Date
                                                          1994-01-06
                                                          -

                                                          Definition at line 1588 of file jumplink.F90.

                                                          +

                                                          Definition at line 1579 of file jumplink.F90.

                                                          References bort(), errwrt(), and moda_usrint::inv.

                                                          @@ -1251,11 +1251,11 @@

                                                          Author
                                                          J. Woollen
                                                          Date
                                                          1994-01-06
                                                          -

                                                          Definition at line 1538 of file jumplink.F90.

                                                          +

                                                          Definition at line 1529 of file jumplink.F90.

                                                          References bort(), moda_usrint::inv, moda_usrint::nval, and moda_usrint::val.

                                                          -

                                                          Referenced by ufbevn(), ufbin3(), and ufbrw().

                                                          +

                                                          Referenced by ufbevn(), and ufbrw().

                                                          @@ -1337,9 +1337,9 @@

                                                          Author
                                                          Woollen
                                                          Date
                                                          1994-01-06
                                                          -

                                                          Definition at line 585 of file jumplink.F90.

                                                          +

                                                          Definition at line 577 of file jumplink.F90.

                                                          -

                                                          References bort(), moda_tables::ibt, moda_nrv203::ibtnrv, inctab(), moda_nrv203::inodnrv, moda_nrv203::ipfnrv, moda_tables::irf, moda_tables::isc, moda_nrv203::isnrv, moda_tables::jmpb, moda_tables::jump, moda_tables::link, nemtbb(), moda_nrv203::nnrv, and moda_nrv203::tagnrv.

                                                          +

                                                          References bort(), moda_tables::ibt, moda_nrv203::ibtnrv, moda_tabccc::icdw, moda_tabccc::icrv, moda_tabccc::icsc, inctab(), moda_tabccc::incw, moda_nrv203::inodnrv, moda_nrv203::ipfnrv, moda_tables::irf, moda_tables::isc, moda_nrv203::isnrv, moda_tables::jmpb, moda_tables::jump, moda_tables::link, nemtbb(), moda_nrv203::nnrv, and moda_nrv203::tagnrv.

                                                          Referenced by tabsub().

                                                          @@ -1382,9 +1382,9 @@

                                                          Author
                                                          Woollen
                                                          Date
                                                          1994-01-06
                                                          -

                                                          Definition at line 333 of file jumplink.F90.

                                                          +

                                                          Definition at line 327 of file jumplink.F90.

                                                          -

                                                          References bort(), moda_bitmaps::ctco, moda_tables::ibt, moda_nrv203::ibtnrv, moda_nrv203::ienrv, inctab(), moda_bitmaps::inodtamc, moda_bitmaps::inodtco, moda_nrv203::ipfnrv, moda_tables::irf, moda_nmikrp::irp, moda_tables::isc, moda_tables::jmpb, moda_tables::jump, moda_nmikrp::krp, moda_tables::link, moda_nmikrp::nem, nemtab(), nemtbd(), moda_nrv203::nnrv, moda_tables::ntab, moda_bitmaps::ntamc, moda_bitmaps::ntco, and tabent().

                                                          +

                                                          References bort(), moda_bitmaps::ctco, moda_tables::ibt, moda_nrv203::ibtnrv, moda_tabccc::icdw, moda_tabccc::icrv, moda_tabccc::icsc, moda_nrv203::ienrv, inctab(), moda_tabccc::incw, moda_bitmaps::inodtamc, moda_bitmaps::inodtco, moda_nrv203::ipfnrv, moda_tables::irf, moda_nmikrp::irp, moda_tables::isc, moda_tables::jmpb, moda_tables::jump, moda_nmikrp::krp, moda_tables::link, moda_nmikrp::nem, nemtab(), nemtbd(), moda_nrv203::nnrv, moda_tables::ntab, moda_bitmaps::ntamc, moda_bitmaps::ntco, and tabent().

                                                          Referenced by makestab().

                                                          diff --git a/jumplink_8F90_source.html b/jumplink_8F90_source.html index 6dee6904d..4a55c2a61 100644 --- a/jumplink_8F90_source.html +++ b/jumplink_8F90_source.html @@ -26,7 +26,7 @@

                                                          @@ -90,7 +90,7 @@
                                                          5 
                                                          22 subroutine makestab
                                                          23 
                                                          -
                                                          24  use modv_vars, only: bmiss, maxjl, nfiles
                                                          +
                                                          24  use modv_vars, only: bmiss, maxjl, nfiles, iprt
                                                          25 
                                                          26  use moda_usrint
                                                          27  use moda_stbfr
                                                          @@ -103,1271 +103,1262 @@
                                                          34 
                                                          35  implicit none
                                                          36 
                                                          -
                                                          37  integer iprt, lunit, lundx, lun, lum, k, n, itba, inc, newn, noda, node, inod, icmpdx, ishrdx
                                                          +
                                                          37  integer lunit, lundx, lun, lum, n, itba, inc, newn, noda, node, inod, icmpdx, ishrdx
                                                          38 
                                                          39  character*128 bort_str, errstr
                                                          40  character*8 nemo
                                                          41 
                                                          42  logical expand
                                                          43 
                                                          -
                                                          44  common /quiet/ iprt
                                                          +
                                                          44  ! Reset pointer table and string cache.
                                                          45 
                                                          -
                                                          46  ! Reset pointer table and string cache.
                                                          -
                                                          47 
                                                          -
                                                          48  ntab = 0
                                                          -
                                                          49  nnrv = 0
                                                          -
                                                          50  ntamc = 0
                                                          -
                                                          51  call strcln
                                                          +
                                                          46  ntab = 0
                                                          +
                                                          47  nnrv = 0
                                                          +
                                                          48  ntamc = 0
                                                          +
                                                          49  call strcln
                                                          +
                                                          50 
                                                          +
                                                          51  ! Figure out which units share tables.
                                                          52 
                                                          -
                                                          53  ! Figure out which units share tables.
                                                          -
                                                          54 
                                                          -
                                                          55  ! The lus array is static between calls to this subroutine, and it keeps track of which logical units share dictionary
                                                          -
                                                          56  ! table information:
                                                          -
                                                          57  ! if lus(i) = 0, then iolun(i) does not share dictionary table information with any other logical unit
                                                          -
                                                          58  ! if lus(i) > 0, then iolun(i) shares dictionary table information with logical unit iolun(lus(i))
                                                          -
                                                          59  ! if lus(i) < 0, then iolun(i) does not now, but at one point in the past, shared dictionary table information
                                                          -
                                                          60  ! with logical unit iolun(abs(lus(i)))
                                                          -
                                                          61 
                                                          -
                                                          62  ! The xtab array is non-static and is recomputed within the below loop during each call to this subroutine:
                                                          -
                                                          63  ! if xtab(i) = .true., then the dictionary table information has changed for iolun(i) since the last call to this subroutine
                                                          -
                                                          64  ! if xtab(i) = .false., then the dictionary table information has not changed for iolun(i) since the last call to this subroutine
                                                          -
                                                          65 
                                                          -
                                                          66  do lun=1,nfiles
                                                          -
                                                          67  xtab(lun) = .false.
                                                          -
                                                          68  if(iolun(lun)==0) then
                                                          -
                                                          69  ! Logical unit iolun(lun) is not defined to NCEPLIBS-bufr.
                                                          -
                                                          70  lus(lun) = 0
                                                          -
                                                          71  else if(mtab(1,lun)==0) then
                                                          -
                                                          72  ! New dictionary table information has been read for logical unit iolun(lun) since the last call to this subroutine.
                                                          -
                                                          73  xtab(lun) = .true.
                                                          -
                                                          74  if(lus(lun)/=0) then
                                                          -
                                                          75  if(iolun(abs(lus(lun)))==0) then
                                                          -
                                                          76  lus(lun) = 0
                                                          -
                                                          77  else if(lus(lun)>0) then
                                                          -
                                                          78  ! iolun(lun) was sharing table information with logical unit iolun(lus(lun)), so check whether the table information
                                                          -
                                                          79  ! has really changed. If not, then iolun(lun) just re-read a copy of the exact same table information as before,
                                                          -
                                                          80  ! and therefore it can continue to share with logical unit iolun(lus(lun)).
                                                          -
                                                          81  if(icmpdx(lus(lun),lun)==1) then
                                                          -
                                                          82  xtab(lun) = .false.
                                                          -
                                                          83  call cpbfdx(lus(lun),lun)
                                                          -
                                                          84  else
                                                          -
                                                          85  lus(lun) = (-1)*lus(lun)
                                                          -
                                                          86  endif
                                                          -
                                                          87  else if(icmpdx(abs(lus(lun)),lun)==1) then
                                                          -
                                                          88  ! iolun(lun) was not sharing table information with logical unit iolun(lus(lun)), but it did at one point in the past
                                                          -
                                                          89  ! and now once again has the same table information as that logical unit. Since the two units shared table
                                                          -
                                                          90  ! information at one point in the past, allow them to do so again.
                                                          -
                                                          91  xtab(lun) = .false.
                                                          -
                                                          92  lus(lun) = abs(lus(lun))
                                                          -
                                                          93  call cpbfdx(lus(lun),lun)
                                                          -
                                                          94  endif
                                                          -
                                                          95  endif
                                                          -
                                                          96  else if(lus(lun)>0) then
                                                          -
                                                          97  ! Logical unit iolun(lun) is sharing table information with logical unit iolun(lus(lun)), so make sure that the latter
                                                          -
                                                          98  ! unit is still defined to NCEPLIBS-bufr.
                                                          -
                                                          99  if(iolun(lus(lun))==0) then
                                                          -
                                                          100  lus(lun) = 0
                                                          -
                                                          101  else if( xtab(lus(lun)) .and. (icmpdx(lus(lun),lun)==0) ) then
                                                          -
                                                          102  ! The table information for logical unit iolun(lus(lun)) just changed (in midstream). If iolun(lun) is an output
                                                          -
                                                          103  ! file, then we will have to update it with the new table information later on in this subroutine. Otherwise,
                                                          -
                                                          104  ! iolun(lun) is an input file and is no longer sharing tables with iolun(lus(lun)).
                                                          -
                                                          105  if(iolun(lun)<0) lus(lun) = (-1)*lus(lun)
                                                          -
                                                          106  endif
                                                          -
                                                          107  else
                                                          -
                                                          108  ! Determine whether logical unit iolun(lun) is sharing table information with any other logical units.
                                                          -
                                                          109  lum = 1
                                                          -
                                                          110  do while ((lum<lun).and.(lus(lun)==0))
                                                          -
                                                          111  if(ishrdx(lum,lun)==1) then
                                                          -
                                                          112  lus(lun) = lum
                                                          -
                                                          113  else
                                                          -
                                                          114  lum = lum+1
                                                          -
                                                          115  endif
                                                          -
                                                          116  enddo
                                                          -
                                                          117  endif
                                                          -
                                                          118  enddo
                                                          +
                                                          53  ! The lus array is static between calls to this subroutine, and it keeps track of which logical units share dictionary
                                                          +
                                                          54  ! table information:
                                                          +
                                                          55  ! if lus(i) = 0, then iolun(i) does not share dictionary table information with any other logical unit
                                                          +
                                                          56  ! if lus(i) > 0, then iolun(i) shares dictionary table information with logical unit iolun(lus(i))
                                                          +
                                                          57  ! if lus(i) < 0, then iolun(i) does not now, but at one point in the past, shared dictionary table information
                                                          +
                                                          58  ! with logical unit iolun(abs(lus(i)))
                                                          +
                                                          59 
                                                          +
                                                          60  ! The xtab array is non-static and is recomputed within the below loop during each call to this subroutine:
                                                          +
                                                          61  ! if xtab(i) = .true., then the dictionary table information has changed for iolun(i) since the last call to this subroutine
                                                          +
                                                          62  ! if xtab(i) = .false., then the dictionary table information has not changed for iolun(i) since the last call to this subroutine
                                                          +
                                                          63 
                                                          +
                                                          64  do lun=1,nfiles
                                                          +
                                                          65  xtab(lun) = .false.
                                                          +
                                                          66  if(iolun(lun)==0) then
                                                          +
                                                          67  ! Logical unit iolun(lun) is not defined to NCEPLIBS-bufr.
                                                          +
                                                          68  lus(lun) = 0
                                                          +
                                                          69  else if(mtab(1,lun)==0) then
                                                          +
                                                          70  ! New dictionary table information has been read for logical unit iolun(lun) since the last call to this subroutine.
                                                          +
                                                          71  xtab(lun) = .true.
                                                          +
                                                          72  if(lus(lun)/=0) then
                                                          +
                                                          73  if(iolun(abs(lus(lun)))==0) then
                                                          +
                                                          74  lus(lun) = 0
                                                          +
                                                          75  else if(lus(lun)>0) then
                                                          +
                                                          76  ! iolun(lun) was sharing table information with logical unit iolun(lus(lun)), so check whether the table information
                                                          +
                                                          77  ! has really changed. If not, then iolun(lun) just re-read a copy of the exact same table information as before,
                                                          +
                                                          78  ! and therefore it can continue to share with logical unit iolun(lus(lun)).
                                                          +
                                                          79  if(icmpdx(lus(lun),lun)==1) then
                                                          +
                                                          80  xtab(lun) = .false.
                                                          +
                                                          81  call cpbfdx(lus(lun),lun)
                                                          +
                                                          82  else
                                                          +
                                                          83  lus(lun) = (-1)*lus(lun)
                                                          +
                                                          84  endif
                                                          +
                                                          85  else if(icmpdx(abs(lus(lun)),lun)==1) then
                                                          +
                                                          86  ! iolun(lun) was not sharing table information with logical unit iolun(lus(lun)), but it did at one point in the past
                                                          +
                                                          87  ! and now once again has the same table information as that logical unit. Since the two units shared table
                                                          +
                                                          88  ! information at one point in the past, allow them to do so again.
                                                          +
                                                          89  xtab(lun) = .false.
                                                          +
                                                          90  lus(lun) = abs(lus(lun))
                                                          +
                                                          91  call cpbfdx(lus(lun),lun)
                                                          +
                                                          92  endif
                                                          +
                                                          93  endif
                                                          +
                                                          94  else if(lus(lun)>0) then
                                                          +
                                                          95  ! Logical unit iolun(lun) is sharing table information with logical unit iolun(lus(lun)), so make sure that the latter
                                                          +
                                                          96  ! unit is still defined to NCEPLIBS-bufr.
                                                          +
                                                          97  if(iolun(lus(lun))==0) then
                                                          +
                                                          98  lus(lun) = 0
                                                          +
                                                          99  else if( xtab(lus(lun)) .and. (icmpdx(lus(lun),lun)==0) ) then
                                                          +
                                                          100  ! The table information for logical unit iolun(lus(lun)) just changed (in midstream). If iolun(lun) is an output
                                                          +
                                                          101  ! file, then we will have to update it with the new table information later on in this subroutine. Otherwise,
                                                          +
                                                          102  ! iolun(lun) is an input file and is no longer sharing tables with iolun(lus(lun)).
                                                          +
                                                          103  if(iolun(lun)<0) lus(lun) = (-1)*lus(lun)
                                                          +
                                                          104  endif
                                                          +
                                                          105  else
                                                          +
                                                          106  ! Determine whether logical unit iolun(lun) is sharing table information with any other logical units.
                                                          +
                                                          107  lum = 1
                                                          +
                                                          108  do while ((lum<lun).and.(lus(lun)==0))
                                                          +
                                                          109  if(ishrdx(lum,lun)==1) then
                                                          +
                                                          110  lus(lun) = lum
                                                          +
                                                          111  else
                                                          +
                                                          112  lum = lum+1
                                                          +
                                                          113  endif
                                                          +
                                                          114  enddo
                                                          +
                                                          115  endif
                                                          +
                                                          116  enddo
                                                          +
                                                          117 
                                                          +
                                                          118  ! Initialize jump/link tables with subsets/sequences/elements.
                                                          119 
                                                          -
                                                          120  ! Initialize jump/link tables with subsets/sequences/elements.
                                                          -
                                                          121 
                                                          -
                                                          122  do lun=1,nfiles
                                                          -
                                                          123  if(iolun(lun)/=0 .and. ntba(lun)>0) then
                                                          -
                                                          124  ! Reset any existing inventory pointers.
                                                          -
                                                          125  if(iomsg(lun)/=0) then
                                                          -
                                                          126  if(lus(lun)<=0) then
                                                          -
                                                          127  inc = (ntab+1)-mtab(1,lun)
                                                          -
                                                          128  else
                                                          -
                                                          129  inc = mtab(1,lus(lun))-mtab(1,lun)
                                                          -
                                                          130  endif
                                                          -
                                                          131  do n=1,nval(lun)
                                                          -
                                                          132  inv(n,lun) = inv(n,lun)+inc
                                                          -
                                                          133  enddo
                                                          -
                                                          134  endif
                                                          -
                                                          135  if(lus(lun)<=0) then
                                                          -
                                                          136  ! The dictionary table information corresponding to logical unit iolun(lun) has not yet been written into the internal
                                                          -
                                                          137  ! jump/link table, so add it in now.
                                                          -
                                                          138  call chekstab(lun)
                                                          -
                                                          139  do itba=1,ntba(lun)
                                                          -
                                                          140  inod = ntab+1
                                                          -
                                                          141  nemo = taba(itba,lun)(4:11)
                                                          -
                                                          142  call tabsub(lun,nemo)
                                                          -
                                                          143  mtab(itba,lun) = inod
                                                          -
                                                          144  isc(inod) = ntab
                                                          -
                                                          145  enddo
                                                          -
                                                          146  else if( xtab(lus(lun)) .and. (icmpdx(lus(lun),lun)==0) ) then
                                                          -
                                                          147  ! Logical unit iolun(lun) is an output file that is sharing table information with logical unit iolun(lus(lun)) whose
                                                          -
                                                          148  ! table just changed (in midstream). Flush any existing data messages from iolun(lun), then update the table information
                                                          -
                                                          149  ! for this logical unit with the corresponding new table information from iolun(lus(lun)), then update iolun(lun) itself
                                                          -
                                                          150  ! with a copy of the new table information.
                                                          -
                                                          151  lunit = abs(iolun(lun))
                                                          -
                                                          152  if(iomsg(lun)/=0) call closmg(lunit)
                                                          -
                                                          153  call cpbfdx(lus(lun),lun)
                                                          -
                                                          154  lundx = abs(iolun(lus(lun)))
                                                          -
                                                          155  call wrdxtb(lundx,lunit)
                                                          -
                                                          156  endif
                                                          -
                                                          157  endif
                                                          -
                                                          158  enddo
                                                          +
                                                          120  do lun=1,nfiles
                                                          +
                                                          121  if(iolun(lun)/=0 .and. ntba(lun)>0) then
                                                          +
                                                          122  ! Reset any existing inventory pointers.
                                                          +
                                                          123  if(iomsg(lun)/=0) then
                                                          +
                                                          124  if(lus(lun)<=0) then
                                                          +
                                                          125  inc = (ntab+1)-mtab(1,lun)
                                                          +
                                                          126  else
                                                          +
                                                          127  inc = mtab(1,lus(lun))-mtab(1,lun)
                                                          +
                                                          128  endif
                                                          +
                                                          129  do n=1,nval(lun)
                                                          +
                                                          130  inv(n,lun) = inv(n,lun)+inc
                                                          +
                                                          131  enddo
                                                          +
                                                          132  endif
                                                          +
                                                          133  if(lus(lun)<=0) then
                                                          +
                                                          134  ! The dictionary table information corresponding to logical unit iolun(lun) has not yet been written into the internal
                                                          +
                                                          135  ! jump/link table, so add it in now.
                                                          +
                                                          136  call chekstab(lun)
                                                          +
                                                          137  do itba=1,ntba(lun)
                                                          +
                                                          138  inod = ntab+1
                                                          +
                                                          139  nemo = taba(itba,lun)(4:11)
                                                          +
                                                          140  call tabsub(lun,nemo)
                                                          +
                                                          141  mtab(itba,lun) = inod
                                                          +
                                                          142  isc(inod) = ntab
                                                          +
                                                          143  enddo
                                                          +
                                                          144  else if( xtab(lus(lun)) .and. (icmpdx(lus(lun),lun)==0) ) then
                                                          +
                                                          145  ! Logical unit iolun(lun) is an output file that is sharing table information with logical unit iolun(lus(lun)) whose
                                                          +
                                                          146  ! table just changed (in midstream). Flush any existing data messages from iolun(lun), then update the table information
                                                          +
                                                          147  ! for this logical unit with the corresponding new table information from iolun(lus(lun)), then update iolun(lun) itself
                                                          +
                                                          148  ! with a copy of the new table information.
                                                          +
                                                          149  lunit = abs(iolun(lun))
                                                          +
                                                          150  if(iomsg(lun)/=0) call closmg(lunit)
                                                          +
                                                          151  call cpbfdx(lus(lun),lun)
                                                          +
                                                          152  lundx = abs(iolun(lus(lun)))
                                                          +
                                                          153  call wrdxtb(lundx,lunit)
                                                          +
                                                          154  endif
                                                          +
                                                          155  endif
                                                          +
                                                          156  enddo
                                                          +
                                                          157 
                                                          +
                                                          158  ! Store types and initial values and counts
                                                          159 
                                                          -
                                                          160  ! Store types and initial values and counts
                                                          -
                                                          161 
                                                          -
                                                          162  do node=1,ntab
                                                          -
                                                          163  if(typ(node)=='SUB') then
                                                          -
                                                          164  vali(node) = 0
                                                          -
                                                          165  knti(node) = 1
                                                          -
                                                          166  itp(node) = 0
                                                          -
                                                          167  elseif(typ(node)=='SEQ') then
                                                          -
                                                          168  vali(node) = 0
                                                          -
                                                          169  knti(node) = 1
                                                          -
                                                          170  itp(node) = 0
                                                          -
                                                          171  elseif(typ(node)=='RPC') then
                                                          -
                                                          172  vali(node) = 0
                                                          -
                                                          173  knti(node) = 0
                                                          -
                                                          174  itp(node) = 0
                                                          -
                                                          175  elseif(typ(node)=='RPS') then
                                                          -
                                                          176  vali(node) = 0
                                                          -
                                                          177  knti(node) = 0
                                                          -
                                                          178  itp(node) = 0
                                                          -
                                                          179  elseif(typ(node)=='REP') then
                                                          -
                                                          180  vali(node) = bmiss
                                                          -
                                                          181  knti(node) = irf(node)
                                                          -
                                                          182  itp(node) = 0
                                                          -
                                                          183  elseif(typ(node)=='DRS') then
                                                          -
                                                          184  vali(node) = 0
                                                          -
                                                          185  knti(node) = 1
                                                          -
                                                          186  itp(node) = 1
                                                          -
                                                          187  elseif(typ(node)=='DRP') then
                                                          -
                                                          188  vali(node) = 0
                                                          -
                                                          189  knti(node) = 1
                                                          -
                                                          190  itp(node) = 1
                                                          -
                                                          191  elseif(typ(node)=='DRB') then
                                                          -
                                                          192  vali(node) = 0
                                                          -
                                                          193  knti(node) = 0
                                                          -
                                                          194  itp(node) = 1
                                                          -
                                                          195  elseif(typ(node)=='NUM') then
                                                          -
                                                          196  vali(node) = bmiss
                                                          -
                                                          197  knti(node) = 1
                                                          -
                                                          198  itp(node) = 2
                                                          -
                                                          199  else ! typ(node)=='CHR'
                                                          -
                                                          200  vali(node) = bmiss
                                                          -
                                                          201  knti(node) = 1
                                                          -
                                                          202  itp(node) = 3
                                                          -
                                                          203  endif
                                                          -
                                                          204  enddo
                                                          +
                                                          160  do node=1,ntab
                                                          +
                                                          161  if(typ(node)=='SUB') then
                                                          +
                                                          162  vali(node) = 0
                                                          +
                                                          163  knti(node) = 1
                                                          +
                                                          164  itp(node) = 0
                                                          +
                                                          165  elseif(typ(node)=='SEQ') then
                                                          +
                                                          166  vali(node) = 0
                                                          +
                                                          167  knti(node) = 1
                                                          +
                                                          168  itp(node) = 0
                                                          +
                                                          169  elseif(typ(node)=='RPC') then
                                                          +
                                                          170  vali(node) = 0
                                                          +
                                                          171  knti(node) = 0
                                                          +
                                                          172  itp(node) = 0
                                                          +
                                                          173  elseif(typ(node)=='RPS') then
                                                          +
                                                          174  vali(node) = 0
                                                          +
                                                          175  knti(node) = 0
                                                          +
                                                          176  itp(node) = 0
                                                          +
                                                          177  elseif(typ(node)=='REP') then
                                                          +
                                                          178  vali(node) = bmiss
                                                          +
                                                          179  knti(node) = irf(node)
                                                          +
                                                          180  itp(node) = 0
                                                          +
                                                          181  elseif(typ(node)=='DRS') then
                                                          +
                                                          182  vali(node) = 0
                                                          +
                                                          183  knti(node) = 1
                                                          +
                                                          184  itp(node) = 1
                                                          +
                                                          185  elseif(typ(node)=='DRP') then
                                                          +
                                                          186  vali(node) = 0
                                                          +
                                                          187  knti(node) = 1
                                                          +
                                                          188  itp(node) = 1
                                                          +
                                                          189  elseif(typ(node)=='DRB') then
                                                          +
                                                          190  vali(node) = 0
                                                          +
                                                          191  knti(node) = 0
                                                          +
                                                          192  itp(node) = 1
                                                          +
                                                          193  elseif(typ(node)=='NUM') then
                                                          +
                                                          194  vali(node) = bmiss
                                                          +
                                                          195  knti(node) = 1
                                                          +
                                                          196  itp(node) = 2
                                                          +
                                                          197  else ! typ(node)=='CHR'
                                                          +
                                                          198  vali(node) = bmiss
                                                          +
                                                          199  knti(node) = 1
                                                          +
                                                          200  itp(node) = 3
                                                          +
                                                          201  endif
                                                          +
                                                          202  enddo
                                                          +
                                                          203 
                                                          +
                                                          204  ! Set up expansion segments for type 'SUB', 'DRP', and 'DRS' nodes.
                                                          205 
                                                          -
                                                          206  ! Set up expansion segments for type 'SUB', 'DRP', and 'DRS' nodes.
                                                          -
                                                          207 
                                                          -
                                                          208  newn = 0
                                                          -
                                                          209 
                                                          -
                                                          210  do n=1,ntab
                                                          -
                                                          211  iseq(n,1) = 0
                                                          -
                                                          212  iseq(n,2) = 0
                                                          -
                                                          213  expand = typ(n)=='SUB' .or. typ(n)=='DRP' .or. typ(n)=='DRS' .or. typ(n)=='REP' .or. typ(n)=='DRB'
                                                          -
                                                          214  if(expand) then
                                                          -
                                                          215  iseq(n,1) = newn+1
                                                          -
                                                          216  noda = n
                                                          -
                                                          217  node = n+1
                                                          -
                                                          218  do k=1,maxjl
                                                          -
                                                          219  knt(k) = 0
                                                          -
                                                          220  enddo
                                                          -
                                                          221  if(typ(noda)=='REP') then
                                                          -
                                                          222  knt(node) = knti(noda)
                                                          -
                                                          223  else
                                                          -
                                                          224  knt(node) = 1
                                                          -
                                                          225  endif
                                                          -
                                                          226 
                                                          -
                                                          227  outer: do while (.true.)
                                                          -
                                                          228  newn = newn+1
                                                          -
                                                          229  if(newn>maxjl) then
                                                          -
                                                          230  write(bort_str,'("BUFRLIB: MAKESTAB - NUMBER OF JSEQ ENTRIES IN JUMP/LINK TABLE EXCEEDS THE LIMIT (",I6,")")') maxjl
                                                          -
                                                          231  call bort(bort_str)
                                                          -
                                                          232  endif
                                                          -
                                                          233  jseq(newn) = node
                                                          -
                                                          234  knt(node) = max(knti(node),knt(node))
                                                          -
                                                          235  inner: do while (.true.)
                                                          -
                                                          236  if(jump(node)*knt(node)>0) then
                                                          -
                                                          237  node = jump(node)
                                                          -
                                                          238  cycle outer
                                                          -
                                                          239  else if(link(node)>0) then
                                                          -
                                                          240  node = link(node)
                                                          -
                                                          241  cycle outer
                                                          -
                                                          242  else
                                                          -
                                                          243  node = jmpb(node)
                                                          -
                                                          244  if(node==noda) exit outer
                                                          -
                                                          245  if(node==0) then
                                                          -
                                                          246  write(bort_str,'("BUFRLIB: MAKESTAB - NODE IS ZERO, FAILED TO CIRCULATE (TAG IS ",A,")")') tag(n)
                                                          -
                                                          247  call bort(bort_str)
                                                          -
                                                          248  endif
                                                          -
                                                          249  knt(node) = max(knt(node)-1,0)
                                                          -
                                                          250  endif
                                                          -
                                                          251  enddo inner
                                                          -
                                                          252  enddo outer
                                                          -
                                                          253  iseq(n,2) = newn
                                                          -
                                                          254  endif
                                                          -
                                                          255  enddo
                                                          -
                                                          256 
                                                          -
                                                          257  ! Print the sequence tables
                                                          -
                                                          258 
                                                          -
                                                          259  if(iprt>=2) then
                                                          +
                                                          206  newn = 0
                                                          +
                                                          207  knt(1:maxjl) = 0
                                                          +
                                                          208  do n=1,ntab
                                                          +
                                                          209  iseq(n,1) = 0
                                                          +
                                                          210  iseq(n,2) = 0
                                                          +
                                                          211  expand = typ(n)=='SUB' .or. typ(n)=='DRP' .or. typ(n)=='DRS' .or. typ(n)=='REP' .or. typ(n)=='DRB'
                                                          +
                                                          212  if(expand) then
                                                          +
                                                          213  iseq(n,1) = newn+1
                                                          +
                                                          214  noda = n
                                                          +
                                                          215  node = n+1
                                                          +
                                                          216  if(typ(noda)=='REP') then
                                                          +
                                                          217  knt(node) = knti(noda)
                                                          +
                                                          218  else
                                                          +
                                                          219  knt(node) = 1
                                                          +
                                                          220  endif
                                                          +
                                                          221  outer: do while (.true.)
                                                          +
                                                          222  newn = newn+1
                                                          +
                                                          223  if(newn>maxjl) then
                                                          +
                                                          224  write(bort_str,'("BUFRLIB: MAKESTAB - NUMBER OF JSEQ ENTRIES IN JUMP/LINK TABLE EXCEEDS THE LIMIT (",I6,")")') maxjl
                                                          +
                                                          225  call bort(bort_str)
                                                          +
                                                          226  endif
                                                          +
                                                          227  jseq(newn) = node
                                                          +
                                                          228  knt(node) = max(knti(node),knt(node))
                                                          +
                                                          229  inner: do while (.true.)
                                                          +
                                                          230  if(jump(node)*knt(node)>0) then
                                                          +
                                                          231  node = jump(node)
                                                          +
                                                          232  cycle outer
                                                          +
                                                          233  else if(link(node)>0) then
                                                          +
                                                          234  node = link(node)
                                                          +
                                                          235  cycle outer
                                                          +
                                                          236  else
                                                          +
                                                          237  node = jmpb(node)
                                                          +
                                                          238  if(node==noda) exit outer
                                                          +
                                                          239  if(node==0) then
                                                          +
                                                          240  write(bort_str,'("BUFRLIB: MAKESTAB - NODE IS ZERO, FAILED TO CIRCULATE (TAG IS ",A,")")') tag(n)
                                                          +
                                                          241  call bort(bort_str)
                                                          +
                                                          242  endif
                                                          +
                                                          243  knt(node) = max(knt(node)-1,0)
                                                          +
                                                          244  endif
                                                          +
                                                          245  enddo inner
                                                          +
                                                          246  enddo outer
                                                          +
                                                          247  iseq(n,2) = newn
                                                          +
                                                          248  endif
                                                          +
                                                          249  enddo
                                                          +
                                                          250 
                                                          +
                                                          251  ! Print the sequence tables
                                                          +
                                                          252 
                                                          +
                                                          253  if(iprt>=2) then
                                                          +
                                                          254  call errwrt('++++++++++++++BUFR ARCHIVE LIBRARY+++++++++++++++++')
                                                          +
                                                          255  do n=1,ntab
                                                          +
                                                          256  write ( unit=errstr, fmt='(A,I5,2X,A10,A5,6I8)' ) &
                                                          +
                                                          257  'BUFRLIB: MAKESTAB ', n, tag(n), typ(n), jmpb(n), jump(n), link(n), ibt(n), irf(n), isc(n)
                                                          +
                                                          258  call errwrt(errstr)
                                                          +
                                                          259  enddo
                                                          260  call errwrt('++++++++++++++BUFR ARCHIVE LIBRARY+++++++++++++++++')
                                                          -
                                                          261  do n=1,ntab
                                                          -
                                                          262  write ( unit=errstr, fmt='(A,I5,2X,A10,A5,6I8)' ) &
                                                          -
                                                          263  'BUFRLIB: MAKESTAB ', n, tag(n), typ(n), jmpb(n), jump(n), link(n), ibt(n), irf(n), isc(n)
                                                          -
                                                          264  call errwrt(errstr)
                                                          -
                                                          265  enddo
                                                          -
                                                          266  call errwrt('++++++++++++++BUFR ARCHIVE LIBRARY+++++++++++++++++')
                                                          -
                                                          267  call errwrt(' ')
                                                          -
                                                          268  endif
                                                          -
                                                          269 
                                                          -
                                                          270  return
                                                          -
                                                          271 end subroutine makestab
                                                          -
                                                          272 
                                                          -
                                                          279 subroutine chekstab(lun)
                                                          -
                                                          280 
                                                          -
                                                          281  use moda_tababd
                                                          -
                                                          282  use moda_nmikrp
                                                          -
                                                          283 
                                                          -
                                                          284  implicit none
                                                          -
                                                          285 
                                                          -
                                                          286  integer, intent(in) :: lun
                                                          -
                                                          287  integer itab, idn, iret, iscl, iref, ibit, nseq
                                                          -
                                                          288 
                                                          -
                                                          289  character*128 bort_str
                                                          -
                                                          290  character*24 unit
                                                          -
                                                          291  character*8 nemo
                                                          -
                                                          292  character*1 tab
                                                          +
                                                          261  call errwrt(' ')
                                                          +
                                                          262  endif
                                                          +
                                                          263 
                                                          +
                                                          264  return
                                                          +
                                                          265 end subroutine makestab
                                                          +
                                                          266 
                                                          +
                                                          273 subroutine chekstab(lun)
                                                          +
                                                          274 
                                                          +
                                                          275  use moda_tababd
                                                          +
                                                          276  use moda_nmikrp
                                                          +
                                                          277 
                                                          +
                                                          278  implicit none
                                                          +
                                                          279 
                                                          +
                                                          280  integer, intent(in) :: lun
                                                          +
                                                          281  integer itab, idn, iret, iscl, iref, ibit, nseq
                                                          +
                                                          282 
                                                          +
                                                          283  character*128 bort_str
                                                          +
                                                          284  character*24 unit
                                                          +
                                                          285  character*8 nemo
                                                          +
                                                          286  character*1 tab
                                                          +
                                                          287 
                                                          +
                                                          288  ! There must be entries in Tables A, B, and D
                                                          +
                                                          289 
                                                          +
                                                          290  if(ntba(lun)==0) call bort ('BUFRLIB: CHEKSTAB - EMPTY TABLE A IN INTERNAL BUFR TABLES')
                                                          +
                                                          291  if(ntbb(lun)==0) call bort ('BUFRLIB: CHEKSTAB - EMPTY TABLE B IN INTERNAL BUFR TABLES')
                                                          +
                                                          292  if(ntbd(lun)==0) call bort ('BUFRLIB: CHEKSTAB - EMPTY TABLE D IN INTERNAL BUFR TABLES')
                                                          293 
                                                          -
                                                          294  ! There must be entries in Tables A, B, and D
                                                          +
                                                          294  ! Make sure each Table A entry is defined as a sequence
                                                          295 
                                                          -
                                                          296  if(ntba(lun)==0) call bort ('BUFRLIB: CHEKSTAB - EMPTY TABLE A IN INTERNAL BUFR TABLES')
                                                          -
                                                          297  if(ntbb(lun)==0) call bort ('BUFRLIB: CHEKSTAB - EMPTY TABLE B IN INTERNAL BUFR TABLES')
                                                          -
                                                          298  if(ntbd(lun)==0) call bort ('BUFRLIB: CHEKSTAB - EMPTY TABLE D IN INTERNAL BUFR TABLES')
                                                          -
                                                          299 
                                                          -
                                                          300  ! Make sure each Table A entry is defined as a sequence
                                                          -
                                                          301 
                                                          -
                                                          302  do itab=1,ntba(lun)
                                                          -
                                                          303  nemo = taba(itab,lun)(4:11)
                                                          -
                                                          304  call nemtab(lun,nemo,idn,tab,iret)
                                                          -
                                                          305  if(tab/='D') then
                                                          -
                                                          306  write(bort_str,'("BUFRLIB: CHEKSTAB - TABLE A ENTRY: ",A," NOT DEFINED AS A SEQUENCE")') nemo
                                                          -
                                                          307  call bort(bort_str)
                                                          -
                                                          308  endif
                                                          +
                                                          296  do itab=1,ntba(lun)
                                                          +
                                                          297  nemo = taba(itab,lun)(4:11)
                                                          +
                                                          298  call nemtab(lun,nemo,idn,tab,iret)
                                                          +
                                                          299  if(tab/='D') then
                                                          +
                                                          300  write(bort_str,'("BUFRLIB: CHEKSTAB - TABLE A ENTRY: ",A," NOT DEFINED AS A SEQUENCE")') nemo
                                                          +
                                                          301  call bort(bort_str)
                                                          +
                                                          302  endif
                                                          +
                                                          303  enddo
                                                          +
                                                          304 
                                                          +
                                                          305  ! Check Table B contents
                                                          +
                                                          306 
                                                          +
                                                          307  do itab=1,ntbb(lun)
                                                          +
                                                          308  call nemtbb(lun,itab,unit,iscl,iref,ibit)
                                                          309  enddo
                                                          310 
                                                          -
                                                          311  ! Check Table B contents
                                                          +
                                                          311  ! Check Table D contents
                                                          312 
                                                          -
                                                          313  do itab=1,ntbb(lun)
                                                          -
                                                          314  call nemtbb(lun,itab,unit,iscl,iref,ibit)
                                                          +
                                                          313  do itab=1,ntbd(lun)
                                                          +
                                                          314  call nemtbd(lun,itab,nseq,nem(1,1),irp(1,1),krp(1,1))
                                                          315  enddo
                                                          316 
                                                          -
                                                          317  ! Check Table D contents
                                                          -
                                                          318 
                                                          -
                                                          319  do itab=1,ntbd(lun)
                                                          -
                                                          320  call nemtbd(lun,itab,nseq,nem(1,1),irp(1,1),krp(1,1))
                                                          -
                                                          321  enddo
                                                          -
                                                          322 
                                                          -
                                                          323  return
                                                          -
                                                          324 end subroutine chekstab
                                                          -
                                                          325 
                                                          -
                                                          333 subroutine tabsub(lun,nemo)
                                                          -
                                                          334 
                                                          -
                                                          335  use modv_vars, only: mxtamc, mxtco
                                                          +
                                                          317  return
                                                          +
                                                          318 end subroutine chekstab
                                                          +
                                                          319 
                                                          +
                                                          327 subroutine tabsub(lun,nemo)
                                                          +
                                                          328 
                                                          +
                                                          329  use modv_vars, only: mxtamc, mxtco
                                                          +
                                                          330 
                                                          +
                                                          331  use moda_tables
                                                          +
                                                          332  use moda_nmikrp
                                                          +
                                                          333  use moda_nrv203
                                                          +
                                                          334  use moda_bitmaps
                                                          +
                                                          335  use moda_tabccc
                                                          336 
                                                          -
                                                          337  use moda_tables
                                                          -
                                                          338  use moda_nmikrp
                                                          -
                                                          339  use moda_nrv203
                                                          -
                                                          340  use moda_bitmaps
                                                          +
                                                          337  implicit none
                                                          +
                                                          338 
                                                          +
                                                          339  integer, intent(in) :: lun
                                                          +
                                                          340  integer jmp0(10), nodl(10), ntag(10,2), maxlim, node, idn, itab, nseq, limb, n, jj, iyyy, irep, iknt, jum0, iokoper
                                                          341 
                                                          -
                                                          342  implicit none
                                                          -
                                                          343 
                                                          -
                                                          344  integer, intent(in) :: lun
                                                          -
                                                          345  integer jmp0(10), nodl(10), ntag(10,2), icdw, icsc, icrv, incw, maxlim, node, idn, itab, nseq, limb, n, jj, iyyy, &
                                                          -
                                                          346  irep, iknt, jum0, iokoper
                                                          -
                                                          347 
                                                          -
                                                          348  character*128 bort_str
                                                          -
                                                          349  character*8, intent(in) :: nemo
                                                          -
                                                          350  character*8 nems
                                                          -
                                                          351  character*1 tab
                                                          +
                                                          342  character*128 bort_str
                                                          +
                                                          343  character*8, intent(in) :: nemo
                                                          +
                                                          344  character*8 nems
                                                          +
                                                          345  character*1 tab
                                                          +
                                                          346 
                                                          +
                                                          347  logical drop(10), ltamc
                                                          +
                                                          348 
                                                          +
                                                          349  data maxlim /10/
                                                          +
                                                          350 
                                                          +
                                                          351  ! Check the mnemonic
                                                          352 
                                                          -
                                                          353  logical drop(10), ltamc
                                                          -
                                                          354 
                                                          -
                                                          355  common /tabccc/ icdw, icsc, icrv, incw
                                                          -
                                                          356 
                                                          -
                                                          357  data maxlim /10/
                                                          -
                                                          358 
                                                          -
                                                          359  ! Check the mnemonic
                                                          -
                                                          360 
                                                          -
                                                          361  ! Note that Table A mnemonics, in addition to being stored within internal BUFR Table A array taba(*,lun), are also stored as
                                                          -
                                                          362  ! Table D mnemonics within internal BUFR Table D array tabd(*,lun). So the following test is valid.
                                                          +
                                                          353  ! Note that Table A mnemonics, in addition to being stored within internal BUFR Table A array taba(*,lun), are also stored as
                                                          +
                                                          354  ! Table D mnemonics within internal BUFR Table D array tabd(*,lun). So the following test is valid.
                                                          +
                                                          355 
                                                          +
                                                          356  call nemtab(lun,nemo,idn,tab,itab)
                                                          +
                                                          357  if(tab/='D') then
                                                          +
                                                          358  write(bort_str,'("BUFRLIB: TABSUB - SUBSET NODE NOT IN TABLE D (TAB=",A,") FOR INPUT MNEMONIC ",A)') tab,nemo
                                                          +
                                                          359  call bort(bort_str)
                                                          +
                                                          360  endif
                                                          +
                                                          361 
                                                          +
                                                          362  ! Store a subset node and jump/link the tree
                                                          363 
                                                          -
                                                          364  call nemtab(lun,nemo,idn,tab,itab)
                                                          -
                                                          365  if(tab/='D') then
                                                          -
                                                          366  write(bort_str,'("BUFRLIB: TABSUB - SUBSET NODE NOT IN TABLE D (TAB=",A,") FOR INPUT MNEMONIC ",A)') tab,nemo
                                                          -
                                                          367  call bort(bort_str)
                                                          -
                                                          368  endif
                                                          -
                                                          369 
                                                          -
                                                          370  ! Store a subset node and jump/link the tree
                                                          +
                                                          364  call inctab(nemo,'SUB',node)
                                                          +
                                                          365  jump(node) = node+1
                                                          +
                                                          366  jmpb(node) = 0
                                                          +
                                                          367  link(node) = 0
                                                          +
                                                          368  ibt(node) = 0
                                                          +
                                                          369  irf(node) = 0
                                                          +
                                                          370  isc(node) = 0
                                                          371 
                                                          -
                                                          372  call inctab(nemo,'SUB',node)
                                                          -
                                                          373  jump(node) = node+1
                                                          -
                                                          374  jmpb(node) = 0
                                                          -
                                                          375  link(node) = 0
                                                          -
                                                          376  ibt(node) = 0
                                                          -
                                                          377  irf(node) = 0
                                                          -
                                                          378  isc(node) = 0
                                                          -
                                                          379 
                                                          -
                                                          380  call nemtbd(lun,itab,nseq,nem(1,1),irp(1,1),krp(1,1))
                                                          -
                                                          381  ntag(1,1) = 1
                                                          -
                                                          382  ntag(1,2) = nseq
                                                          -
                                                          383  jmp0(1) = node
                                                          -
                                                          384  nodl(1) = node
                                                          -
                                                          385  limb = 1
                                                          +
                                                          372  call nemtbd(lun,itab,nseq,nem(1,1),irp(1,1),krp(1,1))
                                                          +
                                                          373  ntag(1,1) = 1
                                                          +
                                                          374  ntag(1,2) = nseq
                                                          +
                                                          375  jmp0(1) = node
                                                          +
                                                          376  nodl(1) = node
                                                          +
                                                          377  limb = 1
                                                          +
                                                          378 
                                                          +
                                                          379  icdw = 0
                                                          +
                                                          380  icsc = 0
                                                          +
                                                          381  icrv = 1
                                                          +
                                                          382  incw = 0
                                                          +
                                                          383 
                                                          +
                                                          384  ibtnrv = 0
                                                          +
                                                          385  ipfnrv = 0
                                                          386 
                                                          -
                                                          387  icdw = 0
                                                          -
                                                          388  icsc = 0
                                                          -
                                                          389  icrv = 1
                                                          -
                                                          390  incw = 0
                                                          +
                                                          387  if(ntamc+1>mxtamc) call bort('BUFRLIB: TABSUB - MXTAMC OVERFLOW')
                                                          +
                                                          388  inodtamc(ntamc+1) = node
                                                          +
                                                          389  ntco(ntamc+1) = 0
                                                          +
                                                          390  ltamc = .false.
                                                          391 
                                                          -
                                                          392  ibtnrv = 0
                                                          -
                                                          393  ipfnrv = 0
                                                          -
                                                          394 
                                                          -
                                                          395  if(ntamc+1>mxtamc) call bort('BUFRLIB: TABSUB - MXTAMC OVERFLOW')
                                                          -
                                                          396  inodtamc(ntamc+1) = node
                                                          -
                                                          397  ntco(ntamc+1) = 0
                                                          -
                                                          398  ltamc = .false.
                                                          -
                                                          399 
                                                          -
                                                          400  ! The following loop resolves all entities in the subset by emulating recursion via explicit goto statements.
                                                          +
                                                          392  ! The following loop resolves all entities in the subset by emulating recursion via explicit goto statements.
                                                          +
                                                          393 
                                                          +
                                                          394  11 do n=ntag(limb,1),ntag(limb,2)
                                                          +
                                                          395 
                                                          +
                                                          396  ntag(limb,1) = n+1
                                                          +
                                                          397  drop(limb) = n==ntag(limb,2)
                                                          +
                                                          398 
                                                          +
                                                          399  call nemtab(lun,nem(n,limb),idn,tab,itab)
                                                          +
                                                          400  nems = nem(n,limb)
                                                          401 
                                                          -
                                                          402  11 do n=ntag(limb,1),ntag(limb,2)
                                                          -
                                                          403 
                                                          -
                                                          404  ntag(limb,1) = n+1
                                                          -
                                                          405  drop(limb) = n==ntag(limb,2)
                                                          -
                                                          406 
                                                          -
                                                          407  call nemtab(lun,nem(n,limb),idn,tab,itab)
                                                          -
                                                          408  nems = nem(n,limb)
                                                          -
                                                          409 
                                                          -
                                                          410  if(tab=='C') then
                                                          -
                                                          411  ! Special treatment for certain operator descriptors.
                                                          -
                                                          412  read(nems,'(3X,I3)') iyyy
                                                          -
                                                          413  if(itab==1) then
                                                          -
                                                          414  if(iyyy/=0) then
                                                          -
                                                          415  if(icdw/=0) then
                                                          -
                                                          416  write(bort_str,'("BUFRLIB: TABSUB - THERE ARE TWO SIMULTANEOUS '// &
                                                          -
                                                          417  'CHANGE DATA WIDTH OPERATIONS IN THE TREE BUILT FROM INPUT MNEMONIC ",A)') nemo
                                                          -
                                                          418  call bort(bort_str)
                                                          -
                                                          419  endif
                                                          -
                                                          420  icdw = iyyy-128
                                                          -
                                                          421  else
                                                          -
                                                          422  icdw = 0
                                                          -
                                                          423  endif
                                                          -
                                                          424  elseif(itab==2) then
                                                          -
                                                          425  if(iyyy/=0) then
                                                          -
                                                          426  if(icsc/=0) then
                                                          -
                                                          427  write(bort_str,'("BUFRLIB: TABSUB - THERE ARE TWO SIMULTANEOUS '// &
                                                          -
                                                          428  'CHANGE DATA SCALE OPERATIONS IN THE TREE BUILT FROM INPUT MNEMONIC ",A)') nemo
                                                          -
                                                          429  call bort(bort_str)
                                                          -
                                                          430  endif
                                                          -
                                                          431  icsc = iyyy-128
                                                          -
                                                          432  else
                                                          -
                                                          433  icsc = 0
                                                          -
                                                          434  endif
                                                          -
                                                          435  elseif(itab==3) then
                                                          -
                                                          436  if(iyyy==0) then
                                                          -
                                                          437  ! Stop applying new reference values to subset nodes. Instead, revert to the use of standard Table B values.
                                                          -
                                                          438  if(ipfnrv==0) then
                                                          -
                                                          439  write(bort_str,'("BUFRLIB: TABSUB - A 2-03-000 OPERATOR WAS '// &
                                                          -
                                                          440  'ENCOUNTERED WITHOUT ANY PRIOR 2-03-YYY OPERATOR FOR INPUT MNEMONIC ",A)') nemo
                                                          -
                                                          441  call bort(bort_str)
                                                          -
                                                          442  endif
                                                          -
                                                          443  do jj=ipfnrv,nnrv
                                                          -
                                                          444  ienrv(jj) = ntab
                                                          -
                                                          445  enddo
                                                          -
                                                          446  ipfnrv = 0
                                                          -
                                                          447  elseif(iyyy==255) then
                                                          -
                                                          448  ! End the definition of new reference values.
                                                          -
                                                          449  ibtnrv = 0
                                                          -
                                                          450  else
                                                          -
                                                          451  ! Begin the definition of new reference values.
                                                          -
                                                          452  if(ibtnrv/=0) then
                                                          -
                                                          453  write(bort_str,'("BUFRLIB: TABSUB - THERE ARE TWO SIMULTANEOUS '// &
                                                          -
                                                          454  'CHANGE REF VALUE OPERATIONS IN THE TREE BUILT FROM INPUT MNEMONIC ",A)') nemo
                                                          -
                                                          455  call bort(bort_str)
                                                          -
                                                          456  endif
                                                          -
                                                          457  ibtnrv = iyyy
                                                          -
                                                          458  endif
                                                          -
                                                          459  elseif(itab==7) then
                                                          -
                                                          460  if(iyyy>0) then
                                                          -
                                                          461  if(icdw/=0) then
                                                          -
                                                          462  write(bort_str,'("BUFRLIB: TABSUB - THERE ARE TWO SIMULTANEOUS '// &
                                                          -
                                                          463  'CHANGE DATA WIDTH OPERATIONS IN THE TREE BUILT FROM INPUT MNEMONIC ",A)') nemo
                                                          -
                                                          464  call bort(bort_str)
                                                          -
                                                          465  endif
                                                          -
                                                          466  if(icsc/=0) then
                                                          -
                                                          467  write(bort_str,'("BUFRLIB: TABSUB - THERE ARE TWO SIMULTANEOUS '// &
                                                          -
                                                          468  'CHANGE DATA SCALE OPERATIONS IN THE TREE BUILT FROM INPUT MNEMONIC ",A)') nemo
                                                          -
                                                          469  call bort(bort_str)
                                                          -
                                                          470  endif
                                                          -
                                                          471  icdw = ((10*iyyy)+2)/3
                                                          -
                                                          472  icsc = iyyy
                                                          -
                                                          473  icrv = 10**iyyy
                                                          -
                                                          474  else
                                                          -
                                                          475  icsc = 0
                                                          -
                                                          476  icdw = 0
                                                          -
                                                          477  icrv = 1
                                                          -
                                                          478  endif
                                                          -
                                                          479  elseif(itab==8) then
                                                          -
                                                          480  incw = iyyy
                                                          -
                                                          481  elseif((itab>=21).and.(iokoper(nems)==1)) then
                                                          -
                                                          482  ! Save the location of this operator within the jump/link table, for possible later use.
                                                          -
                                                          483  if(.not.ltamc) then
                                                          -
                                                          484  ltamc = .true.
                                                          -
                                                          485  ntamc = ntamc+1
                                                          -
                                                          486  end if
                                                          -
                                                          487  if(ntco(ntamc)+1>mxtco) call bort('BUFRLIB: TABSUB - MXTCO OVERFLOW')
                                                          -
                                                          488  ntco(ntamc) = ntco(ntamc)+1
                                                          -
                                                          489  ctco(ntamc,ntco(ntamc)) = nems(1:6)
                                                          - -
                                                          491  endif
                                                          -
                                                          492  else
                                                          -
                                                          493  nodl(limb) = ntab+1
                                                          -
                                                          494  irep = irp(n,limb)
                                                          -
                                                          495  iknt = krp(n,limb)
                                                          -
                                                          496  jum0 = jmp0(limb)
                                                          -
                                                          497  call tabent(lun,nems,tab,itab,irep,iknt,jum0)
                                                          -
                                                          498  endif
                                                          -
                                                          499 
                                                          -
                                                          500  if(tab=='D') then
                                                          -
                                                          501  ! Note here how a new tree "limb" is created (and is then immediately recursively resolved) whenever a Table D mnemonic
                                                          -
                                                          502  ! contains another Table D mnemonic as one of its children.
                                                          -
                                                          503  limb = limb+1
                                                          -
                                                          504  if(limb>maxlim) then
                                                          -
                                                          505  write(bort_str,'("BUFRLIB: TABSUB - THERE ARE TOO MANY NESTED '// &
                                                          -
                                                          506  'TABLE D SEQUENCES (TREES) WITHIN INPUT MNEMONIC ",A," - THE LIMIT IS",I4)') nemo,maxlim
                                                          -
                                                          507  call bort(bort_str)
                                                          -
                                                          508  endif
                                                          -
                                                          509  call nemtbd(lun,itab,nseq,nem(1,limb),irp(1,limb),krp(1,limb))
                                                          -
                                                          510  ntag(limb,1) = 1
                                                          -
                                                          511  ntag(limb,2) = nseq
                                                          -
                                                          512  jmp0(limb) = ntab
                                                          -
                                                          513  goto 11
                                                          -
                                                          514  elseif(drop(limb)) then
                                                          -
                                                          515  do while (.true.)
                                                          -
                                                          516  link(nodl(limb)) = 0
                                                          -
                                                          517  limb = limb-1
                                                          -
                                                          518  if(limb==0) then
                                                          -
                                                          519  if(icrv/=1) then
                                                          -
                                                          520  write(bort_str,'("BUFRLIB: TABSUB - A 2-07-YYY OPERATOR WAS '// &
                                                          -
                                                          521  'NOT CANCELLED IN THE TREE BUILT FROM INPUT MNEMONIC ",A)') nemo
                                                          -
                                                          522  call bort(bort_str)
                                                          -
                                                          523  endif
                                                          -
                                                          524  if(icdw/=0) then
                                                          -
                                                          525  write(bort_str,'("BUFRLIB: TABSUB - A 2-01-YYY OPERATOR WAS '// &
                                                          -
                                                          526  'NOT CANCELLED IN THE TREE BUILT FROM INPUT MNEMONIC ",A)') nemo
                                                          -
                                                          527  call bort(bort_str)
                                                          -
                                                          528  endif
                                                          -
                                                          529  if(icsc/=0) then
                                                          -
                                                          530  write(bort_str,'("BUFRLIB: TABSUB - A 2-02-YYY OPERATOR WAS '// &
                                                          -
                                                          531  'NOT CANCELLED IN THE TREE BUILT FROM INPUT MNEMONIC ",A)') nemo
                                                          -
                                                          532  call bort(bort_str)
                                                          -
                                                          533  endif
                                                          -
                                                          534  if(incw/=0) then
                                                          -
                                                          535  write(bort_str,'("BUFRLIB: TABSUB - A 2-08-YYY OPERATOR WAS '// &
                                                          -
                                                          536  'NOT CANCELLED IN THE TREE BUILT FROM INPUT MNEMONIC ",A)') nemo
                                                          -
                                                          537  call bort(bort_str)
                                                          -
                                                          538  endif
                                                          -
                                                          539  if(ibtnrv/=0) then
                                                          -
                                                          540  write(bort_str,'("BUFRLIB: TABSUB - A 2-03-YYY OPERATOR WAS '// &
                                                          -
                                                          541  'APPLIED WITHOUT ANY SUBSEQUENT 2-03-255 OPERATOR FOR INPUT MNEMONIC ",A)') nemo
                                                          -
                                                          542  call bort(bort_str)
                                                          -
                                                          543  endif
                                                          -
                                                          544  if(ipfnrv/=0) then
                                                          -
                                                          545  ! One or more new reference values were defined for this subset, but there was no subsequent 2-03-000 operator,
                                                          -
                                                          546  ! so set all IENRV(*) values for this subset to point to the last element of the subset within the jump/link table.
                                                          -
                                                          547  ! Note that, if there had been a subsequent 2-03-000 operator, then these IENRV(*) values would have already been
                                                          -
                                                          548  ! properly set above.
                                                          -
                                                          549  do jj=ipfnrv,nnrv
                                                          -
                                                          550  ienrv(jj) = ntab
                                                          -
                                                          551  enddo
                                                          -
                                                          552  endif
                                                          -
                                                          553  return
                                                          -
                                                          554  endif
                                                          -
                                                          555  if(.not.drop(limb)) exit
                                                          -
                                                          556  enddo
                                                          -
                                                          557  link(nodl(limb)) = ntab+1
                                                          -
                                                          558  goto 11
                                                          -
                                                          559  elseif(tab/='C') then
                                                          -
                                                          560  link(nodl(limb)) = ntab+1
                                                          -
                                                          561  endif
                                                          -
                                                          562 
                                                          -
                                                          563  enddo
                                                          -
                                                          564 
                                                          -
                                                          565  write(bort_str,'("BUFRLIB: TABSUB - ENTITIES WERE NOT SUCCESSFULLY RESOLVED (BY EMULATING RESURSION) FOR SUBSET '// &
                                                          -
                                                          566  'DEFINED BY TBL A MNEM. ",A)') nemo
                                                          -
                                                          567  call bort(bort_str)
                                                          -
                                                          568 
                                                          -
                                                          569  return
                                                          -
                                                          570 end subroutine tabsub
                                                          -
                                                          571 
                                                          -
                                                          585 subroutine tabent(lun,nemo,tab,itab,irep,iknt,jum0)
                                                          +
                                                          402  if(tab=='C') then
                                                          +
                                                          403  ! Special treatment for certain operator descriptors.
                                                          +
                                                          404  read(nems,'(3X,I3)') iyyy
                                                          +
                                                          405  if(itab==1) then
                                                          +
                                                          406  if(iyyy/=0) then
                                                          +
                                                          407  if(icdw/=0) then
                                                          +
                                                          408  write(bort_str,'("BUFRLIB: TABSUB - THERE ARE TWO SIMULTANEOUS '// &
                                                          +
                                                          409  'CHANGE DATA WIDTH OPERATIONS IN THE TREE BUILT FROM INPUT MNEMONIC ",A)') nemo
                                                          +
                                                          410  call bort(bort_str)
                                                          +
                                                          411  endif
                                                          +
                                                          412  icdw = iyyy-128
                                                          +
                                                          413  else
                                                          +
                                                          414  icdw = 0
                                                          +
                                                          415  endif
                                                          +
                                                          416  elseif(itab==2) then
                                                          +
                                                          417  if(iyyy/=0) then
                                                          +
                                                          418  if(icsc/=0) then
                                                          +
                                                          419  write(bort_str,'("BUFRLIB: TABSUB - THERE ARE TWO SIMULTANEOUS '// &
                                                          +
                                                          420  'CHANGE DATA SCALE OPERATIONS IN THE TREE BUILT FROM INPUT MNEMONIC ",A)') nemo
                                                          +
                                                          421  call bort(bort_str)
                                                          +
                                                          422  endif
                                                          +
                                                          423  icsc = iyyy-128
                                                          +
                                                          424  else
                                                          +
                                                          425  icsc = 0
                                                          +
                                                          426  endif
                                                          +
                                                          427  elseif(itab==3) then
                                                          +
                                                          428  if(iyyy==0) then
                                                          +
                                                          429  ! Stop applying new reference values to subset nodes. Instead, revert to the use of standard Table B values.
                                                          +
                                                          430  if(ipfnrv==0) then
                                                          +
                                                          431  write(bort_str,'("BUFRLIB: TABSUB - A 2-03-000 OPERATOR WAS '// &
                                                          +
                                                          432  'ENCOUNTERED WITHOUT ANY PRIOR 2-03-YYY OPERATOR FOR INPUT MNEMONIC ",A)') nemo
                                                          +
                                                          433  call bort(bort_str)
                                                          +
                                                          434  endif
                                                          +
                                                          435  do jj=ipfnrv,nnrv
                                                          +
                                                          436  ienrv(jj) = ntab
                                                          +
                                                          437  enddo
                                                          +
                                                          438  ipfnrv = 0
                                                          +
                                                          439  elseif(iyyy==255) then
                                                          +
                                                          440  ! End the definition of new reference values.
                                                          +
                                                          441  ibtnrv = 0
                                                          +
                                                          442  else
                                                          +
                                                          443  ! Begin the definition of new reference values.
                                                          +
                                                          444  if(ibtnrv/=0) then
                                                          +
                                                          445  write(bort_str,'("BUFRLIB: TABSUB - THERE ARE TWO SIMULTANEOUS '// &
                                                          +
                                                          446  'CHANGE REF VALUE OPERATIONS IN THE TREE BUILT FROM INPUT MNEMONIC ",A)') nemo
                                                          +
                                                          447  call bort(bort_str)
                                                          +
                                                          448  endif
                                                          +
                                                          449  ibtnrv = iyyy
                                                          +
                                                          450  endif
                                                          +
                                                          451  elseif(itab==7) then
                                                          +
                                                          452  if(iyyy>0) then
                                                          +
                                                          453  if(icdw/=0) then
                                                          +
                                                          454  write(bort_str,'("BUFRLIB: TABSUB - THERE ARE TWO SIMULTANEOUS '// &
                                                          +
                                                          455  'CHANGE DATA WIDTH OPERATIONS IN THE TREE BUILT FROM INPUT MNEMONIC ",A)') nemo
                                                          +
                                                          456  call bort(bort_str)
                                                          +
                                                          457  endif
                                                          +
                                                          458  if(icsc/=0) then
                                                          +
                                                          459  write(bort_str,'("BUFRLIB: TABSUB - THERE ARE TWO SIMULTANEOUS '// &
                                                          +
                                                          460  'CHANGE DATA SCALE OPERATIONS IN THE TREE BUILT FROM INPUT MNEMONIC ",A)') nemo
                                                          +
                                                          461  call bort(bort_str)
                                                          +
                                                          462  endif
                                                          +
                                                          463  icdw = ((10*iyyy)+2)/3
                                                          +
                                                          464  icsc = iyyy
                                                          +
                                                          465  icrv = 10**iyyy
                                                          +
                                                          466  else
                                                          +
                                                          467  icsc = 0
                                                          +
                                                          468  icdw = 0
                                                          +
                                                          469  icrv = 1
                                                          +
                                                          470  endif
                                                          +
                                                          471  elseif(itab==8) then
                                                          +
                                                          472  incw = iyyy
                                                          +
                                                          473  elseif((itab>=21).and.(iokoper(nems)==1)) then
                                                          +
                                                          474  ! Save the location of this operator within the jump/link table, for possible later use.
                                                          +
                                                          475  if(.not.ltamc) then
                                                          +
                                                          476  ltamc = .true.
                                                          +
                                                          477  ntamc = ntamc+1
                                                          +
                                                          478  end if
                                                          +
                                                          479  if(ntco(ntamc)+1>mxtco) call bort('BUFRLIB: TABSUB - MXTCO OVERFLOW')
                                                          +
                                                          480  ntco(ntamc) = ntco(ntamc)+1
                                                          +
                                                          481  ctco(ntamc,ntco(ntamc)) = nems(1:6)
                                                          + +
                                                          483  endif
                                                          +
                                                          484  else
                                                          +
                                                          485  nodl(limb) = ntab+1
                                                          +
                                                          486  irep = irp(n,limb)
                                                          +
                                                          487  iknt = krp(n,limb)
                                                          +
                                                          488  jum0 = jmp0(limb)
                                                          +
                                                          489  call tabent(lun,nems,tab,itab,irep,iknt,jum0)
                                                          +
                                                          490  endif
                                                          +
                                                          491 
                                                          +
                                                          492  if(tab=='D') then
                                                          +
                                                          493  ! Note here how a new tree "limb" is created (and is then immediately recursively resolved) whenever a Table D mnemonic
                                                          +
                                                          494  ! contains another Table D mnemonic as one of its children.
                                                          +
                                                          495  limb = limb+1
                                                          +
                                                          496  if(limb>maxlim) then
                                                          +
                                                          497  write(bort_str,'("BUFRLIB: TABSUB - THERE ARE TOO MANY NESTED '// &
                                                          +
                                                          498  'TABLE D SEQUENCES (TREES) WITHIN INPUT MNEMONIC ",A," - THE LIMIT IS",I4)') nemo,maxlim
                                                          +
                                                          499  call bort(bort_str)
                                                          +
                                                          500  endif
                                                          +
                                                          501  call nemtbd(lun,itab,nseq,nem(1,limb),irp(1,limb),krp(1,limb))
                                                          +
                                                          502  ntag(limb,1) = 1
                                                          +
                                                          503  ntag(limb,2) = nseq
                                                          +
                                                          504  jmp0(limb) = ntab
                                                          +
                                                          505  goto 11
                                                          +
                                                          506  elseif(drop(limb)) then
                                                          +
                                                          507  do while (.true.)
                                                          +
                                                          508  link(nodl(limb)) = 0
                                                          +
                                                          509  limb = limb-1
                                                          +
                                                          510  if(limb==0) then
                                                          +
                                                          511  if(icrv/=1) then
                                                          +
                                                          512  write(bort_str,'("BUFRLIB: TABSUB - A 2-07-YYY OPERATOR WAS '// &
                                                          +
                                                          513  'NOT CANCELLED IN THE TREE BUILT FROM INPUT MNEMONIC ",A)') nemo
                                                          +
                                                          514  call bort(bort_str)
                                                          +
                                                          515  endif
                                                          +
                                                          516  if(icdw/=0) then
                                                          +
                                                          517  write(bort_str,'("BUFRLIB: TABSUB - A 2-01-YYY OPERATOR WAS '// &
                                                          +
                                                          518  'NOT CANCELLED IN THE TREE BUILT FROM INPUT MNEMONIC ",A)') nemo
                                                          +
                                                          519  call bort(bort_str)
                                                          +
                                                          520  endif
                                                          +
                                                          521  if(icsc/=0) then
                                                          +
                                                          522  write(bort_str,'("BUFRLIB: TABSUB - A 2-02-YYY OPERATOR WAS '// &
                                                          +
                                                          523  'NOT CANCELLED IN THE TREE BUILT FROM INPUT MNEMONIC ",A)') nemo
                                                          +
                                                          524  call bort(bort_str)
                                                          +
                                                          525  endif
                                                          +
                                                          526  if(incw/=0) then
                                                          +
                                                          527  write(bort_str,'("BUFRLIB: TABSUB - A 2-08-YYY OPERATOR WAS '// &
                                                          +
                                                          528  'NOT CANCELLED IN THE TREE BUILT FROM INPUT MNEMONIC ",A)') nemo
                                                          +
                                                          529  call bort(bort_str)
                                                          +
                                                          530  endif
                                                          +
                                                          531  if(ibtnrv/=0) then
                                                          +
                                                          532  write(bort_str,'("BUFRLIB: TABSUB - A 2-03-YYY OPERATOR WAS '// &
                                                          +
                                                          533  'APPLIED WITHOUT ANY SUBSEQUENT 2-03-255 OPERATOR FOR INPUT MNEMONIC ",A)') nemo
                                                          +
                                                          534  call bort(bort_str)
                                                          +
                                                          535  endif
                                                          +
                                                          536  if(ipfnrv/=0) then
                                                          +
                                                          537  ! One or more new reference values were defined for this subset, but there was no subsequent 2-03-000 operator,
                                                          +
                                                          538  ! so set all IENRV(*) values for this subset to point to the last element of the subset within the jump/link table.
                                                          +
                                                          539  ! Note that, if there had been a subsequent 2-03-000 operator, then these IENRV(*) values would have already been
                                                          +
                                                          540  ! properly set above.
                                                          +
                                                          541  do jj=ipfnrv,nnrv
                                                          +
                                                          542  ienrv(jj) = ntab
                                                          +
                                                          543  enddo
                                                          +
                                                          544  endif
                                                          +
                                                          545  return
                                                          +
                                                          546  endif
                                                          +
                                                          547  if(.not.drop(limb)) exit
                                                          +
                                                          548  enddo
                                                          +
                                                          549  link(nodl(limb)) = ntab+1
                                                          +
                                                          550  goto 11
                                                          +
                                                          551  elseif(tab/='C') then
                                                          +
                                                          552  link(nodl(limb)) = ntab+1
                                                          +
                                                          553  endif
                                                          +
                                                          554 
                                                          +
                                                          555  enddo
                                                          +
                                                          556 
                                                          +
                                                          557  write(bort_str,'("BUFRLIB: TABSUB - ENTITIES WERE NOT SUCCESSFULLY RESOLVED (BY EMULATING RESURSION) FOR SUBSET '// &
                                                          +
                                                          558  'DEFINED BY TBL A MNEM. ",A)') nemo
                                                          +
                                                          559  call bort(bort_str)
                                                          +
                                                          560 
                                                          +
                                                          561  return
                                                          +
                                                          562 end subroutine tabsub
                                                          +
                                                          563 
                                                          +
                                                          577 subroutine tabent(lun,nemo,tab,itab,irep,iknt,jum0)
                                                          +
                                                          578 
                                                          +
                                                          579  use modv_vars, only: mxnrv, typs, reps, lens
                                                          +
                                                          580 
                                                          +
                                                          581  use moda_tables
                                                          +
                                                          582  use moda_nrv203
                                                          +
                                                          583  use moda_tabccc
                                                          +
                                                          584 
                                                          +
                                                          585  implicit none
                                                          586 
                                                          -
                                                          587  use modv_vars, only: mxnrv, typs, reps, lens
                                                          -
                                                          588 
                                                          -
                                                          589  use moda_tables
                                                          -
                                                          590  use moda_nrv203
                                                          -
                                                          591 
                                                          -
                                                          592  implicit none
                                                          -
                                                          593 
                                                          -
                                                          594  integer, intent(in) :: lun, itab, irep, iknt, jum0
                                                          -
                                                          595  integer icdw, icsc, icrv, incw, i, jm0, node, iscl, iref, ibit
                                                          -
                                                          596 
                                                          -
                                                          597  character*24 unit
                                                          -
                                                          598  character*10 rtag
                                                          -
                                                          599  character*8, intent(in) :: nemo
                                                          -
                                                          600  character, intent(in) :: tab
                                                          -
                                                          601  character*3 typt
                                                          -
                                                          602 
                                                          -
                                                          603  common /tabccc/ icdw, icsc, icrv, incw
                                                          -
                                                          604 
                                                          -
                                                          605  jm0 = jum0
                                                          -
                                                          606 
                                                          -
                                                          607  ! Make a jump/link table entry for a replicator
                                                          -
                                                          608 
                                                          -
                                                          609  if(irep/=0) then
                                                          -
                                                          610  rtag = reps(irep)//nemo
                                                          -
                                                          611  do i=1,10
                                                          -
                                                          612  if(rtag(i:i)==' ') then
                                                          -
                                                          613  rtag(i:i) = reps(irep+5)
                                                          -
                                                          614  call inctab(rtag,typs(irep),node)
                                                          -
                                                          615  jump(node) = node+1
                                                          -
                                                          616  jmpb(node) = jm0
                                                          -
                                                          617  link(node) = 0
                                                          -
                                                          618  ibt(node) = lens(irep)
                                                          -
                                                          619  irf(node) = 0
                                                          -
                                                          620  isc(node) = 0
                                                          -
                                                          621  if(irep==1) irf(node) = iknt
                                                          -
                                                          622  jm0 = node
                                                          -
                                                          623  exit
                                                          -
                                                          624  endif
                                                          -
                                                          625  enddo
                                                          -
                                                          626  endif
                                                          -
                                                          627 
                                                          -
                                                          628  ! Make a jump/link entry for an element or a sequence
                                                          -
                                                          629 
                                                          -
                                                          630  if(tab=='B') then
                                                          -
                                                          631  call nemtbb(lun,itab,unit,iscl,iref,ibit)
                                                          -
                                                          632  if(unit(1:5)=='CCITT') then
                                                          -
                                                          633  typt = 'CHR'
                                                          -
                                                          634  else
                                                          -
                                                          635  typt = 'NUM'
                                                          -
                                                          636  endif
                                                          -
                                                          637  call inctab(nemo,typt,node)
                                                          -
                                                          638  jump(node) = 0
                                                          -
                                                          639  jmpb(node) = jm0
                                                          -
                                                          640  link(node) = 0
                                                          -
                                                          641  ibt(node) = ibit
                                                          -
                                                          642  irf(node) = iref
                                                          -
                                                          643  isc(node) = iscl
                                                          -
                                                          644  if(unit(1:4)=='CODE') then
                                                          -
                                                          645  typt = 'COD'
                                                          -
                                                          646  elseif(unit(1:4)=='FLAG') then
                                                          -
                                                          647  typt = 'FLG'
                                                          -
                                                          648  endif
                                                          -
                                                          649  if( (typt=='NUM') .and. (ibtnrv/=0) ) then
                                                          -
                                                          650  ! This node contains a new (redefined) reference value.
                                                          -
                                                          651  if(nnrv+1>mxnrv) call bort('BUFRLIB: TABENT - MXNRV OVERFLOW')
                                                          -
                                                          652  nnrv = nnrv+1
                                                          -
                                                          653  tagnrv(nnrv) = nemo
                                                          -
                                                          654  inodnrv(nnrv) = node
                                                          -
                                                          655  isnrv(nnrv) = node+1
                                                          -
                                                          656  ibt(node) = ibtnrv
                                                          -
                                                          657  if(ipfnrv==0) ipfnrv = nnrv
                                                          -
                                                          658  elseif( (typt=='NUM') .and. (nemo(1:3)/='204') ) then
                                                          -
                                                          659  ibt(node) = ibt(node) + icdw
                                                          -
                                                          660  isc(node) = isc(node) + icsc
                                                          -
                                                          661  irf(node) = irf(node) * icrv
                                                          -
                                                          662  elseif( (typt=='CHR') .and. (incw>0) ) then
                                                          -
                                                          663  ibt(node) = incw * 8
                                                          -
                                                          664  endif
                                                          -
                                                          665  else ! tab=='D'
                                                          -
                                                          666  if(irep==0) then
                                                          -
                                                          667  typt = 'SEQ'
                                                          -
                                                          668  else
                                                          -
                                                          669  typt = typs(irep+5)
                                                          -
                                                          670  endif
                                                          -
                                                          671  call inctab(nemo,typt,node)
                                                          -
                                                          672  jump(node) = node+1
                                                          -
                                                          673  jmpb(node) = jm0
                                                          -
                                                          674  link(node) = 0
                                                          -
                                                          675  ibt(node) = 0
                                                          -
                                                          676  irf(node) = 0
                                                          -
                                                          677  isc(node) = 0
                                                          -
                                                          678  endif
                                                          -
                                                          679 
                                                          -
                                                          680  return
                                                          -
                                                          681 end subroutine tabent
                                                          -
                                                          682 
                                                          -
                                                          695 subroutine inctab(atag,atyp,node)
                                                          -
                                                          696 
                                                          -
                                                          697  use modv_vars, only: maxjl
                                                          +
                                                          587  integer, intent(in) :: lun, itab, irep, iknt, jum0
                                                          +
                                                          588  integer i, jm0, node, iscl, iref, ibit
                                                          +
                                                          589 
                                                          +
                                                          590  character*24 unit
                                                          +
                                                          591  character*10 rtag
                                                          +
                                                          592  character*8, intent(in) :: nemo
                                                          +
                                                          593  character, intent(in) :: tab
                                                          +
                                                          594  character*3 typt
                                                          +
                                                          595 
                                                          +
                                                          596  jm0 = jum0
                                                          +
                                                          597 
                                                          +
                                                          598  ! Make a jump/link table entry for a replicator
                                                          +
                                                          599 
                                                          +
                                                          600  if(irep/=0) then
                                                          +
                                                          601  rtag = reps(irep)//nemo
                                                          +
                                                          602  do i=1,10
                                                          +
                                                          603  if(rtag(i:i)==' ') then
                                                          +
                                                          604  rtag(i:i) = reps(irep+5)
                                                          +
                                                          605  call inctab(rtag,typs(irep),node)
                                                          +
                                                          606  jump(node) = node+1
                                                          +
                                                          607  jmpb(node) = jm0
                                                          +
                                                          608  link(node) = 0
                                                          +
                                                          609  ibt(node) = lens(irep)
                                                          +
                                                          610  irf(node) = 0
                                                          +
                                                          611  isc(node) = 0
                                                          +
                                                          612  if(irep==1) irf(node) = iknt
                                                          +
                                                          613  jm0 = node
                                                          +
                                                          614  exit
                                                          +
                                                          615  endif
                                                          +
                                                          616  enddo
                                                          +
                                                          617  endif
                                                          +
                                                          618 
                                                          +
                                                          619  ! Make a jump/link entry for an element or a sequence
                                                          +
                                                          620 
                                                          +
                                                          621  if(tab=='B') then
                                                          +
                                                          622  call nemtbb(lun,itab,unit,iscl,iref,ibit)
                                                          +
                                                          623  if(unit(1:5)=='CCITT') then
                                                          +
                                                          624  typt = 'CHR'
                                                          +
                                                          625  else
                                                          +
                                                          626  typt = 'NUM'
                                                          +
                                                          627  endif
                                                          +
                                                          628  call inctab(nemo,typt,node)
                                                          +
                                                          629  jump(node) = 0
                                                          +
                                                          630  jmpb(node) = jm0
                                                          +
                                                          631  link(node) = 0
                                                          +
                                                          632  ibt(node) = ibit
                                                          +
                                                          633  irf(node) = iref
                                                          +
                                                          634  isc(node) = iscl
                                                          +
                                                          635  if(unit(1:4)=='CODE') then
                                                          +
                                                          636  typt = 'COD'
                                                          +
                                                          637  elseif(unit(1:4)=='FLAG') then
                                                          +
                                                          638  typt = 'FLG'
                                                          +
                                                          639  endif
                                                          +
                                                          640  if( (typt=='NUM') .and. (ibtnrv/=0) ) then
                                                          +
                                                          641  ! This node contains a new (redefined) reference value.
                                                          +
                                                          642  if(nnrv+1>mxnrv) call bort('BUFRLIB: TABENT - MXNRV OVERFLOW')
                                                          +
                                                          643  nnrv = nnrv+1
                                                          +
                                                          644  tagnrv(nnrv) = nemo
                                                          +
                                                          645  inodnrv(nnrv) = node
                                                          +
                                                          646  isnrv(nnrv) = node+1
                                                          +
                                                          647  ibt(node) = ibtnrv
                                                          +
                                                          648  if(ipfnrv==0) ipfnrv = nnrv
                                                          +
                                                          649  elseif( (typt=='NUM') .and. (nemo(1:3)/='204') ) then
                                                          +
                                                          650  ibt(node) = ibt(node) + icdw
                                                          +
                                                          651  isc(node) = isc(node) + icsc
                                                          +
                                                          652  irf(node) = irf(node) * icrv
                                                          +
                                                          653  elseif( (typt=='CHR') .and. (incw>0) ) then
                                                          +
                                                          654  ibt(node) = incw * 8
                                                          +
                                                          655  endif
                                                          +
                                                          656  else ! tab=='D'
                                                          +
                                                          657  if(irep==0) then
                                                          +
                                                          658  typt = 'SEQ'
                                                          +
                                                          659  else
                                                          +
                                                          660  typt = typs(irep+5)
                                                          +
                                                          661  endif
                                                          +
                                                          662  call inctab(nemo,typt,node)
                                                          +
                                                          663  jump(node) = node+1
                                                          +
                                                          664  jmpb(node) = jm0
                                                          +
                                                          665  link(node) = 0
                                                          +
                                                          666  ibt(node) = 0
                                                          +
                                                          667  irf(node) = 0
                                                          +
                                                          668  isc(node) = 0
                                                          +
                                                          669  endif
                                                          +
                                                          670 
                                                          +
                                                          671  return
                                                          +
                                                          672 end subroutine tabent
                                                          +
                                                          673 
                                                          +
                                                          686 subroutine inctab(atag,atyp,node)
                                                          +
                                                          687 
                                                          +
                                                          688  use modv_vars, only: maxjl
                                                          +
                                                          689 
                                                          +
                                                          690  use moda_tables
                                                          +
                                                          691 
                                                          +
                                                          692  implicit none
                                                          +
                                                          693 
                                                          +
                                                          694  integer, intent(out) :: node
                                                          +
                                                          695 
                                                          +
                                                          696  character*(*), intent(in) :: atag, atyp
                                                          +
                                                          697  character*128 bort_str
                                                          698 
                                                          -
                                                          699  use moda_tables
                                                          -
                                                          700 
                                                          -
                                                          701  implicit none
                                                          -
                                                          702 
                                                          -
                                                          703  integer, intent(out) :: node
                                                          -
                                                          704 
                                                          -
                                                          705  character*(*), intent(in) :: atag, atyp
                                                          -
                                                          706  character*128 bort_str
                                                          +
                                                          699  ntab = ntab+1
                                                          +
                                                          700  if(ntab>maxjl) then
                                                          +
                                                          701  write(bort_str,'("BUFRLIB: INCTAB - THE NUMBER OF JUMP/LINK TABLE ENTRIES EXCEEDS THE LIMIT, MAXJL (",I7,")")') maxjl
                                                          +
                                                          702  call bort(bort_str)
                                                          +
                                                          703  endif
                                                          +
                                                          704  tag(ntab) = atag
                                                          +
                                                          705  typ(ntab) = atyp
                                                          +
                                                          706  node = ntab
                                                          707 
                                                          -
                                                          708  ntab = ntab+1
                                                          -
                                                          709  if(ntab>maxjl) then
                                                          -
                                                          710  write(bort_str,'("BUFRLIB: INCTAB - THE NUMBER OF JUMP/LINK TABLE ENTRIES EXCEEDS THE LIMIT, MAXJL (",I7,")")') maxjl
                                                          -
                                                          711  call bort(bort_str)
                                                          -
                                                          712  endif
                                                          -
                                                          713  tag(ntab) = atag
                                                          -
                                                          714  typ(ntab) = atyp
                                                          -
                                                          715  node = ntab
                                                          -
                                                          716 
                                                          -
                                                          717  return
                                                          -
                                                          718 end subroutine inctab
                                                          -
                                                          719 
                                                          -
                                                          740 integer function lstjpb(node,lun,jbtyp) result(iret)
                                                          -
                                                          741 
                                                          -
                                                          742  use moda_msgcwd
                                                          -
                                                          743  use moda_tables
                                                          -
                                                          744 
                                                          -
                                                          745  implicit none
                                                          -
                                                          746 
                                                          -
                                                          747  integer, intent(in) :: node, lun
                                                          -
                                                          748  integer nod
                                                          -
                                                          749 
                                                          -
                                                          750  character*(*), intent(in) :: jbtyp
                                                          -
                                                          751  character*128 bort_str
                                                          +
                                                          708  return
                                                          +
                                                          709 end subroutine inctab
                                                          +
                                                          710 
                                                          +
                                                          731 integer function lstjpb(node,lun,jbtyp) result(iret)
                                                          +
                                                          732 
                                                          +
                                                          733  use moda_msgcwd
                                                          +
                                                          734  use moda_tables
                                                          +
                                                          735 
                                                          +
                                                          736  implicit none
                                                          +
                                                          737 
                                                          +
                                                          738  integer, intent(in) :: node, lun
                                                          +
                                                          739  integer nod
                                                          +
                                                          740 
                                                          +
                                                          741  character*(*), intent(in) :: jbtyp
                                                          +
                                                          742  character*128 bort_str
                                                          +
                                                          743 
                                                          +
                                                          744  if(node<inode(lun)) then
                                                          +
                                                          745  write(bort_str,'("BUFRLIB: LSTJPB - TABLE NODE (",I7,") IS OUT OF BOUNDS, < LOWER BOUNDS (",I7,")")') node,inode(lun)
                                                          +
                                                          746  call bort(bort_str)
                                                          +
                                                          747  endif
                                                          +
                                                          748  if(node>isc(inode(lun))) then
                                                          +
                                                          749  write(bort_str,'("BUFRLIB: LSTJPB - TABLE NODE (",I7,") IS OUT OF BOUNDS, > UPPER BOUNDS (",I7,")")') node,isc(inode(lun))
                                                          +
                                                          750  call bort(bort_str)
                                                          +
                                                          751  endif
                                                          752 
                                                          -
                                                          753  if(node<inode(lun)) then
                                                          -
                                                          754  write(bort_str,'("BUFRLIB: LSTJPB - TABLE NODE (",I7,") IS OUT OF BOUNDS, < LOWER BOUNDS (",I7,")")') node,inode(lun)
                                                          -
                                                          755  call bort(bort_str)
                                                          -
                                                          756  endif
                                                          -
                                                          757  if(node>isc(inode(lun))) then
                                                          -
                                                          758  write(bort_str,'("BUFRLIB: LSTJPB - TABLE NODE (",I7,") IS OUT OF BOUNDS, > UPPER BOUNDS (",I7,")")') node,isc(inode(lun))
                                                          -
                                                          759  call bort(bort_str)
                                                          -
                                                          760  endif
                                                          +
                                                          753  nod = node
                                                          +
                                                          754 
                                                          +
                                                          755  ! Find this or the previous node of type jbtyp
                                                          +
                                                          756 
                                                          +
                                                          757  do while (nod/=0)
                                                          +
                                                          758  if(typ(nod)==jbtyp) exit
                                                          +
                                                          759  nod = jmpb(nod)
                                                          +
                                                          760  enddo
                                                          761 
                                                          -
                                                          762  nod = node
                                                          +
                                                          762  iret = nod
                                                          763 
                                                          -
                                                          764  ! Find this or the previous node of type jbtyp
                                                          -
                                                          765 
                                                          -
                                                          766  do while (nod/=0)
                                                          -
                                                          767  if(typ(nod)==jbtyp) exit
                                                          -
                                                          768  nod = jmpb(nod)
                                                          -
                                                          769  enddo
                                                          -
                                                          770 
                                                          -
                                                          771  iret = nod
                                                          -
                                                          772 
                                                          -
                                                          773  return
                                                          -
                                                          774 end function lstjpb
                                                          -
                                                          775 
                                                          -
                                                          786 integer function ishrdx(lud,lun) result(iret)
                                                          -
                                                          787 
                                                          -
                                                          788  use moda_tababd
                                                          +
                                                          764  return
                                                          +
                                                          765 end function lstjpb
                                                          +
                                                          766 
                                                          +
                                                          777 integer function ishrdx(lud,lun) result(iret)
                                                          +
                                                          778 
                                                          +
                                                          779  use moda_tababd
                                                          +
                                                          780 
                                                          +
                                                          781  implicit none
                                                          +
                                                          782 
                                                          +
                                                          783  integer, intent(in) :: lud, lun
                                                          +
                                                          784  integer ii
                                                          +
                                                          785 
                                                          +
                                                          786  ! Note that, for any file ID luX, the mtab(*,luX) array contains pointer indices into the internal jump/link table
                                                          +
                                                          787  ! for each of the Table A mnemonics that is currently defined for that luX value. Thus, if all of these indices are
                                                          +
                                                          788  ! identical for two different luX values, then the associated logical units are sharing table information.
                                                          789 
                                                          -
                                                          790  implicit none
                                                          -
                                                          791 
                                                          -
                                                          792  integer, intent(in) :: lud, lun
                                                          -
                                                          793  integer ii
                                                          -
                                                          794 
                                                          -
                                                          795  ! Note that, for any file ID luX, the mtab(*,luX) array contains pointer indices into the internal jump/link table
                                                          -
                                                          796  ! for each of the Table A mnemonics that is currently defined for that luX value. Thus, if all of these indices are
                                                          -
                                                          797  ! identical for two different luX values, then the associated logical units are sharing table information.
                                                          -
                                                          798 
                                                          -
                                                          799  if ( ( ntba(lud) >= 1 ) .and. ( ntba(lud) == ntba(lun) ) ) then
                                                          -
                                                          800  ii = 1
                                                          -
                                                          801  iret = 1
                                                          -
                                                          802  do while ( ( ii <= ntba(lud) ) .and. ( iret == 1 ) )
                                                          -
                                                          803  if ( ( mtab(ii,lud) /= 0 ) .and. ( mtab(ii,lud) == mtab(ii,lun) ) ) then
                                                          -
                                                          804  ii = ii + 1
                                                          -
                                                          805  else
                                                          -
                                                          806  iret = 0
                                                          -
                                                          807  endif
                                                          -
                                                          808  enddo
                                                          -
                                                          809  else
                                                          -
                                                          810  iret = 0
                                                          -
                                                          811  endif
                                                          -
                                                          812 
                                                          -
                                                          813  return
                                                          -
                                                          814 end function ishrdx
                                                          -
                                                          815 
                                                          -
                                                          831 integer function icmpdx(lud,lun) result(iret)
                                                          -
                                                          832 
                                                          -
                                                          833  use moda_tababd
                                                          -
                                                          834 
                                                          -
                                                          835  implicit none
                                                          +
                                                          790  if ( ( ntba(lud) >= 1 ) .and. ( ntba(lud) == ntba(lun) ) ) then
                                                          +
                                                          791  ii = 1
                                                          +
                                                          792  iret = 1
                                                          +
                                                          793  do while ( ( ii <= ntba(lud) ) .and. ( iret == 1 ) )
                                                          +
                                                          794  if ( ( mtab(ii,lud) /= 0 ) .and. ( mtab(ii,lud) == mtab(ii,lun) ) ) then
                                                          +
                                                          795  ii = ii + 1
                                                          +
                                                          796  else
                                                          +
                                                          797  iret = 0
                                                          +
                                                          798  endif
                                                          +
                                                          799  enddo
                                                          +
                                                          800  else
                                                          +
                                                          801  iret = 0
                                                          +
                                                          802  endif
                                                          +
                                                          803 
                                                          +
                                                          804  return
                                                          +
                                                          805 end function ishrdx
                                                          +
                                                          806 
                                                          +
                                                          822 integer function icmpdx(lud,lun) result(iret)
                                                          +
                                                          823 
                                                          +
                                                          824  use moda_tababd
                                                          +
                                                          825 
                                                          +
                                                          826  implicit none
                                                          +
                                                          827 
                                                          +
                                                          828  integer, intent(in) :: lud, lun
                                                          +
                                                          829  integer ishrdx, i
                                                          +
                                                          830 
                                                          +
                                                          831  ! First, check whether the two units are actually sharing tables.
                                                          +
                                                          832  ! If so, then they obviously have the same table information.
                                                          +
                                                          833 
                                                          +
                                                          834  iret = ishrdx(lud,lun)
                                                          +
                                                          835  if ( iret == 1 ) return
                                                          836 
                                                          -
                                                          837  integer, intent(in) :: lud, lun
                                                          -
                                                          838  integer ishrdx, i
                                                          -
                                                          839 
                                                          -
                                                          840  ! First, check whether the two units are actually sharing tables.
                                                          -
                                                          841  ! If so, then they obviously have the same table information.
                                                          -
                                                          842 
                                                          -
                                                          843  iret = ishrdx(lud,lun)
                                                          -
                                                          844  if ( iret == 1 ) return
                                                          +
                                                          837  ! Otherwise, check whether the internal Table A, B and D entries are all identical between the two units.
                                                          +
                                                          838 
                                                          +
                                                          839  if ( ( ntba(lud) == 0 ) .or. ( ntba(lun) /= ntba(lud) ) ) return
                                                          +
                                                          840  do i = 1, ntba(lud)
                                                          +
                                                          841  if ( idna(i,lun,1) /= idna(i,lud,1) ) return
                                                          +
                                                          842  if ( idna(i,lun,2) /= idna(i,lud,2) ) return
                                                          +
                                                          843  if ( taba(i,lun) /= taba(i,lud) ) return
                                                          +
                                                          844  enddo
                                                          845 
                                                          -
                                                          846  ! Otherwise, check whether the internal Table A, B and D entries are all identical between the two units.
                                                          -
                                                          847 
                                                          -
                                                          848  if ( ( ntba(lud) == 0 ) .or. ( ntba(lun) /= ntba(lud) ) ) return
                                                          -
                                                          849  do i = 1, ntba(lud)
                                                          -
                                                          850  if ( idna(i,lun,1) /= idna(i,lud,1) ) return
                                                          -
                                                          851  if ( idna(i,lun,2) /= idna(i,lud,2) ) return
                                                          -
                                                          852  if ( taba(i,lun) /= taba(i,lud) ) return
                                                          -
                                                          853  enddo
                                                          -
                                                          854 
                                                          -
                                                          855  if ( ( ntbb(lud) == 0 ) .or. ( ntbb(lun) /= ntbb(lud) ) ) return
                                                          -
                                                          856  do i = 1, ntbb(lud)
                                                          -
                                                          857  if ( idnb(i,lun) /= idnb(i,lud) ) return
                                                          -
                                                          858  if ( tabb(i,lun) /= tabb(i,lud) ) return
                                                          -
                                                          859  enddo
                                                          -
                                                          860 
                                                          -
                                                          861  if ( ( ntbd(lud) == 0 ) .or. ( ntbd(lun) /= ntbd(lud) ) ) return
                                                          -
                                                          862  do i = 1, ntbd(lud)
                                                          -
                                                          863  if ( idnd(i,lun) /= idnd(i,lud) ) return
                                                          -
                                                          864  if ( tabd(i,lun) /= tabd(i,lud) ) return
                                                          -
                                                          865  enddo
                                                          -
                                                          866 
                                                          -
                                                          867  iret = 1
                                                          -
                                                          868 
                                                          -
                                                          869  return
                                                          -
                                                          870 end function icmpdx
                                                          -
                                                          871 
                                                          -
                                                          897 subroutine drstpl(inod,lun,inv1,inv2,invn)
                                                          +
                                                          846  if ( ( ntbb(lud) == 0 ) .or. ( ntbb(lun) /= ntbb(lud) ) ) return
                                                          +
                                                          847  do i = 1, ntbb(lud)
                                                          +
                                                          848  if ( idnb(i,lun) /= idnb(i,lud) ) return
                                                          +
                                                          849  if ( tabb(i,lun) /= tabb(i,lud) ) return
                                                          +
                                                          850  enddo
                                                          +
                                                          851 
                                                          +
                                                          852  if ( ( ntbd(lud) == 0 ) .or. ( ntbd(lun) /= ntbd(lud) ) ) return
                                                          +
                                                          853  do i = 1, ntbd(lud)
                                                          +
                                                          854  if ( idnd(i,lun) /= idnd(i,lud) ) return
                                                          +
                                                          855  if ( tabd(i,lun) /= tabd(i,lud) ) return
                                                          +
                                                          856  enddo
                                                          +
                                                          857 
                                                          +
                                                          858  iret = 1
                                                          +
                                                          859 
                                                          +
                                                          860  return
                                                          +
                                                          861 end function icmpdx
                                                          +
                                                          862 
                                                          +
                                                          888 subroutine drstpl(inod,lun,inv1,inv2,invn)
                                                          +
                                                          889 
                                                          +
                                                          890  use moda_tables
                                                          +
                                                          891 
                                                          +
                                                          892  implicit none
                                                          +
                                                          893 
                                                          +
                                                          894  integer, intent(in) :: inod, lun, inv1
                                                          +
                                                          895  integer, intent(inout) :: inv2
                                                          +
                                                          896  integer, intent(out) :: invn
                                                          +
                                                          897  integer node, invwin
                                                          898 
                                                          -
                                                          899  use moda_tables
                                                          -
                                                          900 
                                                          -
                                                          901  implicit none
                                                          -
                                                          902 
                                                          -
                                                          903  integer, intent(in) :: inod, lun, inv1
                                                          -
                                                          904  integer, intent(inout) :: inv2
                                                          -
                                                          905  integer, intent(out) :: invn
                                                          -
                                                          906  integer node, invwin
                                                          -
                                                          907 
                                                          -
                                                          908  do while (.true.)
                                                          -
                                                          909  node = inod
                                                          -
                                                          910  do while (.true.)
                                                          -
                                                          911  node = jmpb(node)
                                                          -
                                                          912  if(node==0) return
                                                          -
                                                          913  if(typ(node)=='DRS' .or. typ(node)=='DRB') then
                                                          -
                                                          914  invn = invwin(node,lun,inv1,inv2)
                                                          -
                                                          915  if(invn>0) then
                                                          -
                                                          916  call usrtpl(lun,invn,1)
                                                          -
                                                          917  call newwin(lun,inv1,inv2)
                                                          -
                                                          918  invn = invwin(inod,lun,invn,inv2)
                                                          -
                                                          919  if(invn>0) return
                                                          -
                                                          920  exit
                                                          -
                                                          921  endif
                                                          -
                                                          922  endif
                                                          -
                                                          923  enddo
                                                          -
                                                          924  enddo
                                                          -
                                                          925 
                                                          -
                                                          926  return
                                                          -
                                                          927 end subroutine drstpl
                                                          -
                                                          928 
                                                          -
                                                          961 recursive subroutine nemspecs ( lunit, nemo, nnemo, nscl, nref, nbts, iret )
                                                          +
                                                          899  do while (.true.)
                                                          +
                                                          900  node = inod
                                                          +
                                                          901  do while (.true.)
                                                          +
                                                          902  node = jmpb(node)
                                                          +
                                                          903  if(node==0) return
                                                          +
                                                          904  if(typ(node)=='DRS' .or. typ(node)=='DRB') then
                                                          +
                                                          905  invn = invwin(node,lun,inv1,inv2)
                                                          +
                                                          906  if(invn>0) then
                                                          +
                                                          907  call usrtpl(lun,invn,1)
                                                          +
                                                          908  call newwin(lun,inv1,inv2)
                                                          +
                                                          909  invn = invwin(inod,lun,invn,inv2)
                                                          +
                                                          910  if(invn>0) return
                                                          +
                                                          911  exit
                                                          +
                                                          912  endif
                                                          +
                                                          913  endif
                                                          +
                                                          914  enddo
                                                          +
                                                          915  enddo
                                                          +
                                                          916 
                                                          +
                                                          917  return
                                                          +
                                                          918 end subroutine drstpl
                                                          +
                                                          919 
                                                          +
                                                          952 recursive subroutine nemspecs ( lunit, nemo, nnemo, nscl, nref, nbts, iret )
                                                          +
                                                          953 
                                                          +
                                                          954  use modv_vars, only: im8b
                                                          +
                                                          955 
                                                          +
                                                          956  use moda_usrint
                                                          +
                                                          957  use moda_msgcwd
                                                          +
                                                          958  use moda_tables
                                                          +
                                                          959  use moda_nrv203
                                                          +
                                                          960 
                                                          +
                                                          961  implicit none
                                                          962 
                                                          -
                                                          963  use modv_vars, only: im8b
                                                          -
                                                          964 
                                                          -
                                                          965  use moda_usrint
                                                          -
                                                          966  use moda_msgcwd
                                                          -
                                                          967  use moda_tables
                                                          -
                                                          968  use moda_nrv203
                                                          +
                                                          963  integer, intent(in) :: lunit, nnemo
                                                          +
                                                          964  integer, intent(out) :: nscl, nref, nbts, iret
                                                          +
                                                          965  integer my_lunit, my_nnemo, lun, il, im, nidx, ierfst, node, ltn, jj
                                                          +
                                                          966 
                                                          +
                                                          967  character*(*), intent(in) :: nemo
                                                          +
                                                          968  character*10 tagn
                                                          969 
                                                          -
                                                          970  implicit none
                                                          +
                                                          970  ! Check for I8 integers.
                                                          971 
                                                          -
                                                          972  integer, intent(in) :: lunit, nnemo
                                                          -
                                                          973  integer, intent(out) :: nscl, nref, nbts, iret
                                                          -
                                                          974  integer my_lunit, my_nnemo, lun, il, im, nidx, ierfst, node, ltn, jj
                                                          -
                                                          975 
                                                          -
                                                          976  character*(*), intent(in) :: nemo
                                                          -
                                                          977  character*10 tagn
                                                          -
                                                          978 
                                                          -
                                                          979  ! Check for I8 integers.
                                                          -
                                                          980 
                                                          -
                                                          981  if(im8b) then
                                                          -
                                                          982  im8b=.false.
                                                          -
                                                          983 
                                                          -
                                                          984  call x84(lunit,my_lunit,1)
                                                          -
                                                          985  call x84(nnemo,my_nnemo,1)
                                                          -
                                                          986  call nemspecs(my_lunit,nemo,my_nnemo,nscl,nref,nbts,iret)
                                                          -
                                                          987  call x48(nscl,nscl,1)
                                                          -
                                                          988  call x48(nref,nref,1)
                                                          -
                                                          989  call x48(nbts,nbts,1)
                                                          -
                                                          990  call x48(iret,iret,1)
                                                          -
                                                          991 
                                                          -
                                                          992  im8b=.true.
                                                          -
                                                          993  return
                                                          -
                                                          994  endif
                                                          -
                                                          995 
                                                          -
                                                          996  iret = -1
                                                          -
                                                          997 
                                                          -
                                                          998  ! Get lun from lunit.
                                                          +
                                                          972  if(im8b) then
                                                          +
                                                          973  im8b=.false.
                                                          +
                                                          974 
                                                          +
                                                          975  call x84(lunit,my_lunit,1)
                                                          +
                                                          976  call x84(nnemo,my_nnemo,1)
                                                          +
                                                          977  call nemspecs(my_lunit,nemo,my_nnemo,nscl,nref,nbts,iret)
                                                          +
                                                          978  call x48(nscl,nscl,1)
                                                          +
                                                          979  call x48(nref,nref,1)
                                                          +
                                                          980  call x48(nbts,nbts,1)
                                                          +
                                                          981  call x48(iret,iret,1)
                                                          +
                                                          982 
                                                          +
                                                          983  im8b=.true.
                                                          +
                                                          984  return
                                                          +
                                                          985  endif
                                                          +
                                                          986 
                                                          +
                                                          987  iret = -1
                                                          +
                                                          988 
                                                          +
                                                          989  ! Get lun from lunit.
                                                          +
                                                          990 
                                                          +
                                                          991  call status( lunit, lun, il, im )
                                                          +
                                                          992  if ( il == 0 ) return
                                                          +
                                                          993  if ( inode(lun) /= inv(1,lun) ) return
                                                          +
                                                          994 
                                                          +
                                                          995  ! Starting from the beginning of the subset, locate the (nnemo)th occurrence of nemo.
                                                          +
                                                          996 
                                                          +
                                                          997  call fstag( lun, nemo, nnemo, 1, nidx, ierfst )
                                                          +
                                                          998  if ( ierfst /= 0 ) return
                                                          999 
                                                          -
                                                          1000  call status( lunit, lun, il, im )
                                                          -
                                                          1001  if ( il == 0 ) return
                                                          -
                                                          1002  if ( inode(lun) /= inv(1,lun) ) return
                                                          -
                                                          1003 
                                                          -
                                                          1004  ! Starting from the beginning of the subset, locate the (nnemo)th occurrence of nemo.
                                                          -
                                                          1005 
                                                          -
                                                          1006  call fstag( lun, nemo, nnemo, 1, nidx, ierfst )
                                                          -
                                                          1007  if ( ierfst /= 0 ) return
                                                          -
                                                          1008 
                                                          -
                                                          1009  ! Confirm that nemo is a Table B mnemonic.
                                                          -
                                                          1010 
                                                          -
                                                          1011  node = inv(nidx,lun)
                                                          -
                                                          1012  if ( ( typ(node) /= 'NUM' ) .and. ( typ(node) /= 'CHR' ) ) return
                                                          +
                                                          1000  ! Confirm that nemo is a Table B mnemonic.
                                                          +
                                                          1001 
                                                          +
                                                          1002  node = inv(nidx,lun)
                                                          +
                                                          1003  if ( ( typ(node) /= 'NUM' ) .and. ( typ(node) /= 'CHR' ) ) return
                                                          +
                                                          1004 
                                                          +
                                                          1005  ! Get the scale factor, reference value and bit width, including accounting for any Table C operators which may be in
                                                          +
                                                          1006  ! scope for this particular occurrence of nemo.
                                                          +
                                                          1007 
                                                          +
                                                          1008  iret = 0
                                                          +
                                                          1009 
                                                          +
                                                          1010  nscl = isc(node)
                                                          +
                                                          1011  nbts = ibt(node)
                                                          +
                                                          1012  nref = irf(node)
                                                          1013 
                                                          -
                                                          1014  ! Get the scale factor, reference value and bit width, including accounting for any Table C operators which may be in
                                                          -
                                                          1015  ! scope for this particular occurrence of nemo.
                                                          -
                                                          1016 
                                                          -
                                                          1017  iret = 0
                                                          +
                                                          1014  if ( nnrv > 0 ) then
                                                          +
                                                          1015 
                                                          +
                                                          1016  ! There are nodes containing redefined reference values (from one or more 2-03-YYY operators) in the jump/link table,
                                                          +
                                                          1017  ! so we need to check if this node is one of them.
                                                          1018 
                                                          -
                                                          1019  nscl = isc(node)
                                                          -
                                                          1020  nbts = ibt(node)
                                                          -
                                                          1021  nref = irf(node)
                                                          +
                                                          1019  tagn = ' '
                                                          +
                                                          1020  call strsuc( nemo, tagn, ltn )
                                                          +
                                                          1021  if ( ( ltn <= 0 ) .or. ( ltn > 8 ) ) return
                                                          1022 
                                                          -
                                                          1023  if ( nnrv > 0 ) then
                                                          -
                                                          1024 
                                                          -
                                                          1025  ! There are nodes containing redefined reference values (from one or more 2-03-YYY operators) in the jump/link table,
                                                          -
                                                          1026  ! so we need to check if this node is one of them.
                                                          -
                                                          1027 
                                                          -
                                                          1028  tagn = ' '
                                                          -
                                                          1029  call strsuc( nemo, tagn, ltn )
                                                          -
                                                          1030  if ( ( ltn <= 0 ) .or. ( ltn > 8 ) ) return
                                                          -
                                                          1031 
                                                          -
                                                          1032  do jj = 1, nnrv
                                                          -
                                                          1033  if ( ( node /= inodnrv(jj) ) .and. ( tagn(1:8) == tagnrv(jj) ) .and. &
                                                          -
                                                          1034  ( node >= isnrv(jj) ) .and. ( node <= ienrv(jj) ) ) then
                                                          -
                                                          1035  nref = int(nrv(jj))
                                                          -
                                                          1036  return
                                                          -
                                                          1037  end if
                                                          -
                                                          1038  end do
                                                          -
                                                          1039 
                                                          -
                                                          1040  end if
                                                          -
                                                          1041 
                                                          -
                                                          1042  return
                                                          -
                                                          1043 end subroutine nemspecs
                                                          -
                                                          1044 
                                                          -
                                                          1064 subroutine fstag ( lun, utag, nutag, nin, nout, iret )
                                                          -
                                                          1065 
                                                          -
                                                          1066  use moda_usrint
                                                          -
                                                          1067  use moda_tables
                                                          -
                                                          1068 
                                                          -
                                                          1069  implicit none
                                                          -
                                                          1070 
                                                          -
                                                          1071  integer, intent(in) :: lun, nutag, nin
                                                          -
                                                          1072  integer, intent(out) :: nout, iret
                                                          -
                                                          1073  integer, parameter :: maxtg = 15
                                                          -
                                                          1074  integer ntg, istep, itagct
                                                          -
                                                          1075 
                                                          -
                                                          1076  character*(*), intent(in) :: utag
                                                          -
                                                          1077  character*10 tgs(maxtg)
                                                          +
                                                          1023  do jj = 1, nnrv
                                                          +
                                                          1024  if ( ( node /= inodnrv(jj) ) .and. ( tagn(1:8) == tagnrv(jj) ) .and. &
                                                          +
                                                          1025  ( node >= isnrv(jj) ) .and. ( node <= ienrv(jj) ) ) then
                                                          +
                                                          1026  nref = int(nrv(jj))
                                                          +
                                                          1027  return
                                                          +
                                                          1028  end if
                                                          +
                                                          1029  end do
                                                          +
                                                          1030 
                                                          +
                                                          1031  end if
                                                          +
                                                          1032 
                                                          +
                                                          1033  return
                                                          +
                                                          1034 end subroutine nemspecs
                                                          +
                                                          1035 
                                                          +
                                                          1055 subroutine fstag ( lun, utag, nutag, nin, nout, iret )
                                                          +
                                                          1056 
                                                          +
                                                          1057  use moda_usrint
                                                          +
                                                          1058  use moda_tables
                                                          +
                                                          1059 
                                                          +
                                                          1060  implicit none
                                                          +
                                                          1061 
                                                          +
                                                          1062  integer, intent(in) :: lun, nutag, nin
                                                          +
                                                          1063  integer, intent(out) :: nout, iret
                                                          +
                                                          1064  integer, parameter :: maxtg = 15
                                                          +
                                                          1065  integer ntg, istep, itagct
                                                          +
                                                          1066 
                                                          +
                                                          1067  character*(*), intent(in) :: utag
                                                          +
                                                          1068  character*10 tgs(maxtg)
                                                          +
                                                          1069 
                                                          +
                                                          1070  iret = -1
                                                          +
                                                          1071 
                                                          +
                                                          1072  ! Confirm that there's only one mnemonic in the input string.
                                                          +
                                                          1073 
                                                          +
                                                          1074  call parstr( utag, tgs, maxtg, ntg, ' ', .true. )
                                                          +
                                                          1075  if ( ntg /= 1 ) return
                                                          +
                                                          1076 
                                                          +
                                                          1077  ! Starting from nin, search either forward or backward for the (nutag)th occurrence of utag.
                                                          1078 
                                                          -
                                                          1079  iret = -1
                                                          -
                                                          1080 
                                                          -
                                                          1081  ! Confirm that there's only one mnemonic in the input string.
                                                          -
                                                          1082 
                                                          -
                                                          1083  call parstr( utag, tgs, maxtg, ntg, ' ', .true. )
                                                          -
                                                          1084  if ( ntg /= 1 ) return
                                                          -
                                                          1085 
                                                          -
                                                          1086  ! Starting from nin, search either forward or backward for the (nutag)th occurrence of utag.
                                                          -
                                                          1087 
                                                          -
                                                          1088  if ( nutag == 0 ) return
                                                          -
                                                          1089  istep = isign( 1, nutag )
                                                          -
                                                          1090  itagct = 0
                                                          -
                                                          1091  nout = nin + istep
                                                          -
                                                          1092  do while ( ( nout >= 1 ) .and. ( nout <= nval(lun) ) )
                                                          -
                                                          1093  if ( tgs(1) == tag(inv(nout,lun)) ) then
                                                          -
                                                          1094  itagct = itagct + 1
                                                          -
                                                          1095  if ( itagct == iabs(nutag) ) then
                                                          -
                                                          1096  iret = 0
                                                          -
                                                          1097  return
                                                          -
                                                          1098  endif
                                                          -
                                                          1099  endif
                                                          -
                                                          1100  nout = nout + istep
                                                          -
                                                          1101  enddo
                                                          -
                                                          1102 
                                                          -
                                                          1103  return
                                                          -
                                                          1104 end subroutine fstag
                                                          -
                                                          1105 
                                                          -
                                                          1125 recursive subroutine gettagpr ( lunit, tagch, ntagch, tagpr, iret )
                                                          -
                                                          1126 
                                                          -
                                                          1127  use modv_vars, only: im8b
                                                          -
                                                          1128 
                                                          -
                                                          1129  use moda_usrint
                                                          -
                                                          1130  use moda_msgcwd
                                                          -
                                                          1131  use moda_tables
                                                          +
                                                          1079  if ( nutag == 0 ) return
                                                          +
                                                          1080  istep = isign( 1, nutag )
                                                          +
                                                          1081  itagct = 0
                                                          +
                                                          1082  nout = nin + istep
                                                          +
                                                          1083  do while ( ( nout >= 1 ) .and. ( nout <= nval(lun) ) )
                                                          +
                                                          1084  if ( tgs(1) == tag(inv(nout,lun)) ) then
                                                          +
                                                          1085  itagct = itagct + 1
                                                          +
                                                          1086  if ( itagct == iabs(nutag) ) then
                                                          +
                                                          1087  iret = 0
                                                          +
                                                          1088  return
                                                          +
                                                          1089  endif
                                                          +
                                                          1090  endif
                                                          +
                                                          1091  nout = nout + istep
                                                          +
                                                          1092  enddo
                                                          +
                                                          1093 
                                                          +
                                                          1094  return
                                                          +
                                                          1095 end subroutine fstag
                                                          +
                                                          1096 
                                                          +
                                                          1116 recursive subroutine gettagpr ( lunit, tagch, ntagch, tagpr, iret )
                                                          +
                                                          1117 
                                                          +
                                                          1118  use modv_vars, only: im8b
                                                          +
                                                          1119 
                                                          +
                                                          1120  use moda_usrint
                                                          +
                                                          1121  use moda_msgcwd
                                                          +
                                                          1122  use moda_tables
                                                          +
                                                          1123 
                                                          +
                                                          1124  implicit none
                                                          +
                                                          1125 
                                                          +
                                                          1126  integer, intent(in) :: lunit, ntagch
                                                          +
                                                          1127  integer, intent(out) :: iret
                                                          +
                                                          1128  integer my_lunit, my_ntagch, lun, il, im, nch
                                                          +
                                                          1129 
                                                          +
                                                          1130  character*(*), intent(in) :: tagch
                                                          +
                                                          1131  character*(*), intent(out) :: tagpr
                                                          1132 
                                                          -
                                                          1133  implicit none
                                                          +
                                                          1133  ! Check for I8 integers.
                                                          1134 
                                                          -
                                                          1135  integer, intent(in) :: lunit, ntagch
                                                          -
                                                          1136  integer, intent(out) :: iret
                                                          -
                                                          1137  integer my_lunit, my_ntagch, lun, il, im, nch
                                                          -
                                                          1138 
                                                          -
                                                          1139  character*(*), intent(in) :: tagch
                                                          -
                                                          1140  character*(*), intent(out) :: tagpr
                                                          -
                                                          1141 
                                                          -
                                                          1142  ! Check for I8 integers.
                                                          -
                                                          1143 
                                                          -
                                                          1144  if(im8b) then
                                                          -
                                                          1145  im8b=.false.
                                                          +
                                                          1135  if(im8b) then
                                                          +
                                                          1136  im8b=.false.
                                                          +
                                                          1137 
                                                          +
                                                          1138  call x84 ( lunit, my_lunit, 1 )
                                                          +
                                                          1139  call x84 ( ntagch, my_ntagch, 1 )
                                                          +
                                                          1140  call gettagpr ( my_lunit, tagch, my_ntagch, tagpr, iret )
                                                          +
                                                          1141  call x48 ( iret, iret, 1 )
                                                          +
                                                          1142 
                                                          +
                                                          1143  im8b=.true.
                                                          +
                                                          1144  return
                                                          +
                                                          1145  endif
                                                          1146 
                                                          -
                                                          1147  call x84 ( lunit, my_lunit, 1 )
                                                          -
                                                          1148  call x84 ( ntagch, my_ntagch, 1 )
                                                          -
                                                          1149  call gettagpr ( my_lunit, tagch, my_ntagch, tagpr, iret )
                                                          -
                                                          1150  call x48 ( iret, iret, 1 )
                                                          -
                                                          1151 
                                                          -
                                                          1152  im8b=.true.
                                                          -
                                                          1153  return
                                                          -
                                                          1154  endif
                                                          -
                                                          1155 
                                                          -
                                                          1156  iret = -1
                                                          -
                                                          1157 
                                                          -
                                                          1158  ! Get lun from lunit.
                                                          +
                                                          1147  iret = -1
                                                          +
                                                          1148 
                                                          +
                                                          1149  ! Get lun from lunit.
                                                          +
                                                          1150 
                                                          +
                                                          1151  call status( lunit, lun, il, im )
                                                          +
                                                          1152  if ( il == 0 ) return
                                                          +
                                                          1153  if ( inode(lun) /= inv(1,lun) ) return
                                                          +
                                                          1154 
                                                          +
                                                          1155  ! Get tagpr from the (ntagch)th occurrence of tagch.
                                                          +
                                                          1156 
                                                          +
                                                          1157  call fstag( lun, tagch, ntagch, 1, nch, iret )
                                                          +
                                                          1158  if ( iret /= 0 ) return
                                                          1159 
                                                          -
                                                          1160  call status( lunit, lun, il, im )
                                                          -
                                                          1161  if ( il == 0 ) return
                                                          -
                                                          1162  if ( inode(lun) /= inv(1,lun) ) return
                                                          -
                                                          1163 
                                                          -
                                                          1164  ! Get tagpr from the (ntagch)th occurrence of tagch.
                                                          -
                                                          1165 
                                                          -
                                                          1166  call fstag( lun, tagch, ntagch, 1, nch, iret )
                                                          -
                                                          1167  if ( iret /= 0 ) return
                                                          -
                                                          1168 
                                                          -
                                                          1169  tagpr = tag(jmpb(inv(nch,lun)))
                                                          -
                                                          1170 
                                                          -
                                                          1171  return
                                                          -
                                                          1172 end subroutine gettagpr
                                                          -
                                                          1173 
                                                          -
                                                          1190 integer function invtag(node,lun,inv1,inv2) result(iret)
                                                          +
                                                          1160  tagpr = tag(jmpb(inv(nch,lun)))
                                                          +
                                                          1161 
                                                          +
                                                          1162  return
                                                          +
                                                          1163 end subroutine gettagpr
                                                          +
                                                          1164 
                                                          +
                                                          1181 integer function invtag(node,lun,inv1,inv2) result(iret)
                                                          +
                                                          1182 
                                                          +
                                                          1183  use modv_vars, only: iprt
                                                          +
                                                          1184 
                                                          +
                                                          1185  use moda_usrint
                                                          +
                                                          1186  use moda_tables
                                                          +
                                                          1187 
                                                          +
                                                          1188  implicit none
                                                          +
                                                          1189 
                                                          +
                                                          1190  integer, intent(in) :: node, lun, inv1, inv2
                                                          1191 
                                                          -
                                                          1192  use moda_usrint
                                                          -
                                                          1193  use moda_tables
                                                          -
                                                          1194 
                                                          -
                                                          1195  implicit none
                                                          -
                                                          1196 
                                                          -
                                                          1197  integer, intent(in) :: node, lun, inv1, inv2
                                                          -
                                                          1198  integer iprt
                                                          -
                                                          1199 
                                                          -
                                                          1200  character*10 tagn
                                                          +
                                                          1192  character*10 tagn
                                                          +
                                                          1193 
                                                          +
                                                          1194  if(node/=0) then
                                                          +
                                                          1195  tagn = tag(node)
                                                          +
                                                          1196  ! Search between inv1 and inv2
                                                          +
                                                          1197  do iret=inv1,inv2
                                                          +
                                                          1198  if(tag(inv(iret,lun))==tagn) return
                                                          +
                                                          1199  enddo
                                                          +
                                                          1200  endif
                                                          1201 
                                                          -
                                                          1202  common /quiet/ iprt
                                                          +
                                                          1202  iret = 0
                                                          1203 
                                                          -
                                                          1204  if(node/=0) then
                                                          -
                                                          1205  tagn = tag(node)
                                                          -
                                                          1206  ! Search between inv1 and inv2
                                                          -
                                                          1207  do iret=inv1,inv2
                                                          -
                                                          1208  if(tag(inv(iret,lun))==tagn) return
                                                          -
                                                          1209  enddo
                                                          -
                                                          1210  endif
                                                          -
                                                          1211 
                                                          -
                                                          1212  iret = 0
                                                          +
                                                          1204  if(iprt>=2) then
                                                          +
                                                          1205  call errwrt('++++++++++++++BUFR ARCHIVE LIBRARY+++++++++++++++++')
                                                          +
                                                          1206  call errwrt('BUFRLIB: INVTAG - RETURNING WITH A VALUE OF 0')
                                                          +
                                                          1207  call errwrt('++++++++++++++BUFR ARCHIVE LIBRARY+++++++++++++++++')
                                                          +
                                                          1208  call errwrt(' ')
                                                          +
                                                          1209  endif
                                                          +
                                                          1210 
                                                          +
                                                          1211  return
                                                          +
                                                          1212 end function invtag
                                                          1213 
                                                          -
                                                          1214  if(iprt>=2) then
                                                          -
                                                          1215  call errwrt('++++++++++++++BUFR ARCHIVE LIBRARY+++++++++++++++++')
                                                          -
                                                          1216  call errwrt('BUFRLIB: INVTAG - RETURNING WITH A VALUE OF 0')
                                                          -
                                                          1217  call errwrt('++++++++++++++BUFR ARCHIVE LIBRARY+++++++++++++++++')
                                                          -
                                                          1218  call errwrt(' ')
                                                          -
                                                          1219  endif
                                                          -
                                                          1220 
                                                          -
                                                          1221  return
                                                          -
                                                          1222 end function invtag
                                                          -
                                                          1223 
                                                          -
                                                          1238 integer function invwin(node,lun,inv1,inv2) result(iret)
                                                          -
                                                          1239 
                                                          -
                                                          1240  use moda_usrint
                                                          -
                                                          1241 
                                                          -
                                                          1242  implicit none
                                                          -
                                                          1243 
                                                          -
                                                          1244  integer, intent(in) :: node, lun, inv1, inv2
                                                          -
                                                          1245  integer iprt, idx
                                                          -
                                                          1246 
                                                          -
                                                          1247  character*80 errstr
                                                          -
                                                          1248 
                                                          -
                                                          1249  common /quiet/ iprt
                                                          -
                                                          1250 
                                                          -
                                                          1251  iret = 0
                                                          -
                                                          1252  if(node/=0) then
                                                          -
                                                          1253  ! Search between inv1 and inv2
                                                          -
                                                          1254  do idx=inv1,inv2
                                                          -
                                                          1255  if(inv(idx,lun)==node) then
                                                          -
                                                          1256  iret = idx
                                                          -
                                                          1257  exit
                                                          -
                                                          1258  endif
                                                          -
                                                          1259  enddo
                                                          -
                                                          1260  endif
                                                          -
                                                          1261 
                                                          -
                                                          1262  if(iprt>=3) then
                                                          -
                                                          1263  write(errstr,'(a,3i8)') 'invwin i1,i2,in ', inv1, inv2, iret
                                                          -
                                                          1264  call errwrt(errstr)
                                                          -
                                                          1265  endif
                                                          -
                                                          1266 
                                                          -
                                                          1267  return
                                                          -
                                                          1268 end function invwin
                                                          -
                                                          1269 
                                                          -
                                                          1313 subroutine getwin(node,lun,iwin,jwin)
                                                          +
                                                          1228 integer function invwin(node,lun,inv1,inv2) result(iret)
                                                          +
                                                          1229 
                                                          +
                                                          1230  use modv_vars, only: iprt
                                                          +
                                                          1231 
                                                          +
                                                          1232  use moda_usrint
                                                          +
                                                          1233 
                                                          +
                                                          1234  implicit none
                                                          +
                                                          1235 
                                                          +
                                                          1236  integer, intent(in) :: node, lun, inv1, inv2
                                                          +
                                                          1237  integer idx
                                                          +
                                                          1238 
                                                          +
                                                          1239  character*80 errstr
                                                          +
                                                          1240 
                                                          +
                                                          1241  iret = 0
                                                          +
                                                          1242  if(node/=0) then
                                                          +
                                                          1243  ! Search between inv1 and inv2
                                                          +
                                                          1244  do idx=inv1,inv2
                                                          +
                                                          1245  if(inv(idx,lun)==node) then
                                                          +
                                                          1246  iret = idx
                                                          +
                                                          1247  exit
                                                          +
                                                          1248  endif
                                                          +
                                                          1249  enddo
                                                          +
                                                          1250  endif
                                                          +
                                                          1251 
                                                          +
                                                          1252  if(iprt>=3) then
                                                          +
                                                          1253  write(errstr,'(a,3i8)') 'invwin i1,i2,in ', inv1, inv2, iret
                                                          +
                                                          1254  call errwrt(errstr)
                                                          +
                                                          1255  endif
                                                          +
                                                          1256 
                                                          +
                                                          1257  return
                                                          +
                                                          1258 end function invwin
                                                          +
                                                          1259 
                                                          +
                                                          1303 subroutine getwin(node,lun,iwin,jwin)
                                                          +
                                                          1304 
                                                          +
                                                          1305  use moda_usrint
                                                          +
                                                          1306 
                                                          +
                                                          1307  implicit none
                                                          +
                                                          1308 
                                                          +
                                                          1309  integer, intent(in) :: node, lun
                                                          +
                                                          1310  integer, intent(out) :: iwin, jwin
                                                          +
                                                          1311  integer irpc, lstjpb, invwin
                                                          +
                                                          1312 
                                                          +
                                                          1313  character*128 bort_str
                                                          1314 
                                                          -
                                                          1315  use moda_usrint
                                                          +
                                                          1315  irpc = lstjpb(node,lun,'RPC')
                                                          1316 
                                                          -
                                                          1317  implicit none
                                                          -
                                                          1318 
                                                          -
                                                          1319  integer, intent(in) :: node, lun
                                                          -
                                                          1320  integer, intent(out) :: iwin, jwin
                                                          -
                                                          1321  integer irpc, lstjpb, invwin
                                                          -
                                                          1322 
                                                          -
                                                          1323  character*128 bort_str
                                                          -
                                                          1324 
                                                          -
                                                          1325  irpc = lstjpb(node,lun,'RPC')
                                                          -
                                                          1326 
                                                          -
                                                          1327  if(irpc==0) then
                                                          -
                                                          1328  iwin = invwin(node,lun,jwin,nval(lun))
                                                          -
                                                          1329  if(iwin==0 .and. jwin>1) return
                                                          -
                                                          1330  iwin = 1
                                                          -
                                                          1331  jwin = nval(lun)
                                                          -
                                                          1332  return
                                                          -
                                                          1333  else
                                                          -
                                                          1334  iwin = invwin(irpc,lun,jwin,nval(lun))
                                                          -
                                                          1335  if(iwin==0) return
                                                          -
                                                          1336  if(val(iwin,lun)==0.) then
                                                          -
                                                          1337  iwin = 0
                                                          -
                                                          1338  return
                                                          -
                                                          1339  endif
                                                          -
                                                          1340  endif
                                                          -
                                                          1341 
                                                          -
                                                          1342  jwin = invwin(irpc,lun,iwin+1,nval(lun))
                                                          -
                                                          1343  if(jwin==0) then
                                                          -
                                                          1344  write(bort_str,'("BUFRLIB: GETWIN - SEARCHED BETWEEN",I5," AND",I5,", MISSING BRACKET")') iwin+1, nval(lun)
                                                          -
                                                          1345  call bort(bort_str)
                                                          -
                                                          1346  endif
                                                          -
                                                          1347 
                                                          -
                                                          1348  return
                                                          -
                                                          1349 end subroutine getwin
                                                          -
                                                          1350 
                                                          -
                                                          1382 subroutine conwin(lun,inc1,inc2)
                                                          +
                                                          1317  if(irpc==0) then
                                                          +
                                                          1318  iwin = invwin(node,lun,jwin,nval(lun))
                                                          +
                                                          1319  if(iwin==0 .and. jwin>1) return
                                                          +
                                                          1320  iwin = 1
                                                          +
                                                          1321  jwin = nval(lun)
                                                          +
                                                          1322  return
                                                          +
                                                          1323  else
                                                          +
                                                          1324  iwin = invwin(irpc,lun,jwin,nval(lun))
                                                          +
                                                          1325  if(iwin==0) return
                                                          +
                                                          1326  if(val(iwin,lun)==0.) then
                                                          +
                                                          1327  iwin = 0
                                                          +
                                                          1328  return
                                                          +
                                                          1329  endif
                                                          +
                                                          1330  endif
                                                          +
                                                          1331 
                                                          +
                                                          1332  jwin = invwin(irpc,lun,iwin+1,nval(lun))
                                                          +
                                                          1333  if(jwin==0) then
                                                          +
                                                          1334  write(bort_str,'("BUFRLIB: GETWIN - SEARCHED BETWEEN",I5," AND",I5,", MISSING BRACKET")') iwin+1, nval(lun)
                                                          +
                                                          1335  call bort(bort_str)
                                                          +
                                                          1336  endif
                                                          +
                                                          1337 
                                                          +
                                                          1338  return
                                                          +
                                                          1339 end subroutine getwin
                                                          +
                                                          1340 
                                                          +
                                                          1372 subroutine conwin(lun,inc1,inc2)
                                                          +
                                                          1373 
                                                          +
                                                          1374  use moda_usrint
                                                          +
                                                          1375 
                                                          +
                                                          1376  implicit none
                                                          +
                                                          1377 
                                                          +
                                                          1378  integer, intent(in) :: lun
                                                          +
                                                          1379  integer, intent(out) :: inc1, inc2
                                                          +
                                                          1380  integer nnod, ncon, nods, nodc, ivls, kons, nc, invcon
                                                          +
                                                          1381 
                                                          +
                                                          1382  common /usrstr/ nnod, ncon, nods(20), nodc(10), ivls(10), kons(10)
                                                          1383 
                                                          -
                                                          1384  use moda_usrint
                                                          -
                                                          1385 
                                                          -
                                                          1386  implicit none
                                                          -
                                                          1387 
                                                          -
                                                          1388  integer, intent(in) :: lun
                                                          -
                                                          1389  integer, intent(out) :: inc1, inc2
                                                          -
                                                          1390  integer nnod, ncon, nods, nodc, ivls, kons, nc, invcon
                                                          -
                                                          1391 
                                                          -
                                                          1392  common /usrstr/ nnod, ncon, nods(20), nodc(10), ivls(10), kons(10)
                                                          -
                                                          1393 
                                                          -
                                                          1394  if(ncon==0) then
                                                          -
                                                          1395  ! There are no condition nodes in the string
                                                          -
                                                          1396  inc1 = 1
                                                          -
                                                          1397  inc2 = nval(lun)
                                                          -
                                                          1398  return
                                                          -
                                                          1399  endif
                                                          +
                                                          1384  if(ncon==0) then
                                                          +
                                                          1385  ! There are no condition nodes in the string
                                                          +
                                                          1386  inc1 = 1
                                                          +
                                                          1387  inc2 = nval(lun)
                                                          +
                                                          1388  return
                                                          +
                                                          1389  endif
                                                          +
                                                          1390 
                                                          +
                                                          1391  outer: do while (.true.)
                                                          +
                                                          1392  call getwin(nodc(1),lun,inc1,inc2)
                                                          +
                                                          1393  if(inc1>0) then
                                                          +
                                                          1394  do nc=1,ncon
                                                          +
                                                          1395  if(invcon(nc,lun,inc1,inc2)==0) cycle outer
                                                          +
                                                          1396  enddo
                                                          +
                                                          1397  endif
                                                          +
                                                          1398  exit
                                                          +
                                                          1399  enddo outer
                                                          1400 
                                                          -
                                                          1401  outer: do while (.true.)
                                                          -
                                                          1402  call getwin(nodc(1),lun,inc1,inc2)
                                                          -
                                                          1403  if(inc1>0) then
                                                          -
                                                          1404  do nc=1,ncon
                                                          -
                                                          1405  if(invcon(nc,lun,inc1,inc2)==0) cycle outer
                                                          -
                                                          1406  enddo
                                                          -
                                                          1407  endif
                                                          -
                                                          1408  exit
                                                          -
                                                          1409  enddo outer
                                                          -
                                                          1410 
                                                          -
                                                          1411  return
                                                          -
                                                          1412 end subroutine conwin
                                                          -
                                                          1413 
                                                          -
                                                          1440 integer function invcon(nc,lun,inv1,inv2) result(iret)
                                                          -
                                                          1441 
                                                          -
                                                          1442  use moda_usrint
                                                          -
                                                          1443 
                                                          -
                                                          1444  implicit none
                                                          -
                                                          1445 
                                                          -
                                                          1446  integer, intent(in) :: nc, lun, inv1, inv2
                                                          -
                                                          1447  integer nnod, ncon, nods, nodc, ivls, kons, iprt
                                                          -
                                                          1448 
                                                          -
                                                          1449  common /usrstr/ nnod, ncon, nods(20), nodc(10), ivls(10), kons(10)
                                                          -
                                                          1450  common /quiet/ iprt
                                                          -
                                                          1451 
                                                          -
                                                          1452  if(inv1>0 .and. inv1<=nval(lun) .and. inv2>0 .and. inv2<=nval(lun)) then
                                                          -
                                                          1453  do iret=inv1,inv2
                                                          -
                                                          1454  if(inv(iret,lun)==nodc(nc)) then
                                                          -
                                                          1455  if(kons(nc)==1 .and. val(iret,lun)==ivls(nc)) return
                                                          -
                                                          1456  if(kons(nc)==2 .and. val(iret,lun)/=ivls(nc)) return
                                                          -
                                                          1457  if(kons(nc)==3 .and. val(iret,lun)<ivls(nc)) return
                                                          -
                                                          1458  if(kons(nc)==4 .and. val(iret,lun)>ivls(nc)) return
                                                          -
                                                          1459  endif
                                                          -
                                                          1460  enddo
                                                          -
                                                          1461  endif
                                                          -
                                                          1462 
                                                          -
                                                          1463  iret = 0
                                                          -
                                                          1464  if(iprt>=2) then
                                                          -
                                                          1465  call errwrt('++++++++++++++BUFR ARCHIVE LIBRARY+++++++++++++++++')
                                                          -
                                                          1466  call errwrt('BUFRLIB: INVCON - RETURNING WITH A VALUE OF 0')
                                                          -
                                                          1467  call errwrt('++++++++++++++BUFR ARCHIVE LIBRARY+++++++++++++++++')
                                                          -
                                                          1468  call errwrt(' ')
                                                          -
                                                          1469  endif
                                                          -
                                                          1470 
                                                          -
                                                          1471  return
                                                          -
                                                          1472 end function invcon
                                                          -
                                                          1473 
                                                          -
                                                          1490 subroutine newwin(lun,iwin,jwin)
                                                          -
                                                          1491 
                                                          -
                                                          1492  use moda_usrint
                                                          -
                                                          1493 
                                                          -
                                                          1494  implicit none
                                                          -
                                                          1495 
                                                          -
                                                          1496  integer, intent(in) :: lun, iwin
                                                          -
                                                          1497  integer, intent(out) :: jwin
                                                          -
                                                          1498  integer node, lstjpb
                                                          -
                                                          1499 
                                                          -
                                                          1500  character*128 bort_str
                                                          -
                                                          1501 
                                                          -
                                                          1502  if(iwin==1) then
                                                          -
                                                          1503  ! This is a "SUB" (subset) node, so return jwin as pointing to the last value of the entire subset.
                                                          -
                                                          1504  jwin = nval(lun)
                                                          -
                                                          1505  return
                                                          -
                                                          1506  endif
                                                          +
                                                          1401  return
                                                          +
                                                          1402 end subroutine conwin
                                                          +
                                                          1403 
                                                          +
                                                          1430 integer function invcon(nc,lun,inv1,inv2) result(iret)
                                                          +
                                                          1431 
                                                          +
                                                          1432  use modv_vars, only: iprt
                                                          +
                                                          1433 
                                                          +
                                                          1434  use moda_usrint
                                                          +
                                                          1435 
                                                          +
                                                          1436  implicit none
                                                          +
                                                          1437 
                                                          +
                                                          1438  integer, intent(in) :: nc, lun, inv1, inv2
                                                          +
                                                          1439  integer nnod, ncon, nods, nodc, ivls, kons
                                                          +
                                                          1440 
                                                          +
                                                          1441  common /usrstr/ nnod, ncon, nods(20), nodc(10), ivls(10), kons(10)
                                                          +
                                                          1442 
                                                          +
                                                          1443  if(inv1>0 .and. inv1<=nval(lun) .and. inv2>0 .and. inv2<=nval(lun)) then
                                                          +
                                                          1444  do iret=inv1,inv2
                                                          +
                                                          1445  if(inv(iret,lun)==nodc(nc)) then
                                                          +
                                                          1446  if(kons(nc)==1 .and. val(iret,lun)==ivls(nc)) return
                                                          +
                                                          1447  if(kons(nc)==2 .and. val(iret,lun)/=ivls(nc)) return
                                                          +
                                                          1448  if(kons(nc)==3 .and. val(iret,lun)<ivls(nc)) return
                                                          +
                                                          1449  if(kons(nc)==4 .and. val(iret,lun)>ivls(nc)) return
                                                          +
                                                          1450  endif
                                                          +
                                                          1451  enddo
                                                          +
                                                          1452  endif
                                                          +
                                                          1453 
                                                          +
                                                          1454  iret = 0
                                                          +
                                                          1455  if(iprt>=2) then
                                                          +
                                                          1456  call errwrt('++++++++++++++BUFR ARCHIVE LIBRARY+++++++++++++++++')
                                                          +
                                                          1457  call errwrt('BUFRLIB: INVCON - RETURNING WITH A VALUE OF 0')
                                                          +
                                                          1458  call errwrt('++++++++++++++BUFR ARCHIVE LIBRARY+++++++++++++++++')
                                                          +
                                                          1459  call errwrt(' ')
                                                          +
                                                          1460  endif
                                                          +
                                                          1461 
                                                          +
                                                          1462  return
                                                          +
                                                          1463 end function invcon
                                                          +
                                                          1464 
                                                          +
                                                          1481 subroutine newwin(lun,iwin,jwin)
                                                          +
                                                          1482 
                                                          +
                                                          1483  use moda_usrint
                                                          +
                                                          1484 
                                                          +
                                                          1485  implicit none
                                                          +
                                                          1486 
                                                          +
                                                          1487  integer, intent(in) :: lun, iwin
                                                          +
                                                          1488  integer, intent(out) :: jwin
                                                          +
                                                          1489  integer node, lstjpb
                                                          +
                                                          1490 
                                                          +
                                                          1491  character*128 bort_str
                                                          +
                                                          1492 
                                                          +
                                                          1493  if(iwin==1) then
                                                          +
                                                          1494  ! This is a "SUB" (subset) node, so return jwin as pointing to the last value of the entire subset.
                                                          +
                                                          1495  jwin = nval(lun)
                                                          +
                                                          1496  return
                                                          +
                                                          1497  endif
                                                          +
                                                          1498 
                                                          +
                                                          1499  ! Confirm that iwin points to an "RPC" node and then compute jwin.
                                                          +
                                                          1500  node = inv(iwin,lun)
                                                          +
                                                          1501  if(lstjpb(node,lun,'RPC')/=node) then
                                                          +
                                                          1502  write(bort_str,'("BUFRLIB: NEWWIN - LSTJPB FOR NODE",I6,'// &
                                                          +
                                                          1503  '" (LSTJPB=",I5,") DOES NOT EQUAL VALUE OF NODE, NOT RPC (IWIN =",I8,")")') node, lstjpb(node,lun,'RPC'), iwin
                                                          +
                                                          1504  call bort(bort_str)
                                                          +
                                                          1505  endif
                                                          +
                                                          1506  jwin = iwin+nint(val(iwin,lun))
                                                          1507 
                                                          -
                                                          1508  ! Confirm that iwin points to an "RPC" node and then compute jwin.
                                                          -
                                                          1509  node = inv(iwin,lun)
                                                          -
                                                          1510  if(lstjpb(node,lun,'RPC')/=node) then
                                                          -
                                                          1511  write(bort_str,'("BUFRLIB: NEWWIN - LSTJPB FOR NODE",I6,'// &
                                                          -
                                                          1512  '" (LSTJPB=",I5,") DOES NOT EQUAL VALUE OF NODE, NOT RPC (IWIN =",I8,")")') node, lstjpb(node,lun,'RPC'), iwin
                                                          -
                                                          1513  call bort(bort_str)
                                                          -
                                                          1514  endif
                                                          -
                                                          1515  jwin = iwin+nint(val(iwin,lun))
                                                          -
                                                          1516 
                                                          -
                                                          1517  return
                                                          -
                                                          1518 end subroutine newwin
                                                          -
                                                          1519 
                                                          -
                                                          1538 subroutine nxtwin(lun,iwin,jwin)
                                                          -
                                                          1539 
                                                          -
                                                          1540  use moda_usrint
                                                          -
                                                          1541 
                                                          -
                                                          1542  implicit none
                                                          -
                                                          1543 
                                                          -
                                                          1544  integer, intent(in) :: lun
                                                          -
                                                          1545  integer, intent(inout) :: iwin, jwin
                                                          -
                                                          1546  integer node, lstjpb
                                                          -
                                                          1547 
                                                          -
                                                          1548  character*128 bort_str
                                                          -
                                                          1549 
                                                          -
                                                          1550  if(jwin==nval(lun)) then
                                                          -
                                                          1551  iwin = 0
                                                          -
                                                          1552  return
                                                          -
                                                          1553  endif
                                                          -
                                                          1554 
                                                          -
                                                          1555  node = inv(iwin,lun)
                                                          -
                                                          1556  if(lstjpb(node,lun,'RPC')/=node) then
                                                          -
                                                          1557  write(bort_str,'("BUFRLIB: NXTWIN - LSTJPB FOR NODE",I6," '// &
                                                          -
                                                          1558  '(LSTJPB=",I5,") DOES NOT EQUAL VALUE OF NODE, NOT RPC (IWIN =",I8,")")') node, lstjpb(node,lun,'RPC'), iwin
                                                          -
                                                          1559  call bort(bort_str)
                                                          -
                                                          1560  endif
                                                          -
                                                          1561  if(val(jwin,lun)==0) then
                                                          -
                                                          1562  iwin = 0
                                                          -
                                                          1563  else
                                                          -
                                                          1564  iwin = jwin
                                                          -
                                                          1565  jwin = iwin+nint(val(iwin,lun))
                                                          -
                                                          1566  endif
                                                          -
                                                          1567 
                                                          -
                                                          1568  return
                                                          -
                                                          1569 end subroutine nxtwin
                                                          -
                                                          1570 
                                                          -
                                                          1588 integer function nvnwin(node,lun,inv1,inv2,invn,nmax) result(iret)
                                                          -
                                                          1589 
                                                          -
                                                          1590  use moda_usrint
                                                          -
                                                          1591 
                                                          -
                                                          1592  implicit none
                                                          -
                                                          1593 
                                                          -
                                                          1594  integer, intent(in) :: node, lun, inv1, inv2, nmax
                                                          -
                                                          1595  integer, intent(out) :: invn(*)
                                                          -
                                                          1596  integer iprt, i, n
                                                          -
                                                          1597 
                                                          -
                                                          1598  character*128 bort_str
                                                          -
                                                          1599 
                                                          -
                                                          1600  common /quiet/ iprt
                                                          -
                                                          1601 
                                                          -
                                                          1602  iret = 0
                                                          -
                                                          1603 
                                                          -
                                                          1604  if(node==0) then
                                                          -
                                                          1605  if(iprt>=1) then
                                                          -
                                                          1606  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                          -
                                                          1607  call errwrt('BUFRLIB: NVNWIN - NODE=0, IMMEDIATE RETURN')
                                                          -
                                                          1608  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                          -
                                                          1609  call errwrt(' ')
                                                          -
                                                          1610  endif
                                                          -
                                                          1611  return
                                                          -
                                                          1612  endif
                                                          -
                                                          1613 
                                                          -
                                                          1614  do i=1,nmax
                                                          -
                                                          1615  invn(i) = 1e9
                                                          -
                                                          1616  enddo
                                                          -
                                                          1617 
                                                          -
                                                          1618  ! Search between inv1 and inv2
                                                          -
                                                          1619 
                                                          -
                                                          1620  do n=inv1,inv2
                                                          -
                                                          1621  if(inv(n,lun)==node) then
                                                          -
                                                          1622  if(iret+1>nmax) then
                                                          -
                                                          1623  write(bort_str,'("BUFRLIB: NVNWIN - THE NUMBER OF EVENTS EXCEEDS THE LIMIT NMAX (",I5,")")') nmax
                                                          -
                                                          1624  call bort(bort_str)
                                                          -
                                                          1625  endif
                                                          -
                                                          1626  iret = iret+1
                                                          -
                                                          1627  invn(iret) = n
                                                          -
                                                          1628  endif
                                                          -
                                                          1629  enddo
                                                          -
                                                          1630 
                                                          -
                                                          1631  return
                                                          -
                                                          1632 end function nvnwin
                                                          +
                                                          1508  return
                                                          +
                                                          1509 end subroutine newwin
                                                          +
                                                          1510 
                                                          +
                                                          1529 subroutine nxtwin(lun,iwin,jwin)
                                                          +
                                                          1530 
                                                          +
                                                          1531  use moda_usrint
                                                          +
                                                          1532 
                                                          +
                                                          1533  implicit none
                                                          +
                                                          1534 
                                                          +
                                                          1535  integer, intent(in) :: lun
                                                          +
                                                          1536  integer, intent(inout) :: iwin, jwin
                                                          +
                                                          1537  integer node, lstjpb
                                                          +
                                                          1538 
                                                          +
                                                          1539  character*128 bort_str
                                                          +
                                                          1540 
                                                          +
                                                          1541  if(jwin==nval(lun)) then
                                                          +
                                                          1542  iwin = 0
                                                          +
                                                          1543  return
                                                          +
                                                          1544  endif
                                                          +
                                                          1545 
                                                          +
                                                          1546  node = inv(iwin,lun)
                                                          +
                                                          1547  if(lstjpb(node,lun,'RPC')/=node) then
                                                          +
                                                          1548  write(bort_str,'("BUFRLIB: NXTWIN - LSTJPB FOR NODE",I6," '// &
                                                          +
                                                          1549  '(LSTJPB=",I5,") DOES NOT EQUAL VALUE OF NODE, NOT RPC (IWIN =",I8,")")') node, lstjpb(node,lun,'RPC'), iwin
                                                          +
                                                          1550  call bort(bort_str)
                                                          +
                                                          1551  endif
                                                          +
                                                          1552  if(val(jwin,lun)==0) then
                                                          +
                                                          1553  iwin = 0
                                                          +
                                                          1554  else
                                                          +
                                                          1555  iwin = jwin
                                                          +
                                                          1556  jwin = iwin+nint(val(iwin,lun))
                                                          +
                                                          1557  endif
                                                          +
                                                          1558 
                                                          +
                                                          1559  return
                                                          +
                                                          1560 end subroutine nxtwin
                                                          +
                                                          1561 
                                                          +
                                                          1579 integer function nvnwin(node,lun,inv1,inv2,invn,nmax) result(iret)
                                                          +
                                                          1580 
                                                          +
                                                          1581  use modv_vars, only: iprt
                                                          +
                                                          1582 
                                                          +
                                                          1583  use moda_usrint
                                                          +
                                                          1584 
                                                          +
                                                          1585  implicit none
                                                          +
                                                          1586 
                                                          +
                                                          1587  integer, intent(in) :: node, lun, inv1, inv2, nmax
                                                          +
                                                          1588  integer, intent(out) :: invn(*)
                                                          +
                                                          1589  integer i, n
                                                          +
                                                          1590 
                                                          +
                                                          1591  character*128 bort_str
                                                          +
                                                          1592 
                                                          +
                                                          1593  iret = 0
                                                          +
                                                          1594 
                                                          +
                                                          1595  if(node==0) then
                                                          +
                                                          1596  if(iprt>=1) then
                                                          +
                                                          1597  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                          +
                                                          1598  call errwrt('BUFRLIB: NVNWIN - NODE=0, IMMEDIATE RETURN')
                                                          +
                                                          1599  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                          +
                                                          1600  call errwrt(' ')
                                                          +
                                                          1601  endif
                                                          +
                                                          1602  return
                                                          +
                                                          1603  endif
                                                          +
                                                          1604 
                                                          +
                                                          1605  do i=1,nmax
                                                          +
                                                          1606  invn(i) = 1e9
                                                          +
                                                          1607  enddo
                                                          +
                                                          1608 
                                                          +
                                                          1609  ! Search between inv1 and inv2
                                                          +
                                                          1610 
                                                          +
                                                          1611  do n=inv1,inv2
                                                          +
                                                          1612  if(inv(n,lun)==node) then
                                                          +
                                                          1613  if(iret+1>nmax) then
                                                          +
                                                          1614  write(bort_str,'("BUFRLIB: NVNWIN - THE NUMBER OF EVENTS EXCEEDS THE LIMIT NMAX (",I5,")")') nmax
                                                          +
                                                          1615  call bort(bort_str)
                                                          +
                                                          1616  endif
                                                          +
                                                          1617  iret = iret+1
                                                          +
                                                          1618  invn(iret) = n
                                                          +
                                                          1619  endif
                                                          +
                                                          1620  enddo
                                                          +
                                                          1621 
                                                          +
                                                          1622  return
                                                          +
                                                          1623 end function nvnwin
                                                          subroutine bort(str)
                                                          Log an error message, then abort the application program.
                                                          Definition: borts.F90:15
                                                          -
                                                          subroutine cpbfdx(lud, lun)
                                                          Copy all of the DX BUFR table information from one unit to another within internal memory.
                                                          Definition: copydata.F90:678
                                                          -
                                                          subroutine nemtbb(lun, itab, unit, iscl, iref, ibit)
                                                          Get information about a Table B descriptor from the internal DX BUFR tables.
                                                          Definition: dxtable.F90:1278
                                                          -
                                                          recursive subroutine wrdxtb(lundx, lunot)
                                                          Generate one or more BUFR messages from the DX BUFR tables information associated with a given BUFR f...
                                                          Definition: dxtable.F90:850
                                                          -
                                                          subroutine nemtbd(lun, itab, nseq, nems, irps, knts)
                                                          Get information about a Table D descriptor from the internal DX BUFR tables.
                                                          Definition: dxtable.F90:1346
                                                          +
                                                          subroutine cpbfdx(lud, lun)
                                                          Copy all of the DX BUFR table information from one unit to another within internal memory.
                                                          Definition: copydata.F90:676
                                                          +
                                                          subroutine nemtbb(lun, itab, unit, iscl, iref, ibit)
                                                          Get information about a Table B descriptor from the internal DX BUFR tables.
                                                          Definition: dxtable.F90:1269
                                                          +
                                                          recursive subroutine wrdxtb(lundx, lunot)
                                                          Generate one or more BUFR messages from the DX BUFR tables information associated with a given BUFR f...
                                                          Definition: dxtable.F90:840
                                                          +
                                                          subroutine nemtbd(lun, itab, nseq, nems, irps, knts)
                                                          Get information about a Table D descriptor from the internal DX BUFR tables.
                                                          Definition: dxtable.F90:1337
                                                          subroutine errwrt(str)
                                                          Specify a custom location for the logging of error and diagnostic messages generated by the NCEPLIBS-...
                                                          Definition: errwrt.F90:32
                                                          -
                                                          subroutine nemtab(lun, nemo, idn, tab, iret)
                                                          Get information about a descriptor, based on a mnemonic.
                                                          Definition: fxy.F90:432
                                                          - - - - - - - - - - - - - - - +
                                                          subroutine nemtab(lun, nemo, idn, tab, iret)
                                                          Get information about a descriptor, based on a mnemonic.
                                                          Definition: fxy.F90:434
                                                          + + + + + + + + + + + + + + + - - - - -
                                                          subroutine strsuc(str1, str2, lens)
                                                          Remove leading and trailing blanks from a character string.
                                                          Definition: misc.F90:220
                                                          + + + + +
                                                          subroutine strsuc(str1, str2, lens)
                                                          Remove leading and trailing blanks from a character string.
                                                          Definition: misc.F90:199
                                                          Declare arrays and variables used to store bitmaps internally within a data subset definition.
                                                          integer, dimension(:,:), allocatable inodtco
                                                          Entries within jump/link table which contain Table C operators.
                                                          integer ntamc
                                                          Number of Table A mnemonics in jump/link table (up to a maximum of mxtamc) which contain at least one...
                                                          @@ -1382,54 +1373,59 @@
                                                          integer, dimension(:,:), allocatable krp
                                                          Replication counts corresponding to nem:
                                                          integer, dimension(:,:), allocatable irp
                                                          Replication indicators corresponding to nem:
                                                          character *8, dimension(:,:), allocatable nem
                                                          Child mnemonics within Table D sequences.
                                                          -
                                                          Declare arrays and variables for use with any 2-03-YYY (change reference value) operators present wit...
                                                          -
                                                          integer, dimension(:), allocatable ienrv
                                                          End of entry range in jump/link table, within which the corresponding new reference value in nrv will...
                                                          -
                                                          character *8, dimension(:), allocatable tagnrv
                                                          Table B mnemonic to which the corresponding new reference value in nrv applies.
                                                          -
                                                          integer, dimension(:), allocatable isnrv
                                                          Start of entry range in jump/link table, within which the corresponding new reference value in nrv wi...
                                                          -
                                                          integer nnrv
                                                          Number of entries in the jump/link table which contain new reference values (up to a maximum of mxnrv...
                                                          -
                                                          integer *8, dimension(:), allocatable nrv
                                                          New reference values corresponding to inodnrv.
                                                          -
                                                          integer ipfnrv
                                                          A number between 1 and nnrv, denoting the first entry within the module arrays which applies to the c...
                                                          -
                                                          integer, dimension(:), allocatable inodnrv
                                                          Entries within jump/link table which contain new reference values.
                                                          -
                                                          integer ibtnrv
                                                          Number of bits in Section 4 occupied by each new reference value for the current 2-03-YYY operator in...
                                                          -
                                                          Declare arrays used to store file and message status indicators for all logical units that have been ...
                                                          -
                                                          integer, dimension(:), allocatable iolun
                                                          File status indicators.
                                                          -
                                                          integer, dimension(:), allocatable iomsg
                                                          Message status indicator corresponding to iolun, denoting whether a BUFR message is currently open wi...
                                                          -
                                                          Declare arrays and variables used to store DX BUFR tables internally for multiple file IDs.
                                                          -
                                                          integer, dimension(:), allocatable ntba
                                                          Number of Table A entries for each file ID (up to a maximum of maxtba, whose value is stored in array...
                                                          -
                                                          character *600, dimension(:,:), allocatable tabd
                                                          Table D entries for each file ID.
                                                          -
                                                          character *128, dimension(:,:), allocatable taba
                                                          Table A entries for each file ID.
                                                          -
                                                          integer, dimension(:,:), allocatable mtab
                                                          Entries within jump/link table corresponding to taba.
                                                          -
                                                          integer, dimension(:,:,:), allocatable idna
                                                          Message types (in array element 1) and subtypes (in array element 2) corresponding to taba.
                                                          -
                                                          integer, dimension(:), allocatable ntbd
                                                          Number of Table D entries for each file ID (up to a maximum of maxtbd, whose value is stored in array...
                                                          -
                                                          integer, dimension(:), allocatable ntbb
                                                          Number of Table B entries for each file ID (up to a maximum of maxtbb, whose value is stored in array...
                                                          -
                                                          integer, dimension(:,:), allocatable idnd
                                                          WMO bit-wise representations of the FXY values corresponding to tabd.
                                                          -
                                                          integer, dimension(:,:), allocatable idnb
                                                          WMO bit-wise representations of the FXY values corresponding to tabb.
                                                          -
                                                          character *128, dimension(:,:), allocatable tabb
                                                          Table B entries for each file ID.
                                                          -
                                                          Declare arrays and variables used to store the internal jump/link table.
                                                          -
                                                          integer, dimension(:), allocatable jseq
                                                          Temporary storage used in expanding sequences.
                                                          -
                                                          integer, dimension(:), allocatable irf
                                                          Reference values corresponding to tag and typ:
                                                          -
                                                          integer, dimension(:,:), allocatable iseq
                                                          Temporary storage used in expanding sequences.
                                                          -
                                                          integer, dimension(:), allocatable isc
                                                          Scale factors corresponding to tag and typ:
                                                          -
                                                          integer, dimension(:), allocatable ibt
                                                          Bit widths corresponding to tag and typ:
                                                          -
                                                          integer, dimension(:), allocatable knt
                                                          Temporary storage used in calculating delayed replication counts.
                                                          -
                                                          real *8, dimension(:), allocatable vali
                                                          Initialized data values corresponding to typ:
                                                          -
                                                          character *3, dimension(:), allocatable typ
                                                          Type indicators corresponding to tag:
                                                          -
                                                          integer, dimension(:), allocatable jmpb
                                                          Jump backward indices corresponding to tag and typ:
                                                          -
                                                          character *10, dimension(:), allocatable tag
                                                          Mnemonics in the jump/link table.
                                                          -
                                                          integer ntab
                                                          Number of entries in the jump/link table.
                                                          -
                                                          integer, dimension(:), allocatable jump
                                                          Jump forward indices corresponding to tag and typ:
                                                          -
                                                          integer, dimension(:), allocatable itp
                                                          Integer type values corresponding to typ:
                                                          -
                                                          integer, dimension(:), allocatable link
                                                          Link indices corresponding to tag, typ and jmpb:
                                                          -
                                                          integer, dimension(:), allocatable knti
                                                          Initialized replication counts corresponding to typ and jump:
                                                          -
                                                          Declare arrays used to store data values and associated metadata for the current BUFR data subset in ...
                                                          -
                                                          integer, dimension(:), allocatable nval
                                                          Number of data values in BUFR data subset.
                                                          -
                                                          real *8, dimension(:,:), allocatable, target val
                                                          Data values.
                                                          -
                                                          integer, dimension(:,:), allocatable, target inv
                                                          Inventory pointer which links each data value to its corresponding node in the internal jump/link tab...
                                                          -
                                                          Declare an array used to track, for each file ID, whether the DX BUFR table associated with the corre...
                                                          -
                                                          logical, dimension(:), allocatable xtab
                                                          Tracking index for each file ID.
                                                          -
                                                          recursive subroutine status(lunit, lun, il, im)
                                                          Check whether a specified Fortran logical unit number is currently connected to the NCEPLIBS-bufr sof...
                                                          -
                                                          recursive subroutine closmg(lunin)
                                                          Close the BUFR message that is currently open for writing within internal arrays associated with logi...
                                                          -
                                                          subroutine usrtpl(lun, invn, nbmp)
                                                          Expand a subset template within internal arrays.
                                                          +
                                                          Declare arrays and variables for use with any 2-03-YYY (change reference value) operators present wit...
                                                          +
                                                          integer, dimension(:), allocatable ienrv
                                                          End of entry range in jump/link table, within which the corresponding new reference value in nrv will...
                                                          +
                                                          character *8, dimension(:), allocatable tagnrv
                                                          Table B mnemonic to which the corresponding new reference value in nrv applies.
                                                          +
                                                          integer, dimension(:), allocatable isnrv
                                                          Start of entry range in jump/link table, within which the corresponding new reference value in nrv wi...
                                                          +
                                                          integer nnrv
                                                          Number of entries in the jump/link table which contain new reference values (up to a maximum of mxnrv...
                                                          +
                                                          integer *8, dimension(:), allocatable nrv
                                                          New reference values corresponding to inodnrv.
                                                          +
                                                          integer ipfnrv
                                                          A number between 1 and nnrv, denoting the first entry within the module arrays which applies to the c...
                                                          +
                                                          integer, dimension(:), allocatable inodnrv
                                                          Entries within jump/link table which contain new reference values.
                                                          +
                                                          integer ibtnrv
                                                          Number of bits in Section 4 occupied by each new reference value for the current 2-03-YYY operator in...
                                                          +
                                                          Declare arrays used to store file and message status indicators for all logical units that have been ...
                                                          +
                                                          integer, dimension(:), allocatable iolun
                                                          File status indicators.
                                                          +
                                                          integer, dimension(:), allocatable iomsg
                                                          Message status indicator corresponding to iolun, denoting whether a BUFR message is currently open wi...
                                                          +
                                                          Declare arrays and variables used to store DX BUFR tables internally for multiple file IDs.
                                                          +
                                                          integer, dimension(:), allocatable ntba
                                                          Number of Table A entries for each file ID (up to a maximum of maxtba, whose value is stored in array...
                                                          +
                                                          character *600, dimension(:,:), allocatable tabd
                                                          Table D entries for each file ID.
                                                          +
                                                          character *128, dimension(:,:), allocatable taba
                                                          Table A entries for each file ID.
                                                          +
                                                          integer, dimension(:,:), allocatable mtab
                                                          Entries within jump/link table corresponding to taba.
                                                          +
                                                          integer, dimension(:,:,:), allocatable idna
                                                          Message types (in array element 1) and subtypes (in array element 2) corresponding to taba.
                                                          +
                                                          integer, dimension(:), allocatable ntbd
                                                          Number of Table D entries for each file ID (up to a maximum of maxtbd, whose value is stored in array...
                                                          +
                                                          integer, dimension(:), allocatable ntbb
                                                          Number of Table B entries for each file ID (up to a maximum of maxtbb, whose value is stored in array...
                                                          +
                                                          integer, dimension(:,:), allocatable idnd
                                                          WMO bit-wise representations of the FXY values corresponding to tabd.
                                                          +
                                                          integer, dimension(:,:), allocatable idnb
                                                          WMO bit-wise representations of the FXY values corresponding to tabb.
                                                          +
                                                          character *128, dimension(:,:), allocatable tabb
                                                          Table B entries for each file ID.
                                                          +
                                                          Declare variables for use with certain Table C operators in the internal jump/link table.
                                                          +
                                                          integer icsc
                                                          Number by which to modify the scale of subsequent jump/link table mnemonics whose type indicator is "...
                                                          +
                                                          integer icdw
                                                          Number of bits by which to modify the data width of subsequent jump/link table mnemonics whose type i...
                                                          +
                                                          integer icrv
                                                          Factor by which to multiply the reference value of subsequent jump/link table mnemonics whose type in...
                                                          +
                                                          integer incw
                                                          New data width (in bytes) for subsequent jump/link table mnemonics whose type indicator is "CHR"; set...
                                                          +
                                                          Declare arrays and variables used to store the internal jump/link table.
                                                          +
                                                          integer, dimension(:), allocatable jseq
                                                          Temporary storage used in expanding sequences.
                                                          +
                                                          integer, dimension(:), allocatable irf
                                                          Reference values corresponding to tag and typ:
                                                          +
                                                          integer, dimension(:,:), allocatable iseq
                                                          Temporary storage used in expanding sequences.
                                                          +
                                                          integer, dimension(:), allocatable isc
                                                          Scale factors corresponding to tag and typ:
                                                          +
                                                          integer, dimension(:), allocatable ibt
                                                          Bit widths corresponding to tag and typ:
                                                          +
                                                          integer, dimension(:), allocatable knt
                                                          Temporary storage used in calculating delayed replication counts.
                                                          +
                                                          real *8, dimension(:), allocatable vali
                                                          Initialized data values corresponding to typ:
                                                          +
                                                          character *3, dimension(:), allocatable typ
                                                          Type indicators corresponding to tag:
                                                          +
                                                          integer, dimension(:), allocatable jmpb
                                                          Jump backward indices corresponding to tag and typ:
                                                          +
                                                          character *10, dimension(:), allocatable tag
                                                          Mnemonics in the jump/link table.
                                                          +
                                                          integer ntab
                                                          Number of entries in the jump/link table.
                                                          +
                                                          integer, dimension(:), allocatable jump
                                                          Jump forward indices corresponding to tag and typ:
                                                          +
                                                          integer, dimension(:), allocatable itp
                                                          Integer type values corresponding to typ:
                                                          +
                                                          integer, dimension(:), allocatable link
                                                          Link indices corresponding to tag, typ and jmpb:
                                                          +
                                                          integer, dimension(:), allocatable knti
                                                          Initialized replication counts corresponding to typ and jump:
                                                          +
                                                          Declare arrays used to store data values and associated metadata for the current BUFR data subset in ...
                                                          +
                                                          integer, dimension(:), allocatable nval
                                                          Number of data values in BUFR data subset.
                                                          +
                                                          real *8, dimension(:,:), allocatable, target val
                                                          Data values.
                                                          +
                                                          integer, dimension(:,:), allocatable, target inv
                                                          Inventory pointer which links each data value to its corresponding node in the internal jump/link tab...
                                                          +
                                                          Declare an array used to track, for each file ID, whether the DX BUFR table associated with the corre...
                                                          +
                                                          logical, dimension(:), allocatable xtab
                                                          Tracking index for each file ID.
                                                          +
                                                          recursive subroutine status(lunit, lun, il, im)
                                                          Check whether a specified Fortran logical unit number is currently connected to the NCEPLIBS-bufr sof...
                                                          +
                                                          recursive subroutine closmg(lunin)
                                                          Close the BUFR message that is currently open for writing within internal arrays associated with logi...
                                                          +
                                                          subroutine usrtpl(lun, invn, nbmp)
                                                          Expand a subset template within internal arrays.
                                                          subroutine strcln
                                                          Reset the internal mnemonic string cache.
                                                          Definition: strings.F90:116
                                                          subroutine parstr(str, tags, mtag, ntag, sep, limit80)
                                                          Parse a string containing one or more substrings into an array of substrings.
                                                          Definition: strings.F90:473
                                                          subroutine x48(iin4, iout8, nval)
                                                          Encode one or more 4-byte integer values as 8-byte integer values.
                                                          Definition: x4884.F90:18
                                                          diff --git a/mastertable_8F90.html b/mastertable_8F90.html index 953f561bd..746f91129 100644 --- a/mastertable_8F90.html +++ b/mastertable_8F90.html @@ -26,7 +26,7 @@ @@ -185,7 +185,7 @@

                                                          Author
                                                          J. Ator
                                                          Date
                                                          2017-10-13
                                                          -

                                                          Definition at line 1208 of file mastertable.F90.

                                                          +

                                                          Definition at line 1195 of file mastertable.F90.

                                                          References bort(), capit(), and moda_tablef::cdmf.

                                                          @@ -249,7 +249,7 @@

                                                          Author
                                                          J. Ator
                                                          Date
                                                          2007-01-19
                                                          -

                                                          Definition at line 1147 of file mastertable.F90.

                                                          +

                                                          Definition at line 1134 of file mastertable.F90.

                                                          References bort2(), and parstr().

                                                          @@ -346,7 +346,7 @@

                                                          Author
                                                          J. Ator
                                                          Date
                                                          2007-01-19
                                                          -

                                                          Definition at line 1071 of file mastertable.F90.

                                                          +

                                                          Definition at line 1058 of file mastertable.F90.

                                                          References bort(), parstr(), and strnum().

                                                          @@ -396,7 +396,7 @@

                                                          Author
                                                          J. Ator
                                                          Date
                                                          2007-01-19
                                                          -

                                                          Definition at line 992 of file mastertable.F90.

                                                          +

                                                          Definition at line 979 of file mastertable.F90.

                                                          @@ -435,7 +435,7 @@

                                                          Author
                                                          J. Ator
                                                          Date
                                                          2009-03-23
                                                          -

                                                          Definition at line 1027 of file mastertable.F90.

                                                          +

                                                          Definition at line 1014 of file mastertable.F90.

                                                          References bort().

                                                          @@ -472,11 +472,11 @@

                                                          mtinfo(), or else from subroutine bfrini() if subroutine mtinfo() was never called, and in which case Fortran logical unit numbers 98 and 99 will be used by this function for opening and reading master BUFR table files.

                                                          +

                                                          Information about the location of master BUFR tables on the local file system is obtained from the most recent call to subroutine mtinfo(), or else from subroutine bfrini() if subroutine mtinfo() was never called by the application program.

                                                          Author
                                                          J. Ator
                                                          Date
                                                          2009-03-23
                                                          -

                                                          Definition at line 177 of file mastertable.F90.

                                                          +

                                                          Definition at line 170 of file mastertable.F90.

                                                          References bort2(), moda_mstabs::cbbw, moda_mstabs::cbelem, moda_mstabs::cbmnem, moda_mstabs::cbscl, moda_mstabs::cbsref, moda_mstabs::cbunit, moda_tablef::cdmf, moda_mstabs::cdmnem, moda_s3list::cds3, moda_mstabs::cdseq, moda_rdmtb::ceelem, moda_rdmtb::cmdscb, moda_rdmtb::cmdscd, errwrt(), moda_mstabs::ibfxyn, moda_mstabs::idefxy, moda_mstabs::idfxyn, moda_rdmtb::iefxyn, ifxy(), moda_sc3bfr::isc3, istdesc(), iupbs01(), moda_bitbuf::mbay, mtfnam(), moda_mstabs::ndelem, moda_mstabs::nmtb, moda_mstabs::nmtd, rdmtbb(), rdmtbd(), rdmtbf(), and upds3().

                                                          @@ -541,7 +541,7 @@

                                                          Based on the input arguments, determine the names of the corresponding standard and local master table files.

                                                          -

                                                          After determining the corresponding file names, this subroutine then confirms the existence of those files on the filesystem, using additional information obtained from the most recent call to subroutine mtinfo(), or else as defined within subroutine bfrini() if subroutine mtinfo() was never called.

                                                          +

                                                          After determining the corresponding file names, this subroutine then confirms the existence of those files on the filesystem, using additional information obtained from the most recent call to subroutine mtinfo(), or else as defined within subroutine bfrini() if subroutine mtinfo() was never called by the application program.

                                                          Parameters

                                                          node- Jump/link table index of mnemonic to look for
                                                          NCEPLIBS-bufr -  12.1.0 +  12.2.0
                                                          NCEPLIBS-bufr -  12.1.0 +  12.2.0
                                                          @@ -562,7 +562,7 @@

                                                          Author
                                                          Ator
                                                          Date
                                                          2017-10-16
                                                          -

                                                          Definition at line 86 of file mastertable.F90.

                                                          +

                                                          Definition at line 83 of file mastertable.F90.

                                                          References bort2(), errwrt(), and strsuc().

                                                          @@ -611,7 +611,7 @@

                                                          Master BUFR Tables for more information about master BUFR tables. In particular, note that this subroutine is normally only ever called after a prior call has been made to subroutine openbf() with io = 'SEC3'. But in such cases, any call to this subroutine must be made prior to any subsequent calls to any of the BUFR message-reading subroutines for the associated BUFR file; otherwise, default values for cmtdir, lunmt1 and lunmt2 will be used as defined within subroutine bfrini().

                                                          +

                                                          See Master BUFR Tables for more information about master BUFR tables. In particular, note that this subroutine is normally only ever called after a prior call has been made to subroutine openbf() with io = 'SEC3'. But in such cases, any call to this subroutine must be made prior to any subsequent calls to any of the BUFR message-reading subroutines for the associated BUFR file; otherwise, default values for cmtdir, lunmt1 and lunmt2 will be used as defined within subroutine bfrini().

                                                          For cmtdir, any full or relative directory pathname that is legal on the local filesystem is permissible, up to a total maximum length of 240 characters. The library will then automatically search within this directory for any necessary master table files and open and read them as needed.

                                                          The logical unit numbers lunmt1 and lunmt2 should be distinct from each other but should not already be assigned to any files on the local system.

                                                          Author
                                                          J. Ator
                                                          @@ -658,7 +658,7 @@

                                                          Author
                                                          J. Woollen
                                                          Date
                                                          1994-01-06
                                                          -

                                                          Definition at line 1240 of file mastertable.F90.

                                                          +

                                                          Definition at line 1227 of file mastertable.F90.

                                                          @@ -810,7 +810,7 @@

                                                          Author
                                                          J. Ator
                                                          Date
                                                          2007-01-19
                                                          -

                                                          Definition at line 370 of file mastertable.F90.

                                                          +

                                                          Definition at line 355 of file mastertable.F90.

                                                          References bort(), getntbe(), gettbh(), and sntbbe().

                                                          @@ -966,7 +966,7 @@

                                                          Author
                                                          J. Ator
                                                          Date
                                                          2007-01-19
                                                          -

                                                          Definition at line 448 of file mastertable.F90.

                                                          +

                                                          Definition at line 433 of file mastertable.F90.

                                                          References bort(), getntbe(), gettbh(), and sntbde().

                                                          @@ -1012,7 +1012,7 @@

                                                          Author
                                                          J. Ator
                                                          Date
                                                          2017-10-17
                                                          -

                                                          Definition at line 507 of file mastertable.F90.

                                                          +

                                                          Definition at line 492 of file mastertable.F90.

                                                          References bort(), getntbe(), gettbh(), and sntbfe().

                                                          @@ -1047,7 +1047,7 @@

                                                          - + @@ -1127,7 +1127,7 @@

                                                          Author
                                                          J. Ator
                                                          Date
                                                          2007-01-19
                                                          -

                                                          Definition at line 579 of file mastertable.F90.

                                                          +

                                                          Definition at line 564 of file mastertable.F90.

                                                          References bort(), bort2(), parstr(), and sntbestr().

                                                          @@ -1174,7 +1174,7 @@

                                                          - + @@ -1249,7 +1249,7 @@

                                                          Author
                                                          J. Ator
                                                          Date
                                                          2007-01-19
                                                          -

                                                          Definition at line 723 of file mastertable.F90.

                                                          +

                                                          Definition at line 709 of file mastertable.F90.

                                                          References bort(), bort2(), parstr(), and sntbestr().

                                                          @@ -1301,7 +1301,7 @@

                                                          Author
                                                          J. Ator
                                                          Date
                                                          2024-04-15
                                                          -

                                                          Definition at line 966 of file mastertable.F90.

                                                          +

                                                          Definition at line 953 of file mastertable.F90.

                                                          Referenced by sntbbe(), sntbde(), and sntbfe().

                                                          @@ -1344,7 +1344,7 @@

                                                          Author
                                                          J. Ator
                                                          Date
                                                          2017-11-02
                                                          -

                                                          Definition at line 835 of file mastertable.F90.

                                                          +

                                                          Definition at line 822 of file mastertable.F90.

                                                          References bort2(), parstr(), sntbestr(), and strnum().

                                                          diff --git a/mastertable_8F90_source.html b/mastertable_8F90_source.html index 97fca5002..f721ed607 100644 --- a/mastertable_8F90_source.html +++ b/mastertable_8F90_source.html @@ -26,7 +26,7 @@

                                                          @@ -90,992 +90,981 @@
                                                          5 
                                                          34 recursive subroutine mtinfo ( cmtdir, lunmt1, lunmt2 )
                                                          35 
                                                          -
                                                          36  use modv_vars, only: im8b
                                                          +
                                                          36  use modv_vars, only: im8b, lun1, lun2, mtdir, lmtd
                                                          37 
                                                          38  implicit none
                                                          39 
                                                          40  integer, intent(in) :: lunmt1, lunmt2
                                                          -
                                                          41  integer my_lunmt1, my_lunmt2, lun1, lun2, lmtd
                                                          +
                                                          41  integer my_lunmt1, my_lunmt2
                                                          42 
                                                          43  character*(*), intent(in) :: cmtdir
                                                          -
                                                          44  character*240 mtdir
                                                          -
                                                          45 
                                                          -
                                                          46  common /mstinf/ lun1, lun2, lmtd, mtdir
                                                          -
                                                          47 
                                                          -
                                                          48  ! Check for I8 integers
                                                          -
                                                          49  if(im8b) then
                                                          -
                                                          50  im8b=.false.
                                                          -
                                                          51 
                                                          -
                                                          52  call x84 ( lunmt1, my_lunmt1, 1 )
                                                          -
                                                          53  call x84 ( lunmt2, my_lunmt2, 1 )
                                                          -
                                                          54  call mtinfo ( cmtdir, my_lunmt1, my_lunmt2 )
                                                          -
                                                          55 
                                                          -
                                                          56  im8b=.true.
                                                          -
                                                          57  return
                                                          -
                                                          58  endif
                                                          -
                                                          59 
                                                          -
                                                          60  call strsuc ( cmtdir, mtdir, lmtd )
                                                          +
                                                          44 
                                                          +
                                                          45  ! Check for I8 integers
                                                          +
                                                          46  if(im8b) then
                                                          +
                                                          47  im8b=.false.
                                                          +
                                                          48 
                                                          +
                                                          49  call x84 ( lunmt1, my_lunmt1, 1 )
                                                          +
                                                          50  call x84 ( lunmt2, my_lunmt2, 1 )
                                                          +
                                                          51  call mtinfo ( cmtdir, my_lunmt1, my_lunmt2 )
                                                          +
                                                          52 
                                                          +
                                                          53  im8b=.true.
                                                          +
                                                          54  return
                                                          +
                                                          55  endif
                                                          +
                                                          56 
                                                          +
                                                          57  call strsuc ( cmtdir, mtdir, lmtd )
                                                          +
                                                          58 
                                                          +
                                                          59  lun1 = lunmt1
                                                          +
                                                          60  lun2 = lunmt2
                                                          61 
                                                          -
                                                          62  lun1 = lunmt1
                                                          -
                                                          63  lun2 = lunmt2
                                                          +
                                                          62  return
                                                          +
                                                          63 end subroutine mtinfo
                                                          64 
                                                          -
                                                          65  return
                                                          -
                                                          66 end subroutine mtinfo
                                                          -
                                                          67 
                                                          -
                                                          86 subroutine mtfnam ( imt, imtv, iogce, imtvl, tbltyp, stdfil, locfil )
                                                          -
                                                          87 
                                                          -
                                                          88  implicit none
                                                          -
                                                          89 
                                                          -
                                                          90  integer, intent(in) :: imt, imtv, iogce, imtvl
                                                          -
                                                          91  integer iprt, lun1, lun2, lmtd, ltbt, isize
                                                          -
                                                          92 
                                                          -
                                                          93  character*(*), intent(in) :: tbltyp
                                                          -
                                                          94  character*(*), intent(out) :: stdfil, locfil
                                                          -
                                                          95 
                                                          -
                                                          96  character*16 tbltyp2
                                                          -
                                                          97  character*20 fmtf
                                                          -
                                                          98  character*240 mtdir
                                                          -
                                                          99  character*128 bort_str
                                                          +
                                                          83 subroutine mtfnam ( imt, imtv, iogce, imtvl, tbltyp, stdfil, locfil )
                                                          +
                                                          84 
                                                          +
                                                          85  use modv_vars, only: iprt, mtdir, lmtd
                                                          +
                                                          86 
                                                          +
                                                          87  implicit none
                                                          +
                                                          88 
                                                          +
                                                          89  integer, intent(in) :: imt, imtv, iogce, imtvl
                                                          +
                                                          90  integer ltbt, isize
                                                          +
                                                          91 
                                                          +
                                                          92  character*(*), intent(in) :: tbltyp
                                                          +
                                                          93  character*(*), intent(out) :: stdfil, locfil
                                                          +
                                                          94 
                                                          +
                                                          95  character*16 tbltyp2
                                                          +
                                                          96  character*20 fmtf
                                                          +
                                                          97  character*128 bort_str
                                                          +
                                                          98 
                                                          +
                                                          99  logical found
                                                          100 
                                                          -
                                                          101  logical found
                                                          +
                                                          101  call strsuc ( tbltyp, tbltyp2, ltbt )
                                                          102 
                                                          -
                                                          103  common /quiet/ iprt
                                                          -
                                                          104  common /mstinf/ lun1, lun2, lmtd, mtdir
                                                          -
                                                          105 
                                                          -
                                                          106  call strsuc ( tbltyp, tbltyp2, ltbt )
                                                          -
                                                          107 
                                                          -
                                                          108  ! Determine the standard master table path/filename.
                                                          -
                                                          109 
                                                          -
                                                          110  if ( ( imt == 0 ) .and. ( imtv <= 13 ) ) then
                                                          -
                                                          111  ! For master table 0, version 13 is a superset of all earlier versions.
                                                          -
                                                          112  stdfil = mtdir(1:lmtd) // '/bufrtab.' // tbltyp2(1:ltbt) // '_STD_0_13'
                                                          -
                                                          113  else
                                                          -
                                                          114  write ( fmtf, '(A,I1,A,I1,A)' ) '(4A,I', isize(imt), ',A,I', isize(imtv), ')'
                                                          -
                                                          115  write ( stdfil, fmtf ) mtdir(1:lmtd), '/bufrtab.', tbltyp2(1:ltbt), '_STD_', imt, '_', imtv
                                                          -
                                                          116  endif
                                                          -
                                                          117  if ( iprt >= 2 ) then
                                                          -
                                                          118  call errwrt('Standard ' // tbltyp2(1:ltbt) // ':')
                                                          -
                                                          119  call errwrt(stdfil)
                                                          +
                                                          103  ! Determine the standard master table path/filename.
                                                          +
                                                          104 
                                                          +
                                                          105  if ( ( imt == 0 ) .and. ( imtv <= 13 ) ) then
                                                          +
                                                          106  ! For master table 0, version 13 is a superset of all earlier versions.
                                                          +
                                                          107  stdfil = mtdir(1:lmtd) // '/bufrtab.' // tbltyp2(1:ltbt) // '_STD_0_13'
                                                          +
                                                          108  else
                                                          +
                                                          109  write ( fmtf, '(A,I1,A,I1,A)' ) '(4A,I', isize(imt), ',A,I', isize(imtv), ')'
                                                          +
                                                          110  write ( stdfil, fmtf ) mtdir(1:lmtd), '/bufrtab.', tbltyp2(1:ltbt), '_STD_', imt, '_', imtv
                                                          +
                                                          111  endif
                                                          +
                                                          112  if ( iprt >= 2 ) then
                                                          +
                                                          113  call errwrt('Standard ' // tbltyp2(1:ltbt) // ':')
                                                          +
                                                          114  call errwrt(stdfil)
                                                          +
                                                          115  endif
                                                          +
                                                          116  inquire ( file = stdfil, exist = found )
                                                          +
                                                          117  if ( .not. found ) then
                                                          +
                                                          118  bort_str = 'BUFRLIB: MTFNAM - COULD NOT FIND STANDARD FILE:'
                                                          +
                                                          119  call bort2(bort_str, stdfil)
                                                          120  endif
                                                          -
                                                          121  inquire ( file = stdfil, exist = found )
                                                          -
                                                          122  if ( .not. found ) then
                                                          -
                                                          123  bort_str = 'BUFRLIB: MTFNAM - COULD NOT FIND STANDARD FILE:'
                                                          -
                                                          124  call bort2(bort_str, stdfil)
                                                          -
                                                          125  endif
                                                          +
                                                          121 
                                                          +
                                                          122  ! Now determine the local master table path/filename.
                                                          +
                                                          123 
                                                          +
                                                          124  ! Use the local table corresponding to the originating center and local table version number, if such a table exists.
                                                          +
                                                          125  ! Otherwise use the local table from NCEP.
                                                          126 
                                                          -
                                                          127  ! Now determine the local master table path/filename.
                                                          -
                                                          128 
                                                          -
                                                          129  ! Use the local table corresponding to the originating center and local table version number, if such a table exists.
                                                          -
                                                          130  ! Otherwise use the local table from NCEP.
                                                          -
                                                          131 
                                                          -
                                                          132  write ( fmtf, '(A,I1,A,I1,A,I1,A)' ) '(4A,I', isize(imt), ',A,I', isize(iogce), ',A,I', isize(imtvl), ')'
                                                          -
                                                          133  write ( locfil, fmtf ) mtdir(1:lmtd), '/bufrtab.', tbltyp2(1:ltbt), '_LOC_', imt, '_', iogce, '_', imtvl
                                                          -
                                                          134  if ( iprt >= 2 ) then
                                                          -
                                                          135  call errwrt('Local ' // tbltyp2(1:ltbt) // ':')
                                                          -
                                                          136  call errwrt(locfil)
                                                          -
                                                          137  endif
                                                          -
                                                          138  inquire ( file = locfil, exist = found )
                                                          -
                                                          139  if ( .not. found ) then
                                                          -
                                                          140  ! Use the local table from NCEP.
                                                          -
                                                          141  locfil = mtdir(1:lmtd) // '/bufrtab.' // tbltyp2(1:ltbt) // '_LOC_0_7_1'
                                                          -
                                                          142  if ( iprt >= 2 ) then
                                                          -
                                                          143  call errwrt('Local ' // tbltyp2(1:ltbt) // ' not found, so using:')
                                                          -
                                                          144  call errwrt(locfil)
                                                          +
                                                          127  write ( fmtf, '(A,I1,A,I1,A,I1,A)' ) '(4A,I', isize(imt), ',A,I', isize(iogce), ',A,I', isize(imtvl), ')'
                                                          +
                                                          128  write ( locfil, fmtf ) mtdir(1:lmtd), '/bufrtab.', tbltyp2(1:ltbt), '_LOC_', imt, '_', iogce, '_', imtvl
                                                          +
                                                          129  if ( iprt >= 2 ) then
                                                          +
                                                          130  call errwrt('Local ' // tbltyp2(1:ltbt) // ':')
                                                          +
                                                          131  call errwrt(locfil)
                                                          +
                                                          132  endif
                                                          +
                                                          133  inquire ( file = locfil, exist = found )
                                                          +
                                                          134  if ( .not. found ) then
                                                          +
                                                          135  ! Use the local table from NCEP.
                                                          +
                                                          136  locfil = mtdir(1:lmtd) // '/bufrtab.' // tbltyp2(1:ltbt) // '_LOC_0_7_1'
                                                          +
                                                          137  if ( iprt >= 2 ) then
                                                          +
                                                          138  call errwrt('Local ' // tbltyp2(1:ltbt) // ' not found, so using:')
                                                          +
                                                          139  call errwrt(locfil)
                                                          +
                                                          140  endif
                                                          +
                                                          141  inquire ( file = locfil, exist = found )
                                                          +
                                                          142  if ( .not. found ) then
                                                          +
                                                          143  bort_str = 'BUFRLIB: MTFNAM - COULD NOT FIND LOCAL FILE:'
                                                          +
                                                          144  call bort2(bort_str, locfil)
                                                          145  endif
                                                          -
                                                          146  inquire ( file = locfil, exist = found )
                                                          -
                                                          147  if ( .not. found ) then
                                                          -
                                                          148  bort_str = 'BUFRLIB: MTFNAM - COULD NOT FIND LOCAL FILE:'
                                                          -
                                                          149  call bort2(bort_str, locfil)
                                                          -
                                                          150  endif
                                                          -
                                                          151  endif
                                                          -
                                                          152 
                                                          -
                                                          153  return
                                                          -
                                                          154 end subroutine mtfnam
                                                          -
                                                          155 
                                                          -
                                                          177 integer function ireadmt ( lun ) result ( iret )
                                                          -
                                                          178 
                                                          -
                                                          179  use bufrlib
                                                          -
                                                          180 
                                                          -
                                                          181  use modv_vars, only: maxnc, maxcd, mxmtbb, mxmtbd
                                                          +
                                                          146  endif
                                                          +
                                                          147 
                                                          +
                                                          148  return
                                                          +
                                                          149 end subroutine mtfnam
                                                          +
                                                          150 
                                                          +
                                                          170 integer function ireadmt ( lun ) result ( iret )
                                                          +
                                                          171 
                                                          +
                                                          172  use bufrlib
                                                          +
                                                          173 
                                                          +
                                                          174  use modv_vars, only: maxnc, maxcd, mxmtbb, mxmtbd, iprt, lun1, lun2, lmt, lmtv, logce, lmtvl
                                                          +
                                                          175 
                                                          +
                                                          176  use moda_mstabs
                                                          +
                                                          177  use moda_bitbuf
                                                          +
                                                          178  use moda_rdmtb
                                                          +
                                                          179  use moda_sc3bfr
                                                          +
                                                          180  use moda_s3list
                                                          +
                                                          181  use moda_tablef
                                                          182 
                                                          -
                                                          183  use moda_mstabs
                                                          -
                                                          184  use moda_bitbuf
                                                          -
                                                          185  use moda_rdmtb
                                                          -
                                                          186  use moda_sc3bfr
                                                          -
                                                          187  use moda_s3list
                                                          -
                                                          188  use moda_tablef
                                                          -
                                                          189 
                                                          -
                                                          190  implicit none
                                                          -
                                                          191 
                                                          -
                                                          192  integer, intent(in) :: lun
                                                          -
                                                          193  integer iprt, lun1, lun2, lmtd, lmt, lmtv, logce, lmtvl, imt, imtv, iogce, imtvl, ii, jj, idx, ncds3, ier, &
                                                          -
                                                          194  ibmt, ibmtv, ibogce, ibltv, idmt, idmtv, idogce, idltv, iupbs01, ifxy, istdesc
                                                          -
                                                          195 
                                                          -
                                                          196  character*(*), parameter :: bort_str1 = 'BUFRLIB: IREADMT - COULD NOT OPEN STANDARD FILE:'
                                                          -
                                                          197  character*(*), parameter :: bort_str2 = 'BUFRLIB: IREADMT - COULD NOT OPEN LOCAL FILE:'
                                                          -
                                                          198  character*275 stdfil,locfil
                                                          -
                                                          199  character*240 mtdir
                                                          +
                                                          183  implicit none
                                                          +
                                                          184 
                                                          +
                                                          185  integer, intent(in) :: lun
                                                          +
                                                          186  integer imt, imtv, iogce, imtvl, ii, jj, idx, ncds3, ier, ibmt, ibmtv, ibogce, ibltv, idmt, idmtv, idogce, idltv, &
                                                          + +
                                                          188 
                                                          +
                                                          189  character*(*), parameter :: bort_str1 = 'BUFRLIB: IREADMT - COULD NOT OPEN STANDARD FILE:'
                                                          +
                                                          190  character*(*), parameter :: bort_str2 = 'BUFRLIB: IREADMT - COULD NOT OPEN LOCAL FILE:'
                                                          +
                                                          191  character*275 stdfil,locfil
                                                          +
                                                          192 
                                                          +
                                                          193  logical allstd
                                                          +
                                                          194 
                                                          +
                                                          195  ! Initializing the following value ensures that new master tables are read during the first call to this subroutine.
                                                          +
                                                          196 
                                                          +
                                                          197  iret = 0
                                                          +
                                                          198 
                                                          +
                                                          199  ! Unpack some Section 1 information from the message that was most recently read.
                                                          200 
                                                          -
                                                          201  logical allstd
                                                          -
                                                          202 
                                                          -
                                                          203  common /quiet/ iprt
                                                          -
                                                          204  common /mstinf/ lun1, lun2, lmtd, mtdir
                                                          +
                                                          201  imt = iupbs01( mbay(1,lun), 'BMT' )
                                                          +
                                                          202  imtv = iupbs01( mbay(1,lun), 'MTV' )
                                                          +
                                                          203  iogce = iupbs01( mbay(1,lun), 'OGCE' )
                                                          +
                                                          204  imtvl = iupbs01( mbay(1,lun), 'MTVL' )
                                                          205 
                                                          -
                                                          206  ! Initializing the following value ensures that new master tables are read during the first call to this subroutine.
                                                          -
                                                          207 
                                                          -
                                                          208  data lmt /-99/
                                                          -
                                                          209 
                                                          -
                                                          210  save lmt, lmtv, logce, lmtvl
                                                          -
                                                          211 
                                                          -
                                                          212  iret = 0
                                                          -
                                                          213 
                                                          -
                                                          214  ! Unpack some Section 1 information from the message that was most recently read.
                                                          -
                                                          215 
                                                          -
                                                          216  imt = iupbs01( mbay(1,lun), 'BMT' )
                                                          -
                                                          217  imtv = iupbs01( mbay(1,lun), 'MTV' )
                                                          -
                                                          218  iogce = iupbs01( mbay(1,lun), 'OGCE' )
                                                          -
                                                          219  imtvl = iupbs01( mbay(1,lun), 'MTVL' )
                                                          -
                                                          220 
                                                          -
                                                          221  ! Compare the master table and master table version numbers from this message to those from the message that was
                                                          -
                                                          222  ! processed during the previous call to this subroutine.
                                                          +
                                                          206  ! Compare the master table and master table version numbers from this message to those from the message that was
                                                          +
                                                          207  ! processed during the previous call to this subroutine.
                                                          +
                                                          208 
                                                          +
                                                          209  if ( ( imt /= lmt ) .or. ( ( imt /= 0 ) .and. ( imtv /= lmtv ) ) .or. &
                                                          +
                                                          210  ( ( imt == 0 ) .and. ( imtv /= lmtv ) .and. ( ( imtv > 13 ) .or. ( lmtv > 13 ) ) ) ) then
                                                          +
                                                          211  ! Either the master table number has changed
                                                          +
                                                          212  ! OR
                                                          +
                                                          213  ! The master table number hasn't changed, but it isn't 0, and the table version number has changed
                                                          +
                                                          214  ! OR
                                                          +
                                                          215  ! The master table number hasn't changed and is 0, but the table version number has changed, and at least one of the
                                                          +
                                                          216  ! table version numbers (i.e. the current or the previous) is greater than 13 (which is the last version that was a
                                                          +
                                                          217  ! superset of all earlier versions of master table 0!)
                                                          +
                                                          218 
                                                          +
                                                          219  ! In any of these cases, we need to read in new tables!
                                                          +
                                                          220  iret = 1
                                                          +
                                                          221 
                                                          +
                                                          222  else
                                                          223 
                                                          -
                                                          224  if ( ( imt /= lmt ) .or. ( ( imt /= 0 ) .and. ( imtv /= lmtv ) ) .or. &
                                                          -
                                                          225  ( ( imt == 0 ) .and. ( imtv /= lmtv ) .and. ( ( imtv > 13 ) .or. ( lmtv > 13 ) ) ) ) then
                                                          -
                                                          226  ! Either the master table number has changed
                                                          -
                                                          227  ! OR
                                                          -
                                                          228  ! The master table number hasn't changed, but it isn't 0, and the table version number has changed
                                                          -
                                                          229  ! OR
                                                          -
                                                          230  ! The master table number hasn't changed and is 0, but the table version number has changed, and at least one of the
                                                          -
                                                          231  ! table version numbers (i.e. the current or the previous) is greater than 13 (which is the last version that was a
                                                          -
                                                          232  ! superset of all earlier versions of master table 0!)
                                                          -
                                                          233 
                                                          -
                                                          234  ! In any of these cases, we need to read in new tables!
                                                          -
                                                          235  iret = 1
                                                          -
                                                          236 
                                                          -
                                                          237  else
                                                          -
                                                          238 
                                                          -
                                                          239  ! Unpack the list of Section 3 descriptors from the message and determine if any of them are local descriptors.
                                                          -
                                                          240  call upds3 ( mbay(1,lun), maxnc, cds3, ncds3 )
                                                          -
                                                          241  ii = 1
                                                          -
                                                          242  allstd = .true.
                                                          -
                                                          243  do while ( (allstd) .and. (ii<=ncds3) )
                                                          -
                                                          244  if ( istdesc(ifxy(cds3(ii))) == 0 ) then
                                                          -
                                                          245  allstd = .false.
                                                          -
                                                          246  else
                                                          -
                                                          247  ii = ii + 1
                                                          -
                                                          248  endif
                                                          -
                                                          249  enddo
                                                          -
                                                          250 
                                                          -
                                                          251  ! If there was at least one local (i.e. non-standard) descriptor, and if either the originating center or local table
                                                          -
                                                          252  ! version number are different than those from the message that was processed during the previous call to this subroutine,
                                                          -
                                                          253  ! then we need to read in new tables.
                                                          -
                                                          254  if ( ( .not. allstd ) .and. ( ( iogce /= logce ) .or. ( imtvl /= lmtvl ) ) ) iret = 1
                                                          +
                                                          224  ! Unpack the list of Section 3 descriptors from the message and determine if any of them are local descriptors.
                                                          +
                                                          225  call upds3 ( mbay(1,lun), maxnc, cds3, ncds3 )
                                                          +
                                                          226  ii = 1
                                                          +
                                                          227  allstd = .true.
                                                          +
                                                          228  do while ( (allstd) .and. (ii<=ncds3) )
                                                          +
                                                          229  if ( istdesc(ifxy(cds3(ii))) == 0 ) then
                                                          +
                                                          230  allstd = .false.
                                                          +
                                                          231  else
                                                          +
                                                          232  ii = ii + 1
                                                          +
                                                          233  endif
                                                          +
                                                          234  enddo
                                                          +
                                                          235 
                                                          +
                                                          236  ! If there was at least one local (i.e. non-standard) descriptor, and if either the originating center or local table
                                                          +
                                                          237  ! version number are different than those from the message that was processed during the previous call to this subroutine,
                                                          +
                                                          238  ! then we need to read in new tables.
                                                          +
                                                          239  if ( ( .not. allstd ) .and. ( ( iogce /= logce ) .or. ( imtvl /= lmtvl ) ) ) iret = 1
                                                          +
                                                          240 
                                                          +
                                                          241  endif
                                                          +
                                                          242 
                                                          +
                                                          243  if ( iret == 0 ) return
                                                          +
                                                          244 
                                                          +
                                                          245  lmt = imt
                                                          +
                                                          246  lmtv = imtv
                                                          +
                                                          247  logce = iogce
                                                          +
                                                          248  lmtvl = imtvl
                                                          +
                                                          249 
                                                          +
                                                          250  if ( iprt >= 2 ) then
                                                          +
                                                          251  call errwrt(' ')
                                                          +
                                                          252  call errwrt('+++++++++++++++++++++++++++++++++++++++++++++++++')
                                                          +
                                                          253  call errwrt('BUFRLIB: IREADMT - OPENING/READING MASTER TABLES')
                                                          +
                                                          254  endif
                                                          255 
                                                          -
                                                          256  endif
                                                          +
                                                          256  if ( isc3(lun) /= 0 ) then
                                                          257 
                                                          -
                                                          258  if ( iret == 0 ) return
                                                          -
                                                          259 
                                                          -
                                                          260  lmt = imt
                                                          -
                                                          261  lmtv = imtv
                                                          -
                                                          262  logce = iogce
                                                          -
                                                          263  lmtvl = imtvl
                                                          -
                                                          264 
                                                          -
                                                          265  if ( iprt >= 2 ) then
                                                          -
                                                          266  call errwrt(' ')
                                                          -
                                                          267  call errwrt('+++++++++++++++++++++++++++++++++++++++++++++++++')
                                                          -
                                                          268  call errwrt('BUFRLIB: IREADMT - OPENING/READING MASTER TABLES')
                                                          -
                                                          269  endif
                                                          -
                                                          270 
                                                          -
                                                          271  if ( isc3(lun) /= 0 ) then
                                                          -
                                                          272 
                                                          -
                                                          273  ! Locate and open the master Table B files. There should be one file of standard descriptors and one file of local
                                                          -
                                                          274  ! descriptors.
                                                          -
                                                          275  call mtfnam ( imt, imtv, iogce, imtvl, 'TableB', stdfil, locfil )
                                                          -
                                                          276  open ( unit = lun1, file = stdfil, iostat = ier )
                                                          -
                                                          277  if ( ier /= 0 ) call bort2(bort_str1, stdfil)
                                                          -
                                                          278  open ( unit = lun2, file = locfil, iostat = ier )
                                                          -
                                                          279  if ( ier /= 0 ) call bort2(bort_str2, locfil)
                                                          -
                                                          280 
                                                          -
                                                          281  ! Read the master Table B files.
                                                          -
                                                          282  call rdmtbb ( lun1, lun2, mxmtbb, ibmt, ibmtv, ibogce, ibltv, nmtb, ibfxyn, cbscl, cbsref, cbbw, &
                                                          - -
                                                          284 
                                                          -
                                                          285  ! Close the master Table B files.
                                                          -
                                                          286  close ( unit = lun1 )
                                                          -
                                                          287  close ( unit = lun2 )
                                                          -
                                                          288 
                                                          -
                                                          289  ! Locate and open the master Table D files. There should be one file of standard descriptors and one file of local
                                                          -
                                                          290  ! descriptors.
                                                          -
                                                          291  call mtfnam ( imt, imtv, iogce, imtvl, 'TableD', stdfil, locfil )
                                                          -
                                                          292  open ( unit = lun1, file = stdfil, iostat = ier )
                                                          -
                                                          293  if ( ier /= 0 ) call bort2(bort_str1, stdfil)
                                                          -
                                                          294  open ( unit = lun2, file = locfil, iostat = ier )
                                                          -
                                                          295  if ( ier /= 0 ) call bort2(bort_str2, locfil)
                                                          -
                                                          296 
                                                          -
                                                          297  ! Read the master Table D files.
                                                          -
                                                          298  call rdmtbd ( lun1, lun2, mxmtbd, maxcd, idmt, idmtv, idogce, idltv, nmtd, idfxyn, cdmnem, cmdscd, cdseq, &
                                                          -
                                                          299  ndelem, iefxyn, ceelem )
                                                          -
                                                          300  do ii = 1, nmtd
                                                          -
                                                          301  do jj = 1, ndelem(ii)
                                                          -
                                                          302  idx = icvidx_c( ii-1, jj-1, maxcd ) + 1
                                                          -
                                                          303  idefxy(idx) = iefxyn(ii,jj)
                                                          -
                                                          304  enddo
                                                          -
                                                          305  enddo
                                                          -
                                                          306 
                                                          -
                                                          307  ! Close the master Table D files.
                                                          -
                                                          308  close ( unit = lun1 )
                                                          -
                                                          309  close ( unit = lun2 )
                                                          +
                                                          258  ! Locate and open the master Table B files. There should be one file of standard descriptors and one file of local
                                                          +
                                                          259  ! descriptors.
                                                          +
                                                          260  call mtfnam ( imt, imtv, iogce, imtvl, 'TableB', stdfil, locfil )
                                                          +
                                                          261  open ( unit = lun1, file = stdfil, iostat = ier )
                                                          +
                                                          262  if ( ier /= 0 ) call bort2(bort_str1, stdfil)
                                                          +
                                                          263  open ( unit = lun2, file = locfil, iostat = ier )
                                                          +
                                                          264  if ( ier /= 0 ) call bort2(bort_str2, locfil)
                                                          +
                                                          265 
                                                          +
                                                          266  ! Read the master Table B files.
                                                          +
                                                          267  call rdmtbb ( lun1, lun2, mxmtbb, ibmt, ibmtv, ibogce, ibltv, nmtb, ibfxyn, cbscl, cbsref, cbbw, &
                                                          + +
                                                          269 
                                                          +
                                                          270  ! Close the master Table B files.
                                                          +
                                                          271  close ( unit = lun1 )
                                                          +
                                                          272  close ( unit = lun2 )
                                                          +
                                                          273 
                                                          +
                                                          274  ! Locate and open the master Table D files. There should be one file of standard descriptors and one file of local
                                                          +
                                                          275  ! descriptors.
                                                          +
                                                          276  call mtfnam ( imt, imtv, iogce, imtvl, 'TableD', stdfil, locfil )
                                                          +
                                                          277  open ( unit = lun1, file = stdfil, iostat = ier )
                                                          +
                                                          278  if ( ier /= 0 ) call bort2(bort_str1, stdfil)
                                                          +
                                                          279  open ( unit = lun2, file = locfil, iostat = ier )
                                                          +
                                                          280  if ( ier /= 0 ) call bort2(bort_str2, locfil)
                                                          +
                                                          281 
                                                          +
                                                          282  ! Read the master Table D files.
                                                          +
                                                          283  call rdmtbd ( lun1, lun2, mxmtbd, maxcd, idmt, idmtv, idogce, idltv, nmtd, idfxyn, cdmnem, cmdscd, cdseq, &
                                                          +
                                                          284  ndelem, iefxyn, ceelem )
                                                          +
                                                          285  do ii = 1, nmtd
                                                          +
                                                          286  do jj = 1, ndelem(ii)
                                                          +
                                                          287  idx = icvidx_c( ii-1, jj-1, maxcd ) + 1
                                                          +
                                                          288  idefxy(idx) = iefxyn(ii,jj)
                                                          +
                                                          289  enddo
                                                          +
                                                          290  enddo
                                                          +
                                                          291 
                                                          +
                                                          292  ! Close the master Table D files.
                                                          +
                                                          293  close ( unit = lun1 )
                                                          +
                                                          294  close ( unit = lun2 )
                                                          +
                                                          295 
                                                          +
                                                          296  ! Copy master table B and D information into internal C arrays.
                                                          + +
                                                          298  ndelem, idefxy, maxcd )
                                                          +
                                                          299  endif
                                                          +
                                                          300 
                                                          +
                                                          301  if ( cdmf == 'Y' ) then
                                                          +
                                                          302 
                                                          +
                                                          303  ! Locate and open the master code and flag table files. There should be one file corresponding to the standard Table B
                                                          +
                                                          304  ! descriptors, and one file corresponding to the local Table B descriptors.
                                                          +
                                                          305  call mtfnam ( imt, imtv, iogce, imtvl, 'CodeFlag', stdfil, locfil )
                                                          +
                                                          306  open ( unit = lun1, file = stdfil, iostat = ier )
                                                          +
                                                          307  if ( ier /= 0 ) call bort2(bort_str1, stdfil)
                                                          +
                                                          308  open ( unit = lun2, file = locfil, iostat = ier )
                                                          +
                                                          309  if ( ier /= 0 ) call bort2(bort_str2, locfil)
                                                          310 
                                                          -
                                                          311  ! Copy master table B and D information into internal C arrays.
                                                          - -
                                                          313  ndelem, idefxy, maxcd )
                                                          -
                                                          314  endif
                                                          -
                                                          315 
                                                          -
                                                          316  if ( cdmf == 'Y' ) then
                                                          -
                                                          317 
                                                          -
                                                          318  ! Locate and open the master code and flag table files. There should be one file corresponding to the standard Table B
                                                          -
                                                          319  ! descriptors, and one file corresponding to the local Table B descriptors.
                                                          -
                                                          320  call mtfnam ( imt, imtv, iogce, imtvl, 'CodeFlag', stdfil, locfil )
                                                          -
                                                          321  open ( unit = lun1, file = stdfil, iostat = ier )
                                                          -
                                                          322  if ( ier /= 0 ) call bort2(bort_str1, stdfil)
                                                          -
                                                          323  open ( unit = lun2, file = locfil, iostat = ier )
                                                          -
                                                          324  if ( ier /= 0 ) call bort2(bort_str2, locfil)
                                                          -
                                                          325 
                                                          -
                                                          326  ! Read the master code and flag table files.
                                                          -
                                                          327  call rdmtbf ( lun1, lun2 )
                                                          -
                                                          328 
                                                          -
                                                          329  ! Close the master code and flag table files.
                                                          -
                                                          330  close ( unit = lun1 )
                                                          -
                                                          331  close ( unit = lun2 )
                                                          -
                                                          332  endif
                                                          -
                                                          333 
                                                          -
                                                          334  if ( iprt >= 2 ) then
                                                          -
                                                          335  call errwrt('+++++++++++++++++++++++++++++++++++++++++++++++++')
                                                          -
                                                          336  call errwrt(' ')
                                                          -
                                                          337  endif
                                                          -
                                                          338 
                                                          -
                                                          339  return
                                                          -
                                                          340 end function ireadmt
                                                          -
                                                          341 
                                                          -
                                                          370 subroutine rdmtbb ( lunstb, lunltb, mxmtbb, imt, imtv, iogce, iltv, nmtbb, imfxyn, cmscl, cmsref, cmbw, &
                                                          -
                                                          371  cmunit, cmmnem, cmdsc, cmelem )
                                                          +
                                                          311  ! Read the master code and flag table files.
                                                          +
                                                          312  call rdmtbf ( lun1, lun2 )
                                                          +
                                                          313 
                                                          +
                                                          314  ! Close the master code and flag table files.
                                                          +
                                                          315  close ( unit = lun1 )
                                                          +
                                                          316  close ( unit = lun2 )
                                                          +
                                                          317  endif
                                                          +
                                                          318 
                                                          +
                                                          319  if ( iprt >= 2 ) then
                                                          +
                                                          320  call errwrt('+++++++++++++++++++++++++++++++++++++++++++++++++')
                                                          +
                                                          321  call errwrt(' ')
                                                          +
                                                          322  endif
                                                          +
                                                          323 
                                                          +
                                                          324  return
                                                          +
                                                          325 end function ireadmt
                                                          +
                                                          326 
                                                          +
                                                          355 subroutine rdmtbb ( lunstb, lunltb, mxmtbb, imt, imtv, iogce, iltv, nmtbb, imfxyn, cmscl, cmsref, cmbw, &
                                                          +
                                                          356  cmunit, cmmnem, cmdsc, cmelem )
                                                          +
                                                          357 
                                                          +
                                                          358  implicit none
                                                          +
                                                          359 
                                                          +
                                                          360  integer, intent(in) :: lunstb, lunltb, mxmtbb
                                                          +
                                                          361  integer, intent(out) :: imt, imtv, iogce, iltv, nmtbb, imfxyn(*)
                                                          +
                                                          362  integer isfxyn, ilfxyn, iers, ierl
                                                          +
                                                          363 
                                                          +
                                                          364  character, intent(out) :: cmelem(120,*), cmunit(24,*), cmsref(12,*), cmmnem(8,*), cmscl(4,*), cmbw(4,*), cmdsc(*)*4
                                                          +
                                                          365  character*200 stline, ltline
                                                          +
                                                          366  character*128 bort_str
                                                          +
                                                          367  character*6 cmatch, adn30
                                                          +
                                                          368 
                                                          +
                                                          369  ! Read and parse the header lines of both files.
                                                          +
                                                          370 
                                                          +
                                                          371  call gettbh ( lunstb, lunltb, 'B', imt, imtv, iogce, iltv )
                                                          372 
                                                          -
                                                          373  implicit none
                                                          +
                                                          373  ! Read through the remainder of both files, merging the contents into a unified set of master Table B arrays.
                                                          374 
                                                          -
                                                          375  integer, intent(in) :: lunstb, lunltb, mxmtbb
                                                          -
                                                          376  integer, intent(out) :: imt, imtv, iogce, iltv, nmtbb, imfxyn(*)
                                                          -
                                                          377  integer isfxyn, ilfxyn, iers, ierl
                                                          -
                                                          378 
                                                          -
                                                          379  character, intent(out) :: cmelem(120,*), cmunit(24,*), cmsref(12,*), cmmnem(8,*), cmscl(4,*), cmbw(4,*), cmdsc(*)*4
                                                          -
                                                          380  character*200 stline, ltline
                                                          -
                                                          381  character*128 bort_str
                                                          -
                                                          382  character*6 cmatch, adn30
                                                          -
                                                          383 
                                                          -
                                                          384  ! Read and parse the header lines of both files.
                                                          -
                                                          385 
                                                          -
                                                          386  call gettbh ( lunstb, lunltb, 'B', imt, imtv, iogce, iltv )
                                                          -
                                                          387 
                                                          -
                                                          388  ! Read through the remainder of both files, merging the contents into a unified set of master Table B arrays.
                                                          -
                                                          389 
                                                          -
                                                          390  nmtbb = 0
                                                          -
                                                          391  call getntbe ( lunstb, isfxyn, stline, iers )
                                                          -
                                                          392  call getntbe ( lunltb, ilfxyn, ltline, ierl )
                                                          -
                                                          393  do while ( ( iers == 0 ) .or. ( ierl == 0 ) )
                                                          -
                                                          394  if ( ( iers == 0 ) .and. ( ierl == 0 ) ) then
                                                          -
                                                          395  if ( isfxyn == ilfxyn ) then
                                                          -
                                                          396  cmatch = adn30( isfxyn, 6 )
                                                          -
                                                          397  write(bort_str,'("BUFRLIB: RDMTBB - STANDARD AND LOCAL '// &
                                                          -
                                                          398  'TABLE B FILES BOTH CONTAIN SAME FXY NUMBER: ",5A)') cmatch(1:1), '-', cmatch(2:3), '-', cmatch(4:6)
                                                          -
                                                          399  call bort(bort_str)
                                                          -
                                                          400  else if ( isfxyn < ilfxyn ) then
                                                          -
                                                          401  call sntbbe ( isfxyn, stline, mxmtbb, nmtbb, imfxyn, cmscl, cmsref, cmbw, cmunit, cmmnem, cmdsc, cmelem )
                                                          -
                                                          402  call getntbe ( lunstb, isfxyn, stline, iers )
                                                          -
                                                          403  else
                                                          -
                                                          404  call sntbbe ( ilfxyn, ltline, mxmtbb, nmtbb, imfxyn, cmscl, cmsref, cmbw, cmunit, cmmnem, cmdsc, cmelem )
                                                          -
                                                          405  call getntbe ( lunltb, ilfxyn, ltline, ierl )
                                                          -
                                                          406  endif
                                                          -
                                                          407  else if ( iers == 0 ) then
                                                          -
                                                          408  call sntbbe ( isfxyn, stline, mxmtbb, nmtbb, imfxyn, cmscl, cmsref, cmbw, cmunit, cmmnem, cmdsc, cmelem )
                                                          -
                                                          409  call getntbe ( lunstb, isfxyn, stline, iers )
                                                          -
                                                          410  else
                                                          -
                                                          411  call sntbbe ( ilfxyn, ltline, mxmtbb, nmtbb, imfxyn, cmscl, cmsref, cmbw, cmunit, cmmnem, cmdsc, cmelem )
                                                          -
                                                          412  call getntbe ( lunltb, ilfxyn, ltline, ierl )
                                                          -
                                                          413  endif
                                                          -
                                                          414  enddo
                                                          -
                                                          415 
                                                          -
                                                          416  return
                                                          -
                                                          417 end subroutine rdmtbb
                                                          -
                                                          418 
                                                          -
                                                          448 subroutine rdmtbd ( lunstd, lunltd, mxmtbd, mxelem, imt, imtv, iogce, iltv, nmtbd, imfxyn, cmmnem, cmdsc, cmseq, &
                                                          -
                                                          449  nmelem, iefxyn, ceelem )
                                                          -
                                                          450 
                                                          -
                                                          451  implicit none
                                                          -
                                                          452 
                                                          -
                                                          453  integer, intent(in) :: lunstd, lunltd, mxmtbd, mxelem
                                                          -
                                                          454  integer, intent(out) :: imt, imtv, iogce, iltv, nmtbd, imfxyn(*), nmelem(*), iefxyn(mxmtbd,mxelem)
                                                          -
                                                          455  integer isfxyn, ilfxyn, iers, ierl
                                                          -
                                                          456 
                                                          -
                                                          457  character, intent(out) :: cmseq(120,*), cmmnem(8,*), cmdsc(*)*4, ceelem(mxmtbd,mxelem)*120
                                                          -
                                                          458 
                                                          -
                                                          459  character*200 stline, ltline
                                                          -
                                                          460  character*128 bort_str
                                                          -
                                                          461  character*6 cmatch, adn30
                                                          -
                                                          462 
                                                          -
                                                          463  ! Read and parse the header lines of both files.
                                                          -
                                                          464 
                                                          -
                                                          465  call gettbh ( lunstd, lunltd, 'D', imt, imtv, iogce, iltv )
                                                          -
                                                          466 
                                                          -
                                                          467  ! Read through the remainder of both files, merging the contents into a unified set of master Table D arrays.
                                                          -
                                                          468 
                                                          -
                                                          469  nmtbd = 0
                                                          -
                                                          470  call getntbe ( lunstd, isfxyn, stline, iers )
                                                          -
                                                          471  call getntbe ( lunltd, ilfxyn, ltline, ierl )
                                                          -
                                                          472  do while ( ( iers == 0 ) .or. ( ierl == 0 ) )
                                                          -
                                                          473  if ( ( iers == 0 ) .and. ( ierl == 0 ) ) then
                                                          -
                                                          474  if ( isfxyn == ilfxyn ) then
                                                          -
                                                          475  cmatch = adn30( isfxyn, 6 )
                                                          -
                                                          476  write(bort_str,'("BUFRLIB: RDMTBD - STANDARD AND LOCAL '// &
                                                          -
                                                          477  'TABLE D FILES BOTH CONTAIN SAME FXY NUMBER: ",5A)') cmatch(1:1), '-', cmatch(2:3), '-', cmatch(4:6)
                                                          -
                                                          478  call bort(bort_str)
                                                          -
                                                          479  else if ( isfxyn < ilfxyn ) then
                                                          -
                                                          480  call sntbde ( lunstd, isfxyn, stline, mxmtbd, mxelem, nmtbd, imfxyn, cmmnem, cmdsc, cmseq, nmelem, iefxyn, ceelem )
                                                          -
                                                          481  call getntbe ( lunstd, isfxyn, stline, iers )
                                                          -
                                                          482  else
                                                          -
                                                          483  call sntbde ( lunltd, ilfxyn, ltline, mxmtbd, mxelem, nmtbd, imfxyn, cmmnem, cmdsc, cmseq, nmelem, iefxyn, ceelem )
                                                          -
                                                          484  call getntbe ( lunltd, ilfxyn, ltline, ierl )
                                                          -
                                                          485  endif
                                                          -
                                                          486  else if ( iers == 0 ) then
                                                          -
                                                          487  call sntbde ( lunstd, isfxyn, stline, mxmtbd, mxelem, nmtbd, imfxyn, cmmnem, cmdsc, cmseq, nmelem, iefxyn, ceelem )
                                                          -
                                                          488  call getntbe ( lunstd, isfxyn, stline, iers )
                                                          -
                                                          489  else
                                                          -
                                                          490  call sntbde ( lunltd, ilfxyn, ltline, mxmtbd, mxelem, nmtbd, imfxyn, cmmnem, cmdsc, cmseq, nmelem, iefxyn, ceelem )
                                                          -
                                                          491  call getntbe ( lunltd, ilfxyn, ltline, ierl )
                                                          -
                                                          492  endif
                                                          -
                                                          493  enddo
                                                          -
                                                          494 
                                                          -
                                                          495  return
                                                          -
                                                          496 end subroutine rdmtbd
                                                          +
                                                          375  nmtbb = 0
                                                          +
                                                          376  call getntbe ( lunstb, isfxyn, stline, iers )
                                                          +
                                                          377  call getntbe ( lunltb, ilfxyn, ltline, ierl )
                                                          +
                                                          378  do while ( ( iers == 0 ) .or. ( ierl == 0 ) )
                                                          +
                                                          379  if ( ( iers == 0 ) .and. ( ierl == 0 ) ) then
                                                          +
                                                          380  if ( isfxyn == ilfxyn ) then
                                                          +
                                                          381  cmatch = adn30( isfxyn, 6 )
                                                          +
                                                          382  write(bort_str,'("BUFRLIB: RDMTBB - STANDARD AND LOCAL '// &
                                                          +
                                                          383  'TABLE B FILES BOTH CONTAIN SAME FXY NUMBER: ",5A)') cmatch(1:1), '-', cmatch(2:3), '-', cmatch(4:6)
                                                          +
                                                          384  call bort(bort_str)
                                                          +
                                                          385  else if ( isfxyn < ilfxyn ) then
                                                          +
                                                          386  call sntbbe ( isfxyn, stline, mxmtbb, nmtbb, imfxyn, cmscl, cmsref, cmbw, cmunit, cmmnem, cmdsc, cmelem )
                                                          +
                                                          387  call getntbe ( lunstb, isfxyn, stline, iers )
                                                          +
                                                          388  else
                                                          +
                                                          389  call sntbbe ( ilfxyn, ltline, mxmtbb, nmtbb, imfxyn, cmscl, cmsref, cmbw, cmunit, cmmnem, cmdsc, cmelem )
                                                          +
                                                          390  call getntbe ( lunltb, ilfxyn, ltline, ierl )
                                                          +
                                                          391  endif
                                                          +
                                                          392  else if ( iers == 0 ) then
                                                          +
                                                          393  call sntbbe ( isfxyn, stline, mxmtbb, nmtbb, imfxyn, cmscl, cmsref, cmbw, cmunit, cmmnem, cmdsc, cmelem )
                                                          +
                                                          394  call getntbe ( lunstb, isfxyn, stline, iers )
                                                          +
                                                          395  else
                                                          +
                                                          396  call sntbbe ( ilfxyn, ltline, mxmtbb, nmtbb, imfxyn, cmscl, cmsref, cmbw, cmunit, cmmnem, cmdsc, cmelem )
                                                          +
                                                          397  call getntbe ( lunltb, ilfxyn, ltline, ierl )
                                                          +
                                                          398  endif
                                                          +
                                                          399  enddo
                                                          +
                                                          400 
                                                          +
                                                          401  return
                                                          +
                                                          402 end subroutine rdmtbb
                                                          +
                                                          403 
                                                          +
                                                          433 subroutine rdmtbd ( lunstd, lunltd, mxmtbd, mxelem, imt, imtv, iogce, iltv, nmtbd, imfxyn, cmmnem, cmdsc, cmseq, &
                                                          +
                                                          434  nmelem, iefxyn, ceelem )
                                                          +
                                                          435 
                                                          +
                                                          436  implicit none
                                                          +
                                                          437 
                                                          +
                                                          438  integer, intent(in) :: lunstd, lunltd, mxmtbd, mxelem
                                                          +
                                                          439  integer, intent(out) :: imt, imtv, iogce, iltv, nmtbd, imfxyn(*), nmelem(*), iefxyn(mxmtbd,mxelem)
                                                          +
                                                          440  integer isfxyn, ilfxyn, iers, ierl
                                                          +
                                                          441 
                                                          +
                                                          442  character, intent(out) :: cmseq(120,*), cmmnem(8,*), cmdsc(*)*4, ceelem(mxmtbd,mxelem)*120
                                                          +
                                                          443 
                                                          +
                                                          444  character*200 stline, ltline
                                                          +
                                                          445  character*128 bort_str
                                                          +
                                                          446  character*6 cmatch, adn30
                                                          +
                                                          447 
                                                          +
                                                          448  ! Read and parse the header lines of both files.
                                                          +
                                                          449 
                                                          +
                                                          450  call gettbh ( lunstd, lunltd, 'D', imt, imtv, iogce, iltv )
                                                          +
                                                          451 
                                                          +
                                                          452  ! Read through the remainder of both files, merging the contents into a unified set of master Table D arrays.
                                                          +
                                                          453 
                                                          +
                                                          454  nmtbd = 0
                                                          +
                                                          455  call getntbe ( lunstd, isfxyn, stline, iers )
                                                          +
                                                          456  call getntbe ( lunltd, ilfxyn, ltline, ierl )
                                                          +
                                                          457  do while ( ( iers == 0 ) .or. ( ierl == 0 ) )
                                                          +
                                                          458  if ( ( iers == 0 ) .and. ( ierl == 0 ) ) then
                                                          +
                                                          459  if ( isfxyn == ilfxyn ) then
                                                          +
                                                          460  cmatch = adn30( isfxyn, 6 )
                                                          +
                                                          461  write(bort_str,'("BUFRLIB: RDMTBD - STANDARD AND LOCAL '// &
                                                          +
                                                          462  'TABLE D FILES BOTH CONTAIN SAME FXY NUMBER: ",5A)') cmatch(1:1), '-', cmatch(2:3), '-', cmatch(4:6)
                                                          +
                                                          463  call bort(bort_str)
                                                          +
                                                          464  else if ( isfxyn < ilfxyn ) then
                                                          +
                                                          465  call sntbde ( lunstd, isfxyn, stline, mxmtbd, mxelem, nmtbd, imfxyn, cmmnem, cmdsc, cmseq, nmelem, iefxyn, ceelem )
                                                          +
                                                          466  call getntbe ( lunstd, isfxyn, stline, iers )
                                                          +
                                                          467  else
                                                          +
                                                          468  call sntbde ( lunltd, ilfxyn, ltline, mxmtbd, mxelem, nmtbd, imfxyn, cmmnem, cmdsc, cmseq, nmelem, iefxyn, ceelem )
                                                          +
                                                          469  call getntbe ( lunltd, ilfxyn, ltline, ierl )
                                                          +
                                                          470  endif
                                                          +
                                                          471  else if ( iers == 0 ) then
                                                          +
                                                          472  call sntbde ( lunstd, isfxyn, stline, mxmtbd, mxelem, nmtbd, imfxyn, cmmnem, cmdsc, cmseq, nmelem, iefxyn, ceelem )
                                                          +
                                                          473  call getntbe ( lunstd, isfxyn, stline, iers )
                                                          +
                                                          474  else
                                                          +
                                                          475  call sntbde ( lunltd, ilfxyn, ltline, mxmtbd, mxelem, nmtbd, imfxyn, cmmnem, cmdsc, cmseq, nmelem, iefxyn, ceelem )
                                                          +
                                                          476  call getntbe ( lunltd, ilfxyn, ltline, ierl )
                                                          +
                                                          477  endif
                                                          +
                                                          478  enddo
                                                          +
                                                          479 
                                                          +
                                                          480  return
                                                          +
                                                          481 end subroutine rdmtbd
                                                          +
                                                          482 
                                                          +
                                                          492 subroutine rdmtbf ( lunstf, lunltf )
                                                          +
                                                          493 
                                                          +
                                                          494  use bufrlib
                                                          +
                                                          495 
                                                          +
                                                          496  implicit none
                                                          497 
                                                          -
                                                          507 subroutine rdmtbf ( lunstf, lunltf )
                                                          +
                                                          498  integer, intent(in) :: lunstf, lunltf
                                                          +
                                                          499  integer imt, imtv, iogce, iltv, isfxyn, ilfxyn, iers, ierl
                                                          +
                                                          500 
                                                          +
                                                          501  character*160 stline, ltline
                                                          +
                                                          502  character*128 bort_str
                                                          +
                                                          503  character*6 cmatch, adn30
                                                          +
                                                          504 
                                                          +
                                                          505  ! Initialize the internal memory structure, including allocating space for it in case this hasn't already been done.
                                                          +
                                                          506 
                                                          +
                                                          507  call inittbf_c
                                                          508 
                                                          -
                                                          509  use bufrlib
                                                          +
                                                          509  ! Read and parse the header lines of both files.
                                                          510 
                                                          -
                                                          511  implicit none
                                                          +
                                                          511  call gettbh ( lunstf, lunltf, 'F', imt, imtv, iogce, iltv )
                                                          512 
                                                          -
                                                          513  integer, intent(in) :: lunstf, lunltf
                                                          -
                                                          514  integer imt, imtv, iogce, iltv, isfxyn, ilfxyn, iers, ierl
                                                          -
                                                          515 
                                                          -
                                                          516  character*160 stline, ltline
                                                          -
                                                          517  character*128 bort_str
                                                          -
                                                          518  character*6 cmatch, adn30
                                                          -
                                                          519 
                                                          -
                                                          520  ! Initialize the internal memory structure, including allocating space for it in case this hasn't already been done.
                                                          -
                                                          521 
                                                          -
                                                          522  call inittbf_c
                                                          -
                                                          523 
                                                          -
                                                          524  ! Read and parse the header lines of both files.
                                                          -
                                                          525 
                                                          -
                                                          526  call gettbh ( lunstf, lunltf, 'F', imt, imtv, iogce, iltv )
                                                          -
                                                          527 
                                                          -
                                                          528  ! Read through the remainder of both files, merging the contents into a unified internal memory structure.
                                                          -
                                                          529 
                                                          -
                                                          530  call getntbe ( lunstf, isfxyn, stline, iers )
                                                          -
                                                          531  call getntbe ( lunltf, ilfxyn, ltline, ierl )
                                                          -
                                                          532  do while ( ( iers == 0 ) .or. ( ierl == 0 ) )
                                                          -
                                                          533  if ( ( iers == 0 ) .and. ( ierl == 0 ) ) then
                                                          -
                                                          534  if ( isfxyn == ilfxyn ) then
                                                          -
                                                          535  cmatch = adn30( isfxyn, 6 )
                                                          -
                                                          536  write(bort_str,'("BUFRLIB: RDMTBF - STANDARD AND LOCAL '// &
                                                          -
                                                          537  'CODE/FLAG TABLE FILES BOTH CONTAIN SAME FXY NUMBER: ",5A)') cmatch(1:1), '-', cmatch(2:3), '-', cmatch(4:6)
                                                          -
                                                          538  call bort(bort_str)
                                                          -
                                                          539  else if ( isfxyn < ilfxyn ) then
                                                          -
                                                          540  call sntbfe ( lunstf, isfxyn )
                                                          -
                                                          541  call getntbe ( lunstf, isfxyn, stline, iers )
                                                          -
                                                          542  else
                                                          -
                                                          543  call sntbfe ( lunltf, ilfxyn )
                                                          -
                                                          544  call getntbe ( lunltf, ilfxyn, ltline, ierl )
                                                          -
                                                          545  endif
                                                          -
                                                          546  else if ( iers == 0 ) then
                                                          -
                                                          547  call sntbfe ( lunstf, isfxyn )
                                                          -
                                                          548  call getntbe ( lunstf, isfxyn, stline, iers )
                                                          -
                                                          549  else
                                                          -
                                                          550  call sntbfe ( lunltf, ilfxyn )
                                                          -
                                                          551  call getntbe ( lunltf, ilfxyn, ltline, ierl )
                                                          -
                                                          552  endif
                                                          -
                                                          553  enddo
                                                          -
                                                          554 
                                                          -
                                                          555  ! Sort the contents of the internal memory structure.
                                                          -
                                                          556 
                                                          -
                                                          557  call sorttbf_c
                                                          -
                                                          558 
                                                          -
                                                          559  return
                                                          -
                                                          560 end subroutine rdmtbf
                                                          -
                                                          561 
                                                          -
                                                          579 subroutine sntbbe ( ifxyn, line, mxmtbb, nmtbb, imfxyn, cmscl, cmsref, cmbw, cmunit, cmmnem, cmdsc, cmelem )
                                                          -
                                                          580 
                                                          -
                                                          581  implicit none
                                                          -
                                                          582 
                                                          -
                                                          583  integer, intent(in) :: ifxyn, mxmtbb
                                                          -
                                                          584  integer, intent(out) :: nmtbb, imfxyn(*)
                                                          -
                                                          585  integer ntag, ii, nemock
                                                          -
                                                          586 
                                                          -
                                                          587  character, intent(out) :: cmelem(120,*), cmunit(24,*), cmsref(12,*), cmmnem(8,*), cmscl(4,*), cmbw(4,*), cmdsc(*)*4
                                                          -
                                                          588  character*(*), intent(in) :: line
                                                          -
                                                          589  character*(*), parameter :: bort_str1_head = 'BUFRLIB: SNTBBE - TABLE B ENTRY FOR ELEMENT DESCRIPTOR: '
                                                          -
                                                          590  character*200 tags(10), wktag
                                                          -
                                                          591  character*128 bort_str1, bort_str2
                                                          -
                                                          592 
                                                          -
                                                          593  if ( nmtbb >= mxmtbb ) call bort('BUFRLIB: SNTBBE - OVERFLOW OF MERGED ARRAYS')
                                                          -
                                                          594  nmtbb = nmtbb + 1
                                                          -
                                                          595 
                                                          -
                                                          596  ! Store the FXY number. This is the element descriptor.
                                                          -
                                                          597 
                                                          -
                                                          598  imfxyn( nmtbb ) = ifxyn
                                                          -
                                                          599 
                                                          -
                                                          600  ! Parse the table entry.
                                                          -
                                                          601 
                                                          -
                                                          602  call parstr ( line, tags, 10, ntag, '|', .false. )
                                                          -
                                                          603  if ( ntag < 4 ) then
                                                          -
                                                          604  call sntbestr(bort_str1_head, ifxyn, bort_str1)
                                                          -
                                                          605  bort_str2 = ' HAS TOO FEW FIELDS'
                                                          -
                                                          606  call bort2(bort_str1, bort_str2)
                                                          -
                                                          607  endif
                                                          -
                                                          608 
                                                          -
                                                          609  ! Scale factor.
                                                          -
                                                          610 
                                                          -
                                                          611  tags(2) = adjustl( tags(2) )
                                                          -
                                                          612  if ( tags(2) == ' ' ) then
                                                          -
                                                          613  call sntbestr(bort_str1_head, ifxyn, bort_str1)
                                                          -
                                                          614  bort_str2 = ' HAS MISSING SCALE FACTOR'
                                                          -
                                                          615  call bort2(bort_str1, bort_str2)
                                                          -
                                                          616  endif
                                                          -
                                                          617  tags(2)(1:4) = adjustr( tags(2)(1:4) )
                                                          -
                                                          618  do ii = 1, 4
                                                          -
                                                          619  cmscl( ii, nmtbb ) = tags(2)(ii:ii)
                                                          -
                                                          620  enddo
                                                          -
                                                          621 
                                                          -
                                                          622  ! Reference value.
                                                          -
                                                          623 
                                                          -
                                                          624  tags(3) = adjustl( tags(3) )
                                                          -
                                                          625  if ( tags(3) == ' ' ) then
                                                          -
                                                          626  call sntbestr(bort_str1_head, ifxyn, bort_str1)
                                                          -
                                                          627  bort_str2 = ' HAS MISSING REFERENCE VALUE'
                                                          -
                                                          628  call bort2(bort_str1, bort_str2)
                                                          -
                                                          629  endif
                                                          -
                                                          630  tags(3)(1:12) = adjustr( tags(3)(1:12) )
                                                          -
                                                          631  do ii = 1, 12
                                                          -
                                                          632  cmsref( ii, nmtbb ) = tags(3)(ii:ii)
                                                          -
                                                          633  enddo
                                                          -
                                                          634 
                                                          -
                                                          635  ! Bit width.
                                                          -
                                                          636 
                                                          -
                                                          637  tags(4) = adjustl( tags(4) )
                                                          -
                                                          638  if ( tags(4) == ' ' ) then
                                                          -
                                                          639  call sntbestr(bort_str1_head, ifxyn, bort_str1)
                                                          -
                                                          640  bort_str2 = ' HAS MISSING BIT WIDTH'
                                                          -
                                                          641  call bort2(bort_str1, bort_str2)
                                                          -
                                                          642  endif
                                                          -
                                                          643  tags(4)(1:4) = adjustr( tags(4)(1:4) )
                                                          -
                                                          644  do ii = 1, 4
                                                          -
                                                          645  cmbw( ii, nmtbb ) = tags(4)(ii:ii)
                                                          -
                                                          646  end do
                                                          -
                                                          647 
                                                          -
                                                          648  ! Units. Note that this field is allowed to be blank.
                                                          -
                                                          649 
                                                          -
                                                          650  if ( ntag > 4 ) then
                                                          -
                                                          651  tags(5) = adjustl( tags(5) )
                                                          -
                                                          652  do ii = 1, 24
                                                          -
                                                          653  cmunit( ii, nmtbb ) = tags(5)(ii:ii)
                                                          -
                                                          654  enddo
                                                          -
                                                          655  else
                                                          -
                                                          656  do ii = 1, 24
                                                          -
                                                          657  cmunit( ii, nmtbb ) = ' '
                                                          -
                                                          658  enddo
                                                          -
                                                          659  endif
                                                          -
                                                          660 
                                                          -
                                                          661  ! Comment (additional) fields. Any of these fields may be blank.
                                                          -
                                                          662 
                                                          -
                                                          663  cmdsc( nmtbb ) = ' '
                                                          -
                                                          664  do ii = 1, 8
                                                          -
                                                          665  cmmnem( ii, nmtbb ) = ' '
                                                          -
                                                          666  enddo
                                                          -
                                                          667  do ii = 1, 120
                                                          -
                                                          668  cmelem( ii, nmtbb ) = ' '
                                                          -
                                                          669  enddo
                                                          -
                                                          670  if ( ntag > 5 ) then
                                                          -
                                                          671  wktag = tags(6)
                                                          -
                                                          672  call parstr ( wktag, tags, 10, ntag, ';', .false. )
                                                          -
                                                          673  if ( ntag > 0 ) then
                                                          -
                                                          674  ! The first additional field contains the mnemonic.
                                                          -
                                                          675  tags(1) = adjustl( tags(1) )
                                                          -
                                                          676  ! If there is a mnemonic, then make sure it's legal.
                                                          -
                                                          677  if ( ( tags(1) /= ' ' ) .and. ( nemock( tags(1) ) /= 0 ) ) then
                                                          -
                                                          678  call sntbestr(bort_str1_head, ifxyn, bort_str1)
                                                          -
                                                          679  bort_str2 = ' HAS ILLEGAL MNEMONIC'
                                                          -
                                                          680  call bort2(bort_str1, bort_str2)
                                                          -
                                                          681  endif
                                                          -
                                                          682  do ii = 1, 8
                                                          -
                                                          683  cmmnem( ii, nmtbb ) = tags(1)(ii:ii)
                                                          -
                                                          684  enddo
                                                          -
                                                          685  endif
                                                          -
                                                          686  if ( ntag > 1 ) then
                                                          -
                                                          687  ! The second additional field contains descriptor codes.
                                                          -
                                                          688  tags(2) = adjustl( tags(2) )
                                                          -
                                                          689  cmdsc( nmtbb ) = tags(2)(1:4)
                                                          -
                                                          690  endif
                                                          -
                                                          691  if ( ntag > 2 ) then
                                                          -
                                                          692  ! The third additional field contains the element name.
                                                          -
                                                          693  tags(3) = adjustl( tags(3) )
                                                          -
                                                          694  do ii = 1, 120
                                                          -
                                                          695  cmelem( ii, nmtbb ) = tags(3)(ii:ii)
                                                          -
                                                          696  enddo
                                                          -
                                                          697  endif
                                                          -
                                                          698  endif
                                                          -
                                                          699 
                                                          -
                                                          700  return
                                                          -
                                                          701 end subroutine sntbbe
                                                          -
                                                          702 
                                                          -
                                                          723 subroutine sntbde ( lunt, ifxyn, line, mxmtbd, mxelem, nmtbd, imfxyn, cmmnem, cmdsc, cmseq, nmelem, iefxyn, ceelem )
                                                          +
                                                          513  ! Read through the remainder of both files, merging the contents into a unified internal memory structure.
                                                          +
                                                          514 
                                                          +
                                                          515  call getntbe ( lunstf, isfxyn, stline, iers )
                                                          +
                                                          516  call getntbe ( lunltf, ilfxyn, ltline, ierl )
                                                          +
                                                          517  do while ( ( iers == 0 ) .or. ( ierl == 0 ) )
                                                          +
                                                          518  if ( ( iers == 0 ) .and. ( ierl == 0 ) ) then
                                                          +
                                                          519  if ( isfxyn == ilfxyn ) then
                                                          +
                                                          520  cmatch = adn30( isfxyn, 6 )
                                                          +
                                                          521  write(bort_str,'("BUFRLIB: RDMTBF - STANDARD AND LOCAL '// &
                                                          +
                                                          522  'CODE/FLAG TABLE FILES BOTH CONTAIN SAME FXY NUMBER: ",5A)') cmatch(1:1), '-', cmatch(2:3), '-', cmatch(4:6)
                                                          +
                                                          523  call bort(bort_str)
                                                          +
                                                          524  else if ( isfxyn < ilfxyn ) then
                                                          +
                                                          525  call sntbfe ( lunstf, isfxyn )
                                                          +
                                                          526  call getntbe ( lunstf, isfxyn, stline, iers )
                                                          +
                                                          527  else
                                                          +
                                                          528  call sntbfe ( lunltf, ilfxyn )
                                                          +
                                                          529  call getntbe ( lunltf, ilfxyn, ltline, ierl )
                                                          +
                                                          530  endif
                                                          +
                                                          531  else if ( iers == 0 ) then
                                                          +
                                                          532  call sntbfe ( lunstf, isfxyn )
                                                          +
                                                          533  call getntbe ( lunstf, isfxyn, stline, iers )
                                                          +
                                                          534  else
                                                          +
                                                          535  call sntbfe ( lunltf, ilfxyn )
                                                          +
                                                          536  call getntbe ( lunltf, ilfxyn, ltline, ierl )
                                                          +
                                                          537  endif
                                                          +
                                                          538  enddo
                                                          +
                                                          539 
                                                          +
                                                          540  ! Sort the contents of the internal memory structure.
                                                          +
                                                          541 
                                                          +
                                                          542  call sorttbf_c
                                                          +
                                                          543 
                                                          +
                                                          544  return
                                                          +
                                                          545 end subroutine rdmtbf
                                                          +
                                                          546 
                                                          +
                                                          564 subroutine sntbbe ( ifxyn, line, mxmtbb, nmtbb, imfxyn, cmscl, cmsref, cmbw, cmunit, cmmnem, cmdsc, cmelem )
                                                          +
                                                          565 
                                                          +
                                                          566  implicit none
                                                          +
                                                          567 
                                                          +
                                                          568  integer, intent(in) :: ifxyn, mxmtbb
                                                          +
                                                          569  integer, intent(inout) :: nmtbb
                                                          +
                                                          570  integer, intent(out) :: imfxyn(*)
                                                          +
                                                          571  integer ntag, ii, nemock
                                                          +
                                                          572 
                                                          +
                                                          573  character, intent(out) :: cmelem(120,*), cmunit(24,*), cmsref(12,*), cmmnem(8,*), cmscl(4,*), cmbw(4,*), cmdsc(*)*4
                                                          +
                                                          574  character*(*), intent(in) :: line
                                                          +
                                                          575  character*(*), parameter :: bort_str1_head = 'BUFRLIB: SNTBBE - TABLE B ENTRY FOR ELEMENT DESCRIPTOR: '
                                                          +
                                                          576  character*200 tags(10), wktag
                                                          +
                                                          577  character*128 bort_str1, bort_str2
                                                          +
                                                          578 
                                                          +
                                                          579  if ( nmtbb >= mxmtbb ) call bort('BUFRLIB: SNTBBE - OVERFLOW OF MERGED ARRAYS')
                                                          +
                                                          580  nmtbb = nmtbb + 1
                                                          +
                                                          581 
                                                          +
                                                          582  ! Store the FXY number. This is the element descriptor.
                                                          +
                                                          583 
                                                          +
                                                          584  imfxyn( nmtbb ) = ifxyn
                                                          +
                                                          585 
                                                          +
                                                          586  ! Parse the table entry.
                                                          +
                                                          587 
                                                          +
                                                          588  call parstr ( line, tags, 10, ntag, '|', .false. )
                                                          +
                                                          589  if ( ntag < 4 ) then
                                                          +
                                                          590  call sntbestr(bort_str1_head, ifxyn, bort_str1)
                                                          +
                                                          591  bort_str2 = ' HAS TOO FEW FIELDS'
                                                          +
                                                          592  call bort2(bort_str1, bort_str2)
                                                          +
                                                          593  endif
                                                          +
                                                          594 
                                                          +
                                                          595  ! Scale factor.
                                                          +
                                                          596 
                                                          +
                                                          597  tags(2) = adjustl( tags(2) )
                                                          +
                                                          598  if ( tags(2) == ' ' ) then
                                                          +
                                                          599  call sntbestr(bort_str1_head, ifxyn, bort_str1)
                                                          +
                                                          600  bort_str2 = ' HAS MISSING SCALE FACTOR'
                                                          +
                                                          601  call bort2(bort_str1, bort_str2)
                                                          +
                                                          602  endif
                                                          +
                                                          603  tags(2)(1:4) = adjustr( tags(2)(1:4) )
                                                          +
                                                          604  do ii = 1, 4
                                                          +
                                                          605  cmscl( ii, nmtbb ) = tags(2)(ii:ii)
                                                          +
                                                          606  enddo
                                                          +
                                                          607 
                                                          +
                                                          608  ! Reference value.
                                                          +
                                                          609 
                                                          +
                                                          610  tags(3) = adjustl( tags(3) )
                                                          +
                                                          611  if ( tags(3) == ' ' ) then
                                                          +
                                                          612  call sntbestr(bort_str1_head, ifxyn, bort_str1)
                                                          +
                                                          613  bort_str2 = ' HAS MISSING REFERENCE VALUE'
                                                          +
                                                          614  call bort2(bort_str1, bort_str2)
                                                          +
                                                          615  endif
                                                          +
                                                          616  tags(3)(1:12) = adjustr( tags(3)(1:12) )
                                                          +
                                                          617  do ii = 1, 12
                                                          +
                                                          618  cmsref( ii, nmtbb ) = tags(3)(ii:ii)
                                                          +
                                                          619  enddo
                                                          +
                                                          620 
                                                          +
                                                          621  ! Bit width.
                                                          +
                                                          622 
                                                          +
                                                          623  tags(4) = adjustl( tags(4) )
                                                          +
                                                          624  if ( tags(4) == ' ' ) then
                                                          +
                                                          625  call sntbestr(bort_str1_head, ifxyn, bort_str1)
                                                          +
                                                          626  bort_str2 = ' HAS MISSING BIT WIDTH'
                                                          +
                                                          627  call bort2(bort_str1, bort_str2)
                                                          +
                                                          628  endif
                                                          +
                                                          629  tags(4)(1:4) = adjustr( tags(4)(1:4) )
                                                          +
                                                          630  do ii = 1, 4
                                                          +
                                                          631  cmbw( ii, nmtbb ) = tags(4)(ii:ii)
                                                          +
                                                          632  end do
                                                          +
                                                          633 
                                                          +
                                                          634  ! Units. Note that this field is allowed to be blank.
                                                          +
                                                          635 
                                                          +
                                                          636  if ( ntag > 4 ) then
                                                          +
                                                          637  tags(5) = adjustl( tags(5) )
                                                          +
                                                          638  do ii = 1, 24
                                                          +
                                                          639  cmunit( ii, nmtbb ) = tags(5)(ii:ii)
                                                          +
                                                          640  enddo
                                                          +
                                                          641  else
                                                          +
                                                          642  do ii = 1, 24
                                                          +
                                                          643  cmunit( ii, nmtbb ) = ' '
                                                          +
                                                          644  enddo
                                                          +
                                                          645  endif
                                                          +
                                                          646 
                                                          +
                                                          647  ! Comment (additional) fields. Any of these fields may be blank.
                                                          +
                                                          648 
                                                          +
                                                          649  cmdsc( nmtbb ) = ' '
                                                          +
                                                          650  do ii = 1, 8
                                                          +
                                                          651  cmmnem( ii, nmtbb ) = ' '
                                                          +
                                                          652  enddo
                                                          +
                                                          653  do ii = 1, 120
                                                          +
                                                          654  cmelem( ii, nmtbb ) = ' '
                                                          +
                                                          655  enddo
                                                          +
                                                          656  if ( ntag > 5 ) then
                                                          +
                                                          657  wktag = tags(6)
                                                          +
                                                          658  call parstr ( wktag, tags, 10, ntag, ';', .false. )
                                                          +
                                                          659  if ( ntag > 0 ) then
                                                          +
                                                          660  ! The first additional field contains the mnemonic.
                                                          +
                                                          661  tags(1) = adjustl( tags(1) )
                                                          +
                                                          662  ! If there is a mnemonic, then make sure it's legal.
                                                          +
                                                          663  if ( ( tags(1) /= ' ' ) .and. ( nemock( tags(1) ) /= 0 ) ) then
                                                          +
                                                          664  call sntbestr(bort_str1_head, ifxyn, bort_str1)
                                                          +
                                                          665  bort_str2 = ' HAS ILLEGAL MNEMONIC'
                                                          +
                                                          666  call bort2(bort_str1, bort_str2)
                                                          +
                                                          667  endif
                                                          +
                                                          668  do ii = 1, 8
                                                          +
                                                          669  cmmnem( ii, nmtbb ) = tags(1)(ii:ii)
                                                          +
                                                          670  enddo
                                                          +
                                                          671  endif
                                                          +
                                                          672  if ( ntag > 1 ) then
                                                          +
                                                          673  ! The second additional field contains descriptor codes.
                                                          +
                                                          674  tags(2) = adjustl( tags(2) )
                                                          +
                                                          675  cmdsc( nmtbb ) = tags(2)(1:4)
                                                          +
                                                          676  endif
                                                          +
                                                          677  if ( ntag > 2 ) then
                                                          +
                                                          678  ! The third additional field contains the element name.
                                                          +
                                                          679  tags(3) = adjustl( tags(3) )
                                                          +
                                                          680  do ii = 1, 120
                                                          +
                                                          681  cmelem( ii, nmtbb ) = tags(3)(ii:ii)
                                                          +
                                                          682  enddo
                                                          +
                                                          683  endif
                                                          +
                                                          684  endif
                                                          +
                                                          685 
                                                          +
                                                          686  return
                                                          +
                                                          687 end subroutine sntbbe
                                                          +
                                                          688 
                                                          +
                                                          709 subroutine sntbde ( lunt, ifxyn, line, mxmtbd, mxelem, nmtbd, imfxyn, cmmnem, cmdsc, cmseq, nmelem, iefxyn, ceelem )
                                                          +
                                                          710 
                                                          +
                                                          711  implicit none
                                                          +
                                                          712 
                                                          +
                                                          713  integer, intent(in) :: lunt, ifxyn, mxmtbd, mxelem
                                                          +
                                                          714  integer, intent(inout) :: nmtbd
                                                          +
                                                          715  integer, intent(out) :: imfxyn(*), nmelem(*), iefxyn(mxmtbd,mxelem)
                                                          +
                                                          716  integer ii, ipt, ntag, nelem, nemock, ifxy, igetfxy, igetntbl
                                                          +
                                                          717 
                                                          +
                                                          718  character*(*), intent(in) :: line
                                                          +
                                                          719  character*(*), parameter :: bort_str1_head = 'BUFRLIB: SNTBDE - TABLE D ENTRY FOR SEQUENCE DESCRIPTOR: '
                                                          +
                                                          720  character, intent(out) :: cmseq(120,*), cmmnem(8,*), cmdsc(*)*4, ceelem(mxmtbd,mxelem)*120
                                                          +
                                                          721  character*200 tags(10), cline
                                                          +
                                                          722  character*128 bort_str1, bort_str2
                                                          +
                                                          723  character*6 adsc
                                                          724 
                                                          -
                                                          725  implicit none
                                                          +
                                                          725  logical done
                                                          726 
                                                          -
                                                          727  integer, intent(in) :: lunt, ifxyn, mxmtbd, mxelem
                                                          -
                                                          728  integer, intent(out) :: nmtbd, imfxyn(*), nmelem(*), iefxyn(mxmtbd,mxelem)
                                                          -
                                                          729  integer ii, ipt, ntag, nelem, nemock, ifxy, igetfxy, igetntbl
                                                          -
                                                          730 
                                                          -
                                                          731  character*(*), intent(in) :: line
                                                          -
                                                          732  character*(*), parameter :: bort_str1_head = 'BUFRLIB: SNTBDE - TABLE D ENTRY FOR SEQUENCE DESCRIPTOR: '
                                                          -
                                                          733  character, intent(out) :: cmseq(120,*), cmmnem(8,*), cmdsc(*)*4, ceelem(mxmtbd,mxelem)*120
                                                          -
                                                          734  character*200 tags(10), cline
                                                          -
                                                          735  character*128 bort_str1, bort_str2
                                                          -
                                                          736  character*6 adsc
                                                          -
                                                          737 
                                                          -
                                                          738  logical done
                                                          -
                                                          739 
                                                          -
                                                          740  if ( nmtbd >= mxmtbd ) call bort('BUFRLIB: SNTBDE - OVERFLOW OF MERGED ARRAYS')
                                                          -
                                                          741  nmtbd = nmtbd + 1
                                                          -
                                                          742 
                                                          -
                                                          743  ! Store the FXY number. This is the sequence descriptor.
                                                          -
                                                          744 
                                                          -
                                                          745  imfxyn( nmtbd ) = ifxyn
                                                          -
                                                          746 
                                                          -
                                                          747  ! Is there any other information within the first line of the table entry? If so, it follows a "|" separator.
                                                          -
                                                          748 
                                                          -
                                                          749  do ii = 1, 8
                                                          -
                                                          750  cmmnem( ii, nmtbd ) = ' '
                                                          -
                                                          751  enddo
                                                          -
                                                          752  cmdsc( nmtbd ) = ' '
                                                          -
                                                          753  do ii = 1, 120
                                                          -
                                                          754  cmseq( ii, nmtbd ) = ' '
                                                          -
                                                          755  enddo
                                                          -
                                                          756  ipt = index( line, '|' )
                                                          -
                                                          757  if ( ipt /= 0 ) then
                                                          -
                                                          758  ! Parse the rest of the line. Any of the fields may be blank.
                                                          -
                                                          759  call parstr ( line(ipt+1:), tags, 10, ntag, ';', .false. )
                                                          -
                                                          760  if ( ntag > 0 ) then
                                                          -
                                                          761  ! The first additional field contains the mnemonic.
                                                          -
                                                          762  tags(1) = adjustl( tags(1) )
                                                          -
                                                          763  ! If there is a mnemonic, then make sure it's legal.
                                                          -
                                                          764  if ( ( tags(1) /= ' ' ) .and. ( nemock( tags(1) ) /= 0 ) ) then
                                                          -
                                                          765  call sntbestr(bort_str1_head, ifxyn, bort_str1)
                                                          -
                                                          766  bort_str2 = ' HAS ILLEGAL MNEMONIC'
                                                          -
                                                          767  call bort2(bort_str1, bort_str2)
                                                          -
                                                          768  endif
                                                          -
                                                          769  do ii = 1, 8
                                                          -
                                                          770  cmmnem( ii, nmtbd ) = tags(1)(ii:ii)
                                                          -
                                                          771  enddo
                                                          -
                                                          772  endif
                                                          -
                                                          773  if ( ntag > 1 ) then
                                                          -
                                                          774  ! The second additional field contains descriptor codes.
                                                          -
                                                          775  tags(2) = adjustl( tags(2) )
                                                          -
                                                          776  cmdsc( nmtbd ) = tags(2)(1:4)
                                                          -
                                                          777  endif
                                                          -
                                                          778  if ( ntag > 2 ) then
                                                          -
                                                          779  ! The third additional field contains the sequence name.
                                                          -
                                                          780  tags(3) = adjustl( tags(3) )
                                                          -
                                                          781  do ii = 1, 120
                                                          -
                                                          782  cmseq( ii, nmtbd ) = tags(3)(ii:ii)
                                                          -
                                                          783  enddO
                                                          +
                                                          727  if ( nmtbd >= mxmtbd ) call bort('BUFRLIB: SNTBDE - OVERFLOW OF MERGED ARRAYS')
                                                          +
                                                          728  nmtbd = nmtbd + 1
                                                          +
                                                          729 
                                                          +
                                                          730  ! Store the FXY number. This is the sequence descriptor.
                                                          +
                                                          731 
                                                          +
                                                          732  imfxyn( nmtbd ) = ifxyn
                                                          +
                                                          733 
                                                          +
                                                          734  ! Is there any other information within the first line of the table entry? If so, it follows a "|" separator.
                                                          +
                                                          735 
                                                          +
                                                          736  do ii = 1, 8
                                                          +
                                                          737  cmmnem( ii, nmtbd ) = ' '
                                                          +
                                                          738  enddo
                                                          +
                                                          739  cmdsc( nmtbd ) = ' '
                                                          +
                                                          740  do ii = 1, 120
                                                          +
                                                          741  cmseq( ii, nmtbd ) = ' '
                                                          +
                                                          742  enddo
                                                          +
                                                          743  ipt = index( line, '|' )
                                                          +
                                                          744  if ( ipt /= 0 ) then
                                                          +
                                                          745  ! Parse the rest of the line. Any of the fields may be blank.
                                                          +
                                                          746  call parstr ( line(ipt+1:), tags, 10, ntag, ';', .false. )
                                                          +
                                                          747  if ( ntag > 0 ) then
                                                          +
                                                          748  ! The first additional field contains the mnemonic.
                                                          +
                                                          749  tags(1) = adjustl( tags(1) )
                                                          +
                                                          750  ! If there is a mnemonic, then make sure it's legal.
                                                          +
                                                          751  if ( ( tags(1) /= ' ' ) .and. ( nemock( tags(1) ) /= 0 ) ) then
                                                          +
                                                          752  call sntbestr(bort_str1_head, ifxyn, bort_str1)
                                                          +
                                                          753  bort_str2 = ' HAS ILLEGAL MNEMONIC'
                                                          +
                                                          754  call bort2(bort_str1, bort_str2)
                                                          +
                                                          755  endif
                                                          +
                                                          756  do ii = 1, 8
                                                          +
                                                          757  cmmnem( ii, nmtbd ) = tags(1)(ii:ii)
                                                          +
                                                          758  enddo
                                                          +
                                                          759  endif
                                                          +
                                                          760  if ( ntag > 1 ) then
                                                          +
                                                          761  ! The second additional field contains descriptor codes.
                                                          +
                                                          762  tags(2) = adjustl( tags(2) )
                                                          +
                                                          763  cmdsc( nmtbd ) = tags(2)(1:4)
                                                          +
                                                          764  endif
                                                          +
                                                          765  if ( ntag > 2 ) then
                                                          +
                                                          766  ! The third additional field contains the sequence name.
                                                          +
                                                          767  tags(3) = adjustl( tags(3) )
                                                          +
                                                          768  do ii = 1, 120
                                                          +
                                                          769  cmseq( ii, nmtbd ) = tags(3)(ii:ii)
                                                          +
                                                          770  enddO
                                                          +
                                                          771  endif
                                                          +
                                                          772  endif
                                                          +
                                                          773 
                                                          +
                                                          774  ! Now, read and parse all remaining lines from this table entry. Each line should contain an element descriptor for
                                                          +
                                                          775  ! the sequence represented by the current sequence descriptor.
                                                          +
                                                          776 
                                                          +
                                                          777  nelem = 0
                                                          +
                                                          778  done = .false.
                                                          +
                                                          779  do while ( .not. done )
                                                          +
                                                          780  if ( igetntbl( lunt, cline ) /= 0 ) then
                                                          +
                                                          781  call sntbestr(bort_str1_head, ifxyn, bort_str1)
                                                          +
                                                          782  bort_str2 = ' IS INCOMPLETE'
                                                          +
                                                          783  call bort2(bort_str1, bort_str2)
                                                          784  endif
                                                          -
                                                          785  endif
                                                          -
                                                          786 
                                                          -
                                                          787  ! Now, read and parse all remaining lines from this table entry. Each line should contain an element descriptor for
                                                          -
                                                          788  ! the sequence represented by the current sequence descriptor.
                                                          -
                                                          789 
                                                          -
                                                          790  nelem = 0
                                                          -
                                                          791  done = .false.
                                                          -
                                                          792  do while ( .not. done )
                                                          -
                                                          793  if ( igetntbl( lunt, cline ) /= 0 ) then
                                                          -
                                                          794  call sntbestr(bort_str1_head, ifxyn, bort_str1)
                                                          -
                                                          795  bort_str2 = ' IS INCOMPLETE'
                                                          -
                                                          796  call bort2(bort_str1, bort_str2)
                                                          -
                                                          797  endif
                                                          -
                                                          798  call parstr ( cline, tags, 10, ntag, '|', .false. )
                                                          -
                                                          799  if ( ntag < 2 ) then
                                                          -
                                                          800  call sntbestr(bort_str1_head, ifxyn, bort_str1)
                                                          -
                                                          801  bort_str2 = ' HAS BAD ELEMENT CARD'
                                                          -
                                                          802  call bort2(bort_str1, bort_str2)
                                                          -
                                                          803  endif
                                                          -
                                                          804  ! The second field contains the FXY number for this element.
                                                          -
                                                          805  if ( igetfxy( tags(2), adsc ) /= 0 ) then
                                                          -
                                                          806  call sntbestr(bort_str1_head, ifxyn, bort_str1)
                                                          -
                                                          807  bort_str2 = ' HAS BAD OR MISSING ELEMENT FXY NUMBER'
                                                          -
                                                          808  call bort2(bort_str1, bort_str2)
                                                          -
                                                          809  endif
                                                          -
                                                          810  if ( nelem >= mxelem ) CALL bort('BUFRLIB: SNTBDE - OVERFLOW OF MERGED ARRAYS')
                                                          -
                                                          811  nelem = nelem + 1
                                                          -
                                                          812  iefxyn( nmtbd, nelem ) = ifxy( adsc )
                                                          -
                                                          813  ! The third field (if it exists) contains the element name.
                                                          -
                                                          814  if ( ntag > 2 ) then
                                                          -
                                                          815  tags(3) = adjustl( tags(3) )
                                                          -
                                                          816  ceelem( nmtbd, nelem ) = tags(3)(1:120)
                                                          -
                                                          817  else
                                                          -
                                                          818  ceelem( nmtbd, nelem ) = ' '
                                                          -
                                                          819  endif
                                                          -
                                                          820  ! Is this the last line for this table entry?
                                                          -
                                                          821  if ( index( tags(2), ' >' ) == 0 ) done = .true.
                                                          -
                                                          822  enddo
                                                          -
                                                          823  nmelem( nmtbd ) = nelem
                                                          -
                                                          824 
                                                          -
                                                          825  return
                                                          -
                                                          826 end subroutine sntbde
                                                          +
                                                          785  call parstr ( cline, tags, 10, ntag, '|', .false. )
                                                          +
                                                          786  if ( ntag < 2 ) then
                                                          +
                                                          787  call sntbestr(bort_str1_head, ifxyn, bort_str1)
                                                          +
                                                          788  bort_str2 = ' HAS BAD ELEMENT CARD'
                                                          +
                                                          789  call bort2(bort_str1, bort_str2)
                                                          +
                                                          790  endif
                                                          +
                                                          791  ! The second field contains the FXY number for this element.
                                                          +
                                                          792  if ( igetfxy( tags(2), adsc ) /= 0 ) then
                                                          +
                                                          793  call sntbestr(bort_str1_head, ifxyn, bort_str1)
                                                          +
                                                          794  bort_str2 = ' HAS BAD OR MISSING ELEMENT FXY NUMBER'
                                                          +
                                                          795  call bort2(bort_str1, bort_str2)
                                                          +
                                                          796  endif
                                                          +
                                                          797  if ( nelem >= mxelem ) CALL bort('BUFRLIB: SNTBDE - OVERFLOW OF MERGED ARRAYS')
                                                          +
                                                          798  nelem = nelem + 1
                                                          +
                                                          799  iefxyn( nmtbd, nelem ) = ifxy( adsc )
                                                          +
                                                          800  ! The third field (if it exists) contains the element name.
                                                          +
                                                          801  if ( ntag > 2 ) then
                                                          +
                                                          802  tags(3) = adjustl( tags(3) )
                                                          +
                                                          803  ceelem( nmtbd, nelem ) = tags(3)(1:120)
                                                          +
                                                          804  else
                                                          +
                                                          805  ceelem( nmtbd, nelem ) = ' '
                                                          +
                                                          806  endif
                                                          +
                                                          807  ! Is this the last line for this table entry?
                                                          +
                                                          808  if ( index( tags(2), ' >' ) == 0 ) done = .true.
                                                          +
                                                          809  enddo
                                                          +
                                                          810  nmelem( nmtbd ) = nelem
                                                          +
                                                          811 
                                                          +
                                                          812  return
                                                          +
                                                          813 end subroutine sntbde
                                                          +
                                                          814 
                                                          +
                                                          822 subroutine sntbfe ( lunt, ifxyn )
                                                          +
                                                          823 
                                                          +
                                                          824  use bufrlib
                                                          +
                                                          825 
                                                          +
                                                          826  implicit none
                                                          827 
                                                          -
                                                          835 subroutine sntbfe ( lunt, ifxyn )
                                                          -
                                                          836 
                                                          -
                                                          837  use bufrlib
                                                          -
                                                          838 
                                                          -
                                                          839  implicit none
                                                          -
                                                          840 
                                                          -
                                                          841  integer, intent(in) :: lunt, ifxyn
                                                          -
                                                          842  integer idfxy(10), idval(25), nidfxy, nidval, ntag, ii, jj, ival, ier, ipt, lt3, ifxy, igetfxy, igetntbl
                                                          -
                                                          843 
                                                          -
                                                          844  character*160 cline, tags(4), cdstr(2), adsc(10), cval(25)
                                                          -
                                                          845  character*(*), parameter :: bort_str1_head = 'BUFRLIB: SNTBFE - TABLE F ENTRY FOR ELEMENT DESCRIPTOR: '
                                                          -
                                                          846  character*128 bort_str1, bort_str2
                                                          -
                                                          847  character*6 cdsc
                                                          -
                                                          848 
                                                          -
                                                          849  logical done, lstnblk
                                                          -
                                                          850 
                                                          -
                                                          851  ! We already have the FXY number. Now we need to read and parse all of the remaining lines from the table entry for this
                                                          -
                                                          852  ! FXY number. The information for each individual code figure or bit number will then be stored as a separate entry within
                                                          -
                                                          853  ! the internal memory structure.
                                                          -
                                                          854 
                                                          -
                                                          855  done = .false.
                                                          -
                                                          856  nidfxy = 0
                                                          -
                                                          857  nidval = 0
                                                          -
                                                          858 
                                                          -
                                                          859  do while ( .not. done )
                                                          +
                                                          828  integer, intent(in) :: lunt, ifxyn
                                                          +
                                                          829  integer idfxy(10), idval(25), nidfxy, nidval, ntag, ii, jj, ival, ier, ipt, lt3, ifxy, igetfxy, igetntbl
                                                          +
                                                          830 
                                                          +
                                                          831  character*160 cline, tags(4), cdstr(2), adsc(10), cval(25)
                                                          +
                                                          832  character*(*), parameter :: bort_str1_head = 'BUFRLIB: SNTBFE - TABLE F ENTRY FOR ELEMENT DESCRIPTOR: '
                                                          +
                                                          833  character*128 bort_str1, bort_str2
                                                          +
                                                          834  character*6 cdsc
                                                          +
                                                          835 
                                                          +
                                                          836  logical done, lstnblk
                                                          +
                                                          837 
                                                          +
                                                          838  ! We already have the FXY number. Now we need to read and parse all of the remaining lines from the table entry for this
                                                          +
                                                          839  ! FXY number. The information for each individual code figure or bit number will then be stored as a separate entry within
                                                          +
                                                          840  ! the internal memory structure.
                                                          +
                                                          841 
                                                          +
                                                          842  done = .false.
                                                          +
                                                          843  nidfxy = 0
                                                          +
                                                          844  nidval = 0
                                                          +
                                                          845 
                                                          +
                                                          846  do while ( .not. done )
                                                          +
                                                          847 
                                                          +
                                                          848  if ( igetntbl( lunt, cline ) /= 0 ) then
                                                          +
                                                          849  call sntbestr(bort_str1_head, ifxyn, bort_str1)
                                                          +
                                                          850  bort_str2 = ' IS INCOMPLETE'
                                                          +
                                                          851  call bort2(bort_str1, bort_str2)
                                                          +
                                                          852  endif
                                                          +
                                                          853 
                                                          +
                                                          854  call parstr ( cline, tags, 4, ntag, '|', .false. )
                                                          +
                                                          855  if ( ( ntag < 2 ) .or. ( ntag > 3 ) ) then
                                                          +
                                                          856  call sntbestr(bort_str1_head, ifxyn, bort_str1)
                                                          +
                                                          857  bort_str2 = ' HAS BAD CARD'
                                                          +
                                                          858  call bort2(bort_str1, bort_str2)
                                                          +
                                                          859  endif
                                                          860 
                                                          -
                                                          861  if ( igetntbl( lunt, cline ) /= 0 ) then
                                                          -
                                                          862  call sntbestr(bort_str1_head, ifxyn, bort_str1)
                                                          -
                                                          863  bort_str2 = ' IS INCOMPLETE'
                                                          -
                                                          864  call bort2(bort_str1, bort_str2)
                                                          -
                                                          865  endif
                                                          -
                                                          866 
                                                          -
                                                          867  call parstr ( cline, tags, 4, ntag, '|', .false. )
                                                          -
                                                          868  if ( ( ntag < 2 ) .or. ( ntag > 3 ) ) then
                                                          -
                                                          869  call sntbestr(bort_str1_head, ifxyn, bort_str1)
                                                          -
                                                          870  bort_str2 = ' HAS BAD CARD'
                                                          -
                                                          871  call bort2(bort_str1, bort_str2)
                                                          -
                                                          872  endif
                                                          -
                                                          873 
                                                          -
                                                          874  if ( ntag == 2 ) then
                                                          -
                                                          875 
                                                          -
                                                          876  ! This line contains a list of dependencies.
                                                          -
                                                          877 
                                                          -
                                                          878  call parstr ( tags(2), cdstr, 2, ntag, '=', .false. )
                                                          -
                                                          879  if ( ntag /= 2 ) then
                                                          -
                                                          880  call sntbestr(bort_str1_head, ifxyn, bort_str1)
                                                          -
                                                          881  bort_str2 = ' HAS BAD DEPENDENCY CARD'
                                                          -
                                                          882  call bort2(bort_str1, bort_str2)
                                                          -
                                                          883  endif
                                                          -
                                                          884  ! Parse the list of FXY numbers.
                                                          -
                                                          885  call parstr ( cdstr(1), adsc, 10, nidfxy, ',', .false. )
                                                          -
                                                          886  if ( ( nidfxy == 0 ) .or. ( ( nidfxy == 1 ) .and. ( adsc(1) == ' ' ) ) ) then
                                                          -
                                                          887  call sntbestr(bort_str1_head, ifxyn, bort_str1)
                                                          -
                                                          888  bort_str2 = ' HAS BAD DEPENDENCY LIST (FXY)'
                                                          -
                                                          889  call bort2(bort_str1, bort_str2)
                                                          -
                                                          890  endif
                                                          -
                                                          891  do ii = 1, nidfxy
                                                          -
                                                          892  if ( igetfxy( adsc(ii), cdsc ) /= 0 ) then
                                                          -
                                                          893  call sntbestr(bort_str1_head, ifxyn, bort_str1)
                                                          -
                                                          894  bort_str2 = ' HAS BAD DEPENDENCY (FXY)'
                                                          -
                                                          895  call bort2(bort_str1, bort_str2)
                                                          -
                                                          896  endif
                                                          -
                                                          897  idfxy(ii) = ifxy( cdsc )
                                                          -
                                                          898  enddo
                                                          -
                                                          899  ! Parse the list of values.
                                                          -
                                                          900  call parstr ( cdstr(2), cval, 25, nidval, ',', .false. )
                                                          -
                                                          901  if ( ( nidval == 0 ) .or. ( ( nidval == 1 ) .and. ( cval(1) == ' ' ) ) ) then
                                                          -
                                                          902  call sntbestr(bort_str1_head, ifxyn, bort_str1)
                                                          -
                                                          903  bort_str2 = ' HAS BAD DEPENDENCY LIST (VAL)'
                                                          -
                                                          904  call bort2(bort_str1, bort_str2)
                                                          -
                                                          905  endif
                                                          -
                                                          906  do ii = 1, nidval
                                                          -
                                                          907  cval(ii) = adjustl( cval(ii) )
                                                          -
                                                          908  call strnum ( cval(ii), ival, ier )
                                                          -
                                                          909  if ( ier /= 0 ) then
                                                          -
                                                          910  call sntbestr(bort_str1_head, ifxyn, bort_str1)
                                                          -
                                                          911  bort_str2 = ' HAS BAD DEPENDENCY (VAL)'
                                                          -
                                                          912  call bort2(bort_str1, bort_str2)
                                                          -
                                                          913  endif
                                                          -
                                                          914  idval(ii) = ival
                                                          -
                                                          915  enddo
                                                          -
                                                          916 
                                                          -
                                                          917  else
                                                          -
                                                          918 
                                                          -
                                                          919  ! This line contains a value (code figure or bit number) and corresponding meaning.
                                                          -
                                                          920 
                                                          -
                                                          921  ipt = index( tags(2), ' >' )
                                                          -
                                                          922  if ( ipt == 0 ) then
                                                          -
                                                          923  ! This is the last line for this table entry.
                                                          -
                                                          924  done = .true.
                                                          -
                                                          925  else
                                                          -
                                                          926  tags(2)(ipt+1:ipt+1) = ' '
                                                          -
                                                          927  endif
                                                          -
                                                          928  tags(2) = adjustl( tags(2) )
                                                          -
                                                          929  call strnum ( tags(2), ival, ier )
                                                          -
                                                          930  ! Find the last non-blank character in the meaning string.
                                                          -
                                                          931  tags(3) = adjustl( tags(3) )
                                                          -
                                                          932  lt3 = len(tags(3))
                                                          -
                                                          933  lstnblk = .false.
                                                          -
                                                          934  do while ( ( lt3 > 0 ) .and. ( .not. lstnblk ) )
                                                          -
                                                          935  if ( tags(3)(lt3:lt3) /= ' ' ) then
                                                          -
                                                          936  lstnblk = .true.
                                                          -
                                                          937  else
                                                          -
                                                          938  lt3 = lt3 - 1
                                                          -
                                                          939  endif
                                                          -
                                                          940  enddo
                                                          -
                                                          941  ! Store the information for this value within the internal memory structure.
                                                          -
                                                          942  if ( ( nidfxy == 0 ) .and. ( nidval == 0 ) ) then
                                                          -
                                                          943  call strtbfe_c ( ifxyn, ival, tags(3), lt3, -1, -1 )
                                                          -
                                                          944  else
                                                          -
                                                          945  do ii = 1, nidfxy
                                                          -
                                                          946  do jj = 1, nidval
                                                          -
                                                          947  call strtbfe_c ( ifxyn, ival, tags(3), lt3, idfxy(ii), idval(jj) )
                                                          -
                                                          948  enddo
                                                          -
                                                          949  enddo
                                                          -
                                                          950  endif
                                                          -
                                                          951 
                                                          -
                                                          952  endif
                                                          -
                                                          953 
                                                          -
                                                          954  enddo
                                                          -
                                                          955 
                                                          -
                                                          956  return
                                                          -
                                                          957 end subroutine sntbfe
                                                          -
                                                          958 
                                                          -
                                                          966 subroutine sntbestr ( hestr, ifxyn, estr )
                                                          -
                                                          967 
                                                          -
                                                          968  implicit none
                                                          -
                                                          969 
                                                          -
                                                          970  character*(*), intent(in) :: hestr
                                                          -
                                                          971  character*(*), intent(out) :: estr
                                                          -
                                                          972  character*6 adn30, clemon
                                                          -
                                                          973 
                                                          -
                                                          974  integer, intent(in) :: ifxyn
                                                          -
                                                          975 
                                                          -
                                                          976  clemon = adn30( ifxyn, 6 )
                                                          -
                                                          977  estr = hestr // clemon(1:1) // '-' // clemon(2:3) // '-' // clemon(4:6)
                                                          -
                                                          978 
                                                          -
                                                          979  return
                                                          -
                                                          980 end subroutine sntbestr
                                                          -
                                                          981 
                                                          -
                                                          992 integer function igetntbl ( lunt, line ) result ( iret )
                                                          -
                                                          993 
                                                          -
                                                          994  implicit none
                                                          -
                                                          995 
                                                          -
                                                          996  integer, intent(in) :: lunt
                                                          -
                                                          997  integer ier
                                                          -
                                                          998 
                                                          -
                                                          999  character*(*), intent(out) :: line
                                                          -
                                                          1000 
                                                          -
                                                          1001  do while (.true.)
                                                          -
                                                          1002  read ( lunt, '(A)', iostat = ier ) line
                                                          -
                                                          1003  if ( ( ier /= 0 ) .or. ( line(1:3) == 'END' ) ) then
                                                          -
                                                          1004  iret = -1
                                                          -
                                                          1005  return
                                                          -
                                                          1006  endif
                                                          -
                                                          1007  if ( ( line /= ' ' ) .and. ( line(1:1) /= '#' ) ) then
                                                          -
                                                          1008  iret = 0
                                                          -
                                                          1009  return
                                                          -
                                                          1010  endif
                                                          -
                                                          1011  enddo
                                                          -
                                                          1012 
                                                          -
                                                          1013 end function igetntbl
                                                          -
                                                          1014 
                                                          -
                                                          1027 integer function igettdi ( iflag ) result ( iret )
                                                          -
                                                          1028 
                                                          -
                                                          1029  implicit none
                                                          -
                                                          1030 
                                                          -
                                                          1031  integer, intent(in) :: iflag
                                                          -
                                                          1032  integer, parameter :: idxmin = 62976 ! = ifxy('354000')
                                                          -
                                                          1033  integer, parameter :: idxmax = 63231 ! = ifxy('354255')
                                                          -
                                                          1034  integer idx
                                                          +
                                                          861  if ( ntag == 2 ) then
                                                          +
                                                          862 
                                                          +
                                                          863  ! This line contains a list of dependencies.
                                                          +
                                                          864 
                                                          +
                                                          865  call parstr ( tags(2), cdstr, 2, ntag, '=', .false. )
                                                          +
                                                          866  if ( ntag /= 2 ) then
                                                          +
                                                          867  call sntbestr(bort_str1_head, ifxyn, bort_str1)
                                                          +
                                                          868  bort_str2 = ' HAS BAD DEPENDENCY CARD'
                                                          +
                                                          869  call bort2(bort_str1, bort_str2)
                                                          +
                                                          870  endif
                                                          +
                                                          871  ! Parse the list of FXY numbers.
                                                          +
                                                          872  call parstr ( cdstr(1), adsc, 10, nidfxy, ',', .false. )
                                                          +
                                                          873  if ( ( nidfxy == 0 ) .or. ( ( nidfxy == 1 ) .and. ( adsc(1) == ' ' ) ) ) then
                                                          +
                                                          874  call sntbestr(bort_str1_head, ifxyn, bort_str1)
                                                          +
                                                          875  bort_str2 = ' HAS BAD DEPENDENCY LIST (FXY)'
                                                          +
                                                          876  call bort2(bort_str1, bort_str2)
                                                          +
                                                          877  endif
                                                          +
                                                          878  do ii = 1, nidfxy
                                                          +
                                                          879  if ( igetfxy( adsc(ii), cdsc ) /= 0 ) then
                                                          +
                                                          880  call sntbestr(bort_str1_head, ifxyn, bort_str1)
                                                          +
                                                          881  bort_str2 = ' HAS BAD DEPENDENCY (FXY)'
                                                          +
                                                          882  call bort2(bort_str1, bort_str2)
                                                          +
                                                          883  endif
                                                          +
                                                          884  idfxy(ii) = ifxy( cdsc )
                                                          +
                                                          885  enddo
                                                          +
                                                          886  ! Parse the list of values.
                                                          +
                                                          887  call parstr ( cdstr(2), cval, 25, nidval, ',', .false. )
                                                          +
                                                          888  if ( ( nidval == 0 ) .or. ( ( nidval == 1 ) .and. ( cval(1) == ' ' ) ) ) then
                                                          +
                                                          889  call sntbestr(bort_str1_head, ifxyn, bort_str1)
                                                          +
                                                          890  bort_str2 = ' HAS BAD DEPENDENCY LIST (VAL)'
                                                          +
                                                          891  call bort2(bort_str1, bort_str2)
                                                          +
                                                          892  endif
                                                          +
                                                          893  do ii = 1, nidval
                                                          +
                                                          894  cval(ii) = adjustl( cval(ii) )
                                                          +
                                                          895  call strnum ( cval(ii), ival, ier )
                                                          +
                                                          896  if ( ier /= 0 ) then
                                                          +
                                                          897  call sntbestr(bort_str1_head, ifxyn, bort_str1)
                                                          +
                                                          898  bort_str2 = ' HAS BAD DEPENDENCY (VAL)'
                                                          +
                                                          899  call bort2(bort_str1, bort_str2)
                                                          +
                                                          900  endif
                                                          +
                                                          901  idval(ii) = ival
                                                          +
                                                          902  enddo
                                                          +
                                                          903 
                                                          +
                                                          904  else
                                                          +
                                                          905 
                                                          +
                                                          906  ! This line contains a value (code figure or bit number) and corresponding meaning.
                                                          +
                                                          907 
                                                          +
                                                          908  ipt = index( tags(2), ' >' )
                                                          +
                                                          909  if ( ipt == 0 ) then
                                                          +
                                                          910  ! This is the last line for this table entry.
                                                          +
                                                          911  done = .true.
                                                          +
                                                          912  else
                                                          +
                                                          913  tags(2)(ipt+1:ipt+1) = ' '
                                                          +
                                                          914  endif
                                                          +
                                                          915  tags(2) = adjustl( tags(2) )
                                                          +
                                                          916  call strnum ( tags(2), ival, ier )
                                                          +
                                                          917  ! Find the last non-blank character in the meaning string.
                                                          +
                                                          918  tags(3) = adjustl( tags(3) )
                                                          +
                                                          919  lt3 = len(tags(3))
                                                          +
                                                          920  lstnblk = .false.
                                                          +
                                                          921  do while ( ( lt3 > 0 ) .and. ( .not. lstnblk ) )
                                                          +
                                                          922  if ( tags(3)(lt3:lt3) /= ' ' ) then
                                                          +
                                                          923  lstnblk = .true.
                                                          +
                                                          924  else
                                                          +
                                                          925  lt3 = lt3 - 1
                                                          +
                                                          926  endif
                                                          +
                                                          927  enddo
                                                          +
                                                          928  ! Store the information for this value within the internal memory structure.
                                                          +
                                                          929  if ( ( nidfxy == 0 ) .and. ( nidval == 0 ) ) then
                                                          +
                                                          930  call strtbfe_c ( ifxyn, ival, tags(3), lt3, -1, -1 )
                                                          +
                                                          931  else
                                                          +
                                                          932  do ii = 1, nidfxy
                                                          +
                                                          933  do jj = 1, nidval
                                                          +
                                                          934  call strtbfe_c ( ifxyn, ival, tags(3), lt3, idfxy(ii), idval(jj) )
                                                          +
                                                          935  enddo
                                                          +
                                                          936  enddo
                                                          +
                                                          937  endif
                                                          +
                                                          938 
                                                          +
                                                          939  endif
                                                          +
                                                          940 
                                                          +
                                                          941  enddo
                                                          +
                                                          942 
                                                          +
                                                          943  return
                                                          +
                                                          944 end subroutine sntbfe
                                                          +
                                                          945 
                                                          +
                                                          953 subroutine sntbestr ( hestr, ifxyn, estr )
                                                          +
                                                          954 
                                                          +
                                                          955  implicit none
                                                          +
                                                          956 
                                                          +
                                                          957  character*(*), intent(in) :: hestr
                                                          +
                                                          958  character*(*), intent(out) :: estr
                                                          +
                                                          959  character*6 adn30, clemon
                                                          +
                                                          960 
                                                          +
                                                          961  integer, intent(in) :: ifxyn
                                                          +
                                                          962 
                                                          +
                                                          963  clemon = adn30( ifxyn, 6 )
                                                          +
                                                          964  estr = hestr // clemon(1:1) // '-' // clemon(2:3) // '-' // clemon(4:6)
                                                          +
                                                          965 
                                                          +
                                                          966  return
                                                          +
                                                          967 end subroutine sntbestr
                                                          +
                                                          968 
                                                          +
                                                          979 integer function igetntbl ( lunt, line ) result ( iret )
                                                          +
                                                          980 
                                                          +
                                                          981  implicit none
                                                          +
                                                          982 
                                                          +
                                                          983  integer, intent(in) :: lunt
                                                          +
                                                          984  integer ier
                                                          +
                                                          985 
                                                          +
                                                          986  character*(*), intent(out) :: line
                                                          +
                                                          987 
                                                          +
                                                          988  do while (.true.)
                                                          +
                                                          989  read ( lunt, '(A)', iostat = ier ) line
                                                          +
                                                          990  if ( ( ier /= 0 ) .or. ( line(1:3) == 'END' ) ) then
                                                          +
                                                          991  iret = -1
                                                          +
                                                          992  return
                                                          +
                                                          993  endif
                                                          +
                                                          994  if ( ( line /= ' ' ) .and. ( line(1:1) /= '#' ) ) then
                                                          +
                                                          995  iret = 0
                                                          +
                                                          996  return
                                                          +
                                                          997  endif
                                                          +
                                                          998  enddo
                                                          +
                                                          999 
                                                          +
                                                          1000 end function igetntbl
                                                          +
                                                          1001 
                                                          +
                                                          1014 integer function igettdi ( iflag ) result ( iret )
                                                          +
                                                          1015 
                                                          +
                                                          1016  implicit none
                                                          +
                                                          1017 
                                                          +
                                                          1018  integer, intent(in) :: iflag
                                                          +
                                                          1019  integer, parameter :: idxmin = 62976 ! = ifxy('354000')
                                                          +
                                                          1020  integer, parameter :: idxmax = 63231 ! = ifxy('354255')
                                                          +
                                                          1021  integer idx
                                                          +
                                                          1022 
                                                          +
                                                          1023  save idx
                                                          +
                                                          1024 
                                                          +
                                                          1025  if ( iflag == 0 ) then
                                                          +
                                                          1026  ! Initialize the index to one less than the actual minimum value. That way, the next normal call will return the
                                                          +
                                                          1027  ! minimum value.
                                                          +
                                                          1028  idx = idxmin - 1
                                                          +
                                                          1029  iret = -1
                                                          +
                                                          1030  else
                                                          +
                                                          1031  idx = idx + 1
                                                          +
                                                          1032  if ( idx > idxmax ) call bort('BUFRLIB: IGETTDI - IDXMAX OVERFLOW')
                                                          +
                                                          1033  iret = idx
                                                          +
                                                          1034  endif
                                                          1035 
                                                          -
                                                          1036  save idx
                                                          -
                                                          1037 
                                                          -
                                                          1038  if ( iflag == 0 ) then
                                                          -
                                                          1039  ! Initialize the index to one less than the actual minimum value. That way, the next normal call will return the
                                                          -
                                                          1040  ! minimum value.
                                                          -
                                                          1041  idx = idxmin - 1
                                                          -
                                                          1042  iret = -1
                                                          -
                                                          1043  else
                                                          -
                                                          1044  idx = idx + 1
                                                          -
                                                          1045  if ( idx > idxmax ) call bort('BUFRLIB: IGETTDI - IDXMAX OVERFLOW')
                                                          -
                                                          1046  iret = idx
                                                          -
                                                          1047  endif
                                                          -
                                                          1048 
                                                          -
                                                          1049  return
                                                          -
                                                          1050 end function igettdi
                                                          -
                                                          1051 
                                                          -
                                                          1071 subroutine gettbh ( luns, lunl, tab, imt, imtv, iogce, iltv )
                                                          -
                                                          1072 
                                                          -
                                                          1073  implicit none
                                                          +
                                                          1036  return
                                                          +
                                                          1037 end function igettdi
                                                          +
                                                          1038 
                                                          +
                                                          1058 subroutine gettbh ( luns, lunl, tab, imt, imtv, iogce, iltv )
                                                          +
                                                          1059 
                                                          +
                                                          1060  implicit none
                                                          +
                                                          1061 
                                                          +
                                                          1062  integer, intent(in) :: luns, lunl
                                                          +
                                                          1063  integer, intent(out) :: imt, imtv, iogce, iltv
                                                          +
                                                          1064  integer ntag, imt2, iersn, igetntbl
                                                          +
                                                          1065 
                                                          +
                                                          1066  character, intent(in) :: tab
                                                          +
                                                          1067 
                                                          +
                                                          1068  character*128 bort_str
                                                          +
                                                          1069  character*(*), parameter :: bort_str_head = 'BUFRLIB: GETTBH - BAD OR MISSING HEADER WITHIN '
                                                          +
                                                          1070  character*40 header
                                                          +
                                                          1071  character*30 tags(5), label
                                                          +
                                                          1072  character*3 cftyp
                                                          +
                                                          1073  character*2 cttyp
                                                          1074 
                                                          -
                                                          1075  integer, intent(in) :: luns, lunl
                                                          -
                                                          1076  integer, intent(out) :: imt, imtv, iogce, iltv
                                                          -
                                                          1077  integer ntag, imt2, iersn, igetntbl
                                                          -
                                                          1078 
                                                          -
                                                          1079  character, intent(in) :: tab
                                                          -
                                                          1080 
                                                          -
                                                          1081  character*128 bort_str
                                                          -
                                                          1082  character*(*), parameter :: bort_str_head = 'BUFRLIB: GETTBH - BAD OR MISSING HEADER WITHIN '
                                                          -
                                                          1083  character*40 header
                                                          -
                                                          1084  character*30 tags(5), label
                                                          -
                                                          1085  character*3 cftyp
                                                          -
                                                          1086  character*2 cttyp
                                                          -
                                                          1087 
                                                          -
                                                          1088  logical badlabel
                                                          -
                                                          1089 
                                                          -
                                                          1090  ! Statement function to check for bad header line label
                                                          -
                                                          1091  badlabel( label ) = ( ( index( label, cttyp ) == 0 ) .or. ( index( label, cftyp ) == 0 ) )
                                                          -
                                                          1092 
                                                          -
                                                          1093  cttyp = tab // ' '
                                                          -
                                                          1094 
                                                          -
                                                          1095  ! Read and parse the header line of the standard file.
                                                          +
                                                          1075  logical badlabel
                                                          +
                                                          1076 
                                                          +
                                                          1077  ! Statement function to check for bad header line label
                                                          +
                                                          1078  badlabel( label ) = ( ( index( label, cttyp ) == 0 ) .or. ( index( label, cftyp ) == 0 ) )
                                                          +
                                                          1079 
                                                          +
                                                          1080  cttyp = tab // ' '
                                                          +
                                                          1081 
                                                          +
                                                          1082  ! Read and parse the header line of the standard file.
                                                          +
                                                          1083 
                                                          +
                                                          1084  cftyp = 'STD'
                                                          +
                                                          1085  if ( igetntbl( luns, header ) /= 0 ) then
                                                          +
                                                          1086  bort_str = bort_str_head // cftyp // ' TABLE ' // tab
                                                          +
                                                          1087  call bort(bort_str)
                                                          +
                                                          1088  endif
                                                          +
                                                          1089  call parstr ( header, tags, 5, ntag, '|', .false. )
                                                          +
                                                          1090  if ( ( ntag < 3 ) .or. ( badlabel( tags(1) ) ) ) then
                                                          +
                                                          1091  bort_str = bort_str_head // cftyp // ' TABLE ' // tab
                                                          +
                                                          1092  call bort(bort_str)
                                                          +
                                                          1093  endif
                                                          +
                                                          1094  call strnum ( tags(2), imt, iersn )
                                                          +
                                                          1095  call strnum ( tags(3), imtv, iersn )
                                                          1096 
                                                          -
                                                          1097  cftyp = 'STD'
                                                          -
                                                          1098  if ( igetntbl( luns, header ) /= 0 ) then
                                                          -
                                                          1099  bort_str = bort_str_head // cftyp // ' TABLE ' // tab
                                                          -
                                                          1100  call bort(bort_str)
                                                          -
                                                          1101  endif
                                                          -
                                                          1102  call parstr ( header, tags, 5, ntag, '|', .false. )
                                                          -
                                                          1103  if ( ( ntag < 3 ) .or. ( badlabel( tags(1) ) ) ) then
                                                          -
                                                          1104  bort_str = bort_str_head // cftyp // ' TABLE ' // tab
                                                          -
                                                          1105  call bort(bort_str)
                                                          -
                                                          1106  endif
                                                          -
                                                          1107  call strnum ( tags(2), imt, iersn )
                                                          -
                                                          1108  call strnum ( tags(3), imtv, iersn )
                                                          -
                                                          1109 
                                                          -
                                                          1110  ! Read and parse the header line of the local file.
                                                          -
                                                          1111 
                                                          -
                                                          1112  cftyp = 'LOC'
                                                          -
                                                          1113  if ( igetntbl( lunl, header ) /= 0 ) then
                                                          -
                                                          1114  bort_str = bort_str_head // cftyp // ' TABLE ' // tab
                                                          -
                                                          1115  call bort(bort_str)
                                                          -
                                                          1116  endif
                                                          -
                                                          1117  call parstr ( header, tags, 5, ntag, '|', .false. )
                                                          -
                                                          1118  if ( ( ntag < 4 ) .or. ( badlabel( tags(1) ) ) ) then
                                                          -
                                                          1119  bort_str = bort_str_head // cftyp // ' TABLE ' // tab
                                                          -
                                                          1120  call bort(bort_str)
                                                          -
                                                          1121  endif
                                                          -
                                                          1122  call strnum ( tags(2), imt2, iersn )
                                                          -
                                                          1123  call strnum ( tags(3), iogce, iersn )
                                                          -
                                                          1124  call strnum ( tags(4), iltv, iersn )
                                                          -
                                                          1125 
                                                          -
                                                          1126  ! Verify that both files are for the same master table.
                                                          -
                                                          1127 
                                                          -
                                                          1128  if ( imt /= imt2 ) then
                                                          -
                                                          1129  write(bort_str,'("BUFRLIB: GETTBH - MASTER TABLE NUMBER MISMATCH BETWEEN STD AND LOC TABLE ",A)') tab
                                                          -
                                                          1130  call bort(bort_str)
                                                          -
                                                          1131  endif
                                                          -
                                                          1132 
                                                          -
                                                          1133  return
                                                          -
                                                          1134 end subroutine gettbh
                                                          +
                                                          1097  ! Read and parse the header line of the local file.
                                                          +
                                                          1098 
                                                          +
                                                          1099  cftyp = 'LOC'
                                                          +
                                                          1100  if ( igetntbl( lunl, header ) /= 0 ) then
                                                          +
                                                          1101  bort_str = bort_str_head // cftyp // ' TABLE ' // tab
                                                          +
                                                          1102  call bort(bort_str)
                                                          +
                                                          1103  endif
                                                          +
                                                          1104  call parstr ( header, tags, 5, ntag, '|', .false. )
                                                          +
                                                          1105  if ( ( ntag < 4 ) .or. ( badlabel( tags(1) ) ) ) then
                                                          +
                                                          1106  bort_str = bort_str_head // cftyp // ' TABLE ' // tab
                                                          +
                                                          1107  call bort(bort_str)
                                                          +
                                                          1108  endif
                                                          +
                                                          1109  call strnum ( tags(2), imt2, iersn )
                                                          +
                                                          1110  call strnum ( tags(3), iogce, iersn )
                                                          +
                                                          1111  call strnum ( tags(4), iltv, iersn )
                                                          +
                                                          1112 
                                                          +
                                                          1113  ! Verify that both files are for the same master table.
                                                          +
                                                          1114 
                                                          +
                                                          1115  if ( imt /= imt2 ) then
                                                          +
                                                          1116  write(bort_str,'("BUFRLIB: GETTBH - MASTER TABLE NUMBER MISMATCH BETWEEN STD AND LOC TABLE ",A)') tab
                                                          +
                                                          1117  call bort(bort_str)
                                                          +
                                                          1118  endif
                                                          +
                                                          1119 
                                                          +
                                                          1120  return
                                                          +
                                                          1121 end subroutine gettbh
                                                          +
                                                          1122 
                                                          +
                                                          1134 subroutine getntbe ( lunt, ifxyn, line, iret )
                                                          1135 
                                                          -
                                                          1147 subroutine getntbe ( lunt, ifxyn, line, iret )
                                                          +
                                                          1136  implicit none
                                                          +
                                                          1137 
                                                          +
                                                          1138  integer, intent(in) :: lunt
                                                          +
                                                          1139  integer, intent(out) :: ifxyn, iret
                                                          +
                                                          1140  integer ntag, igetfxy, ifxy, igetntbl
                                                          +
                                                          1141 
                                                          +
                                                          1142  character*(*), intent(out) :: line
                                                          +
                                                          1143  character*128 bort_str1, bort_str2
                                                          +
                                                          1144  character*20 tags(4)
                                                          +
                                                          1145  character*6 adsc
                                                          +
                                                          1146 
                                                          +
                                                          1147  ! Get the first line of the next entry in the file.
                                                          1148 
                                                          -
                                                          1149  implicit none
                                                          -
                                                          1150 
                                                          -
                                                          1151  integer, intent(in) :: lunt
                                                          -
                                                          1152  integer, intent(out) :: ifxyn, iret
                                                          -
                                                          1153  integer ntag, igetfxy, ifxy, igetntbl
                                                          -
                                                          1154 
                                                          -
                                                          1155  character*(*), intent(out) :: line
                                                          -
                                                          1156  character*128 bort_str1, bort_str2
                                                          -
                                                          1157  character*20 tags(4)
                                                          -
                                                          1158  character*6 adsc
                                                          -
                                                          1159 
                                                          -
                                                          1160  ! Get the first line of the next entry in the file.
                                                          +
                                                          1149  iret = igetntbl( lunt, line )
                                                          +
                                                          1150  if ( iret == 0 ) then
                                                          +
                                                          1151  ! The first field within this line should contain the FXY number.
                                                          +
                                                          1152  call parstr ( line(1:20), tags, 4, ntag, '|', .false. )
                                                          +
                                                          1153  if ( igetfxy( tags(1), adsc ) /= 0 ) then
                                                          +
                                                          1154  bort_str1 = 'BUFRLIB: GETNTBE - CARD BEGINNING WITH: ' // line(1:20)
                                                          +
                                                          1155  bort_str2 = ' HAS BAD OR MISSING FXY NUMBER'
                                                          +
                                                          1156  call bort2(bort_str1, bort_str2)
                                                          +
                                                          1157  endif
                                                          +
                                                          1158  ! Store the WMO bit-wise representation of the FXY number.
                                                          +
                                                          1159  ifxyn = ifxy( adsc )
                                                          +
                                                          1160  endif
                                                          1161 
                                                          -
                                                          1162  iret = igetntbl( lunt, line )
                                                          -
                                                          1163  if ( iret == 0 ) then
                                                          -
                                                          1164  ! The first field within this line should contain the FXY number.
                                                          -
                                                          1165  call parstr ( line(1:20), tags, 4, ntag, '|', .false. )
                                                          -
                                                          1166  if ( igetfxy( tags(1), adsc ) /= 0 ) then
                                                          -
                                                          1167  bort_str1 = 'BUFRLIB: GETNTBE - CARD BEGINNING WITH: ' // line(1:20)
                                                          -
                                                          1168  bort_str2 = ' HAS BAD OR MISSING FXY NUMBER'
                                                          -
                                                          1169  call bort2(bort_str1, bort_str2)
                                                          -
                                                          1170  endif
                                                          -
                                                          1171  ! Store the WMO bit-wise representation of the FXY number.
                                                          -
                                                          1172  ifxyn = ifxy( adsc )
                                                          -
                                                          1173  endif
                                                          -
                                                          1174 
                                                          -
                                                          1175  return
                                                          -
                                                          1176 end subroutine getntbe
                                                          -
                                                          1177 
                                                          -
                                                          1208 subroutine codflg(cf)
                                                          -
                                                          1209 
                                                          -
                                                          1210  use moda_tablef
                                                          +
                                                          1162  return
                                                          +
                                                          1163 end subroutine getntbe
                                                          +
                                                          1164 
                                                          +
                                                          1195 subroutine codflg(cf)
                                                          +
                                                          1196 
                                                          +
                                                          1197  use moda_tablef
                                                          +
                                                          1198 
                                                          +
                                                          1199  implicit none
                                                          +
                                                          1200 
                                                          +
                                                          1201  character, intent(in) :: cf
                                                          +
                                                          1202 
                                                          +
                                                          1203  character*128 bort_str
                                                          +
                                                          1204 
                                                          +
                                                          1205  call capit(cf)
                                                          +
                                                          1206  if(cf/='Y'.and. cf/='N') then
                                                          +
                                                          1207  write(bort_str,'("BUFRLIB: CODFLG - INPUT ARGUMENT IS ",A1,", IT MUST BE EITHER Y OR N")') cf
                                                          +
                                                          1208  call bort(bort_str)
                                                          +
                                                          1209  endif
                                                          +
                                                          1210  cdmf = cf
                                                          1211 
                                                          -
                                                          1212  implicit none
                                                          -
                                                          1213 
                                                          -
                                                          1214  character, intent(in) :: cf
                                                          -
                                                          1215 
                                                          -
                                                          1216  character*128 bort_str
                                                          -
                                                          1217 
                                                          -
                                                          1218  call capit(cf)
                                                          -
                                                          1219  if(cf/='Y'.and. cf/='N') then
                                                          -
                                                          1220  write(bort_str,'("BUFRLIB: CODFLG - INPUT ARGUMENT IS ",A1,", IT MUST BE EITHER Y OR N")') cf
                                                          -
                                                          1221  call bort(bort_str)
                                                          -
                                                          1222  endif
                                                          -
                                                          1223  cdmf = cf
                                                          -
                                                          1224 
                                                          -
                                                          1225  return
                                                          -
                                                          1226 end subroutine codflg
                                                          -
                                                          1227 
                                                          -
                                                          1240 integer function nemock(nemo) result(iret)
                                                          -
                                                          1241 
                                                          -
                                                          1242  implicit none
                                                          -
                                                          1243 
                                                          -
                                                          1244  integer i, lnemo
                                                          -
                                                          1245 
                                                          -
                                                          1246  character*(*), intent(in) :: nemo
                                                          -
                                                          1247 
                                                          -
                                                          1248  ! Get the length of nemo
                                                          -
                                                          1249 
                                                          -
                                                          1250  lnemo = 0
                                                          -
                                                          1251  do i=len(nemo),1,-1
                                                          -
                                                          1252  if(nemo(i:i)/=' ') then
                                                          -
                                                          1253  lnemo = i
                                                          -
                                                          1254  exit
                                                          -
                                                          1255  endif
                                                          -
                                                          1256  enddo
                                                          -
                                                          1257  if(lnemo<1 .or. lnemo>8) then
                                                          -
                                                          1258  iret = -1
                                                          -
                                                          1259  return
                                                          -
                                                          1260  endif
                                                          -
                                                          1261 
                                                          -
                                                          1262  ! Scan nemo for allowable characters
                                                          -
                                                          1263 
                                                          -
                                                          1264  if ( verify(nemo(1:lnemo),'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_.') == 0 ) then
                                                          -
                                                          1265  iret = 0
                                                          -
                                                          1266  else
                                                          -
                                                          1267  iret = -2
                                                          -
                                                          1268  endif
                                                          -
                                                          1269 
                                                          -
                                                          1270  return
                                                          -
                                                          1271 end function nemock
                                                          +
                                                          1212  return
                                                          +
                                                          1213 end subroutine codflg
                                                          +
                                                          1214 
                                                          +
                                                          1227 integer function nemock(nemo) result(iret)
                                                          +
                                                          1228 
                                                          +
                                                          1229  implicit none
                                                          +
                                                          1230 
                                                          +
                                                          1231  integer i, lnemo
                                                          +
                                                          1232 
                                                          +
                                                          1233  character*(*), intent(in) :: nemo
                                                          +
                                                          1234 
                                                          +
                                                          1235  ! Get the length of nemo
                                                          +
                                                          1236 
                                                          +
                                                          1237  lnemo = 0
                                                          +
                                                          1238  do i=len(nemo),1,-1
                                                          +
                                                          1239  if(nemo(i:i)/=' ') then
                                                          +
                                                          1240  lnemo = i
                                                          +
                                                          1241  exit
                                                          +
                                                          1242  endif
                                                          +
                                                          1243  enddo
                                                          +
                                                          1244  if(lnemo<1 .or. lnemo>8) then
                                                          +
                                                          1245  iret = -1
                                                          +
                                                          1246  return
                                                          +
                                                          1247  endif
                                                          +
                                                          1248 
                                                          +
                                                          1249  ! Scan nemo for allowable characters
                                                          +
                                                          1250 
                                                          +
                                                          1251  if ( verify(nemo(1:lnemo),'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_.') == 0 ) then
                                                          +
                                                          1252  iret = 0
                                                          +
                                                          1253  else
                                                          +
                                                          1254  iret = -2
                                                          +
                                                          1255  endif
                                                          +
                                                          1256 
                                                          +
                                                          1257  return
                                                          +
                                                          1258 end function nemock
                                                          subroutine bort(str)
                                                          Log an error message, then abort the application program.
                                                          Definition: borts.F90:15
                                                          subroutine bort2(str1, str2)
                                                          Log two error messages, then abort the application program.
                                                          Definition: borts.F90:39
                                                          subroutine errwrt(str)
                                                          Specify a custom location for the logging of error and diagnostic messages generated by the NCEPLIBS-...
                                                          Definition: errwrt.F90:32
                                                          @@ -1085,25 +1074,25 @@ -
                                                          subroutine sntbde(lunt, ifxyn, line, mxmtbd, mxelem, nmtbd, imfxyn, cmmnem, cmdsc, cmseq, nmelem, iefxyn, ceelem)
                                                          Store the first line of an entry that was previously read from an ASCII master Table D file into a se...
                                                          -
                                                          subroutine sntbfe(lunt, ifxyn)
                                                          Read an entire entry from a previously-opened ASCII master Code/Flag table file, then store the infor...
                                                          -
                                                          subroutine sntbestr(hestr, ifxyn, estr)
                                                          Generate an error-reporting string containing an FXY number.
                                                          -
                                                          subroutine rdmtbd(lunstd, lunltd, mxmtbd, mxelem, imt, imtv, iogce, iltv, nmtbd, imfxyn, cmmnem, cmdsc, cmseq, nmelem, iefxyn, ceelem)
                                                          Read master Table D information from two separate ASCII files (one standard and one local) and then m...
                                                          -
                                                          subroutine mtfnam(imt, imtv, iogce, imtvl, tbltyp, stdfil, locfil)
                                                          Based on the input arguments, determine the names of the corresponding standard and local master tabl...
                                                          Definition: mastertable.F90:87
                                                          -
                                                          subroutine codflg(cf)
                                                          Specify whether or not code and flag table information should be included during all future reads of ...
                                                          -
                                                          integer function nemock(nemo)
                                                          Check a mnemonic for validity.
                                                          -
                                                          subroutine sntbbe(ifxyn, line, mxmtbb, nmtbb, imfxyn, cmscl, cmsref, cmbw, cmunit, cmmnem, cmdsc, cmelem)
                                                          Store an entry that was previously read from an ASCII master Table B file into a set of merged Fortra...
                                                          -
                                                          subroutine getntbe(lunt, ifxyn, line, iret)
                                                          Read the first line of the next entry from the specified ASCII master table B, table D or table F (Co...
                                                          -
                                                          integer function igettdi(iflag)
                                                          Depending on the value of the input flag, either return the next usable scratch Table D index for the...
                                                          -
                                                          subroutine rdmtbb(lunstb, lunltb, mxmtbb, imt, imtv, iogce, iltv, nmtbb, imfxyn, cmscl, cmsref, cmbw, cmunit, cmmnem, cmdsc, cmelem)
                                                          Read master Table B information from two separate ASCII files (one standard and one local) and then m...
                                                          -
                                                          integer function igetntbl(lunt, line)
                                                          Read the next line from an ASCII master table B, table D or Code/Flag table file, ignoring any blank ...
                                                          -
                                                          subroutine gettbh(luns, lunl, tab, imt, imtv, iogce, iltv)
                                                          Read the header lines from two separate ASCII files (one standard and one local) containing master ta...
                                                          +
                                                          subroutine sntbde(lunt, ifxyn, line, mxmtbd, mxelem, nmtbd, imfxyn, cmmnem, cmdsc, cmseq, nmelem, iefxyn, ceelem)
                                                          Store the first line of an entry that was previously read from an ASCII master Table D file into a se...
                                                          +
                                                          subroutine sntbfe(lunt, ifxyn)
                                                          Read an entire entry from a previously-opened ASCII master Code/Flag table file, then store the infor...
                                                          +
                                                          subroutine sntbestr(hestr, ifxyn, estr)
                                                          Generate an error-reporting string containing an FXY number.
                                                          +
                                                          subroutine rdmtbd(lunstd, lunltd, mxmtbd, mxelem, imt, imtv, iogce, iltv, nmtbd, imfxyn, cmmnem, cmdsc, cmseq, nmelem, iefxyn, ceelem)
                                                          Read master Table D information from two separate ASCII files (one standard and one local) and then m...
                                                          +
                                                          subroutine mtfnam(imt, imtv, iogce, imtvl, tbltyp, stdfil, locfil)
                                                          Based on the input arguments, determine the names of the corresponding standard and local master tabl...
                                                          Definition: mastertable.F90:84
                                                          +
                                                          subroutine codflg(cf)
                                                          Specify whether or not code and flag table information should be included during all future reads of ...
                                                          +
                                                          integer function nemock(nemo)
                                                          Check a mnemonic for validity.
                                                          +
                                                          subroutine sntbbe(ifxyn, line, mxmtbb, nmtbb, imfxyn, cmscl, cmsref, cmbw, cmunit, cmmnem, cmdsc, cmelem)
                                                          Store an entry that was previously read from an ASCII master Table B file into a set of merged Fortra...
                                                          +
                                                          subroutine getntbe(lunt, ifxyn, line, iret)
                                                          Read the first line of the next entry from the specified ASCII master table B, table D or table F (Co...
                                                          +
                                                          integer function igettdi(iflag)
                                                          Depending on the value of the input flag, either return the next usable scratch Table D index for the...
                                                          +
                                                          subroutine rdmtbb(lunstb, lunltb, mxmtbb, imt, imtv, iogce, iltv, nmtbb, imfxyn, cmscl, cmsref, cmbw, cmunit, cmmnem, cmdsc, cmelem)
                                                          Read master Table B information from two separate ASCII files (one standard and one local) and then m...
                                                          +
                                                          integer function igetntbl(lunt, line)
                                                          Read the next line from an ASCII master table B, table D or Code/Flag table file, ignoring any blank ...
                                                          +
                                                          subroutine gettbh(luns, lunl, tab, imt, imtv, iogce, iltv)
                                                          Read the header lines from two separate ASCII files (one standard and one local) containing master ta...
                                                          recursive subroutine mtinfo(cmtdir, lunmt1, lunmt2)
                                                          Specify the directory location and Fortran logical unit numbers to be used when reading master BUFR t...
                                                          Definition: mastertable.F90:35
                                                          -
                                                          subroutine rdmtbf(lunstf, lunltf)
                                                          Read master Code/Flag table information from two separate ASCII files (one standard and one local) an...
                                                          -
                                                          integer function ireadmt(lun)
                                                          Check the most recent BUFR message that was read via a call to one of the message-reading subroutines...
                                                          -
                                                          recursive subroutine strnum(str, num, iret)
                                                          Decode an integer from a character string.
                                                          Definition: misc.F90:177
                                                          -
                                                          subroutine strsuc(str1, str2, lens)
                                                          Remove leading and trailing blanks from a character string.
                                                          Definition: misc.F90:220
                                                          -
                                                          subroutine capit(str)
                                                          Capitalize all of the alphabetic characters in a string.
                                                          Definition: misc.F90:355
                                                          +
                                                          subroutine rdmtbf(lunstf, lunltf)
                                                          Read master Code/Flag table information from two separate ASCII files (one standard and one local) an...
                                                          +
                                                          integer function ireadmt(lun)
                                                          Check the most recent BUFR message that was read via a call to one of the message-reading subroutines...
                                                          +
                                                          recursive subroutine strnum(str, num, iret)
                                                          Decode an integer from a character string.
                                                          Definition: misc.F90:156
                                                          +
                                                          subroutine strsuc(str1, str2, lens)
                                                          Remove leading and trailing blanks from a character string.
                                                          Definition: misc.F90:199
                                                          +
                                                          subroutine capit(str)
                                                          Capitalize all of the alphabetic characters in a string.
                                                          Definition: misc.F90:334
                                                          Wrap C NCEPLIBS-bufr functions so they can be called from within the Fortran part of the library.
                                                          Definition: bufrlib.F90:11
                                                          Declare arrays and variables used to store BUFR messages internally for multiple file IDs.
                                                          integer, dimension(:,:), allocatable mbay
                                                          Current BUFR message for each file ID.
                                                          @@ -1122,19 +1111,19 @@
                                                          integer nmtd
                                                          Number of master Table D entries (up to a maximum of mxmtbd).
                                                          integer, dimension(:), allocatable idefxy
                                                          WMO bit-wise representations of child descriptors corresponding to idfxyn.
                                                          integer, dimension(:), allocatable ibfxyn
                                                          WMO bit-wise representations of FXY numbers for master Table B.
                                                          -
                                                          Declare arrays and variables used to store master Table B and Table D entries within internal memory.
                                                          -
                                                          character *120, dimension(:,:), allocatable ceelem
                                                          Element names corresponding to iefxyn.
                                                          -
                                                          character *4, dimension(:), allocatable cmdscb
                                                          Descriptor codes for Table B elements.
                                                          -
                                                          integer, dimension(:,:), allocatable iefxyn
                                                          WMO bit-wise representations of child descriptors of Table D sequences.
                                                          -
                                                          character *4, dimension(:), allocatable cmdscd
                                                          Descriptor codes for Table D sequences.
                                                          +
                                                          Declare arrays and variables used to store master Table B and Table D entries within internal memory.
                                                          +
                                                          character *120, dimension(:,:), allocatable ceelem
                                                          Element names corresponding to iefxyn.
                                                          +
                                                          character *4, dimension(:), allocatable cmdscb
                                                          Descriptor codes for Table B elements.
                                                          +
                                                          integer, dimension(:,:), allocatable iefxyn
                                                          WMO bit-wise representations of child descriptors of Table D sequences.
                                                          +
                                                          character *4, dimension(:), allocatable cmdscd
                                                          Descriptor codes for Table D sequences.
                                                          Declare arrays used by various subroutines and functions to hold a temporary working copy of a Sectio...
                                                          character *6, dimension(:), allocatable cds3
                                                          Temporary working copy of Section 3 descriptor list in character form.
                                                          -
                                                          Declare an array used to store a switch for each file ID, indicating whether BUFR messages read from ...
                                                          -
                                                          integer, dimension(:), allocatable isc3
                                                          Section 3 switch for each file ID:
                                                          -
                                                          Declare a variable used to indicate whether master code and flag tables should be read.
                                                          -
                                                          character cdmf
                                                          Flag indicating whether to include code and flag table information during reads of master BUFR tables...
                                                          +
                                                          Declare an array used to store a switch for each file ID, indicating whether BUFR messages read from ...
                                                          +
                                                          integer, dimension(:), allocatable isc3
                                                          Section 3 switch for each file ID:
                                                          +
                                                          Declare a variable used to indicate whether master code and flag tables should be read.
                                                          +
                                                          character cdmf
                                                          Flag indicating whether to include code and flag table information during reads of master BUFR tables...
                                                          recursive integer function iupbs01(mbay, s01mnem)
                                                          Read a specified value from within Section 0 or Section 1 of a BUFR message.
                                                          Definition: s013vals.F90:247
                                                          -
                                                          recursive subroutine upds3(mbay, lcds3, cds3, nds3)
                                                          Read the sequence of data descriptors contained within Section 3 of a BUFR message.
                                                          Definition: s013vals.F90:829
                                                          +
                                                          recursive subroutine upds3(mbay, lcds3, cds3, nds3)
                                                          Read the sequence of data descriptors contained within Section 3 of a BUFR message.
                                                          Definition: s013vals.F90:826
                                                          integer function istdesc(idn)
                                                          Given the WMO bit-wise representation of an FXY value for a descriptor, check whether the descriptor ...
                                                          Definition: standard.F90:298
                                                          subroutine parstr(str, tags, mtag, ntag, sep, limit80)
                                                          Parse a string containing one or more substrings into an array of substrings.
                                                          Definition: strings.F90:473
                                                          subroutine x84(iin8, iout4, nval)
                                                          Encode one or more 8-byte integer values as 4-byte integer values.
                                                          Definition: x4884.F90:65
                                                          diff --git a/md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html b/md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html index 545c154d3..5b4ab2c7a 100644 --- a/md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html +++ b/md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html @@ -26,7 +26,7 @@ @@ -88,6 +88,15 @@

                                                          Detailed description of changes included within each new release.

                                                          +Version 12.2.0 - February 19, 2025

                                                          +
                                                            +
                                                          • Removed subprograms ufbin3 and nevn from the library. These subprograms had previously been used to support the processing of NCEP prepfits files, which are now obsolete. [Issue #601]
                                                          • +
                                                          • Added capability to encode Table C marker operators within BUFR messages. [Issue #611]
                                                          • +
                                                          • Eliminated duplication when generating internal replication sequences from master tables. [Issue #612]
                                                          • +
                                                          • Fixed a bug which occurred in certain situations when encoding multiple delayed replication factors within subroutine drfini(). [Issue #623]
                                                          • +
                                                          • Upgraded debufr utility to handle BUFR messages up to 7.5Mb in size. [Issue #630]
                                                          • +
                                                          +

                                                          Version 12.1.0 - July 10, 2024

                                                          • Added support for IntelLLVM (OneAPI) compilers. [Issue #538]
                                                          • @@ -100,12 +109,12 @@

                                                          • Added apxdx to project as new utility. [Issue #585]
                                                          • Fixed a bug in subroutine rewnbf() to ensure that it points to the correct subset in a BUFR message after a restore call. [Issue #599]
                                                          -

                                                          +

                                                          Version 12.0.1 - September 15, 2023

                                                          • An extension was added to support the query interface for C++ IODA converters. [Issue #519]
                                                          -

                                                          +

                                                          Version 12.0.0 - June 8, 2023

                                                          • The library has been consolidated into a single build using 4-byte integers. It can still be linked to Fortran application codes which are compiled using 8-byte integers; however, such codes must now include a call to new subroutine setim8b() with a value of .true. before making any calls to any other library routines. Furthermore, since all library functions which return integer values (e.g. iupbs01(), isetprm(), ibfms()) will now return 4-byte integer values, Fortran application codes which are compiled using 8-byte integers must now also explicitly declare such functions as 4-byte integers before calling them. [Issue #78]
                                                          • @@ -117,20 +126,20 @@

                                                          • The library has been cleaned up to eliminate a number of compiler warnings. [Issue #300]
                                                          • Documentation has been improved throughout the library, including the use of Doxygen-style docblocks for all program files. [Issue #246]
                                                          -

                                                          +

                                                          Version 11.7.1 - August 26, 2022

                                                          • More extensions were added to support the query interface for C++ IODA converters. [Issue #225]
                                                          • Several internal routines were modified to allow the encoding and decoding of values larger than 32 bits. [Issue #195]
                                                          -

                                                          +

                                                          Version 11.7.0 - May 19, 2022

                                                          • Extensions were added to support a new query interface for C++ IODA converters. [Issue #198]
                                                          • Updates and bug fixes were made to several utility programs within the library package. [Issue #141]
                                                          • A fix was made to prevent a line truncation error which occurs with certain compilers when the value of the MASTER_TABLE_DIR macro exceeds a certain length. [Issue #182]
                                                          -

                                                          +

                                                          Version 11.6.0 - November 10, 2021

                                                          • All of the library builds now use dynamic allocation, so the "_DA" suffix has now been correspondingly removed from the names of the library builds. [Issue #77]
                                                          • @@ -141,7 +150,7 @@

                                                          • Subroutine jstchr and function rjust have been removed from the library, and their usage has been replaced with the Fortran intrinsic functions adjustl and adjustr. [Issue #165]
                                                          • Several prototypes were added to the bufrlib.h header file to enable further interoperability with C application programs. In addition, several existing prototypes were modified to use size_t when passing string lengths between Fortran and C. [Issue #164]
                                                          -

                                                          +

                                                          Version 11.5.0 - April 26, 2021

                                                          • Subroutine ufbseq() was modified for cases where the number of available levels exceeds the amount of user-provided array space when reading from an input file. Previously, the software would abort in such cases without returning any data whatsoever, but with the change it will now print a diagnostic and return with the number of levels equal to the amount of array space that was provided. [Issue #52]
                                                          • @@ -149,27 +158,27 @@

                                                          • Subroutine ufbdmp() was modified to fix a bug when checking for the "missing" value in long character strings (i.e. longer than 8 bytes) and to enable printing of up to 120 characters for such strings. [Issue #55]
                                                          • Subroutine readlc() was modified to return a "missing" character string if the requested mnemonic isn't found in the subset. Previously, the subroutine would return a string of all blank characters in such cases. [Issue #53]
                                                          • Subroutine writlc() was modified to print a warning message if the requested mnemonic isn't found in the subset definition. The library would previously abort in such cases. [Issue #53]
                                                          • -
                                                          • The default directory location of the BUFR master tables in subroutine bfrini() was changed from a fixed WCOSS-specific path. It is now set to the defined value of the MASTER_TABLE_DIR macro when the library was built. [Issue #123]
                                                          • +
                                                          • The default directory location of the BUFR master tables in subroutine bfrini() was changed from a fixed WCOSS-specific path. It is now set to the defined value of the MASTER_TABLE_DIR macro when the library was built. [Issue #123]
                                                          • Subroutine writsa() was modified to allow the return of up to two BUFR messages during the same call to the subroutine, in the rare instances where more than one BUFR message could become available during such a call. [Issue #54]
                                                          • Several internal Fortran variable declarations were modified for compatibility with GNU v10+ compilers. [Issue #81]
                                                          • Subroutines pkx and chrtrn are no longer used within the library and were never intended to be called from application codes, so they have now been removed from the library. [Issue #107]
                                                          -

                                                          +

                                                          Version 11.4.0 - November 20, 2020

                                                          • A Python API was added to the library, for use with Python applications. [Issue #61]
                                                          -

                                                          +

                                                          Version 11.3.2 - July 16, 2020

                                                          • A user-friendly sanity check was added to subroutine closbf(), in case an application program is using a dynamic-allocation build of the library and calls this subroutine prior to calling subroutine openbf(). The library would previously abort in such cases, but it will now just print a warning message. [Issue #9]
                                                          -

                                                          +

                                                          Version 11.3.1 - March 3, 2020

                                                          • Subroutine stndrd() was patched to fix an internal calculation for messages containing only one subset. [Issue #51]
                                                          -

                                                          +

                                                          Version 11.3.0 - May 21, 2019

                                                          • A bug was fixed in the bitmap processing, so that each Table A mnemonic in the jump/link table now tracks its own individual set of underlying Table C operators. This involved changes to function igetrfel() and subroutines tabsub() and makestab().
                                                          • @@ -182,7 +191,7 @@

                                                          • Subroutines msgupd() and cpyupd() were modified so that the IPRT verbosity must be greater than or equal to 1 in order for diagnostic alerts to be printed whenever BUFR subsets greater than 65535 bytes are written to their own output messages.
                                                          • Function i4dy() was modified to change the window for converting 2-digit years to 4-digit years. The old window was 1921-2020, i.e. add 1900 to any 2-digit year greater than 20; otherwise add 2000. The new window will be 1941-2040, i.e. add 1900 to any 2-digit year greater than 40; otherwise add 2000.
                                                          -

                                                          +

                                                          Version 11.2.0 - April 11, 2017

                                                          • Support was added for the processing of 2-2X-255, 2-3X-255 and 2-4X-255 marker operators when reading BUFR messages, including when such operators are included in sequences within a BUFR DX table.
                                                          • @@ -194,32 +203,32 @@

                                                          • The build script makebufrlib.sh was updated to add a missing compiler option needed for compatibility with the Cray programming environment on the s_64 ("supersize") build.
                                                          • A bug was fixed in subroutine ufbtab() which could occasionally lead to array maximums being exceeded and corrupted output when reading BUFR files.
                                                          -

                                                          +

                                                          Version 11.1.0 - April 27, 2016

                                                          • Subroutine wrcmps() was modified to fix a bug involving the encoding of long character strings (via subroutine writlc()) into compressed messages which also contain delayed replication sequences.
                                                          • Subroutine msgupd() was modified to always call subroutine usrtpl(), even for overlarge subsets which don''t get written to the output stream. This ensures that such subsets are properly flushed from internal arrays.
                                                          -

                                                          +

                                                          Version 11.0.2

                                                          • The build script makebufrlib.sh was updated for compatibility with the Cray programming environment, along with module MODA_MSTABS and functions icbfms() and isize(). All changes remain compatible with other supported environments.
                                                          -

                                                          +

                                                          Version 11.0.1

                                                          • Subroutines cpyupd(), ufbmem(), ufbmex() and ufbovr() were patched to include the proper declaration for IPRT, which is a global variable controlling the verbosity of diagnostic output.
                                                          • Subroutine ufdump() was modified to include level identifiers for event stacks in the print output.
                                                          • Subroutine wrcmps() was modified to fix a bug involving a variable that was not being saved between successive calls to this subroutine and which in rare cases could result in the loss of output subsets.
                                                          -

                                                          +

                                                          Version 11.0.0 - April 27, 2015

                                                          • A new subroutine rtrcptb() was added which works just like subroutine rtrcpt(), except that it operates on a BUFR message passed directly to it by a call argument, rather than on the last BUFR message that was indirectly read during the previous call to subroutine readmg(), readmm(), readerme() or equivalent. Subroutine rtrcpt() was correspondingly modified to now directly call rtrcptb(), to avoid maintaining the same program logic within two different subroutines.
                                                          • The maximum number of delayed replication factors that can be passed in as input to subroutine drfini() was increased from 100 to 200.
                                                          • Subroutine ufbseq() was modified to fix a bug involving nesting of delayed replication sequences. The subroutine would fail to store data properly in cases where the inner-nested sequence was not present (i.e. zero replications) within the first replication of the outer sequence.
                                                          • The makebufrlib.sh build script was modified to automatically extract the version number for the current build from the source of subroutine bvers(). Previously this information had been hardcoded in multiple lines of the script.
                                                          • -
                                                          • The default directory location of the BUFR master tables in subroutine bfrini() was changed from "/nwprod/fix" to "/nwprod/decoders/decod_shared/fix".
                                                          • +
                                                          • The default directory location of the BUFR master tables in subroutine bfrini() was changed from "/nwprod/fix" to "/nwprod/decoders/decod_shared/fix".
                                                          • A new subroutine nemspecs() was added which returns the scale factor, reference value and bit width corresponding to a specified occurrence of a given mnemonic within a subset definition, including accounting for any Table C operators such as 2-01-YYY, 2-02-YYY, 2-03-YYY, 2-07-YYY, 2-08-YYY, etc. which may be in effect for that particular occurrence of the mnemonic.
                                                          • A new subroutine nemdefs() was added which returns the element definition and units associated with a given mnemonic.
                                                          • Global parameter MXIMB was removed from the BUFRLIB, and the corresponding logic within subroutine mvb() was simplified to mitigate the need for it.
                                                          • @@ -230,10 +239,10 @@

                                                          • New versions of all of the normal builds of BUFRLIB have been added which allow certain array sizes to be specified by the user at run time, with the corresponding arrays dynamically allocated at run time rather than statically allocated at compile time. The new builds contain the suffix "_DA" and can be used by application programs which need flexibility in defining size limits for certain outlier BUFR datasets. The size limits that can be modified are defined within new subroutine isetprm(), which must itself be called prior to the first call to subroutine openbf() for each new size limit that is to be modified from its default value. The corresponding arrays are then dynamically allocated during the subsequent first call to openbf(). As part of this enhancement, numerous subprograms within BUFRLIB have been rewritten to share memory using FORTRAN modules rather than common blocks, and new conditional compilation flags have been incorporated into these subprograms as well as to the makebufrlib.sh build script. This allows the same source code and build script to be used for both dynamic allocation and static allocation builds. Note that application programs which don't have a need to redefine any default array size limits may continue to use the existing static allocation builds for maximum runtime efficiency.
                                                          • A new subroutine pkx() was added which works just like subroutine pkb(), except that it properly handles cases where the input value NBITS is greater than the number of bits in a machine word.
                                                          • Support was added for the processing of 2-2X, 2-3X and 2-4X non-marker operators when reading or writing BUFR messages, including when these operators are included in sequences within a BUFR DX table.
                                                          • -
                                                          • Subroutine stseq() was modified to fix a bug involving the application of associated fields to Table D sequence descriptors.
                                                          • +
                                                          • Subroutine stseq() was modified to fix a bug involving the application of associated fields to Table D sequence descriptors.
                                                          • Function icbfms() was modified to improve the logic for identifying "missing" strings encoded as REAL*8 10E10 values prior to version 10.2.0 of the library.
                                                          -

                                                          +

                                                          Version 10.2.5

                                                          • Subroutine mesgbf() was modified to ensure that the input BUFR file is always closed before exiting the subroutine.
                                                          • @@ -241,28 +250,28 @@

                                                          • A declaration typo was fixed in subroutine blocks().
                                                          • Global parameter MAXNC (the maximum number of FXY descriptors that can be written into Section 3 of a BUFR message) was increased from 300 to 600.
                                                          -

                                                          +

                                                          Version 10.2.4

                                                          • Configuration files bufrlib.PRM and makebufrlib.sh were updated to generate a 4_32 build (4-byte REAL, 4-byte INT, 32-bit compilation) on the IBM CCS for version 10.2.3 of the BUFRLIB.
                                                          -

                                                          +

                                                          Version 10.2.3 - June 21, 2013

                                                          • Subroutine rdusdx() was modified to prevent a segfault when trying to read DX dictionary information from an empty file.
                                                          -

                                                          +

                                                          Version 10.2.2

                                                          • Subroutine openbf() was modified to fix a bug which caused a segfault in certain cases when appending to a BUFR file using the embedded C-language I/O.
                                                          • Subroutines readlc() and writlc() were modified to allow the input mnemonic string to be up to 14 characters when it contains a '#' condition code.
                                                          -

                                                          +

                                                          Version 10.2.1

                                                          • A bug was fixed in the embedded C-language I/O to account for the difference in index numbering between Fortran and C arrays.
                                                          -

                                                          +

                                                          Version 10.2.0 - October 19, 2012

                                                          • The makebufrlib.sh script was modified to streamline the endianness check and make it more portable.
                                                          • @@ -275,7 +284,7 @@

                                                          • Functionality was added to improve the portability of reading and writing BUFR messages across different platforms. All calls to existing FORTRAN subroutines which read or write BUFR messages from disk (e.g. readmg(), ufbmem(), ufbtab(), writsb(), wrcmps(), copymg(), etc.) now use embedded C-language I/O to perform these tasks. Among other things, this means that any BUFR file can now be read regardless of whether it has been pre-blocked with FORTRAN control words using the cwordsh utility. For writing BUFR files, a new subroutine setblock() was added which allows users to specify whether output BUFR messages are to be unblocked (which is the new default), big-endian blocked, or little-endian blocked.
                                                          • A new subroutine setbmiss() was added which allows users to specify a custom "missing" value for writing to and reading from BUFR files, rather than using the BUFRLIB default "missing" value of 10E10. A corresponding function getbmiss() was also added which returns the current "missing" value in use.
                                                          -

                                                          +

                                                          Version 10.1.0 - June 11, 2012

                                                          • Subroutine ufdump() was modified to fix a bug when checking for the "missing" value in long character strings (i.e. longer than 8 bytes).
                                                          • @@ -290,12 +299,12 @@

                                                          • Subroutine wrdxtb() was modified to prevent it from trying to store more than 255 Table A, Table B or Table D descriptors in a single DX dictionary message. The maximum value was set to 255 since regular 8-bit delayed replication is used to store descriptor information in these messages.
                                                          • Subroutine tabsub() was modified to correctly generate the jump/link table for subsets where a Table C operator immediately follows a Table D sequence.
                                                          -

                                                          +

                                                          Version 10.0.1

                                                          • Subroutine rewnbf() was modified to fix a bug which skipped the first data message after a file rewind.
                                                          -

                                                          +

                                                          Version 10.0.0 - August 12, 2010

                                                          • Subroutines PKVS1, OVRBS1, NMBYT, READIBM, IREADIBM, READFT, IREADFT and MOVA2I, which had been marked as obsolete within a previous version of BUFRLIB, have now been deleted.
                                                          • @@ -312,7 +321,7 @@

                                                          • Subroutines readerme(), rdmsgw() and RDMSGB were modified to prevent the overflow of an internal array for extremely large BUFR messages.
                                                          • Subroutine upds3() was modified to pass in a new input argument containing the dimensioned size of the output array, in order to prevent the subroutine from possibly overflowing the array.
                                                          • Subroutine writsa() was modified to pass in a new input argument containing the dimensioned size of the output array, in order to prevent the subroutine from possibly overflowing the array.
                                                          • -
                                                          • A new capability was added to BUFRLIB to enable the decoding of a BUFR message according to its data description section (Section 3). This is activated by setting IO="SEC3" when opening the file via subroutine openbf(). Master tables containing all possible BUFR descriptors are also required, and these may be specified via a call to new subroutine mtinfo() or by using default values specified within subroutine bfrini(). If the default values are used, then FORTRAN logical unit numbers 98 and 99 will be allocated by the BUFRLIB for opening and reading the master tables. This new capability allows BUFR messages to be decoded without pre-defined DX dictionary files.
                                                          • +
                                                          • A new capability was added to BUFRLIB to enable the decoding of a BUFR message according to its data description section (Section 3). This is activated by setting IO="SEC3" when opening the file via subroutine openbf(). Master tables containing all possible BUFR descriptors are also required, and these may be specified via a call to new subroutine mtinfo() or by using default values specified within subroutine bfrini(). If the default values are used, then FORTRAN logical unit numbers 98 and 99 will be allocated by the BUFRLIB for opening and reading the master tables. This new capability allows BUFR messages to be decoded without pre-defined DX dictionary files.
                                                          • Subroutine readmm() was re-written to directly call subroutine rdmemm() instead of duplicating all of the code logic in rdmemm().
                                                          • Subroutine upb() was re-written to directly call subroutine upbb() instead of duplicating all of the code logic in upbb().
                                                          • Subroutine POSAPN has been marked as obsolete (for future removal from BUFRLIB). The same functionality can now be obtained via the use of subroutine posapx().
                                                          • @@ -331,7 +340,7 @@

                                                          • Functions LSTRPC and LSTRPS have been marked as obsolete (for future removal from BUFRLIB). The same functionality can now be obtained via the use of function lstjpb().
                                                          • Subroutine ufbtab() was modified to fix a bug involving the unpacking of character strings which are identical within each subset of a single compressed BUFR message.
                                                          -

                                                          +

                                                          May 28, 2008

                                                          • Subroutine BORT_EXIT was modified to fix a faulty ANSI-C declaration. This had been silently ignored by the IBM CCS compiler but was a portability issue for other compilers.
                                                          • @@ -345,7 +354,7 @@

                                                          • Subroutine DXDUMP was modified to correct a bug which caused the truncation of output reference values longer than 8 digits.
                                                          • Several global parameters were increased in "bufrlib.PRM". Specifically, MXCDV (the maximum number of data values per subset in a compressed BUFR message) was increased from 2000 to 3000, and MAXMEM (the maximum number of bytes that can be used to store BUFR messages within internal memory) was increased from 50Mb to 75Mb within the "supersized" BUFRLIB.
                                                          -

                                                          +

                                                          February 6, 2007

                                                          • Several global parameters were increased in "bufrlib.PRM". Specifically, MAXTBA, MAXTBB and MAXTBD (the maximum numbers of internal Table A, B and D entries, respectively) were increased from 60, 250 and 250 to 120, 500 and 500, respectively, and MAXJL (the maximum number of internal jump/link table entries) was increased from 16000 to 20000.
                                                          • @@ -358,7 +367,7 @@

                                                          • Subroutine UFBTAB was modified to add a required declaration for a local character variable. This had been silently ignored by the IBM CCS compiler but was a portability issue for other compilers.
                                                          • Subroutine RDUSDX was modified to abort if it encounters a user-defined BUFR message whose message type is set to 11. This value is reserved for internal dictionary messages.
                                                          -

                                                          +

                                                          January 31, 2006

                                                          • Documentation was improved and/or clarified within many existing routines throughout BUFRLIB.
                                                          • @@ -388,7 +397,7 @@

                                                          • Subroutine UFBTAB was modified to work for compressed BUFR messages. An option to return only the subset count (when the input unit number is less than zero) was also added.
                                                          • Subroutine COPYSB was modified to now write out a compressed subset/message if the input subset/message is compressed (before this subroutine could only write out an uncompressed subset/message regardless of the compression status of the input subset/message).
                                                          -

                                                          +

                                                          December 21, 2004

                                                          • New subroutines ISTDESC, RESTD, WRDESC, CADN30, STDMSG and STNDRD have been added to provide the capability to expand Section 3 of output BUFR messages until they are completely "standard" according to the WMO FM-94 regulations. The logic is activated via an initial call to STDMSG.
                                                          • @@ -417,7 +426,7 @@

                                                          • New subroutine DXDUMP was added which outputs an ASCII-formatted copy of the information embedded within the DX dictionary messages of a BUFR file. It is especially useful for learning the contents of archived BUFR files, and the output is in a format suitable for subsequent input to OPENBF as a user-defined dictionary tables file.
                                                          • Subroutines DATELEN, DATEBF and DUMPBF were all modified to call subroutine WRDLEN to initialize local machine information (in case it has not already been called). These routines do not require this information but they may now or someday call other routines that do require it.
                                                          -

                                                          +

                                                          November 4, 2003

                                                          This is the first "unified" BUFR Archive Library including components from the regular NCEP production machine version (whose implementation history is documented to this point), the decoder version (previously on a workstation but now on the IBM Frost and Snow machines), and a checkout NCEP/EMC grid-to-obs verification version. This version is portable to all platforms (as necessary for WRF), contains docblocks for each routine with a complete program history log, and outputs more complete diagnostic information when routines terminate abnormally, unusual things happen or for informational purposes.

                                                          The following libraries are now generated on the NCEP IBM Frost and Snow machines:

                                                          @@ -479,7 +488,7 @@

                                                        1. Subroutines CKTABA, CMSGINI, NUMTAB, PARUSR, PARUTG, RCSTPL, USRTPL, WRDLEN, WRTREE and XMSGINI modified to correct some minor bugs (uninitialized variables, etc.) (see subroutine DOCBLOCKS for more information). (See also 29 for PARUTG, RCSTPL, USRTPL, WRTREE and 32 for RCSTPL.)
                                                        2. Subroutine UFBDMP modified to add "fuzziness" about 10E10 in test for a missing value (rather than true equality as before) because some missing values (e.g., character strings < 8 characters) were not getting stamped out as "MISSING". Also added option to print values using format edit descriptor "F15.6" if input argument LUNIN is < zero. If LUNIN is > zero edit descriptor expanded from "G10.3" to "G15.6". (See also 29 for UFBDMP.)
                                                        3. -

                                                          +

                                                          May 19, 2003

                                                          The following changes have been made in the BUFR Archive Library:

                                                            @@ -496,7 +505,7 @@

                                                          • libbufr_8.a – 8-byte reals, 8-byte integers, 64-bit executable compilation
                                                          • libbufr_d.a – 8-byte reals, 4-byte integers, 64-bit executable compilation
                                                          -

                                                          +

                                                          May 14, 2002

                                                          A number of routines in the BUFR Archive Library have been modified. These changes include:

                                                            @@ -516,13 +525,13 @@

                                                          • Removed subroutine JSTIFY because it was a dummy subroutine with two entry points for left justifying two different types of character strings. Part of conversion of entry points to separate subroutines or functions. See number 1 above.
                                                          • Removed subroutine NENUCK because it was a dummy subroutine with two entry points for checking the BUFR mnemonic table. Part of conversion of entry points to separate subroutines or functions. See number 1 above.
                                                          -

                                                          +

                                                          August 15, 2001

                                                          • Parameter MAXMEM (the maximum number of bytes required to store all messages internally) was increased from 8 MBYTES TO 16 MBYTES in the following subroutines: CPYMEM, RDMEMM, RDMEMS, READMM, UFBMEM, UFBMMS, UFBMNS, UFBRMS and UFBTAM.
                                                          • Subroutine UFBTAM modified to not abort when there are too many subsets coming in (i.e., .gt. array limit passed in), but rather to just process the limiting number of reports and print a diagnostic.
                                                          -

                                                          +

                                                          September 19, 2000

                                                          A number of routines in the BUFR Archive Library have been modified. These changes include:

                                                            @@ -537,7 +546,7 @@

                                                          The BUFR Archive Library is now compiled using both optimization level 3 (-O3) and optimization level 4 (-O4). The previous BUFR Archive Library had used only -O4. The -O3 compilation here generates the same archive library names as before. Thus, any code that is recompiled from an unchanged makefile will now link in the appropriate -O3 library, rather than the -O4 library as before. The new -O4 libraries all have the string "_O4" appended to the end of the filename.

                                                          Any program that must link to the -O4 BUFR Archive Library when compiled will have to modify its makefile.

                                                          -

                                                          +

                                                          July 13, 1999

                                                          • A number of routines in the BUFR Archive Library have been modified to increase the number of BUFR files which can be opened at one time from 10 to 32. This is necessary in order to process multiple BUFR files under the MPI. The following routines were modified: BFRINI, CHEKSTAB, CLOSMG, CONWIN, COPYMG, COPYSB, CPBFDX, CPYMEM, CPYUPD, DXINIT, ELEMDX, GETWIN, IFBGET, INVCON, INVMRG, INVTAG, INVWIN, LSTJPD, LSTRPC, LSTRPS, MAKESTAB, MSGINI, MSGUPD, NEMTAB, NEMTBA, NEMTBD, NENUCK, NEWWIN, NMSUB, NUMTAB, NVNWIN, NWORDS, NXTWIN, OPENBF, OPENMB, OPENMG, PARUTG, PKTDD, RCSTPL, RDBFDX, RDMEMM, RDMEMS, RDTREE, RDTRER, RDUSDX, READERM, READERME, READERS, READFT, READMG, READNS, READSB, READTJ, STATUS, STRING, TRYBUMP, UFBCNT, UFBCPY, UFBCUP, UFBDMP, UFBEVN, UFBGET, UFBINT, UFBOVR, UFBREP, UFBRP, UFBRW, UFBTAB, UFBTAM, UNCMPS, UPTDD, USRTPL, WRITDX, WRTREE, WTSTAT.
                                                          • @@ -551,30 +560,30 @@

                                                          • The function formerly called VAL$ has been renamed to VALX to remove the possibility of the "$" symbol causing problems on other platforms. In turn subroutine NEMTBB has been modified to call function VALX rather than VAL$.
                                                          • New subroutines UFBSTP and UFBSP added (UFBSP is called by UFBSTP).
                                                          -

                                                          +

                                                          December 14, 1998

                                                          • Subroutine MSGUPD was updated to bybass the processing of reports that are longer than the length of a BUFR message. Prior to this change, the BUFR Archive Library would issue an abort in the event of this rare, but possible occurrence which occurred at 12Z on 4 December in the RGL suite.
                                                          • In addition, function I4DY was modified to use 20 as the 2-digit year for windowing to a 4-digit year (00-20 ==> add 2000; 21-99 ==> add 1900). This windowing technique was inadvertently changed to 10 in the previous implementation of the BUFR Archive Library.
                                                          -

                                                          +

                                                          November 24, 1998

                                                          • Function I4DY and subroutine MSGWRT were changed as a result of final Y2K testing of the decoder/ingest system.
                                                          • I4DY was changed to conform to the NCEP 2-digit year time-window of 1921-2020.
                                                          • MSGWRT was changed to zero out the padding bytes written at the end of Section 4.
                                                          -

                                                          +

                                                          October 27, 1998

                                                          • The BUFR Archive Library is being modified to correct problems caused by in-lining code with fpp directives. The following subroutines are being changed: DATEBF, MVB, RCSTPL, RDMEMS, RDTREE, RDTRER, UFBGET, UFBRW, UFBTAB, UFBTAM and UPBB.
                                                          -

                                                          +

                                                          August 31, 1998

                                                          • BUFR Archive Library subroutine DATEBF, which returns the center date-time for a BUFR data dump file, is being modified to correct an error which lead to the year being returned in the second argument as 2-digit year when a 4-digit year was requested via a prior call to subroutine DATELEN. The center date returned in the sixth argument, in the form YYYYMMDDHH, was correct in the previous version of this subroutine.
                                                          -

                                                          +

                                                          July 8, 1998

                                                          The new version of the BUFR Archive Library is Y2K compliant, with additional changes to support expanded machine independence of the code, and to refine, correct, or improve some of the routines within. Although nearly every one of library routines has some change made (mainly because of the introduction of a more general error exit subroutine), the changes largely fall into the first two categories. Three new routines were also added to the BUFR Archive Library for micellaneous puposes.

                                                          Y2K Compliance

                                                          @@ -587,25 +596,25 @@

                                                          Many of the BUFR Archive Library routines perform internal testing during operation in order to prevent certain situation from generating mysterious aborts, or, even worse, giving the wrong answers. The original library utilized the Cray library routine ABORT to terminate a program when such a situation was found. The new library uses a new inernal subroutine, BORT, to accomplish this. The list of routines changed for this purpose is as follows: ADN30, CHEKSTAB, CLOSMG, COPYBF, COPYMG, COPYSB, CPYMEM, CPYUPD, DATEBF, DRSTPL, DUMPBF, DXMINI, ELEMDX, GETWIN, IDN30, IFBGET, INCTAB, INVMRG, IPKM, IUPM, JSTIFY, LSTJPB, LSTRPC, LSTRPS, MAKESTAB, MSGINI, MSGUPD, MSGWRT, MVB, NEMTBA, NEMTBB, NEMTBD, NENUCK, NEWWIN, NMSUB, NVNWIN, NXTWIN, OPENMB, OPENMG, OPENBF, PAD, PARSEQ, PARUSR, PARUTG, PKC, POSAPN, POSAPX, RCSTPL, RDBFDX, RDMEMM, RDMEMS, RDUSDX, READDX, READERM, READERME, READERS, READFT, READMG, READNS, READSB, READTJ, SEQSDX, STANDARD, STATUS, STRING, TABENT, TABSUB, UFBCNT, UFBCPY, UFBCUP, UFBDMP, UFBEVN, UFBGET, UFBINT, UFBMEM, UFBMMS, UFBMNS, UFBOVR, UFBQCD, UFBQCP, UFBREP, UFBRMS, UFBTAM, UPTDD, USRTPL, VAL$, WRDLEN, WRITDX, WRITSA, WRITSB, WTSTAT

                                                          New Code Added

                                                          I4DY the two/four digit year conversion function LJUST a character left justify function OPENBT A dummy entry point which is relevant to users of the READTJ subroutine

                                                          -

                                                          +

                                                          April 2, 1998

                                                          • BUFR Archive Library subroutine STRCLN, which initializes the mnemonic string cache in the BUFR interface, is being modified to enlarge the cache from 50 elements to 1000, maximum.
                                                          • BUFR Archive Library subroutine STRING manages the mnemonic string cache in the BUFR interface. The mnemonic string cache is a performance enhancing device which saves time when the same mnemonic strings are encountered in a user program, over and over again (the typical scenario). It is being modified to operate a bigger cache, and some optimization of the cache search algorithm is being made in support of a bigger cache.
                                                          -

                                                          +

                                                          September 3, 1997

                                                          • Changes are being made to the BUFR Archive Library to recompile all routines without the -ez compiler option. The removal of this debugging option should speed up the execution of all modules which are linked with BUFR Archive Library routines.
                                                          • In addition, a new subroutine, STANDARD, is being added to the library. This subroutine "standardizes" NCEP BUFR messages for transmission. It was requested to process hurricane location data.
                                                          -

                                                          +

                                                          July 29, 1997

                                                          • Three BUFR Archive Library subroutines were modified to update the current BUFR version information written into Section 0 of each message: DXMINI, MSGINI and MSGWRT. Version 3 replaces version 2.
                                                          • Three additional subroutines were modified to enable them to process GOES soundings from NESDIS: IRDERM, RDTRER and READERME.
                                                          -

                                                          +

                                                          December 17, 1996

                                                          The BUFR Archive Library was modified to make the following changes:

                                                            @@ -614,7 +623,7 @@

                                                          • RDBFDX - Fixed for some MVS compiler's treatment of internal reads.
                                                          • UFBINT - Modified to always initialize "USR" array to missing (10E10) when BUFR file is being read.
                                                          -

                                                          +

                                                          December 11, 1996

                                                          The following subroutines were modified in the BUFR Archive Library:

                                                            @@ -626,22 +635,22 @@

                                                          • MSGINI - Modified to allow inclusion of minutes in writing the message date into a BUFR message.
                                                          • READTJ - Specific database ingest message reader added to the library which can attach different BUFR tables if the message type is not recognized in the current ones. Works with a user subroutine called OPENBT which specifies the location(s) of different tables.
                                                          -

                                                          +

                                                          November 25, 1996

                                                          Several routines in the BUFR Archive Library are being modified to provide more machine independence. The data merging routine is being modified for radiosonde call signs, a return code is being added to UFBINT when mnemonics are not found, and READMG is being modified to exit gracefully when the file is positioned after an end of file

                                                          -

                                                          +

                                                          October 9, 1996

                                                          The BUFR Archive Library was modified to include 9 additional routines to process ERS scatterometer data (IREADERS, RDTRER, READERS, UNCMPS), perform fault tolerant reading (IREADFT, READFT), and support report part merging (INVMRG, MRGINV, NWORDS).

                                                          -

                                                          +

                                                          September 9, 1996

                                                          The BUFR Archive Library was separated into 121 BUFR interface routines, which include upgrades and devices for operating the BUFR database.

                                                          -

                                                          +

                                                          June 28, 1995

                                                          The BUFR Archive Library was modified to increase the size of internal arrays in order to handle bigger files. Coding was also added in order to process ERS scatterometer data which is input from compressed BUFR messages (new subroutine READERME).

                                                          -

                                                          +

                                                          January 10, 1995

                                                          The BUFR Archive Library was modified slightly to allow for changes in the AVN and FNL PREPBUFR and Q.C. Processing codes (PREPDATA, CQCBUFR, OIQCBUFR, SSIANL).

                                                          -

                                                          +

                                                          Original Implementation of BUFR Archive Library - January 6, 1994

                                                          Implemented on Cray-YMP as a single monolithic source bufr.f. Only the AVN and FNL PREPBUFR processing and q.c. codes used the BUFR Archive Library initially. These were: PREPDATA, SYNDATA, CQCBUFR, OIQCBUFR, and SSIANL. These had actually been implemented with a non-production version of the library in Jack Woollen's directory September 21, 1993.

                                                          diff --git a/md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_dx_tables.html b/md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_dx_tables.html index 008f932b1..b112e715f 100644 --- a/md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_dx_tables.html +++ b/md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_dx_tables.html @@ -26,7 +26,7 @@ @@ -86,16 +86,17 @@
                                                          DX BUFR Tables
                                                          -

                                                          Description and format of DX BUFR tables for use with the library. Every BUFR file must have DX BUFR tables associated with it, unless the 'SEC3' decoding option is specified during the call to openbf(). For all other cases, DX table information must be pre-defined and made available to the software via call argument LUNDX during the call to openbf(). The DX tables information may be embedded within the first few BUFR messages of the file itself. Otherwise, a separate ASCII text file containing the necessary DX tables information must be supplied, such as the example shown below. Such files must be syntactically correct and also complete, in the sense that all necessary mnemonics must exist and be fully-defined.

                                                          +

                                                          Description and format of DX BUFR tables for use with the library. Every BUFR file must have DX BUFR tables associated with it, unless the 'SEC3' decoding option is specified during the call to openbf(). For all other cases, DX table information must be pre-defined and made available to the software via call argument lundx during the call to openbf(). The DX tables information may be embedded within the first few BUFR messages of the file itself. Otherwise, a separate ASCII text file containing the necessary DX tables information must be supplied, such as the example shown below. Such files must be syntactically correct and also complete, in the sense that all necessary mnemonics must exist and be fully-defined.

                                                          Mnemonics

                                                          -

                                                          A mnemonic is a descriptive, alphanumeric name for a data value.

                                                            +

                                                            A mnemonic is a descriptive, alphanumeric name for a data value. A mnemonic may contain any combination of uppercase letters and numbers (or, in certain special cases, a "." character), up to a maximum of 8 characters in length. There are 3 basic types of mnemonics:

                                                            • "Table A mnemonics", refer to particular data subset (i.e. report ) types,
                                                            • "Table B mnemonics", refer directly to basic data values,
                                                            • "Table D mnemonics" are sequences composed of one or more Table B (or other Table D) mnemonics and which are themselves normally direct constituents of a particular Table A mnemonic.

                                                            At the highest level, we have a Table A mnemonic which completely describes a type of data subset (e.g. rawinsonde, wind profiler, etc.). This Table A mnemonic is defined as a sequence of one or more Table B or Table D mnemonics, where each Table D mnemonic is likewise itself defined as a sequence of one or more Table B or Table D mnemonics, and so on until the entire data subset can be equivalently described as a sequence of one or more Table B mnemonics which correspond to basic data values (e.g. pressure, temperature, humidity, etc.).

                                                            Mnemonics never themselves appear within actual BUFR messages. Their only purpose is to make it easier for users to interact with the software by providing descriptive names to represent individual data values. They are more intuitive than FXY numbers (described below), which are the prescribed method within actual BUFR messages.

                                                            +

                                                            Of note, there is one special 4-letter mnemonic "DPRI" which is reserved for exclusive use with FXY number 031031, and which must always be used when reading or writing bitmaps within the software.

                                                            DX BUFR Tables File

                                                            A DX BUFR tables file consists of three distinct sections. Each section contains one or more lines of 80 characters in length, and where a "*" as the first character of a line indicates that that entire line is a comment.

                                                            @@ -106,7 +107,7 @@

                                                            Section 1

                                                            -
                                                            The first section of a BUFR tables file is where all Table A, B and D mnemonics are initially declared, assigned a unique FXY number, and given a short free-form text description. Mnemonics may contain any combination of uppercase letters and numbers (or, in certain special cases, a "." character), up to a maximum of 8 characters in length. A mnemonic may be declared only once, and each one must correspond to a unique FXY number, which itself consists of 6 characters, and where the first character (i.e. the "F" component) is an "A" if the mnemonic is being declared as a Table A mnemonic, "3" if the mnemonic is being declared as a Table D mnemonic, and "0" if the mnemonic is being declared as a Table B mnemonic. Otherwise, the remainder of the FXY number must be all digits, with the next 2 characters (i.e. the "X" component) as a number between 00 and 63, and the final 3 characters (i.e. the "Y" component) as a number between 001 and 255. Readers who are more familiar with BUFR will immediately recognize these F, X, and Y values as those that are defined within the official documentation of the BUFR code form.

                                                            +
                                                            The first section of a BUFR tables file is where all Table A, B and D mnemonics are initially declared, assigned a unique FXY number, and given a short free-form text description. Each mnemonic may be declared only once, and each one must correspond to a unique FXY number, which itself consists of 6 characters, and where the first character (i.e. the "F" component) is an "A" if the mnemonic is being declared as a Table A mnemonic, "3" if the mnemonic is being declared as a Table D mnemonic, and "0" if the mnemonic is being declared as a Table B mnemonic. Otherwise, the remainder of the FXY number must be all digits, with the next 2 characters (i.e. the "X" component) as a number between 00 and 63, and the final 3 characters (i.e. the "Y" component) as a number between 001 and 255. Readers who are more familiar with BUFR will immediately recognize these F, X, and Y values as those that are defined within the official documentation of the BUFR code form.

                                                            By international convention, a mnemonic should not be given an X value between 00 and 47 along with a Y value between 001 and 191 unless that mnemonic, when subsequently defined, corresponds exactly to the BUFR descriptor having that same FXY number within the official WMO master BUFR tables.

                                                            For example, in our sample DX BUFR tables file, mnemonic "WMOB" is declared with an FXY number of 001001; therefore, it has the exact same text description (i.e. "WMO BLOCK NUMBER") and, when later defined within the last section of the file, the exact same scale factor, reference value, bit width, and units as for FXY number 001001 within the official WMO master BUFR tables. This concept should be somewhat intuitive, but it's obviously very important when the BUFRLIB software is to be used to encode BUFR messages that may potentially be read by other users in other organizations around the world.

                                                            In looking further at our sample DX BUFR tables file, we see that the lines within the first section each contain a "|" character in columns 1, 12, 21, and 80. Mnemonics are declared, and are left-justified, in columns 3-10, corresponding FXY numbers are assigned in columns 14-19, and the corresponding text description begins in column 23. All of the Table A mnemonics are declared first, followed by all of the Table D mnemonics, followed by all of the Table B mnemonics. Within each set, it is generally a good idea for human-readability purposes to list the mnemonics in ascending order with respect to their FXY number, although this is not required. Human-readability can usually also be improved by the use of separator lines containing the required "|" character in columns 1, 12, 21, and 80 but without any actual mnemonic declaration. The use of such separator lines is not required. The software will continue reading lines of the file, one at a time, and looking for new mnemonic declarations, until it reaches a line which does not contain a "|" character in each of columns 1, 12, 21, and 80, at which point it then knows that the first section of the tables file has ended.

                                                            diff --git a/md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_master_tables.html b/md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_master_tables.html index a00fff1d6..2e2bdfdf0 100644 --- a/md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_master_tables.html +++ b/md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_master_tables.html @@ -26,7 +26,7 @@
                                                          @@ -158,6 +158,7 @@
                                                        4. Standard Table B for Master Table 0 (WMO), Version 40
                                                        5. Standard Table B for Master Table 0 (WMO), Version 41
                                                        6. Standard Table B for Master Table 0 (WMO), Version 42
                                                        7. +
                                                        8. Standard Table B for Master Table 0 (WMO), Version 43
                                                        9. Local Table B for Master Table 0 (WMO), Originating Center 7 (NCEP), Version 1
                                                        10. @@ -245,6 +246,7 @@
                                                        11. Standard Table D for Master Table 0 (WMO), Version 40
                                                        12. Standard Table D for Master Table 0 (WMO), Version 41
                                                        13. Standard Table D for Master Table 0 (WMO), Version 42
                                                        14. +
                                                        15. Standard Table D for Master Table 0 (WMO), Version 43
                                                        16. Local Table D for Master Table 0 (WMO), Originating Center 7 (NCEP), Version 1
                                                        17. @@ -405,6 +407,7 @@
                                                        18. Standard Code/Flag Tables for Master Table 0 (WMO), Version 40
                                                        19. Standard Code/Flag Tables for Master Table 0 (WMO), Version 41
                                                        20. Standard Code/Flag Tables for Master Table 0 (WMO), Version 42
                                                        21. +
                                                        22. Standard Code/Flag Tables for Master Table 0 (WMO), Version 43
                                                        23. Local Code/Flag Tables for Master Table 0 (WMO), Originating Center 7 (NCEP), Version 1
                                                        24. diff --git a/md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_utils.html b/md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_utils.html index 7434f0caa..7ccac0ef4 100644 --- a/md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_utils.html +++ b/md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_utils.html @@ -26,7 +26,7 @@

                                                          @@ -115,7 +115,7 @@



                                                          -

                                                          +

                                                          debufr

                                                          This program decodes a BUFR file and writes a verbose listing of the contents to the file specified via the -o option. If a DX BUFR Tables file is specified (using the -f option) or if the specified BUFR file contains an embedded DX BUFR tables message as the first message in the file, then this information is used to decode the data messages in the file. Otherwise, or whenever the -m option is specified, master BUFR tables are read and used to decode the data messages in the file.
                                                           Usage:
                                                          @@ -173,7 +173,7 @@
                                                           
                                                          See the source code at debufr.c and debufr.F90



                                                          -

                                                          +

                                                          readbp

                                                          A utility to read prepbufr files which prints each report one at a time, or jumps to a report with characteristics defined by various keys such as report type, subset type, xy locagtion, station id, etc. Keys can be entered as arguments to the program or entered while the program is running. Basic operation is to print one report at a time with the default being starting at the beginning and continuing until the end or the user enters 'q'. The following summary is printed if the program is run without arguments.
                                                            Usage: readbp <-s> <-w> <-m> <-k> <-r> <-d> <-n> <-h>  prep bufrfile
                                                          @@ -224,7 +224,7 @@
                                                           



                                                          -

                                                          +

                                                          readmp

                                                          A utility to read any BUFR file with embedded DX tables, and print the contents of each subset one at a time.
                                                          See the source code at readmp.F90
                                                          Sample output for: readmp gdas.20200812/00/gdas.t00z.sfcshp.tm00.bufr_d
                                                          MESSAGE TYPE NC001001
                                                          @@ -300,7 +300,7 @@



                                                          -

                                                          +

                                                          binv

                                                          A utility to print a BUFR file inventory by message type.
                                                          See the source code at binv.F90
                                                          Sample output for: binv gdas.20200812/00/gdas.t00z.prepbufr
                                                          type messages subsets bytes
                                                          @@ -320,9 +320,22 @@



                                                          -

                                                          +

                                                          sinv

                                                          -
                                                          Utility to print an inventory of satellite data by platform and instrument type.
                                                          See the source code at sinv.F90
                                                          Sample output for: sinv gdas.20200812/00/gdas.t00z.satwnd.tm00.bufr_d
                                                          003 METOP-1 7220
                                                          +
                                                          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
                                                          003 METOP-1 7220
                                                          004 METOP-2 8911
                                                          055 METEOSAT-8 172430
                                                          070 METEOSAT-1 176712
                                                          @@ -339,7 +352,7 @@



                                                          -

                                                          +

                                                          cmpbqm

                                                          An inventory of prepbufr observations by variable, report type, and quality mark made from a prepbufr file. The ob type,total count,and quality marks are listed by column. The cka and ckb columns are counts of observed values with missing qm, or qms with missing observations. The cka and ckb should be zero but sometimes they're not. The qm values are found in bufr code tables, but below a quick summary. The GSI qms are added by a program run by the fit2obs system which copies that information from the convstat files. The sample output prepbufr was after prep but pre-analysis.
                                                          imt- Master table number
                                                          integer, intent(out) integer, intent(inout)  nmtbb,
                                                          integer, intent(out) integer, intent(inout)  nmtbd,
                                                          NCEPLIBS-bufr -  12.1.0 +  12.2.0
                                                          NCEPLIBS-bufr -  12.1.0 +  12.2.0
                                                          NCEPLIBS-bufr -  12.1.0 +  12.2.0
                                                          NCEPLIBS-bufr -  12.1.0 +  12.2.0
                                                          NCEPLIBS-bufr -  12.1.0 +  12.2.0
                                                          @@ -511,7 +524,7 @@



                                                          -

                                                          +

                                                          gettab

                                                          A utility to read any BUFR file with embedded DX tables, and print the table.
                                                          See the source code at gettab.F90
                                                          Sample output for: gettab gdas.20200812/00/gdas.t00z.adpsfc.tm00.bufr_d
                                                          .------------------------------------------------------------------------------.
                                                          | ------------ USER DEFINITIONS FOR TABLE-A TABLE-B TABLE D -------------- |
                                                          @@ -558,12 +571,12 @@



                                                          -

                                                          +

                                                          split_by_subset

                                                          A utility to read any BUFR file and split it into separate BUFR files based on message subset type. To preview which files will be produced (one for each m/s type) use binv (documented above).
                                                          See the source code at split_by_subset.F90
                                                          Usage: split_by_subset gdas.20200812/00/gdas.t00z.satwnd.tm00.bufr_d



                                                          -

                                                          +

                                                          xbfmg

                                                          This program splits a single file containing one or more BUFR messages into one or more BUFR files each containing a single BUFR message. The output BUFR files are written to the current working directory, according to a pre-defined naming convention as described below.
                                                           Usage:
                                                          @@ -599,7 +612,7 @@
                                                           
                                                          See the source code at xbfmg.c



                                                          -

                                                          +

                                                          apxdx

                                                          This program generates BUFR messages corresponding to a given DX BUFR table and appends them to a given BUFR file.
                                                           Usage:
                                                          diff --git a/memmsgs_8F90.html b/memmsgs_8F90.html
                                                          index 25587053d..858805035 100644
                                                          --- a/memmsgs_8F90.html
                                                          +++ b/memmsgs_8F90.html
                                                          @@ -26,7 +26,7 @@
                                                            
                                                          @@ -163,7 +163,7 @@

                                                          Author
                                                          J. Ator
                                                          Date
                                                          2009-03-23
                                                          -

                                                          Definition at line 729 of file memmsgs.F90.

                                                          +

                                                          Definition at line 721 of file memmsgs.F90.

                                                          References bort(), errwrt(), moda_msgmem::icdxts, moda_msgmem::ifdxts, moda_msgmem::ipdxm, moda_msgmem::ipmsgs, moda_msgmem::ldxm, moda_msgmem::mdx, moda_mgwa::mgwa, moda_msgmem::msgp, moda_msgmem::mxdxm, moda_msgmem::mxdxw, moda_msgmem::ndxm, moda_msgmem::ndxts, rdmsgw(), and status().

                                                          @@ -227,7 +227,7 @@

                                                          Author
                                                          J. Woollen
                                                          Date
                                                          1999-11-18
                                                          -

                                                          Definition at line 433 of file memmsgs.F90.

                                                          +

                                                          Definition at line 429 of file memmsgs.F90.

                                                          References readmm(), x48(), and x84().

                                                          @@ -292,7 +292,7 @@

                                                          Author
                                                          J. Woollen
                                                          Date
                                                          1994-01-06
                                                          -

                                                          Definition at line 486 of file memmsgs.F90.

                                                          +

                                                          Definition at line 482 of file memmsgs.F90.

                                                          References bort(), cktaba(), dxinit(), errwrt(), moda_msgmem::icdxts, moda_msgmem::ifdxts, moda_msgmem::ipdxm, moda_msgmem::ipmsgs, moda_msgmem::ldxm, moda_msgmem::ldxts, makestab(), moda_bitbuf::mbay, moda_msgmem::mdx, moda_mgwa::mgwa, moda_msgmem::mlast, moda_msgmem::msgp, moda_msgmem::msgs, moda_msgmem::munit, moda_msgmem::ndxm, moda_msgmem::ndxts, moda_msgcwd::nmsg, status(), stbfdx(), wtstat(), x48(), and x84().

                                                          @@ -342,7 +342,7 @@

                                                          Author
                                                          J. Woollen
                                                          Date
                                                          1994-01-06
                                                          -

                                                          Definition at line 634 of file memmsgs.F90.

                                                          +

                                                          Definition at line 628 of file memmsgs.F90.

                                                          References bort(), errwrt(), iupb(), moda_bitbuf::mbay, moda_bitbuf::mbyt, moda_unptyp::msgunp, moda_msgcwd::msub, moda_msgmem::munit, moda_msgcwd::nsub, readsb(), status(), x48(), and x84().

                                                          @@ -411,7 +411,7 @@

                                                          Author
                                                          J. Woollen
                                                          Date
                                                          1999-11-18
                                                          -

                                                          Definition at line 381 of file memmsgs.F90.

                                                          +

                                                          Definition at line 377 of file memmsgs.F90.

                                                          References rdmemm(), x48(), and x84().

                                                          @@ -496,25 +496,25 @@

                                                          recursive subroutine ufbmex

                                                          - + - + - + - + @@ -551,7 +551,7 @@

                                                          Author
                                                          J. Woollen
                                                          Date
                                                          2012-01-26
                                                          -

                                                          Definition at line 216 of file memmsgs.F90.

                                                          +

                                                          Definition at line 214 of file memmsgs.F90.

                                                          References bort(), closbf(), errwrt(), moda_msgmem::ipmsgs, iupbs01(), moda_msgmem::ldxm, moda_msgmem::ldxts, moda_mgwa::mgwa, moda_msgmem::mlast, moda_msgmem::msgp, moda_msgmem::msgs, moda_msgmem::munit, moda_msgmem::ndxm, moda_msgmem::ndxts, nmwrd(), openbf(), rdmsgw(), x48(), and x84().

                                                          @@ -610,7 +610,7 @@

                                                          Author
                                                          J. Woollen
                                                          Date
                                                          1994-01-06
                                                          -

                                                          Definition at line 839 of file memmsgs.F90.

                                                          +

                                                          Definition at line 829 of file memmsgs.F90.

                                                          References bort(), moda_msgmem::msgp, moda_msgcwd::msub, moda_msgmem::munit, rdmemm(), rdmems(), status(), x48(), and x84().

                                                          @@ -661,7 +661,7 @@

                                                          Author
                                                          J. Woollen
                                                          Date
                                                          1994-01-06
                                                          -

                                                          Definition at line 910 of file memmsgs.F90.

                                                          +

                                                          Definition at line 900 of file memmsgs.F90.

                                                          References bort(), ireadmm(), moda_msgmem::munit, nmsub(), rdmems(), x48(), and x84().

                                                          @@ -740,7 +740,7 @@

                                                          Author
                                                          J. Woollen
                                                          Date
                                                          1994-01-06
                                                          -

                                                          Definition at line 976 of file memmsgs.F90.

                                                          +

                                                          Definition at line 966 of file memmsgs.F90.

                                                          References bort(), errwrt(), moda_msgmem::msgp, moda_msgcwd::msub, moda_msgmem::munit, rdmemm(), rdmems(), status(), ufbint(), x48(), and x84().

                                                          @@ -813,7 +813,7 @@

                                                          Author
                                                          J. Woollen
                                                          Date
                                                          1994-01-06
                                                          -

                                                          Definition at line 1102 of file memmsgs.F90.

                                                          +

                                                          Definition at line 1090 of file memmsgs.F90.

                                                          References bort(), errwrt(), moda_bitbuf::ibit, moda_tables::ibt, moda_usrint::inv, moda_tables::itp, moda_msgmem::ldxts, moda_bitbuf::mbay, moda_bitbuf::mbyt, moda_msgmem::msgp, moda_msgcwd::msub, moda_msgmem::munit, moda_msgcwd::nmsg, nmsub(), moda_msgcwd::nsub, moda_usrint::nval, parstr(), rdmemm(), status(), string(), upb(), upb8(), upc(), ups(), usrtpl(), x48(), and x84().

                                                          diff --git a/memmsgs_8F90_source.html b/memmsgs_8F90_source.html index be46fa38c..66932bc6e 100644 --- a/memmsgs_8F90_source.html +++ b/memmsgs_8F90_source.html @@ -26,7 +26,7 @@

                                                          @@ -92,7 +92,7 @@
                                                          39 
                                                          40  use bufrlib
                                                          41 
                                                          -
                                                          42  use modv_vars, only: im8b, maxmem, maxmsg
                                                          +
                                                          42  use modv_vars, only: im8b, maxmem, maxmsg, iprt
                                                          43 
                                                          44  use moda_mgwa
                                                          45  use moda_msgmem
                                                          @@ -101,1044 +101,1027 @@
                                                          48 
                                                          49  integer, intent(in) :: lunit, inew
                                                          50  integer, intent(out) :: iret, iunit
                                                          -
                                                          51  integer iprt, my_lunit, my_inew, iflg, itim, lun, il, im, itemp, ier, nmsg, lmem, i, mlast0, idxmsg, nmwrd
                                                          +
                                                          51  integer my_lunit, my_inew, iflg, itim, lun, il, im, itemp, ier, nmsg, lmem, i, mlast0, idxmsg, nmwrd
                                                          52 
                                                          53  character*128 bort_str, errstr
                                                          54 
                                                          -
                                                          55  common /quiet/ iprt
                                                          +
                                                          55  ! Check for I8 integers
                                                          56 
                                                          -
                                                          57  ! Check for I8 integers
                                                          -
                                                          58 
                                                          -
                                                          59  if(im8b) then
                                                          -
                                                          60  im8b=.false.
                                                          -
                                                          61 
                                                          -
                                                          62  call x84(lunit,my_lunit,1)
                                                          -
                                                          63  call x84(inew,my_inew,1)
                                                          -
                                                          64  call ufbmem(my_lunit,my_inew,iret,iunit)
                                                          -
                                                          65  call x48(iret,iret,1)
                                                          -
                                                          66  call x48(iunit,iunit,1)
                                                          -
                                                          67 
                                                          -
                                                          68  im8b=.true.
                                                          -
                                                          69  return
                                                          -
                                                          70  endif
                                                          +
                                                          57  if(im8b) then
                                                          +
                                                          58  im8b=.false.
                                                          +
                                                          59 
                                                          +
                                                          60  call x84(lunit,my_lunit,1)
                                                          +
                                                          61  call x84(inew,my_inew,1)
                                                          +
                                                          62  call ufbmem(my_lunit,my_inew,iret,iunit)
                                                          +
                                                          63  call x48(iret,iret,1)
                                                          +
                                                          64  call x48(iunit,iunit,1)
                                                          +
                                                          65 
                                                          +
                                                          66  im8b=.true.
                                                          +
                                                          67  return
                                                          +
                                                          68  endif
                                                          +
                                                          69 
                                                          +
                                                          70  ! Try to open BUFR file and set to initialize or concatenate
                                                          71 
                                                          -
                                                          72  ! Try to open BUFR file and set to initialize or concatenate
                                                          +
                                                          72  call openbf(lunit,'IN',lunit)
                                                          73 
                                                          -
                                                          74  call openbf(lunit,'IN',lunit)
                                                          -
                                                          75 
                                                          -
                                                          76  if(inew==0) then
                                                          -
                                                          77  msgp(0) = 0
                                                          -
                                                          78  munit = 0
                                                          -
                                                          79  mlast = 0
                                                          -
                                                          80  ndxts = 0
                                                          -
                                                          81  ldxts = 0
                                                          -
                                                          82  ndxm = 0
                                                          -
                                                          83  ldxm = 0
                                                          -
                                                          84  endif
                                                          -
                                                          85 
                                                          -
                                                          86  nmsg = msgp(0)
                                                          -
                                                          87  iret = 0
                                                          -
                                                          88  iflg = 0
                                                          -
                                                          89  itim = 0
                                                          -
                                                          90 
                                                          -
                                                          91  ! Copy any BUFR dictionary table messages from the beginning of lunit into @ref moda_msgmem for possible later use.
                                                          -
                                                          92  ! Note that such a table (if one exists) is already now in scope due to the prior call to subroutine openbf(), which
                                                          -
                                                          93  ! in turn would have automatically called subroutines readdx(), rdbfdx() and makestab() for this table.
                                                          -
                                                          94 
                                                          -
                                                          95  itemp = ndxts
                                                          -
                                                          96  call status(lunit,lun,il,im)
                                                          -
                                                          97  call cewind_c(lun)
                                                          -
                                                          98  call cpdxmm(lunit)
                                                          +
                                                          74  if(inew==0) then
                                                          +
                                                          75  msgp(0) = 0
                                                          +
                                                          76  munit = 0
                                                          +
                                                          77  mlast = 0
                                                          +
                                                          78  ndxts = 0
                                                          +
                                                          79  ldxts = 0
                                                          +
                                                          80  ndxm = 0
                                                          +
                                                          81  ldxm = 0
                                                          +
                                                          82  endif
                                                          +
                                                          83 
                                                          +
                                                          84  nmsg = msgp(0)
                                                          +
                                                          85  iret = 0
                                                          +
                                                          86  iflg = 0
                                                          +
                                                          87  itim = 0
                                                          +
                                                          88 
                                                          +
                                                          89  ! Copy any BUFR dictionary table messages from the beginning of lunit into @ref moda_msgmem for possible later use.
                                                          +
                                                          90  ! Note that such a table (if one exists) is already now in scope due to the prior call to subroutine openbf(), which
                                                          +
                                                          91  ! in turn would have automatically called subroutines readdx(), rdbfdx() and makestab() for this table.
                                                          +
                                                          92 
                                                          +
                                                          93  itemp = ndxts
                                                          +
                                                          94  call status(lunit,lun,il,im)
                                                          +
                                                          95  call cewind_c(lun)
                                                          +
                                                          96  call cpdxmm(lunit)
                                                          +
                                                          97 
                                                          +
                                                          98  ! If a table was indeed present at the beginning of the file, then set the flag to indicate that this table is now in scope.
                                                          99 
                                                          -
                                                          100  ! If a table was indeed present at the beginning of the file, then set the flag to indicate that this table is now in scope.
                                                          +
                                                          100  if ((itemp+1)==ndxts) ldxts = ndxts
                                                          101 
                                                          -
                                                          102  if ((itemp+1)==ndxts) ldxts = ndxts
                                                          +
                                                          102  ! Transfer messages from file to memory and set message pointers
                                                          103 
                                                          -
                                                          104  ! Transfer messages from file to memory and set message pointers
                                                          -
                                                          105 
                                                          -
                                                          106  do while (.true.)
                                                          -
                                                          107  call rdmsgw(lunit,mgwa,ier)
                                                          -
                                                          108  if(ier==-1) exit
                                                          -
                                                          109  if(ier==-2) then
                                                          -
                                                          110  write(bort_str,'("BUFRLIB: UFBMEM - ERROR READING MESSAGE NUMBER",I5," INTO MEMORY FROM UNIT",I3)') nmsg+1,lunit
                                                          -
                                                          111  call bort(bort_str)
                                                          -
                                                          112  endif
                                                          -
                                                          113 
                                                          -
                                                          114  if(idxmsg(mgwa)==1) then
                                                          -
                                                          115  ! New "embedded" BUFR dictionary table messages have been found in this file. Copy them into @ref moda_msgmem
                                                          -
                                                          116  ! for later use.
                                                          -
                                                          117  call backbufr_c(lun) ! Backspace lunit
                                                          -
                                                          118  call cpdxmm(lunit)
                                                          -
                                                          119  cycle
                                                          -
                                                          120  endif
                                                          -
                                                          121 
                                                          -
                                                          122  nmsg = nmsg+1
                                                          -
                                                          123  if(nmsg>maxmsg) iflg = 1
                                                          -
                                                          124  lmem = nmwrd(mgwa)
                                                          -
                                                          125  if(lmem+mlast>maxmem) iflg = 2
                                                          -
                                                          126 
                                                          -
                                                          127  if(iflg==0) then
                                                          -
                                                          128  iret = iret+1
                                                          -
                                                          129  do i=1,lmem
                                                          -
                                                          130  msgs(mlast+i) = mgwa(i)
                                                          -
                                                          131  enddo
                                                          -
                                                          132  msgp(0) = nmsg
                                                          -
                                                          133  msgp(nmsg) = mlast+1
                                                          -
                                                          134  else
                                                          -
                                                          135  if(itim==0) then
                                                          -
                                                          136  mlast0 = mlast
                                                          -
                                                          137  itim=1
                                                          -
                                                          138  endif
                                                          -
                                                          139  endif
                                                          -
                                                          140  mlast = mlast+lmem
                                                          -
                                                          141  enddo
                                                          -
                                                          142 
                                                          -
                                                          143  if(iflg==1) then
                                                          -
                                                          144  ! Emergency room treatment for maxmsg array overflow
                                                          -
                                                          145  if(iprt>=0) then
                                                          -
                                                          146  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                          -
                                                          147  write ( unit=errstr, fmt='(A,A,I8,A)' ) 'BUFRLIB: UFBMEM - THE NO. OF MESSAGES REQUIRED TO STORE ', &
                                                          -
                                                          148  'ALL MESSAGES INTERNALLY EXCEEDS MAXIMUM (', maxmsg, ') - INCOMPLETE READ'
                                                          +
                                                          104  do while (.true.)
                                                          +
                                                          105  call rdmsgw(lunit,mgwa,ier)
                                                          +
                                                          106  if(ier==-1) exit
                                                          +
                                                          107  if(ier==-2) then
                                                          +
                                                          108  write(bort_str,'("BUFRLIB: UFBMEM - ERROR READING MESSAGE NUMBER",I5," INTO MEMORY FROM UNIT",I3)') nmsg+1,lunit
                                                          +
                                                          109  call bort(bort_str)
                                                          +
                                                          110  endif
                                                          +
                                                          111 
                                                          +
                                                          112  if(idxmsg(mgwa)==1) then
                                                          +
                                                          113  ! New "embedded" BUFR dictionary table messages have been found in this file. Copy them into @ref moda_msgmem
                                                          +
                                                          114  ! for later use.
                                                          +
                                                          115  call backbufr_c(lun) ! Backspace lunit
                                                          +
                                                          116  call cpdxmm(lunit)
                                                          +
                                                          117  cycle
                                                          +
                                                          118  endif
                                                          +
                                                          119 
                                                          +
                                                          120  nmsg = nmsg+1
                                                          +
                                                          121  if(nmsg>maxmsg) iflg = 1
                                                          +
                                                          122  lmem = nmwrd(mgwa)
                                                          +
                                                          123  if(lmem+mlast>maxmem) iflg = 2
                                                          +
                                                          124 
                                                          +
                                                          125  if(iflg==0) then
                                                          +
                                                          126  iret = iret+1
                                                          +
                                                          127  do i=1,lmem
                                                          +
                                                          128  msgs(mlast+i) = mgwa(i)
                                                          +
                                                          129  enddo
                                                          +
                                                          130  msgp(0) = nmsg
                                                          +
                                                          131  msgp(nmsg) = mlast+1
                                                          +
                                                          132  else
                                                          +
                                                          133  if(itim==0) then
                                                          +
                                                          134  mlast0 = mlast
                                                          +
                                                          135  itim=1
                                                          +
                                                          136  endif
                                                          +
                                                          137  endif
                                                          +
                                                          138  mlast = mlast+lmem
                                                          +
                                                          139  enddo
                                                          +
                                                          140 
                                                          +
                                                          141  if(iflg==1) then
                                                          +
                                                          142  ! Emergency room treatment for maxmsg array overflow
                                                          +
                                                          143  if(iprt>=0) then
                                                          +
                                                          144  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                          +
                                                          145  write ( unit=errstr, fmt='(A,A,I8,A)' ) 'BUFRLIB: UFBMEM - THE NO. OF MESSAGES REQUIRED TO STORE ', &
                                                          +
                                                          146  'ALL MESSAGES INTERNALLY EXCEEDS MAXIMUM (', maxmsg, ') - INCOMPLETE READ'
                                                          +
                                                          147  call errwrt(errstr)
                                                          +
                                                          148  write ( unit=errstr, fmt='(A,I8,A,I8,A)' ) '>>>UFBMEM STORED ', msgp(0), ' MESSAGES OUT OF ', nmsg, '<<<'
                                                          149  call errwrt(errstr)
                                                          -
                                                          150  write ( unit=errstr, fmt='(A,I8,A,I8,A)' ) '>>>UFBMEM STORED ', msgp(0), ' MESSAGES OUT OF ', nmsg, '<<<'
                                                          +
                                                          150  write ( unit=errstr, fmt='(A,I8,A,I8,A)' ) '>>>UFBMEM STORED ', mlast0, ' BYTES OUT OF ', mlast, '<<<'
                                                          151  call errwrt(errstr)
                                                          -
                                                          152  write ( unit=errstr, fmt='(A,I8,A,I8,A)' ) '>>>UFBMEM STORED ', mlast0, ' BYTES OUT OF ', mlast, '<<<'
                                                          -
                                                          153  call errwrt(errstr)
                                                          -
                                                          154  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                          -
                                                          155  call errwrt(' ')
                                                          -
                                                          156  endif
                                                          -
                                                          157  mlast=mlast0
                                                          -
                                                          158  endif
                                                          -
                                                          159 
                                                          -
                                                          160  if(iflg==2) then
                                                          -
                                                          161  ! Emergency room treatment for maxmem array overflow
                                                          -
                                                          162  if(iprt>=0) then
                                                          -
                                                          163  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                          -
                                                          164  write ( unit=errstr, fmt='(A,A,I8,A)' ) 'BUFRLIB: UFBMEM - THE NO. OF BYTES REQUIRED TO STORE ', &
                                                          -
                                                          165  'ALL MESSAGES INTERNALLY EXCEEDS MAXIMUM (', maxmem, ') - INCOMPLETE READ'
                                                          +
                                                          152  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                          +
                                                          153  call errwrt(' ')
                                                          +
                                                          154  endif
                                                          +
                                                          155  mlast=mlast0
                                                          +
                                                          156  endif
                                                          +
                                                          157 
                                                          +
                                                          158  if(iflg==2) then
                                                          +
                                                          159  ! Emergency room treatment for maxmem array overflow
                                                          +
                                                          160  if(iprt>=0) then
                                                          +
                                                          161  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                          +
                                                          162  write ( unit=errstr, fmt='(A,A,I8,A)' ) 'BUFRLIB: UFBMEM - THE NO. OF BYTES REQUIRED TO STORE ', &
                                                          +
                                                          163  'ALL MESSAGES INTERNALLY EXCEEDS MAXIMUM (', maxmem, ') - INCOMPLETE READ'
                                                          +
                                                          164  call errwrt(errstr)
                                                          +
                                                          165  write ( unit=errstr, fmt='(A,I8,A,I8,A)' ) '>>>UFBMEM STORED ', mlast0, ' BYTES OUT OF ', mlast, '<<<'
                                                          166  call errwrt(errstr)
                                                          -
                                                          167  write ( unit=errstr, fmt='(A,I8,A,I8,A)' ) '>>>UFBMEM STORED ', mlast0, ' BYTES OUT OF ', mlast, '<<<'
                                                          +
                                                          167  write ( unit=errstr, fmt='(A,I8,A,I8,A)' ) '>>>UFBMEM STORED ', msgp(0), ' MESSAGES OUT OF ', nmsg, '<<<'
                                                          168  call errwrt(errstr)
                                                          -
                                                          169  write ( unit=errstr, fmt='(A,I8,A,I8,A)' ) '>>>UFBMEM STORED ', msgp(0), ' MESSAGES OUT OF ', nmsg, '<<<'
                                                          -
                                                          170  call errwrt(errstr)
                                                          -
                                                          171  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                          -
                                                          172  call errwrt(' ')
                                                          -
                                                          173  endif
                                                          -
                                                          174  mlast=mlast0
                                                          -
                                                          175  endif
                                                          -
                                                          176 
                                                          -
                                                          177  if(iret==0) then
                                                          -
                                                          178  call closbf(lunit)
                                                          -
                                                          179  else
                                                          -
                                                          180  if(munit/=0) call closbf(lunit)
                                                          -
                                                          181  if(munit==0) munit = lunit
                                                          -
                                                          182  endif
                                                          -
                                                          183  iunit = munit
                                                          -
                                                          184 
                                                          -
                                                          185  return
                                                          -
                                                          186 end subroutine ufbmem
                                                          -
                                                          187 
                                                          -
                                                          216 recursive subroutine ufbmex(lunit,lundx,inew,iret,mesg)
                                                          +
                                                          169  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                          +
                                                          170  call errwrt(' ')
                                                          +
                                                          171  endif
                                                          +
                                                          172  mlast=mlast0
                                                          +
                                                          173  endif
                                                          +
                                                          174 
                                                          +
                                                          175  if(iret==0) then
                                                          +
                                                          176  call closbf(lunit)
                                                          +
                                                          177  else
                                                          +
                                                          178  if(munit/=0) call closbf(lunit)
                                                          +
                                                          179  if(munit==0) munit = lunit
                                                          +
                                                          180  endif
                                                          +
                                                          181  iunit = munit
                                                          +
                                                          182 
                                                          +
                                                          183  return
                                                          +
                                                          184 end subroutine ufbmem
                                                          +
                                                          185 
                                                          +
                                                          214 recursive subroutine ufbmex(lunit,lundx,inew,iret,mesg)
                                                          +
                                                          215 
                                                          +
                                                          216  use modv_vars, only: im8b, maxmem, maxmsg, iprt
                                                          217 
                                                          -
                                                          218  use modv_vars, only: im8b, maxmem, maxmsg
                                                          -
                                                          219 
                                                          -
                                                          220  use moda_mgwa
                                                          -
                                                          221  use moda_msgmem
                                                          +
                                                          218  use moda_mgwa
                                                          +
                                                          219  use moda_msgmem
                                                          +
                                                          220 
                                                          +
                                                          221  implicit none
                                                          222 
                                                          -
                                                          223  implicit none
                                                          +
                                                          223  character*128 bort_str, errstr
                                                          224 
                                                          -
                                                          225  character*128 bort_str, errstr
                                                          -
                                                          226 
                                                          -
                                                          227  integer, intent(in) :: lunit(*), lundx(*), inew(*)
                                                          -
                                                          228  integer, intent(out) :: mesg(*), iret(*)
                                                          -
                                                          229  integer iprt, my_lunit(1), my_lundx(1), my_inew(1), nmesg, iflg, itim, ier, nmsg, lmem, i, mlast0, iupbs01, nmwrd
                                                          +
                                                          225  integer, intent(in) :: lunit, lundx, inew
                                                          +
                                                          226  integer, intent(out) :: mesg(*), iret
                                                          +
                                                          227  integer my_lunit, my_lundx, my_inew, nmesg, iflg, itim, ier, nmsg, lmem, i, mlast0, iupbs01, nmwrd
                                                          +
                                                          228 
                                                          +
                                                          229  ! Check for I8 integers
                                                          230 
                                                          -
                                                          231  common /quiet/ iprt
                                                          -
                                                          232 
                                                          -
                                                          233  ! Check for I8 integers
                                                          -
                                                          234 
                                                          -
                                                          235  if(im8b) then
                                                          -
                                                          236  im8b=.false.
                                                          -
                                                          237 
                                                          -
                                                          238  call x84(lunit(1),my_lunit(1),1)
                                                          -
                                                          239  call x84(lundx(1),my_lundx(1),1)
                                                          -
                                                          240  call x84(inew(1),my_inew(1),1)
                                                          -
                                                          241  if (my_inew(1)==0) then
                                                          -
                                                          242  nmesg = 0
                                                          -
                                                          243  else
                                                          -
                                                          244  nmesg = msgp(0)
                                                          -
                                                          245  call x84(mesg(1),mesg(1),nmesg)
                                                          -
                                                          246  endif
                                                          -
                                                          247  call ufbmex(my_lunit(1),my_lundx(1),my_inew(1),iret(1),mesg(1))
                                                          -
                                                          248  call x48(mesg(1),mesg(1),nmesg+iret(1))
                                                          -
                                                          249  call x48(iret(1),iret(1),1)
                                                          +
                                                          231  if(im8b) then
                                                          +
                                                          232  im8b=.false.
                                                          +
                                                          233 
                                                          +
                                                          234  call x84(lunit,my_lunit,1)
                                                          +
                                                          235  call x84(lundx,my_lundx,1)
                                                          +
                                                          236  call x84(inew,my_inew,1)
                                                          +
                                                          237  if (my_inew==0) then
                                                          +
                                                          238  nmesg = 0
                                                          +
                                                          239  else
                                                          +
                                                          240  nmesg = msgp(0)
                                                          +
                                                          241  call x84(mesg(1),mesg(1),nmesg)
                                                          +
                                                          242  endif
                                                          +
                                                          243  call ufbmex(my_lunit,my_lundx,my_inew,iret,mesg(1))
                                                          +
                                                          244  call x48(mesg(1),mesg(1),nmesg+iret)
                                                          +
                                                          245  call x48(iret,iret,1)
                                                          +
                                                          246 
                                                          +
                                                          247  im8b=.true.
                                                          +
                                                          248  return
                                                          +
                                                          249  endif
                                                          250 
                                                          -
                                                          251  im8b=.true.
                                                          -
                                                          252  return
                                                          -
                                                          253  endif
                                                          +
                                                          251  ! Try to open BUFR file and set to initialize or concatenate
                                                          +
                                                          252 
                                                          +
                                                          253  call openbf(lunit,'IN',lundx)
                                                          254 
                                                          -
                                                          255  ! Try to open BUFR file and set to initialize or concatenate
                                                          -
                                                          256 
                                                          -
                                                          257  call openbf(lunit(1),'IN',lundx(1))
                                                          -
                                                          258 
                                                          -
                                                          259  if(inew(1)==0) then
                                                          -
                                                          260  msgp(0) = 0
                                                          -
                                                          261  munit = 0
                                                          -
                                                          262  mlast = 0
                                                          -
                                                          263  ndxts = 0
                                                          -
                                                          264  ldxts = 0
                                                          -
                                                          265  ndxm = 0
                                                          -
                                                          266  ldxm = 0
                                                          -
                                                          267  endif
                                                          -
                                                          268 
                                                          -
                                                          269  nmsg = msgp(0)
                                                          -
                                                          270  iret(1) = 0
                                                          -
                                                          271  iflg = 0
                                                          -
                                                          272  itim = 0
                                                          -
                                                          273 
                                                          -
                                                          274  ! Set some flags so that subsequent calls to the message reading routines will know there is a BUFR table in scope.
                                                          +
                                                          255  if(inew==0) then
                                                          +
                                                          256  msgp(0) = 0
                                                          +
                                                          257  munit = 0
                                                          +
                                                          258  mlast = 0
                                                          +
                                                          259  ndxts = 0
                                                          +
                                                          260  ldxts = 0
                                                          +
                                                          261  ndxm = 0
                                                          +
                                                          262  ldxm = 0
                                                          +
                                                          263  endif
                                                          +
                                                          264 
                                                          +
                                                          265  nmsg = msgp(0)
                                                          +
                                                          266  iret = 0
                                                          +
                                                          267  iflg = 0
                                                          +
                                                          268  itim = 0
                                                          +
                                                          269 
                                                          +
                                                          270  ! Set some flags so that subsequent calls to the message reading routines will know there is a BUFR table in scope.
                                                          +
                                                          271 
                                                          +
                                                          272  ndxts = 1
                                                          +
                                                          273  ldxts = 1
                                                          +
                                                          274  ipmsgs(1) = 1
                                                          275 
                                                          -
                                                          276  ndxts = 1
                                                          -
                                                          277  ldxts = 1
                                                          -
                                                          278  ipmsgs(1) = 1
                                                          -
                                                          279 
                                                          -
                                                          280  ! Transfer messages from file to memory and set message pointers.
                                                          -
                                                          281 
                                                          -
                                                          282  do while (.true.)
                                                          -
                                                          283  call rdmsgw(lunit(1),mgwa,ier)
                                                          -
                                                          284  if(ier==-1) exit
                                                          -
                                                          285  if(ier==-2) then
                                                          -
                                                          286  write(bort_str,'("BUFRLIB: UFBMEX - ERROR READING MESSAGE NUMBER",I5," INTO MEMORY FROM UNIT",I3)') nmsg+1,lunit(1)
                                                          -
                                                          287  call bort(bort_str)
                                                          -
                                                          288  endif
                                                          -
                                                          289 
                                                          -
                                                          290  nmsg = nmsg+1
                                                          -
                                                          291  mesg(nmsg) = iupbs01(mgwa,'MTYP')
                                                          -
                                                          292  if(nmsg>maxmsg) iflg = 1
                                                          -
                                                          293  lmem = nmwrd(mgwa)
                                                          -
                                                          294  if(lmem+mlast>maxmem) iflg = 2
                                                          -
                                                          295 
                                                          -
                                                          296  if(iflg==0) then
                                                          -
                                                          297  iret(1) = iret(1)+1
                                                          -
                                                          298  do i=1,lmem
                                                          -
                                                          299  msgs(mlast+i) = mgwa(i)
                                                          -
                                                          300  enddo
                                                          -
                                                          301  msgp(0) = nmsg
                                                          -
                                                          302  msgp(nmsg) = mlast+1
                                                          -
                                                          303  else
                                                          -
                                                          304  if(itim==0) then
                                                          -
                                                          305  mlast0 = mlast
                                                          -
                                                          306  itim=1
                                                          -
                                                          307  endif
                                                          -
                                                          308  endif
                                                          -
                                                          309  mlast = mlast+lmem
                                                          -
                                                          310  enddo
                                                          -
                                                          311 
                                                          -
                                                          312  if(iflg==1) then
                                                          -
                                                          313  ! Emergency room treatment for maxmsg array overflow
                                                          -
                                                          314  if(iprt>=0) then
                                                          -
                                                          315  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                          -
                                                          316  write ( unit=errstr, fmt='(A,A,I8,A)' ) 'BUFRLIB: UFBMEX - THE NO. OF MESSAGES REQUIRED TO STORE ', &
                                                          -
                                                          317  'ALL MESSAGES INTERNALLY EXCEEDS MAXIMUM (', maxmsg, ') - INCOMPLETE READ'
                                                          +
                                                          276  ! Transfer messages from file to memory and set message pointers.
                                                          +
                                                          277 
                                                          +
                                                          278  do while (.true.)
                                                          +
                                                          279  call rdmsgw(lunit,mgwa,ier)
                                                          +
                                                          280  if(ier==-1) exit
                                                          +
                                                          281  if(ier==-2) then
                                                          +
                                                          282  write(bort_str,'("BUFRLIB: UFBMEX - ERROR READING MESSAGE NUMBER",I5," INTO MEMORY FROM UNIT",I3)') nmsg+1,lunit
                                                          +
                                                          283  call bort(bort_str)
                                                          +
                                                          284  endif
                                                          +
                                                          285 
                                                          +
                                                          286  nmsg = nmsg+1
                                                          +
                                                          287  mesg(nmsg) = iupbs01(mgwa,'MTYP')
                                                          +
                                                          288  if(nmsg>maxmsg) iflg = 1
                                                          +
                                                          289  lmem = nmwrd(mgwa)
                                                          +
                                                          290  if(lmem+mlast>maxmem) iflg = 2
                                                          +
                                                          291 
                                                          +
                                                          292  if(iflg==0) then
                                                          +
                                                          293  iret = iret+1
                                                          +
                                                          294  do i=1,lmem
                                                          +
                                                          295  msgs(mlast+i) = mgwa(i)
                                                          +
                                                          296  enddo
                                                          +
                                                          297  msgp(0) = nmsg
                                                          +
                                                          298  msgp(nmsg) = mlast+1
                                                          +
                                                          299  else
                                                          +
                                                          300  if(itim==0) then
                                                          +
                                                          301  mlast0 = mlast
                                                          +
                                                          302  itim=1
                                                          +
                                                          303  endif
                                                          +
                                                          304  endif
                                                          +
                                                          305  mlast = mlast+lmem
                                                          +
                                                          306  enddo
                                                          +
                                                          307 
                                                          +
                                                          308  if(iflg==1) then
                                                          +
                                                          309  ! Emergency room treatment for maxmsg array overflow
                                                          +
                                                          310  if(iprt>=0) then
                                                          +
                                                          311  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                          +
                                                          312  write ( unit=errstr, fmt='(A,A,I8,A)' ) 'BUFRLIB: UFBMEX - THE NO. OF MESSAGES REQUIRED TO STORE ', &
                                                          +
                                                          313  'ALL MESSAGES INTERNALLY EXCEEDS MAXIMUM (', maxmsg, ') - INCOMPLETE READ'
                                                          +
                                                          314  call errwrt(errstr)
                                                          +
                                                          315  write ( unit=errstr, fmt='(A,I8,A,I8,A)' ) '>>>UFBMEX STORED ', msgp(0), ' MESSAGES OUT OF ', nmsg, '<<<'
                                                          +
                                                          316  call errwrt(errstr)
                                                          +
                                                          317  write ( unit=errstr, fmt='(A,I8,A,I8,A)' ) '>>>UFBMEX STORED ', mlast0, ' BYTES OUT OF ', mlast, '<<<'
                                                          318  call errwrt(errstr)
                                                          -
                                                          319  write ( unit=errstr, fmt='(A,I8,A,I8,A)' ) '>>>UFBMEX STORED ', msgp(0), ' MESSAGES OUT OF ', nmsg, '<<<'
                                                          -
                                                          320  call errwrt(errstr)
                                                          -
                                                          321  write ( unit=errstr, fmt='(A,I8,A,I8,A)' ) '>>>UFBMEX STORED ', mlast0, ' BYTES OUT OF ', mlast, '<<<'
                                                          -
                                                          322  call errwrt(errstr)
                                                          -
                                                          323  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                          -
                                                          324  call errwrt(' ')
                                                          -
                                                          325  endif
                                                          -
                                                          326  mlast=mlast0
                                                          -
                                                          327  endif
                                                          -
                                                          328 
                                                          -
                                                          329  if(iflg==2) then
                                                          -
                                                          330  ! Emergency room treatment for maxmem array overflow
                                                          -
                                                          331  if(iprt>=0) then
                                                          -
                                                          332  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                          -
                                                          333  write ( unit=errstr, fmt='(A,A,I8,A)' ) 'BUFRLIB: UFBMEX - THE NO. OF BYTES REQUIRED TO STORE ', &
                                                          -
                                                          334  'ALL MESSAGES INTERNALLY EXCEEDS MAXIMUM (', maxmem, ') - INCOMPLETE READ'
                                                          +
                                                          319  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                          +
                                                          320  call errwrt(' ')
                                                          +
                                                          321  endif
                                                          +
                                                          322  mlast=mlast0
                                                          +
                                                          323  endif
                                                          +
                                                          324 
                                                          +
                                                          325  if(iflg==2) then
                                                          +
                                                          326  ! Emergency room treatment for maxmem array overflow
                                                          +
                                                          327  if(iprt>=0) then
                                                          +
                                                          328  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                          +
                                                          329  write ( unit=errstr, fmt='(A,A,I8,A)' ) 'BUFRLIB: UFBMEX - THE NO. OF BYTES REQUIRED TO STORE ', &
                                                          +
                                                          330  'ALL MESSAGES INTERNALLY EXCEEDS MAXIMUM (', maxmem, ') - INCOMPLETE READ'
                                                          +
                                                          331  call errwrt(errstr)
                                                          +
                                                          332  write ( unit=errstr, fmt='(A,I8,A,I8,A)' ) '>>>UFBMEX STORED ', mlast0, ' BYTES OUT OF ', mlast, '<<<'
                                                          +
                                                          333  call errwrt(errstr)
                                                          +
                                                          334  write ( unit=errstr, fmt='(A,I8,A,I8,A)' ) '>>>UFBMEX STORED ', msgp(0), ' MESSAGES OUT OF ', nmsg, '<<<'
                                                          335  call errwrt(errstr)
                                                          -
                                                          336  write ( unit=errstr, fmt='(A,I8,A,I8,A)' ) '>>>UFBMEX STORED ', mlast0, ' BYTES OUT OF ', mlast, '<<<'
                                                          -
                                                          337  call errwrt(errstr)
                                                          -
                                                          338  write ( unit=errstr, fmt='(A,I8,A,I8,A)' ) '>>>UFBMEX STORED ', msgp(0), ' MESSAGES OUT OF ', nmsg, '<<<'
                                                          -
                                                          339  call errwrt(errstr)
                                                          -
                                                          340  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                          -
                                                          341  call errwrt(' ')
                                                          -
                                                          342  endif
                                                          -
                                                          343  mlast=mlast0
                                                          -
                                                          344  endif
                                                          -
                                                          345 
                                                          -
                                                          346  if(iret(1)==0) then
                                                          -
                                                          347  call closbf(lunit(1))
                                                          -
                                                          348  else
                                                          -
                                                          349  if(munit/=0) call closbf(lunit(1))
                                                          -
                                                          350  if(munit==0) munit = lunit(1)
                                                          -
                                                          351  endif
                                                          -
                                                          352 
                                                          -
                                                          353  return
                                                          -
                                                          354 end subroutine ufbmex
                                                          -
                                                          355 
                                                          -
                                                          381 recursive subroutine readmm(imsg,subset,jdate,iret)
                                                          +
                                                          336  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                          +
                                                          337  call errwrt(' ')
                                                          +
                                                          338  endif
                                                          +
                                                          339  mlast=mlast0
                                                          +
                                                          340  endif
                                                          +
                                                          341 
                                                          +
                                                          342  if(iret==0) then
                                                          +
                                                          343  call closbf(lunit)
                                                          +
                                                          344  else
                                                          +
                                                          345  if(munit/=0) call closbf(lunit)
                                                          +
                                                          346  if(munit==0) munit = lunit
                                                          +
                                                          347  endif
                                                          +
                                                          348 
                                                          +
                                                          349  return
                                                          +
                                                          350 end subroutine ufbmex
                                                          +
                                                          351 
                                                          +
                                                          377 recursive subroutine readmm(imsg,subset,jdate,iret)
                                                          +
                                                          378 
                                                          +
                                                          379  use modv_vars, only: im8b
                                                          +
                                                          380 
                                                          +
                                                          381  implicit none
                                                          382 
                                                          -
                                                          383  use modv_vars, only: im8b
                                                          -
                                                          384 
                                                          -
                                                          385  implicit none
                                                          -
                                                          386 
                                                          -
                                                          387  integer, intent(inout) :: imsg
                                                          -
                                                          388  integer, intent(out) :: jdate, iret
                                                          +
                                                          383  integer, intent(inout) :: imsg
                                                          +
                                                          384  integer, intent(out) :: jdate, iret
                                                          +
                                                          385 
                                                          +
                                                          386  character*8, intent(out) :: subset
                                                          +
                                                          387 
                                                          +
                                                          388  ! Check for I8 integers.
                                                          389 
                                                          -
                                                          390  character*8, intent(out) :: subset
                                                          -
                                                          391 
                                                          -
                                                          392  ! Check for I8 integers.
                                                          -
                                                          393 
                                                          -
                                                          394  if(im8b) then
                                                          -
                                                          395  im8b=.false.
                                                          -
                                                          396 
                                                          -
                                                          397  call x84(imsg,imsg,1)
                                                          -
                                                          398  call readmm(imsg,subset,jdate,iret)
                                                          -
                                                          399  call x48(imsg,imsg,1)
                                                          -
                                                          400  call x48(jdate,jdate,1)
                                                          -
                                                          401  call x48(iret,iret,1)
                                                          +
                                                          390  if(im8b) then
                                                          +
                                                          391  im8b=.false.
                                                          +
                                                          392 
                                                          +
                                                          393  call x84(imsg,imsg,1)
                                                          +
                                                          394  call readmm(imsg,subset,jdate,iret)
                                                          +
                                                          395  call x48(imsg,imsg,1)
                                                          +
                                                          396  call x48(jdate,jdate,1)
                                                          +
                                                          397  call x48(iret,iret,1)
                                                          +
                                                          398 
                                                          +
                                                          399  im8b=.true.
                                                          +
                                                          400  return
                                                          +
                                                          401  endif
                                                          402 
                                                          -
                                                          403  im8b=.true.
                                                          -
                                                          404  return
                                                          -
                                                          405  endif
                                                          +
                                                          403  call rdmemm(imsg,subset,jdate,iret)
                                                          +
                                                          404 
                                                          +
                                                          405  imsg = imsg+1
                                                          406 
                                                          -
                                                          407  call rdmemm(imsg,subset,jdate,iret)
                                                          -
                                                          408 
                                                          -
                                                          409  imsg = imsg+1
                                                          -
                                                          410 
                                                          -
                                                          411  return
                                                          -
                                                          412 end subroutine readmm
                                                          -
                                                          413 
                                                          -
                                                          433 recursive integer function ireadmm(imsg,subset,idate) result(iret)
                                                          +
                                                          407  return
                                                          +
                                                          408 end subroutine readmm
                                                          +
                                                          409 
                                                          +
                                                          429 recursive integer function ireadmm(imsg,subset,idate) result(iret)
                                                          +
                                                          430 
                                                          +
                                                          431  use modv_vars, only: im8b
                                                          +
                                                          432 
                                                          +
                                                          433  implicit none
                                                          434 
                                                          -
                                                          435  use modv_vars, only: im8b
                                                          -
                                                          436 
                                                          -
                                                          437  implicit none
                                                          -
                                                          438 
                                                          -
                                                          439  integer, intent(inout) :: imsg
                                                          -
                                                          440  integer, intent(out) :: idate
                                                          +
                                                          435  integer, intent(inout) :: imsg
                                                          +
                                                          436  integer, intent(out) :: idate
                                                          +
                                                          437 
                                                          +
                                                          438  character*8, intent(out) :: subset
                                                          +
                                                          439 
                                                          +
                                                          440  ! Check for I8 integers.
                                                          441 
                                                          -
                                                          442  character*8, intent(out) :: subset
                                                          -
                                                          443 
                                                          -
                                                          444  ! Check for I8 integers.
                                                          -
                                                          445 
                                                          -
                                                          446  if(im8b) then
                                                          -
                                                          447  im8b=.false.
                                                          -
                                                          448 
                                                          -
                                                          449  call x84(imsg,imsg,1)
                                                          -
                                                          450  iret=ireadmm(imsg,subset,idate)
                                                          -
                                                          451  call x48(imsg,imsg,1)
                                                          -
                                                          452  call x48(idate,idate,1)
                                                          +
                                                          442  if(im8b) then
                                                          +
                                                          443  im8b=.false.
                                                          +
                                                          444 
                                                          +
                                                          445  call x84(imsg,imsg,1)
                                                          +
                                                          446  iret=ireadmm(imsg,subset,idate)
                                                          +
                                                          447  call x48(imsg,imsg,1)
                                                          +
                                                          448  call x48(idate,idate,1)
                                                          +
                                                          449 
                                                          +
                                                          450  im8b=.true.
                                                          +
                                                          451  return
                                                          +
                                                          452  endif
                                                          453 
                                                          -
                                                          454  im8b=.true.
                                                          -
                                                          455  return
                                                          -
                                                          456  endif
                                                          -
                                                          457 
                                                          -
                                                          458  call readmm(imsg,subset,idate,iret)
                                                          -
                                                          459 
                                                          -
                                                          460  return
                                                          -
                                                          461 end function ireadmm
                                                          -
                                                          462 
                                                          -
                                                          486 recursive subroutine rdmemm(imsg,subset,jdate,iret)
                                                          -
                                                          487 
                                                          -
                                                          488  use modv_vars, only: im8b
                                                          -
                                                          489 
                                                          -
                                                          490  use moda_msgcwd
                                                          -
                                                          491  use moda_bitbuf
                                                          -
                                                          492  use moda_mgwa
                                                          -
                                                          493  use moda_msgmem
                                                          -
                                                          494 
                                                          -
                                                          495  implicit none
                                                          +
                                                          454  call readmm(imsg,subset,idate,iret)
                                                          +
                                                          455 
                                                          +
                                                          456  return
                                                          +
                                                          457 end function ireadmm
                                                          +
                                                          458 
                                                          +
                                                          482 recursive subroutine rdmemm(imsg,subset,jdate,iret)
                                                          +
                                                          483 
                                                          +
                                                          484  use modv_vars, only: im8b, iprt
                                                          +
                                                          485 
                                                          +
                                                          486  use moda_msgcwd
                                                          +
                                                          487  use moda_bitbuf
                                                          +
                                                          488  use moda_mgwa
                                                          +
                                                          489  use moda_msgmem
                                                          +
                                                          490 
                                                          +
                                                          491  implicit none
                                                          +
                                                          492 
                                                          +
                                                          493  integer, intent(in) :: imsg
                                                          +
                                                          494  integer, intent(out) :: jdate, iret
                                                          +
                                                          495  integer my_imsg, lun, il, im, ii, jj, kk, nwrd, iptr, lptr, ier
                                                          496 
                                                          -
                                                          497  integer, intent(in) :: imsg
                                                          -
                                                          498  integer, intent(out) :: jdate, iret
                                                          -
                                                          499  integer iprt, my_imsg, lun, il, im, ii, jj, kk, nwrd, iptr, lptr, ier
                                                          -
                                                          500 
                                                          -
                                                          501  character*128 bort_str, errstr
                                                          -
                                                          502  character*8, intent(out) :: subset
                                                          +
                                                          497  character*128 bort_str, errstr
                                                          +
                                                          498  character*8, intent(out) :: subset
                                                          +
                                                          499 
                                                          +
                                                          500  logical known
                                                          +
                                                          501 
                                                          +
                                                          502  ! Check for I8 integers
                                                          503 
                                                          -
                                                          504  logical known
                                                          -
                                                          505 
                                                          -
                                                          506  common /quiet/ iprt
                                                          -
                                                          507 
                                                          -
                                                          508  ! Check for I8 integers
                                                          -
                                                          509 
                                                          -
                                                          510  if(im8b) then
                                                          -
                                                          511  im8b=.false.
                                                          -
                                                          512 
                                                          -
                                                          513  call x84(imsg,my_imsg,1)
                                                          -
                                                          514  call rdmemm(my_imsg,subset,jdate,iret)
                                                          -
                                                          515  call x48(jdate,jdate,1)
                                                          -
                                                          516  call x48(iret,iret,1)
                                                          +
                                                          504  if(im8b) then
                                                          +
                                                          505  im8b=.false.
                                                          +
                                                          506 
                                                          +
                                                          507  call x84(imsg,my_imsg,1)
                                                          +
                                                          508  call rdmemm(my_imsg,subset,jdate,iret)
                                                          +
                                                          509  call x48(jdate,jdate,1)
                                                          +
                                                          510  call x48(iret,iret,1)
                                                          +
                                                          511 
                                                          +
                                                          512  im8b=.true.
                                                          +
                                                          513  return
                                                          +
                                                          514  endif
                                                          +
                                                          515 
                                                          +
                                                          516  ! Check the message request and file status
                                                          517 
                                                          -
                                                          518  im8b=.true.
                                                          -
                                                          519  return
                                                          -
                                                          520  endif
                                                          +
                                                          518  call status(munit,lun,il,im)
                                                          +
                                                          519  call wtstat(munit,lun,il,1)
                                                          +
                                                          520  iret = 0
                                                          521 
                                                          -
                                                          522  ! Check the message request and file status
                                                          -
                                                          523 
                                                          -
                                                          524  call status(munit,lun,il,im)
                                                          -
                                                          525  call wtstat(munit,lun,il,1)
                                                          -
                                                          526  iret = 0
                                                          -
                                                          527 
                                                          -
                                                          528  if(imsg==0 .or.imsg>msgp(0)) then
                                                          -
                                                          529  call wtstat(munit,lun,il,0)
                                                          -
                                                          530  if(iprt>=1) then
                                                          -
                                                          531  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                          -
                                                          532  if(imsg==0) then
                                                          -
                                                          533  errstr = 'BUFRLIB: RDMEMM - REQUESTED MEMORY MESSAGE NUMBER {FIRST (INPUT) ARGUMENT} IS 0, RETURN WITH IRET = -1'
                                                          -
                                                          534  else
                                                          -
                                                          535  write ( unit=errstr, fmt='(A,I6,A,I6,A)' ) 'BUFRLIB: RDMEMM - REQ. MEMORY MESSAGE #', imsg, &
                                                          -
                                                          536  ' {= 1ST (INPUT) ARG.} > # OF MESSAGES IN MEMORY (', msgp(0), '), RETURN WITH IRET = -1'
                                                          -
                                                          537  endif
                                                          -
                                                          538  call errwrt(errstr)
                                                          -
                                                          539  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                          -
                                                          540  call errwrt(' ')
                                                          -
                                                          541  endif
                                                          -
                                                          542  iret = -1
                                                          -
                                                          543  return
                                                          -
                                                          544  endif
                                                          -
                                                          545 
                                                          -
                                                          546  ! Determine which table applies to this message.
                                                          -
                                                          547 
                                                          -
                                                          548  known = .false.
                                                          -
                                                          549  jj = ndxts
                                                          -
                                                          550  do while ((.not.known).and.(jj>=1))
                                                          -
                                                          551  if (ipmsgs(jj)<=imsg) then
                                                          -
                                                          552  known = .true.
                                                          -
                                                          553  else
                                                          -
                                                          554  jj = jj - 1
                                                          -
                                                          555  endif
                                                          -
                                                          556  enddo
                                                          -
                                                          557  if (.not.known) then
                                                          -
                                                          558  write(bort_str,'("BUFRLIB: RDMEMM - UNKNOWN DX TABLE FOR REQUESTED MESSAGE #",I5)') imsg
                                                          -
                                                          559  call bort(bort_str)
                                                          -
                                                          560  endif
                                                          +
                                                          522  if(imsg==0 .or.imsg>msgp(0)) then
                                                          +
                                                          523  call wtstat(munit,lun,il,0)
                                                          +
                                                          524  if(iprt>=1) then
                                                          +
                                                          525  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                          +
                                                          526  if(imsg==0) then
                                                          +
                                                          527  errstr = 'BUFRLIB: RDMEMM - REQUESTED MEMORY MESSAGE NUMBER {FIRST (INPUT) ARGUMENT} IS 0, RETURN WITH IRET = -1'
                                                          +
                                                          528  else
                                                          +
                                                          529  write ( unit=errstr, fmt='(A,I6,A,I6,A)' ) 'BUFRLIB: RDMEMM - REQ. MEMORY MESSAGE #', imsg, &
                                                          +
                                                          530  ' {= 1ST (INPUT) ARG.} > # OF MESSAGES IN MEMORY (', msgp(0), '), RETURN WITH IRET = -1'
                                                          +
                                                          531  endif
                                                          +
                                                          532  call errwrt(errstr)
                                                          +
                                                          533  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                          +
                                                          534  call errwrt(' ')
                                                          +
                                                          535  endif
                                                          +
                                                          536  iret = -1
                                                          +
                                                          537  return
                                                          +
                                                          538  endif
                                                          +
                                                          539 
                                                          +
                                                          540  ! Determine which table applies to this message.
                                                          +
                                                          541 
                                                          +
                                                          542  known = .false.
                                                          +
                                                          543  jj = ndxts
                                                          +
                                                          544  do while ((.not.known).and.(jj>=1))
                                                          +
                                                          545  if (ipmsgs(jj)<=imsg) then
                                                          +
                                                          546  known = .true.
                                                          +
                                                          547  else
                                                          +
                                                          548  jj = jj - 1
                                                          +
                                                          549  endif
                                                          +
                                                          550  enddo
                                                          +
                                                          551  if (.not.known) then
                                                          +
                                                          552  write(bort_str,'("BUFRLIB: RDMEMM - UNKNOWN DX TABLE FOR REQUESTED MESSAGE #",I5)') imsg
                                                          +
                                                          553  call bort(bort_str)
                                                          +
                                                          554  endif
                                                          +
                                                          555 
                                                          +
                                                          556  ! Is this table the one that is currently in scope?
                                                          +
                                                          557 
                                                          +
                                                          558  if (jj/=ldxts) then
                                                          +
                                                          559 
                                                          +
                                                          560  ! No, so reset the software to use the proper table.
                                                          561 
                                                          -
                                                          562  ! Is this table the one that is currently in scope?
                                                          -
                                                          563 
                                                          -
                                                          564  if (jj/=ldxts) then
                                                          -
                                                          565 
                                                          -
                                                          566  ! No, so reset the software to use the proper table.
                                                          -
                                                          567 
                                                          -
                                                          568  if(iprt>=2) then
                                                          -
                                                          569  call errwrt('+++++++++++++++++++++++++++++++++++++++++++++')
                                                          -
                                                          570  write ( unit=errstr, fmt='(A,I3,A,I3,A,I6)' ) 'BUFRLIB: RDMEMM - RESETTING TO USE DX TABLE #', jj, &
                                                          -
                                                          571  ' INSTEAD OF DX TABLE #', ldxts, ' FOR REQUESTED MESSAGE #', imsg
                                                          -
                                                          572  call errwrt(errstr)
                                                          -
                                                          573  call errwrt('+++++++++++++++++++++++++++++++++++++++++++++')
                                                          -
                                                          574  call errwrt(' ')
                                                          -
                                                          575  endif
                                                          -
                                                          576  call dxinit(lun,0)
                                                          -
                                                          577 
                                                          -
                                                          578  ! Store each of the DX dictionary messages which constitute this table.
                                                          -
                                                          579 
                                                          -
                                                          580  do ii = ifdxts(jj), (ifdxts(jj)+icdxts(jj)-1)
                                                          -
                                                          581  if (ii==ndxm) then
                                                          -
                                                          582  nwrd = ldxm - ipdxm(ii) + 1
                                                          -
                                                          583  else
                                                          -
                                                          584  nwrd = ipdxm(ii+1) - ipdxm(ii)
                                                          -
                                                          585  endif
                                                          -
                                                          586  do kk = 1, nwrd
                                                          -
                                                          587  mgwa(kk) = mdx(ipdxm(ii)+kk-1)
                                                          -
                                                          588  enddo
                                                          -
                                                          589  call stbfdx(lun,mgwa)
                                                          -
                                                          590  enddo
                                                          +
                                                          562  if(iprt>=2) then
                                                          +
                                                          563  call errwrt('+++++++++++++++++++++++++++++++++++++++++++++')
                                                          +
                                                          564  write ( unit=errstr, fmt='(A,I3,A,I3,A,I6)' ) 'BUFRLIB: RDMEMM - RESETTING TO USE DX TABLE #', jj, &
                                                          +
                                                          565  ' INSTEAD OF DX TABLE #', ldxts, ' FOR REQUESTED MESSAGE #', imsg
                                                          +
                                                          566  call errwrt(errstr)
                                                          +
                                                          567  call errwrt('+++++++++++++++++++++++++++++++++++++++++++++')
                                                          +
                                                          568  call errwrt(' ')
                                                          +
                                                          569  endif
                                                          +
                                                          570  call dxinit(lun,0)
                                                          +
                                                          571 
                                                          +
                                                          572  ! Store each of the DX dictionary messages which constitute this table.
                                                          +
                                                          573 
                                                          +
                                                          574  do ii = ifdxts(jj), (ifdxts(jj)+icdxts(jj)-1)
                                                          +
                                                          575  if (ii==ndxm) then
                                                          +
                                                          576  nwrd = ldxm - ipdxm(ii) + 1
                                                          +
                                                          577  else
                                                          +
                                                          578  nwrd = ipdxm(ii+1) - ipdxm(ii)
                                                          +
                                                          579  endif
                                                          +
                                                          580  do kk = 1, nwrd
                                                          +
                                                          581  mgwa(kk) = mdx(ipdxm(ii)+kk-1)
                                                          +
                                                          582  enddo
                                                          +
                                                          583  call stbfdx(lun,mgwa)
                                                          +
                                                          584  enddo
                                                          +
                                                          585 
                                                          +
                                                          586  ! Rebuild the internal jump/link table.
                                                          +
                                                          587 
                                                          +
                                                          588  call makestab
                                                          +
                                                          589  ldxts = jj
                                                          +
                                                          590  endif
                                                          591 
                                                          -
                                                          592  ! Rebuild the internal jump/link table.
                                                          +
                                                          592  ! Read memory message number imsg into a message buffer.
                                                          593 
                                                          -
                                                          594  call makestab
                                                          -
                                                          595  ldxts = jj
                                                          -
                                                          596  endif
                                                          -
                                                          597 
                                                          -
                                                          598  ! Read memory message number imsg into a message buffer.
                                                          -
                                                          599 
                                                          -
                                                          600  iptr = msgp(imsg)
                                                          -
                                                          601  if(imsg<msgp(0)) lptr = msgp(imsg+1)-iptr
                                                          -
                                                          602  if(imsg==msgp(0)) lptr = mlast-iptr+1
                                                          -
                                                          603  iptr = iptr-1
                                                          +
                                                          594  iptr = msgp(imsg)
                                                          +
                                                          595  if(imsg<msgp(0)) lptr = msgp(imsg+1)-iptr
                                                          +
                                                          596  if(imsg==msgp(0)) lptr = mlast-iptr+1
                                                          +
                                                          597  iptr = iptr-1
                                                          +
                                                          598 
                                                          +
                                                          599  do ii=1,lptr
                                                          +
                                                          600  mbay(ii,lun) = msgs(iptr+ii)
                                                          +
                                                          601  enddo
                                                          +
                                                          602 
                                                          +
                                                          603  ! Parse the message section contents.
                                                          604 
                                                          -
                                                          605  do ii=1,lptr
                                                          -
                                                          606  mbay(ii,lun) = msgs(iptr+ii)
                                                          -
                                                          607  enddo
                                                          -
                                                          608 
                                                          -
                                                          609  ! Parse the message section contents.
                                                          +
                                                          605  call cktaba(lun,subset,jdate,ier)
                                                          +
                                                          606  nmsg(lun) = imsg
                                                          +
                                                          607 
                                                          +
                                                          608  return
                                                          +
                                                          609 end subroutine rdmemm
                                                          610 
                                                          -
                                                          611  call cktaba(lun,subset,jdate,ier)
                                                          -
                                                          612  nmsg(lun) = imsg
                                                          -
                                                          613 
                                                          -
                                                          614  return
                                                          -
                                                          615 end subroutine rdmemm
                                                          -
                                                          616 
                                                          -
                                                          634 recursive subroutine rdmems(isub,iret)
                                                          -
                                                          635 
                                                          -
                                                          636  use modv_vars, only: im8b
                                                          -
                                                          637 
                                                          -
                                                          638  use moda_msgcwd
                                                          -
                                                          639  use moda_unptyp
                                                          -
                                                          640  use moda_bitbuf
                                                          -
                                                          641  use moda_msgmem
                                                          +
                                                          628 recursive subroutine rdmems(isub,iret)
                                                          +
                                                          629 
                                                          +
                                                          630  use modv_vars, only: im8b, iprt
                                                          +
                                                          631 
                                                          +
                                                          632  use moda_msgcwd
                                                          +
                                                          633  use moda_unptyp
                                                          +
                                                          634  use moda_bitbuf
                                                          +
                                                          635  use moda_msgmem
                                                          +
                                                          636 
                                                          +
                                                          637  implicit none
                                                          +
                                                          638 
                                                          +
                                                          639  integer, intent(in) :: isub
                                                          +
                                                          640  integer, intent(out) :: iret
                                                          +
                                                          641  integer my_isub, lun, il, im, mbym, nbyt, i, iupb
                                                          642 
                                                          -
                                                          643  implicit none
                                                          +
                                                          643  character*128 bort_str, errstr
                                                          644 
                                                          -
                                                          645  integer, intent(in) :: isub
                                                          -
                                                          646  integer, intent(out) :: iret
                                                          -
                                                          647  integer my_isub, iprt, lun, il, im, mbym, nbyt, i, iupb
                                                          -
                                                          648 
                                                          -
                                                          649  character*128 bort_str, errstr
                                                          -
                                                          650 
                                                          -
                                                          651  common /quiet/ iprt
                                                          -
                                                          652 
                                                          -
                                                          653  ! Check for I8 integers
                                                          -
                                                          654 
                                                          -
                                                          655  if(im8b) then
                                                          -
                                                          656  im8b=.false.
                                                          +
                                                          645  ! Check for I8 integers
                                                          +
                                                          646 
                                                          +
                                                          647  if(im8b) then
                                                          +
                                                          648  im8b=.false.
                                                          +
                                                          649 
                                                          +
                                                          650  call x84(isub,my_isub,1)
                                                          +
                                                          651  call rdmems(my_isub,iret)
                                                          +
                                                          652  call x48(iret,iret,1)
                                                          +
                                                          653 
                                                          +
                                                          654  im8b=.true.
                                                          +
                                                          655  return
                                                          +
                                                          656  endif
                                                          657 
                                                          -
                                                          658  call x84(isub,my_isub,1)
                                                          -
                                                          659  call rdmems(my_isub,iret)
                                                          -
                                                          660  call x48(iret,iret,1)
                                                          -
                                                          661 
                                                          -
                                                          662  im8b=.true.
                                                          -
                                                          663  return
                                                          -
                                                          664  endif
                                                          -
                                                          665 
                                                          -
                                                          666  ! Check the message request and file status
                                                          +
                                                          658  ! Check the message request and file status
                                                          +
                                                          659 
                                                          +
                                                          660  call status(munit,lun,il,im)
                                                          +
                                                          661  if(im==0) call bort('BUFRLIB: RDMEMS - A MEMORY MESSAGE MUST BE OPEN IN INPUT BUFR FILE, NONE ARE')
                                                          +
                                                          662  if(nsub(lun)/=0) then
                                                          +
                                                          663  write(bort_str,'("BUFRLIB: RDMEMS - UPON ENTRY, SUBSET POINTER IN MEMORY MESSAGE IS NOT AT BEGINNING (",I3," '// &
                                                          +
                                                          664  'SUBSETS HAVE BEEN READ, SHOULD BE 0)")') nsub(lun)
                                                          +
                                                          665  call bort(bort_str)
                                                          +
                                                          666  endif
                                                          667 
                                                          -
                                                          668  call status(munit,lun,il,im)
                                                          -
                                                          669  if(im==0) call bort('BUFRLIB: RDMEMS - A MEMORY MESSAGE MUST BE OPEN IN INPUT BUFR FILE, NONE ARE')
                                                          -
                                                          670  if(nsub(lun)/=0) then
                                                          -
                                                          671  write(bort_str,'("BUFRLIB: RDMEMS - UPON ENTRY, SUBSET POINTER IN MEMORY MESSAGE IS NOT AT BEGINNING (",I3," '// &
                                                          -
                                                          672  'SUBSETS HAVE BEEN READ, SHOULD BE 0)")') nsub(lun)
                                                          -
                                                          673  call bort(bort_str)
                                                          -
                                                          674  endif
                                                          -
                                                          675 
                                                          -
                                                          676  if(isub>msub(lun)) then
                                                          -
                                                          677  if(iprt>=0) then
                                                          -
                                                          678  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                          -
                                                          679  write ( unit=errstr, fmt='(A,I5,A,A,I5,A)' ) 'BUFRLIB: RDMEMS - REQ. SUBSET #', isub, ' (= 1st INPUT ', &
                                                          -
                                                          680  'ARG.) > # OF SUBSETS IN MEMORY MESSAGE (', msub(lun), ')'
                                                          -
                                                          681  call errwrt(errstr)
                                                          -
                                                          682  call errwrt('RETURN WITH IRET = -1')
                                                          -
                                                          683  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                          -
                                                          684  call errwrt(' ')
                                                          -
                                                          685  endif
                                                          -
                                                          686  iret = -1
                                                          -
                                                          687  return
                                                          -
                                                          688  endif
                                                          -
                                                          689 
                                                          -
                                                          690  mbym = mbyt(lun)
                                                          -
                                                          691  nbyt = 0
                                                          -
                                                          692 
                                                          -
                                                          693  ! Position to subset number isub in memory message
                                                          -
                                                          694 
                                                          -
                                                          695  if(msgunp(lun)==0) then
                                                          -
                                                          696  nsub(lun) = isub-1
                                                          -
                                                          697  do i=1,isub-1
                                                          -
                                                          698  mbyt(lun) = mbyt(lun) + iupb(mbay(1,lun),mbyt(lun)+1,16)
                                                          -
                                                          699  enddo
                                                          -
                                                          700  elseif(msgunp(lun)==1) then
                                                          -
                                                          701  ! message with "standard" Section 3
                                                          -
                                                          702  do i=1,isub-1
                                                          -
                                                          703  call readsb(munit,iret)
                                                          -
                                                          704  enddo
                                                          -
                                                          705  else
                                                          -
                                                          706  ! compressed message
                                                          -
                                                          707  nsub(lun) = isub-1
                                                          -
                                                          708  endif
                                                          +
                                                          668  if(isub>msub(lun)) then
                                                          +
                                                          669  if(iprt>=0) then
                                                          +
                                                          670  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                          +
                                                          671  write ( unit=errstr, fmt='(A,I5,A,A,I5,A)' ) 'BUFRLIB: RDMEMS - REQ. SUBSET #', isub, ' (= 1st INPUT ', &
                                                          +
                                                          672  'ARG.) > # OF SUBSETS IN MEMORY MESSAGE (', msub(lun), ')'
                                                          +
                                                          673  call errwrt(errstr)
                                                          +
                                                          674  call errwrt('RETURN WITH IRET = -1')
                                                          +
                                                          675  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                          +
                                                          676  call errwrt(' ')
                                                          +
                                                          677  endif
                                                          +
                                                          678  iret = -1
                                                          +
                                                          679  return
                                                          +
                                                          680  endif
                                                          +
                                                          681 
                                                          +
                                                          682  mbym = mbyt(lun)
                                                          +
                                                          683  nbyt = 0
                                                          +
                                                          684 
                                                          +
                                                          685  ! Position to subset number isub in memory message
                                                          +
                                                          686 
                                                          +
                                                          687  if(msgunp(lun)==0) then
                                                          +
                                                          688  nsub(lun) = isub-1
                                                          +
                                                          689  do i=1,isub-1
                                                          +
                                                          690  mbyt(lun) = mbyt(lun) + iupb(mbay(1,lun),mbyt(lun)+1,16)
                                                          +
                                                          691  enddo
                                                          +
                                                          692  elseif(msgunp(lun)==1) then
                                                          +
                                                          693  ! message with "standard" Section 3
                                                          +
                                                          694  do i=1,isub-1
                                                          +
                                                          695  call readsb(munit,iret)
                                                          +
                                                          696  enddo
                                                          +
                                                          697  else
                                                          +
                                                          698  ! compressed message
                                                          +
                                                          699  nsub(lun) = isub-1
                                                          +
                                                          700  endif
                                                          +
                                                          701 
                                                          +
                                                          702  ! Now read subset number isub from memory message
                                                          +
                                                          703 
                                                          +
                                                          704  call readsb(munit,iret)
                                                          +
                                                          705  if(iret/=0) call bort('BUFRLIB: RDMEMS - CALL TO ROUTINE READSB RETURNED WITH IRET = -1 (EITHER MEMORY MESSAGE '// &
                                                          +
                                                          706  'NOT OPEN OR ALL SUBSETS IN MESSAGE READ')
                                                          +
                                                          707 
                                                          +
                                                          708  ! Reset subset pointer back to zero (beginning of message) and return
                                                          709 
                                                          -
                                                          710  ! Now read subset number isub from memory message
                                                          -
                                                          711 
                                                          -
                                                          712  call readsb(munit,iret)
                                                          -
                                                          713  if(iret/=0) call bort('BUFRLIB: RDMEMS - CALL TO ROUTINE READSB RETURNED WITH IRET = -1 (EITHER MEMORY MESSAGE '// &
                                                          -
                                                          714  'NOT OPEN OR ALL SUBSETS IN MESSAGE READ')
                                                          +
                                                          710  mbyt(lun) = mbym
                                                          +
                                                          711  nsub(lun) = 0
                                                          +
                                                          712 
                                                          +
                                                          713  return
                                                          +
                                                          714 end subroutine rdmems
                                                          715 
                                                          -
                                                          716  ! Reset subset pointer back to zero (beginning of message) and return
                                                          -
                                                          717 
                                                          -
                                                          718  mbyt(lun) = mbym
                                                          -
                                                          719  nsub(lun) = 0
                                                          -
                                                          720 
                                                          -
                                                          721  return
                                                          -
                                                          722 end subroutine rdmems
                                                          -
                                                          723 
                                                          -
                                                          729 subroutine cpdxmm( lunit )
                                                          -
                                                          730 
                                                          -
                                                          731  use bufrlib
                                                          -
                                                          732 
                                                          -
                                                          733  use modv_vars, only: mxdxts
                                                          +
                                                          721 subroutine cpdxmm( lunit )
                                                          +
                                                          722 
                                                          +
                                                          723  use bufrlib
                                                          +
                                                          724 
                                                          +
                                                          725  use modv_vars, only: mxdxts, iprt
                                                          +
                                                          726 
                                                          +
                                                          727  use moda_mgwa
                                                          +
                                                          728  use moda_msgmem
                                                          +
                                                          729 
                                                          +
                                                          730  implicit none
                                                          +
                                                          731 
                                                          +
                                                          732  integer, intent(in) :: lunit
                                                          +
                                                          733  integer ict, lun, il, im, ier, j, lmem, idxmsg, iupbs3, nmwrd
                                                          734 
                                                          -
                                                          735  use moda_mgwa
                                                          -
                                                          736  use moda_msgmem
                                                          -
                                                          737 
                                                          -
                                                          738  implicit none
                                                          -
                                                          739 
                                                          -
                                                          740  integer, intent(in) :: lunit
                                                          -
                                                          741  integer iprt, ict, lun, il, im, ier, j, lmem, idxmsg, iupbs3, nmwrd
                                                          -
                                                          742 
                                                          -
                                                          743  character*128 errstr
                                                          +
                                                          735  character*128 errstr
                                                          +
                                                          736 
                                                          +
                                                          737  logical done
                                                          +
                                                          738 
                                                          +
                                                          739  if ( ndxts >= mxdxts ) call bort('BUFRLIB: CPDXMM - MXDXTS OVERFLOW')
                                                          +
                                                          740 
                                                          +
                                                          741  ict = 0
                                                          +
                                                          742  done = .false.
                                                          +
                                                          743  call status(lunit,lun,il,im)
                                                          744 
                                                          -
                                                          745  logical done
                                                          +
                                                          745  ! Read a complete dictionary table from lunit, as a set of one or more DX dictionary messages.
                                                          746 
                                                          -
                                                          747  common /quiet/ iprt
                                                          -
                                                          748 
                                                          -
                                                          749  if ( ndxts >= mxdxts ) call bort('BUFRLIB: CPDXMM - MXDXTS OVERFLOW')
                                                          -
                                                          750 
                                                          -
                                                          751  ict = 0
                                                          -
                                                          752  done = .false.
                                                          -
                                                          753  call status(lunit,lun,il,im)
                                                          -
                                                          754 
                                                          -
                                                          755  ! Read a complete dictionary table from lunit, as a set of one or more DX dictionary messages.
                                                          -
                                                          756 
                                                          -
                                                          757  do while ( .not. done )
                                                          -
                                                          758  call rdmsgw ( lunit, mgwa, ier )
                                                          -
                                                          759  if ( ier == -2 ) call bort('BUFRLIB: CPDXMM - UNEXPECTED READ ERROR')
                                                          -
                                                          760  if ( ier == -1 ) then
                                                          -
                                                          761 
                                                          -
                                                          762  ! Don't abort for an end-of-file condition, since it may be possible for a file to end with dictionary messages.
                                                          -
                                                          763  ! Instead, backspace the file pointer and let the calling routine diagnose the end-of-file condition and deal with
                                                          -
                                                          764  ! it as it sees fit.
                                                          -
                                                          765 
                                                          -
                                                          766  call backbufr_c(lun)
                                                          -
                                                          767  done = .true.
                                                          -
                                                          768  else if ( idxmsg(mgwa) /= 1 ) then
                                                          +
                                                          747  do while ( .not. done )
                                                          +
                                                          748  call rdmsgw ( lunit, mgwa, ier )
                                                          +
                                                          749  if ( ier == -2 ) call bort('BUFRLIB: CPDXMM - UNEXPECTED READ ERROR')
                                                          +
                                                          750  if ( ier == -1 ) then
                                                          +
                                                          751 
                                                          +
                                                          752  ! Don't abort for an end-of-file condition, since it may be possible for a file to end with dictionary messages.
                                                          +
                                                          753  ! Instead, backspace the file pointer and let the calling routine diagnose the end-of-file condition and deal with
                                                          +
                                                          754  ! it as it sees fit.
                                                          +
                                                          755 
                                                          +
                                                          756  call backbufr_c(lun)
                                                          +
                                                          757  done = .true.
                                                          +
                                                          758  else if ( idxmsg(mgwa) /= 1 ) then
                                                          +
                                                          759 
                                                          +
                                                          760  ! This is a non-DX dictionary message. Assume we've reached the end of the dictionary table, and backspace lunit so
                                                          +
                                                          761  ! that the next read (e.g. in the calling routine) will get this same message.
                                                          +
                                                          762 
                                                          +
                                                          763  call backbufr_c(lun)
                                                          +
                                                          764  done = .true.
                                                          +
                                                          765  else if ( iupbs3(mgwa,'nsub') == 0 ) then
                                                          +
                                                          766 
                                                          +
                                                          767  ! This is a DX dictionary message, but it doesn't contain any actual dictionary information. Assume we've reached the
                                                          +
                                                          768  ! end of the dictionary table.
                                                          769 
                                                          -
                                                          770  ! This is a non-DX dictionary message. Assume we've reached the end of the dictionary table, and backspace lunit so
                                                          -
                                                          771  ! that the next read (e.g. in the calling routine) will get this same message.
                                                          +
                                                          770  done = .true.
                                                          +
                                                          771  else
                                                          772 
                                                          -
                                                          773  call backbufr_c(lun)
                                                          -
                                                          774  done = .true.
                                                          -
                                                          775  else if ( iupbs3(mgwa,'nsub') == 0 ) then
                                                          -
                                                          776 
                                                          -
                                                          777  ! This is a DX dictionary message, but it doesn't contain any actual dictionary information. Assume we've reached the
                                                          -
                                                          778  ! end of the dictionary table.
                                                          -
                                                          779 
                                                          -
                                                          780  done = .true.
                                                          -
                                                          781  else
                                                          -
                                                          782 
                                                          -
                                                          783  ! Store this message into @ref moda_msgmem.
                                                          -
                                                          784 
                                                          -
                                                          785  ict = ict + 1
                                                          -
                                                          786  if ( ( ndxm + ict ) > mxdxm ) call bort('BUFRLIB: CPDXMM - MXDXM OVERFLOW')
                                                          -
                                                          787  ipdxm(ndxm+ict) = ldxm + 1
                                                          -
                                                          788  lmem = nmwrd(mgwa)
                                                          -
                                                          789  if ( ( ldxm + lmem ) > mxdxw ) call bort('BUFRLIB: CPDXMM - MXDXW OVERFLOW')
                                                          -
                                                          790  do j = 1, lmem
                                                          -
                                                          791  mdx(ldxm+j) = mgwa(j)
                                                          -
                                                          792  enddo
                                                          -
                                                          793  ldxm = ldxm + lmem
                                                          -
                                                          794  endif
                                                          -
                                                          795  enddo
                                                          -
                                                          796 
                                                          -
                                                          797  ! Update the table information within @ref moda_msgmem.
                                                          -
                                                          798 
                                                          -
                                                          799  if ( ict > 0 ) then
                                                          -
                                                          800  ifdxts(ndxts+1) = ndxm + 1
                                                          -
                                                          801  icdxts(ndxts+1) = ict
                                                          -
                                                          802  ipmsgs(ndxts+1) = msgp(0) + 1
                                                          -
                                                          803  ndxm = ndxm + ict
                                                          -
                                                          804  ndxts = ndxts + 1
                                                          -
                                                          805  if ( iprt >= 2 ) then
                                                          -
                                                          806  call errwrt('+++++++++++++++++++++++++++++++++++++++++++++')
                                                          -
                                                          807  write ( unit=errstr, fmt='(A,I3,A,I3,A)') 'BUFRLIB: CPDXMM - STORED NEW DX TABLE #', ndxts, &
                                                          -
                                                          808  ' CONSISTING OF ', ict, ' MESSAGES'
                                                          -
                                                          809  call errwrt(errstr)
                                                          -
                                                          810  call errwrt('+++++++++++++++++++++++++++++++++++++++++++++')
                                                          -
                                                          811  call errwrt(' ')
                                                          -
                                                          812  endif
                                                          -
                                                          813  endif
                                                          -
                                                          814 
                                                          -
                                                          815  return
                                                          -
                                                          816 end subroutine cpdxmm
                                                          -
                                                          817 
                                                          -
                                                          839 recursive subroutine ufbmms(imsg,isub,subset,jdate)
                                                          -
                                                          840 
                                                          -
                                                          841  use modv_vars, only: im8b
                                                          -
                                                          842 
                                                          -
                                                          843  use moda_msgcwd
                                                          -
                                                          844  use moda_msgmem
                                                          +
                                                          773  ! Store this message into @ref moda_msgmem.
                                                          +
                                                          774 
                                                          +
                                                          775  ict = ict + 1
                                                          +
                                                          776  if ( ( ndxm + ict ) > mxdxm ) call bort('BUFRLIB: CPDXMM - MXDXM OVERFLOW')
                                                          +
                                                          777  ipdxm(ndxm+ict) = ldxm + 1
                                                          +
                                                          778  lmem = nmwrd(mgwa)
                                                          +
                                                          779  if ( ( ldxm + lmem ) > mxdxw ) call bort('BUFRLIB: CPDXMM - MXDXW OVERFLOW')
                                                          +
                                                          780  do j = 1, lmem
                                                          +
                                                          781  mdx(ldxm+j) = mgwa(j)
                                                          +
                                                          782  enddo
                                                          +
                                                          783  ldxm = ldxm + lmem
                                                          +
                                                          784  endif
                                                          +
                                                          785  enddo
                                                          +
                                                          786 
                                                          +
                                                          787  ! Update the table information within @ref moda_msgmem.
                                                          +
                                                          788 
                                                          +
                                                          789  if ( ict > 0 ) then
                                                          +
                                                          790  ifdxts(ndxts+1) = ndxm + 1
                                                          +
                                                          791  icdxts(ndxts+1) = ict
                                                          +
                                                          792  ipmsgs(ndxts+1) = msgp(0) + 1
                                                          +
                                                          793  ndxm = ndxm + ict
                                                          +
                                                          794  ndxts = ndxts + 1
                                                          +
                                                          795  if ( iprt >= 2 ) then
                                                          +
                                                          796  call errwrt('+++++++++++++++++++++++++++++++++++++++++++++')
                                                          +
                                                          797  write ( unit=errstr, fmt='(A,I3,A,I3,A)') 'BUFRLIB: CPDXMM - STORED NEW DX TABLE #', ndxts, &
                                                          +
                                                          798  ' CONSISTING OF ', ict, ' MESSAGES'
                                                          +
                                                          799  call errwrt(errstr)
                                                          +
                                                          800  call errwrt('+++++++++++++++++++++++++++++++++++++++++++++')
                                                          +
                                                          801  call errwrt(' ')
                                                          +
                                                          802  endif
                                                          +
                                                          803  endif
                                                          +
                                                          804 
                                                          +
                                                          805  return
                                                          +
                                                          806 end subroutine cpdxmm
                                                          +
                                                          807 
                                                          +
                                                          829 recursive subroutine ufbmms(imsg,isub,subset,jdate)
                                                          +
                                                          830 
                                                          +
                                                          831  use modv_vars, only: im8b
                                                          +
                                                          832 
                                                          +
                                                          833  use moda_msgcwd
                                                          +
                                                          834  use moda_msgmem
                                                          +
                                                          835 
                                                          +
                                                          836  implicit none
                                                          +
                                                          837 
                                                          +
                                                          838  integer, intent(in) :: imsg, isub
                                                          +
                                                          839  integer, intent(out) :: jdate
                                                          +
                                                          840  integer my_imsg, my_isub, lun, il, im, iret
                                                          +
                                                          841 
                                                          +
                                                          842  character*8, intent(out) :: subset
                                                          +
                                                          843 
                                                          +
                                                          844  character*128 bort_str
                                                          845 
                                                          -
                                                          846  implicit none
                                                          +
                                                          846  ! Check for I8 integers
                                                          847 
                                                          -
                                                          848  integer, intent(in) :: imsg, isub
                                                          -
                                                          849  integer, intent(out) :: jdate
                                                          -
                                                          850  integer my_imsg, my_isub, lun, il, im, iret
                                                          -
                                                          851 
                                                          -
                                                          852  character*8, intent(out) :: subset
                                                          -
                                                          853 
                                                          -
                                                          854  character*128 bort_str
                                                          +
                                                          848  if(im8b) then
                                                          +
                                                          849  im8b=.false.
                                                          +
                                                          850 
                                                          +
                                                          851  call x84(imsg,my_imsg,1)
                                                          +
                                                          852  call x84(isub,my_isub,1)
                                                          +
                                                          853  call ufbmms(my_imsg,my_isub,subset,jdate)
                                                          +
                                                          854  call x48(jdate,jdate,1)
                                                          855 
                                                          -
                                                          856  ! Check for I8 integers
                                                          -
                                                          857 
                                                          -
                                                          858  if(im8b) then
                                                          -
                                                          859  im8b=.false.
                                                          -
                                                          860 
                                                          -
                                                          861  call x84(imsg,my_imsg,1)
                                                          -
                                                          862  call x84(isub,my_isub,1)
                                                          -
                                                          863  call ufbmms(my_imsg,my_isub,subset,jdate)
                                                          -
                                                          864  call x48(jdate,jdate,1)
                                                          -
                                                          865 
                                                          -
                                                          866  im8b=.true.
                                                          -
                                                          867  return
                                                          -
                                                          868  endif
                                                          -
                                                          869 
                                                          -
                                                          870  ! Read subset #isub from memory message #imsg
                                                          -
                                                          871 
                                                          -
                                                          872  call rdmemm(imsg,subset,jdate,iret)
                                                          -
                                                          873  if(iret<0) then
                                                          -
                                                          874  if(imsg>0) then
                                                          -
                                                          875  write(bort_str,'("BUFRLIB: UFBMMS - REQUESTED MEMORY MESSAGE NUMBER TO READ IN (",I5,") EXCEEDS THE NUMBER OF '// &
                                                          -
                                                          876  'MESSAGES IN MEMORY (",I5,")")') imsg,msgp(0)
                                                          -
                                                          877  else
                                                          -
                                                          878  write(bort_str,'("BUFRLIB: UFBMMS - REQUESTED MEMORY MESSAGE NUMBER TO READ IN IS ZERO - THIS IS NOT VALID")')
                                                          -
                                                          879  endif
                                                          -
                                                          880  call bort(bort_str)
                                                          -
                                                          881  endif
                                                          -
                                                          882  call rdmems(isub,iret)
                                                          -
                                                          883  if(iret/=0) then
                                                          -
                                                          884  call status(munit,lun,il,im)
                                                          -
                                                          885  write(bort_str,'("BUFRLIB: UFBMMS - REQ. SUBSET NUMBER TO READ IN (",I3,") EXCEEDS THE NUMBER OF SUBSETS (",I3,") '// &
                                                          -
                                                          886  'IN THE REG. MEMORY MESSAGE (",I5,")")') isub,msub(lun),imsg
                                                          -
                                                          887  call bort(bort_str)
                                                          -
                                                          888  endif
                                                          -
                                                          889 
                                                          -
                                                          890  return
                                                          -
                                                          891 end subroutine ufbmms
                                                          -
                                                          892 
                                                          -
                                                          910 recursive subroutine ufbmns(irep,subset,idate)
                                                          +
                                                          856  im8b=.true.
                                                          +
                                                          857  return
                                                          +
                                                          858  endif
                                                          +
                                                          859 
                                                          +
                                                          860  ! Read subset #isub from memory message #imsg
                                                          +
                                                          861 
                                                          +
                                                          862  call rdmemm(imsg,subset,jdate,iret)
                                                          +
                                                          863  if(iret<0) then
                                                          +
                                                          864  if(imsg>0) then
                                                          +
                                                          865  write(bort_str,'("BUFRLIB: UFBMMS - REQUESTED MEMORY MESSAGE NUMBER TO READ IN (",I5,") EXCEEDS THE NUMBER OF '// &
                                                          +
                                                          866  'MESSAGES IN MEMORY (",I5,")")') imsg,msgp(0)
                                                          +
                                                          867  else
                                                          +
                                                          868  write(bort_str,'("BUFRLIB: UFBMMS - REQUESTED MEMORY MESSAGE NUMBER TO READ IN IS ZERO - THIS IS NOT VALID")')
                                                          +
                                                          869  endif
                                                          +
                                                          870  call bort(bort_str)
                                                          +
                                                          871  endif
                                                          +
                                                          872  call rdmems(isub,iret)
                                                          +
                                                          873  if(iret/=0) then
                                                          +
                                                          874  call status(munit,lun,il,im)
                                                          +
                                                          875  write(bort_str,'("BUFRLIB: UFBMMS - REQ. SUBSET NUMBER TO READ IN (",I3,") EXCEEDS THE NUMBER OF SUBSETS (",I3,") '// &
                                                          +
                                                          876  'IN THE REG. MEMORY MESSAGE (",I5,")")') isub,msub(lun),imsg
                                                          +
                                                          877  call bort(bort_str)
                                                          +
                                                          878  endif
                                                          +
                                                          879 
                                                          +
                                                          880  return
                                                          +
                                                          881 end subroutine ufbmms
                                                          +
                                                          882 
                                                          +
                                                          900 recursive subroutine ufbmns(irep,subset,idate)
                                                          +
                                                          901 
                                                          +
                                                          902  use modv_vars, only: im8b
                                                          +
                                                          903 
                                                          +
                                                          904  use moda_msgmem
                                                          +
                                                          905 
                                                          +
                                                          906  implicit none
                                                          +
                                                          907 
                                                          +
                                                          908  integer, intent(in) :: irep
                                                          +
                                                          909  integer, intent(out) :: idate
                                                          +
                                                          910  integer my_irep, imsg, jrep, iret, ireadmm, nmsub
                                                          911 
                                                          -
                                                          912  use modv_vars, only: im8b
                                                          +
                                                          912  character*8, intent(out) :: subset
                                                          913 
                                                          -
                                                          914  use moda_msgmem
                                                          +
                                                          914  character*128 bort_str
                                                          915 
                                                          -
                                                          916  implicit none
                                                          +
                                                          916  ! Check for I8 integers
                                                          917 
                                                          -
                                                          918  integer, intent(in) :: irep
                                                          -
                                                          919  integer, intent(out) :: idate
                                                          -
                                                          920  integer my_irep, imsg, jrep, iret, ireadmm, nmsub
                                                          -
                                                          921 
                                                          -
                                                          922  character*8, intent(out) :: subset
                                                          -
                                                          923 
                                                          -
                                                          924  character*128 bort_str
                                                          -
                                                          925 
                                                          -
                                                          926  ! Check for I8 integers
                                                          -
                                                          927 
                                                          -
                                                          928  if(im8b) then
                                                          -
                                                          929  im8b=.false.
                                                          -
                                                          930 
                                                          -
                                                          931  call x84(irep,my_irep,1)
                                                          -
                                                          932  call ufbmns(my_irep,subset,idate)
                                                          -
                                                          933  call x48(idate,idate,1)
                                                          -
                                                          934 
                                                          -
                                                          935  im8b=.true.
                                                          -
                                                          936  return
                                                          -
                                                          937  endif
                                                          -
                                                          938 
                                                          -
                                                          939  jrep = 0
                                                          -
                                                          940  imsg = 1
                                                          +
                                                          918  if(im8b) then
                                                          +
                                                          919  im8b=.false.
                                                          +
                                                          920 
                                                          +
                                                          921  call x84(irep,my_irep,1)
                                                          +
                                                          922  call ufbmns(my_irep,subset,idate)
                                                          +
                                                          923  call x48(idate,idate,1)
                                                          +
                                                          924 
                                                          +
                                                          925  im8b=.true.
                                                          +
                                                          926  return
                                                          +
                                                          927  endif
                                                          +
                                                          928 
                                                          +
                                                          929  jrep = 0
                                                          +
                                                          930  imsg = 1
                                                          +
                                                          931 
                                                          +
                                                          932  ! Read subset #irep
                                                          +
                                                          933 
                                                          +
                                                          934  do while(ireadmm(imsg,subset,idate)==0)
                                                          +
                                                          935  if(jrep+nmsub(munit)>=irep) then
                                                          +
                                                          936  call rdmems(irep-jrep,iret)
                                                          +
                                                          937  return
                                                          +
                                                          938  endif
                                                          +
                                                          939  jrep = jrep+nmsub(munit)
                                                          +
                                                          940  enddo
                                                          941 
                                                          -
                                                          942  ! Read subset #irep
                                                          -
                                                          943 
                                                          -
                                                          944  do while(ireadmm(imsg,subset,idate)==0)
                                                          -
                                                          945  if(jrep+nmsub(munit)>=irep) then
                                                          -
                                                          946  call rdmems(irep-jrep,iret)
                                                          -
                                                          947  return
                                                          -
                                                          948  endif
                                                          -
                                                          949  jrep = jrep+nmsub(munit)
                                                          -
                                                          950  enddo
                                                          -
                                                          951 
                                                          -
                                                          952  write(bort_str,'("BUFRLIB: UFBMNS - REQ. SUBSET NO. TO READ IN (",I5,") EXCEEDS TOTAL NO. OF SUBSETS IN THE COLLECTION '// &
                                                          -
                                                          953  'OF MEMORY MESSAGES (",I5,")")') irep,jrep
                                                          -
                                                          954  call bort(bort_str)
                                                          -
                                                          955 end subroutine ufbmns
                                                          -
                                                          956 
                                                          -
                                                          976 recursive subroutine ufbrms(imsg,isub,usr,i1,i2,iret,str)
                                                          -
                                                          977 
                                                          -
                                                          978  use modv_vars, only: im8b
                                                          -
                                                          979 
                                                          -
                                                          980  use moda_msgcwd
                                                          -
                                                          981  use moda_msgmem
                                                          -
                                                          982 
                                                          -
                                                          983  implicit none
                                                          +
                                                          942  write(bort_str,'("BUFRLIB: UFBMNS - REQ. SUBSET NO. TO READ IN (",I5,") EXCEEDS TOTAL NO. OF SUBSETS IN THE COLLECTION '// &
                                                          +
                                                          943  'OF MEMORY MESSAGES (",I5,")")') irep,jrep
                                                          +
                                                          944  call bort(bort_str)
                                                          +
                                                          945 end subroutine ufbmns
                                                          +
                                                          946 
                                                          +
                                                          966 recursive subroutine ufbrms(imsg,isub,usr,i1,i2,iret,str)
                                                          +
                                                          967 
                                                          +
                                                          968  use modv_vars, only: im8b, iprt
                                                          +
                                                          969 
                                                          +
                                                          970  use moda_msgcwd
                                                          +
                                                          971  use moda_msgmem
                                                          +
                                                          972 
                                                          +
                                                          973  implicit none
                                                          +
                                                          974 
                                                          +
                                                          975  integer, intent(in) :: imsg, isub, i1, i2
                                                          +
                                                          976  integer, intent(out) :: iret
                                                          +
                                                          977  integer my_imsg, my_isub, my_i1, my_i2, jdate, lun, il, im
                                                          +
                                                          978 
                                                          +
                                                          979  real*8, intent(out) :: usr(i1,i2)
                                                          +
                                                          980 
                                                          +
                                                          981  character*(*), intent(in) :: str
                                                          +
                                                          982  character*128 bort_str, errstr
                                                          +
                                                          983  character*8 subset
                                                          984 
                                                          -
                                                          985  integer, intent(in) :: imsg, isub, i1, i2
                                                          -
                                                          986  integer, intent(out) :: iret
                                                          -
                                                          987  integer iprt, my_imsg, my_isub, my_i1, my_i2, jdate, lun, il, im
                                                          -
                                                          988 
                                                          -
                                                          989  real*8, intent(out) :: usr(i1,i2)
                                                          -
                                                          990 
                                                          -
                                                          991  character*(*), intent(in) :: str
                                                          -
                                                          992  character*128 bort_str, errstr
                                                          -
                                                          993  character*8 subset
                                                          -
                                                          994 
                                                          -
                                                          995  common /quiet/ iprt
                                                          +
                                                          985  ! Check for I8 integers
                                                          +
                                                          986 
                                                          +
                                                          987  if(im8b) then
                                                          +
                                                          988  im8b=.false.
                                                          +
                                                          989 
                                                          +
                                                          990  call x84(imsg,my_imsg,1)
                                                          +
                                                          991  call x84(isub,my_isub,1)
                                                          +
                                                          992  call x84(i1,my_i1,1)
                                                          +
                                                          993  call x84(i2,my_i2,1)
                                                          +
                                                          994  call ufbrms(my_imsg,my_isub,usr,my_i1,my_i2,iret,str)
                                                          +
                                                          995  call x48(iret,iret,1)
                                                          996 
                                                          -
                                                          997  ! Check for I8 integers
                                                          -
                                                          998 
                                                          -
                                                          999  if(im8b) then
                                                          -
                                                          1000  im8b=.false.
                                                          -
                                                          1001 
                                                          -
                                                          1002  call x84(imsg,my_imsg,1)
                                                          -
                                                          1003  call x84(isub,my_isub,1)
                                                          -
                                                          1004  call x84(i1,my_i1,1)
                                                          -
                                                          1005  call x84(i2,my_i2,1)
                                                          -
                                                          1006  call ufbrms(my_imsg,my_isub,usr,my_i1,my_i2,iret,str)
                                                          -
                                                          1007  call x48(iret,iret,1)
                                                          -
                                                          1008 
                                                          -
                                                          1009  im8b=.true.
                                                          -
                                                          1010  return
                                                          -
                                                          1011  endif
                                                          -
                                                          1012 
                                                          -
                                                          1013  iret = 0
                                                          -
                                                          1014  if(i1<=0) then
                                                          -
                                                          1015  if(iprt>=0) then
                                                          -
                                                          1016  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                          -
                                                          1017  errstr = .LE.'BUFRLIB: UFBRMS - 4th ARG. (INPUT) IS 0, SO RETURN WITH 6th ARG. (IRET) = 0; 7th ARG. (STR) ='
                                                          -
                                                          1018  call errwrt(errstr)
                                                          -
                                                          1019  call errwrt(str)
                                                          -
                                                          1020  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                          -
                                                          1021  call errwrt(' ')
                                                          -
                                                          1022  endif
                                                          -
                                                          1023  return
                                                          -
                                                          1024  elseif(i2<=0) then
                                                          -
                                                          1025  if(iprt>=0) then
                                                          -
                                                          1026  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                          -
                                                          1027  errstr = .LE.'BUFRLIB: UFBRMS - 5th ARG. (INPUT) IS 0, SO RETURN WITH 6th ARG. (IRET) = 0; 7th ARG. (STR) ='
                                                          -
                                                          1028  call errwrt(errstr)
                                                          -
                                                          1029  call errwrt(str)
                                                          -
                                                          1030  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                          -
                                                          1031  call errwrt(' ')
                                                          -
                                                          1032  endif
                                                          -
                                                          1033  return
                                                          -
                                                          1034  endif
                                                          -
                                                          1035 
                                                          -
                                                          1036  ! Read requested values from subset #isub within memory message #imsg
                                                          -
                                                          1037 
                                                          -
                                                          1038  call rdmemm(imsg,subset,jdate,iret)
                                                          -
                                                          1039  if(iret<0) then
                                                          -
                                                          1040  if(imsg>0) then
                                                          -
                                                          1041  write(bort_str,'("BUFRLIB: UFBRMS - REQUESTED MEMORY MESSAGE NUMBER TO READ IN (",I5,") EXCEEDS THE NUMBER OF '// &
                                                          -
                                                          1042  'MESSAGES IN MEMORY (",I5,")")') imsg,msgp(0)
                                                          -
                                                          1043  else
                                                          -
                                                          1044  write(bort_str,'("BUFRLIB: UFBRMS - REQUESTED MEMORY MESSAGE NUMBER TO READ IN IS ZERO - THIS IS NOT VALID")')
                                                          -
                                                          1045  endif
                                                          -
                                                          1046  call bort(bort_str)
                                                          -
                                                          1047  endif
                                                          -
                                                          1048  call rdmems(isub,iret)
                                                          -
                                                          1049  if(iret/=0) then
                                                          -
                                                          1050  call status(munit,lun,il,im)
                                                          -
                                                          1051  write(bort_str,'("BUFRLIB: UFBRMS - REQ. SUBSET NUMBER TO READ IN (",I3,") EXCEEDS THE NUMBER OF SUBSETS (",I3,") '// &
                                                          -
                                                          1052  'IN THE REG. MEMORY MESSAGE (",I5,")")') isub,msub(lun),imsg
                                                          -
                                                          1053  call bort(bort_str)
                                                          -
                                                          1054  endif
                                                          -
                                                          1055 
                                                          -
                                                          1056  call ufbint(munit,usr,i1,i2,iret,str)
                                                          -
                                                          1057 
                                                          -
                                                          1058  return
                                                          -
                                                          1059 end subroutine ufbrms
                                                          -
                                                          1060 
                                                          -
                                                          1102 recursive subroutine ufbtam(tab,i1,i2,iret,str)
                                                          -
                                                          1103 
                                                          -
                                                          1104  use modv_vars, only: im8b, bmiss
                                                          -
                                                          1105 
                                                          -
                                                          1106  use moda_usrint
                                                          -
                                                          1107  use moda_msgcwd
                                                          -
                                                          1108  use moda_bitbuf
                                                          -
                                                          1109  use moda_msgmem
                                                          -
                                                          1110  use moda_tables
                                                          -
                                                          1111 
                                                          -
                                                          1112  implicit none
                                                          -
                                                          1113 
                                                          -
                                                          1114  character*(*), intent(in) :: str
                                                          -
                                                          1115  character*128 bort_str, errstr
                                                          -
                                                          1116  character*10 tgs(100)
                                                          -
                                                          1117  character*8 subset, cval
                                                          -
                                                          1118 
                                                          -
                                                          1119  integer*8 mps, ival
                                                          -
                                                          1120  integer, intent(in) :: i1, i2
                                                          -
                                                          1121  integer, intent(out) :: iret
                                                          -
                                                          1122  integer iprt, maxtg, nnod, ncon, nods, nodc, ivls, kons, my_i1, my_i2, i, j, irec, isub, itbl, lun, il, im, jdate, mret, &
                                                          -
                                                          1123  kbit, mbit, nbit, n, node, imsg, kmsg, nrep, ntg, nbyt, nbmp, nmsub
                                                          +
                                                          997  im8b=.true.
                                                          +
                                                          998  return
                                                          +
                                                          999  endif
                                                          +
                                                          1000 
                                                          +
                                                          1001  iret = 0
                                                          +
                                                          1002  if(i1<=0) then
                                                          +
                                                          1003  if(iprt>=0) then
                                                          +
                                                          1004  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                          +
                                                          1005  errstr = .LE.'BUFRLIB: UFBRMS - 4th ARG. (INPUT) IS 0, SO RETURN WITH 6th ARG. (IRET) = 0; 7th ARG. (STR) ='
                                                          +
                                                          1006  call errwrt(errstr)
                                                          +
                                                          1007  call errwrt(str)
                                                          +
                                                          1008  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                          +
                                                          1009  call errwrt(' ')
                                                          +
                                                          1010  endif
                                                          +
                                                          1011  return
                                                          +
                                                          1012  elseif(i2<=0) then
                                                          +
                                                          1013  if(iprt>=0) then
                                                          +
                                                          1014  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                          +
                                                          1015  errstr = .LE.'BUFRLIB: UFBRMS - 5th ARG. (INPUT) IS 0, SO RETURN WITH 6th ARG. (IRET) = 0; 7th ARG. (STR) ='
                                                          +
                                                          1016  call errwrt(errstr)
                                                          +
                                                          1017  call errwrt(str)
                                                          +
                                                          1018  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                          +
                                                          1019  call errwrt(' ')
                                                          +
                                                          1020  endif
                                                          +
                                                          1021  return
                                                          +
                                                          1022  endif
                                                          +
                                                          1023 
                                                          +
                                                          1024  ! Read requested values from subset #isub within memory message #imsg
                                                          +
                                                          1025 
                                                          +
                                                          1026  call rdmemm(imsg,subset,jdate,iret)
                                                          +
                                                          1027  if(iret<0) then
                                                          +
                                                          1028  if(imsg>0) then
                                                          +
                                                          1029  write(bort_str,'("BUFRLIB: UFBRMS - REQUESTED MEMORY MESSAGE NUMBER TO READ IN (",I5,") EXCEEDS THE NUMBER OF '// &
                                                          +
                                                          1030  'MESSAGES IN MEMORY (",I5,")")') imsg,msgp(0)
                                                          +
                                                          1031  else
                                                          +
                                                          1032  write(bort_str,'("BUFRLIB: UFBRMS - REQUESTED MEMORY MESSAGE NUMBER TO READ IN IS ZERO - THIS IS NOT VALID")')
                                                          +
                                                          1033  endif
                                                          +
                                                          1034  call bort(bort_str)
                                                          +
                                                          1035  endif
                                                          +
                                                          1036  call rdmems(isub,iret)
                                                          +
                                                          1037  if(iret/=0) then
                                                          +
                                                          1038  call status(munit,lun,il,im)
                                                          +
                                                          1039  write(bort_str,'("BUFRLIB: UFBRMS - REQ. SUBSET NUMBER TO READ IN (",I3,") EXCEEDS THE NUMBER OF SUBSETS (",I3,") '// &
                                                          +
                                                          1040  'IN THE REG. MEMORY MESSAGE (",I5,")")') isub,msub(lun),imsg
                                                          +
                                                          1041  call bort(bort_str)
                                                          +
                                                          1042  endif
                                                          +
                                                          1043 
                                                          +
                                                          1044  call ufbint(munit,usr,i1,i2,iret,str)
                                                          +
                                                          1045 
                                                          +
                                                          1046  return
                                                          +
                                                          1047 end subroutine ufbrms
                                                          +
                                                          1048 
                                                          +
                                                          1090 recursive subroutine ufbtam(tab,i1,i2,iret,str)
                                                          +
                                                          1091 
                                                          +
                                                          1092  use modv_vars, only: im8b, bmiss, iprt
                                                          +
                                                          1093 
                                                          +
                                                          1094  use moda_usrint
                                                          +
                                                          1095  use moda_msgcwd
                                                          +
                                                          1096  use moda_bitbuf
                                                          +
                                                          1097  use moda_msgmem
                                                          +
                                                          1098  use moda_tables
                                                          +
                                                          1099 
                                                          +
                                                          1100  implicit none
                                                          +
                                                          1101 
                                                          +
                                                          1102  character*(*), intent(in) :: str
                                                          +
                                                          1103  character*128 bort_str, errstr
                                                          +
                                                          1104  character*10 tgs(100)
                                                          +
                                                          1105  character*8 subset, cval
                                                          +
                                                          1106 
                                                          +
                                                          1107  integer*8 mps, ival
                                                          +
                                                          1108  integer, intent(in) :: i1, i2
                                                          +
                                                          1109  integer, intent(out) :: iret
                                                          +
                                                          1110  integer maxtg, nnod, ncon, nods, nodc, ivls, kons, my_i1, my_i2, i, irec, isub, itbl, lun, il, im, jdate, mret, &
                                                          +
                                                          1111  kbit, mbit, nbit, n, node, imsg, kmsg, nrep, ntg, nbyt, nbmp, nmsub
                                                          +
                                                          1112 
                                                          +
                                                          1113  real*8, intent(out) :: tab(i1,i2)
                                                          +
                                                          1114  real*8 rval, ups
                                                          +
                                                          1115 
                                                          +
                                                          1116  common /usrstr/ nnod,ncon,nods(20),nodc(10),ivls(10),kons(10)
                                                          +
                                                          1117 
                                                          +
                                                          1118  equivalence(cval,rval)
                                                          +
                                                          1119 
                                                          +
                                                          1120  data maxtg /100/
                                                          +
                                                          1121 
                                                          +
                                                          1122  ! Statement function
                                                          +
                                                          1123  mps(node) = 2_8**(ibt(node))-1
                                                          1124 
                                                          -
                                                          1125  real*8, intent(out) :: tab(i1,i2)
                                                          -
                                                          1126  real*8 rval, ups
                                                          -
                                                          1127 
                                                          -
                                                          1128  common /usrstr/ nnod,ncon,nods(20),nodc(10),ivls(10),kons(10)
                                                          -
                                                          1129  common /quiet/ iprt
                                                          -
                                                          1130 
                                                          -
                                                          1131  equivalence(cval,rval)
                                                          -
                                                          1132 
                                                          -
                                                          1133  data maxtg /100/
                                                          +
                                                          1125  ! Check for I8 integers
                                                          +
                                                          1126 
                                                          +
                                                          1127  if(im8b) then
                                                          +
                                                          1128  im8b=.false.
                                                          +
                                                          1129 
                                                          +
                                                          1130  call x84(i1,my_i1,1)
                                                          +
                                                          1131  call x84(i2,my_i2,1)
                                                          +
                                                          1132  call ufbtam(tab,my_i1,my_i2,iret,str)
                                                          +
                                                          1133  call x48(iret,iret,1)
                                                          1134 
                                                          -
                                                          1135  ! Statement function
                                                          -
                                                          1136  mps(node) = 2_8**(ibt(node))-1
                                                          -
                                                          1137 
                                                          -
                                                          1138  ! Check for I8 integers
                                                          -
                                                          1139 
                                                          -
                                                          1140  if(im8b) then
                                                          -
                                                          1141  im8b=.false.
                                                          +
                                                          1135  im8b=.true.
                                                          +
                                                          1136  return
                                                          +
                                                          1137  endif
                                                          +
                                                          1138 
                                                          +
                                                          1139  iret = 0
                                                          +
                                                          1140 
                                                          +
                                                          1141  if(msgp(0)==0) return
                                                          1142 
                                                          -
                                                          1143  call x84(i1,my_i1,1)
                                                          -
                                                          1144  call x84(i2,my_i2,1)
                                                          -
                                                          1145  call ufbtam(tab,my_i1,my_i2,iret,str)
                                                          -
                                                          1146  call x48(iret,iret,1)
                                                          -
                                                          1147 
                                                          -
                                                          1148  im8b=.true.
                                                          -
                                                          1149  return
                                                          -
                                                          1150  endif
                                                          -
                                                          1151 
                                                          -
                                                          1152  iret = 0
                                                          -
                                                          1153 
                                                          -
                                                          1154  if(msgp(0)==0) return
                                                          -
                                                          1155 
                                                          -
                                                          1156  do j=1,i2
                                                          -
                                                          1157  do i=1,i1
                                                          -
                                                          1158  tab(i,j) = bmiss
                                                          -
                                                          1159  enddo
                                                          -
                                                          1160  enddo
                                                          -
                                                          1161 
                                                          -
                                                          1162  ! Check for special tags in string
                                                          -
                                                          1163 
                                                          -
                                                          1164  call parstr(str,tgs,maxtg,ntg,' ',.true.)
                                                          -
                                                          1165  irec = 0
                                                          -
                                                          1166  isub = 0
                                                          -
                                                          1167  itbl = 0
                                                          -
                                                          1168  do i=1,ntg
                                                          -
                                                          1169  if(tgs(i)=='IREC') irec = i
                                                          -
                                                          1170  if(tgs(i)=='ISUB') isub = i
                                                          -
                                                          1171  if(tgs(i)=='ITBL') itbl = i
                                                          -
                                                          1172  enddo
                                                          -
                                                          1173 
                                                          -
                                                          1174  call status(munit,lun,il,im)
                                                          -
                                                          1175 
                                                          -
                                                          1176  ! Cycle through all of the memory messages in the internal arrays
                                                          -
                                                          1177 
                                                          -
                                                          1178  outer: do imsg=1,msgp(0)
                                                          -
                                                          1179  call rdmemm(imsg,subset,jdate,mret)
                                                          -
                                                          1180  if(mret<0) then
                                                          -
                                                          1181  write(bort_str,'("BUFRLIB: UFBTAM - HIT END-OF-FILE READING MESSAGE NUMBER",I5," IN INTERNAL MEMORY")') imsg
                                                          -
                                                          1182  call bort(bort_str)
                                                          -
                                                          1183  endif
                                                          -
                                                          1184 
                                                          -
                                                          1185  call string(str,lun,i1,0)
                                                          -
                                                          1186  if(irec>0) nods(irec) = 0
                                                          -
                                                          1187  if(isub>0) nods(isub) = 0
                                                          -
                                                          1188  if(itbl>0) nods(itbl) = 0
                                                          -
                                                          1189 
                                                          -
                                                          1190  ! Process all the subsets in the memory message
                                                          -
                                                          1191 
                                                          -
                                                          1192  do while (nsub(lun)<msub(lun))
                                                          -
                                                          1193  if(iret+1>i2) then
                                                          -
                                                          1194  ! Emergency room treatment for array overflow
                                                          -
                                                          1195  call rdmemm(0,subset,jdate,mret)
                                                          -
                                                          1196  nrep = 0
                                                          -
                                                          1197  do kmsg=1,msgp(0)
                                                          -
                                                          1198  call rdmemm(kmsg,subset,jdate,mret)
                                                          -
                                                          1199  if(mret<0) then
                                                          -
                                                          1200  write(bort_str,'("BUFRLIB: UFBTAM - HIT END-OF-FILE READING MESSAGE NUMBER",I5," IN INTERNAL MEMORY")') kmsg
                                                          -
                                                          1201  call bort(bort_str)
                                                          -
                                                          1202  endif
                                                          -
                                                          1203  nrep = nrep+nmsub(munit)
                                                          -
                                                          1204  enddo
                                                          -
                                                          1205  if(iprt>=0) then
                                                          -
                                                          1206  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                          -
                                                          1207  write ( unit=errstr, fmt='(A,A,I8,A,A)' ) 'BUFRLIB: UFBTAM - THE NO. OF DATA SUBSETS IN MEMORY ', &
                                                          -
                                                          1208  .GT.'IS LIMIT OF ', i2, ' IN THE 3RD ARG. (INPUT) - INCOMPLETE READ'
                                                          -
                                                          1209  call errwrt(errstr)
                                                          -
                                                          1210  write ( unit=errstr, fmt='(A,I8,A,I8,A)' ) '>>>UFBTAM STORED ', iret, ' REPORTS OUT OF ', nrep, '<<<'
                                                          -
                                                          1211  call errwrt(errstr)
                                                          -
                                                          1212  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                          -
                                                          1213  call errwrt(' ')
                                                          -
                                                          1214  endif
                                                          -
                                                          1215  exit outer
                                                          -
                                                          1216  endif
                                                          -
                                                          1217 
                                                          -
                                                          1218  iret = iret+1
                                                          -
                                                          1219 
                                                          -
                                                          1220  do i=1,nnod
                                                          -
                                                          1221  nods(i) = abs(nods(i))
                                                          -
                                                          1222  enddo
                                                          -
                                                          1223 
                                                          -
                                                          1224  call usrtpl(lun,1,1)
                                                          -
                                                          1225  mbit = mbyt(lun)*8+16
                                                          -
                                                          1226  nbit = 0
                                                          -
                                                          1227  n = 1
                                                          -
                                                          1228 
                                                          -
                                                          1229  inner: do while(n+1<=nval(lun))
                                                          -
                                                          1230  n = n+1
                                                          -
                                                          1231  node = inv(n,lun)
                                                          -
                                                          1232  mbit = mbit+nbit
                                                          -
                                                          1233  nbit = ibt(node)
                                                          -
                                                          1234  if(itp(node)==1) then
                                                          -
                                                          1235  call upb8(ival,nbit,mbit,mbay(1,lun))
                                                          -
                                                          1236  nbmp=int(ival)
                                                          -
                                                          1237  call usrtpl(lun,n,nbmp)
                                                          -
                                                          1238  endif
                                                          -
                                                          1239  do i=1,nnod
                                                          -
                                                          1240  if(nods(i)==node) then
                                                          -
                                                          1241  if(itp(node)==1) then
                                                          -
                                                          1242  call upb8(ival,nbit,mbit,mbay(1,lun))
                                                          -
                                                          1243  tab(i,iret) = ival
                                                          -
                                                          1244  elseif(itp(node)==2) then
                                                          -
                                                          1245  call upb8(ival,nbit,mbit,mbay(1,lun))
                                                          -
                                                          1246  if(ival<mps(node)) tab(i,iret) = ups(ival,node)
                                                          -
                                                          1247  elseif(itp(node)==3) then
                                                          -
                                                          1248  cval = ' '
                                                          -
                                                          1249  kbit = mbit
                                                          -
                                                          1250  call upc(cval,nbit/8,mbay(1,lun),kbit,.true.)
                                                          -
                                                          1251  tab(i,iret) = rval
                                                          -
                                                          1252  endif
                                                          -
                                                          1253  nods(i) = -nods(i)
                                                          -
                                                          1254  cycle inner
                                                          -
                                                          1255  endif
                                                          -
                                                          1256  enddo
                                                          -
                                                          1257  do i=1,nnod
                                                          -
                                                          1258  if(nods(i)>0) cycle inner
                                                          -
                                                          1259  enddo
                                                          -
                                                          1260  enddo inner
                                                          -
                                                          1261 
                                                          -
                                                          1262  ! Update the subset pointers before next read
                                                          -
                                                          1263 
                                                          -
                                                          1264  ibit = mbyt(lun)*8
                                                          -
                                                          1265  call upb(nbyt,16,mbay(1,lun),ibit)
                                                          -
                                                          1266  mbyt(lun) = mbyt(lun) + nbyt
                                                          -
                                                          1267  nsub(lun) = nsub(lun) + 1
                                                          -
                                                          1268  if(irec>0) tab(irec,iret) = nmsg(lun)
                                                          -
                                                          1269  if(isub>0) tab(isub,iret) = nsub(lun)
                                                          -
                                                          1270  if(itbl>0) tab(itbl,iret) = ldxts
                                                          -
                                                          1271  enddo
                                                          -
                                                          1272 
                                                          -
                                                          1273  enddo outer
                                                          -
                                                          1274 
                                                          -
                                                          1275  ! Reset the memory file
                                                          -
                                                          1276  call rdmemm(0,subset,jdate,mret)
                                                          -
                                                          1277 
                                                          -
                                                          1278  return
                                                          -
                                                          1279 end subroutine ufbtam
                                                          +
                                                          1143  tab(1:i1,1:i2) = bmiss
                                                          +
                                                          1144 
                                                          +
                                                          1145  ! Check for special tags in string
                                                          +
                                                          1146 
                                                          +
                                                          1147  call parstr(str,tgs,maxtg,ntg,' ',.true.)
                                                          +
                                                          1148  irec = 0
                                                          +
                                                          1149  isub = 0
                                                          +
                                                          1150  itbl = 0
                                                          +
                                                          1151  do i=1,ntg
                                                          +
                                                          1152  if(tgs(i)=='IREC') irec = i
                                                          +
                                                          1153  if(tgs(i)=='ISUB') isub = i
                                                          +
                                                          1154  if(tgs(i)=='ITBL') itbl = i
                                                          +
                                                          1155  enddo
                                                          +
                                                          1156 
                                                          +
                                                          1157  call status(munit,lun,il,im)
                                                          +
                                                          1158 
                                                          +
                                                          1159  ! Cycle through all of the memory messages in the internal arrays
                                                          +
                                                          1160 
                                                          +
                                                          1161  outer: do imsg=1,msgp(0)
                                                          +
                                                          1162  call rdmemm(imsg,subset,jdate,mret)
                                                          +
                                                          1163  if(mret<0) then
                                                          +
                                                          1164  write(bort_str,'("BUFRLIB: UFBTAM - HIT END-OF-FILE READING MESSAGE NUMBER",I5," IN INTERNAL MEMORY")') imsg
                                                          +
                                                          1165  call bort(bort_str)
                                                          +
                                                          1166  endif
                                                          +
                                                          1167 
                                                          +
                                                          1168  call string(str,lun,i1,0)
                                                          +
                                                          1169  if(irec>0) nods(irec) = 0
                                                          +
                                                          1170  if(isub>0) nods(isub) = 0
                                                          +
                                                          1171  if(itbl>0) nods(itbl) = 0
                                                          +
                                                          1172 
                                                          +
                                                          1173  ! Process all the subsets in the memory message
                                                          +
                                                          1174 
                                                          +
                                                          1175  do while (nsub(lun)<msub(lun))
                                                          +
                                                          1176  if(iret+1>i2) then
                                                          +
                                                          1177  ! Emergency room treatment for array overflow
                                                          +
                                                          1178  call rdmemm(0,subset,jdate,mret)
                                                          +
                                                          1179  nrep = 0
                                                          +
                                                          1180  do kmsg=1,msgp(0)
                                                          +
                                                          1181  call rdmemm(kmsg,subset,jdate,mret)
                                                          +
                                                          1182  if(mret<0) then
                                                          +
                                                          1183  write(bort_str,'("BUFRLIB: UFBTAM - HIT END-OF-FILE READING MESSAGE NUMBER",I5," IN INTERNAL MEMORY")') kmsg
                                                          +
                                                          1184  call bort(bort_str)
                                                          +
                                                          1185  endif
                                                          +
                                                          1186  nrep = nrep+nmsub(munit)
                                                          +
                                                          1187  enddo
                                                          +
                                                          1188  if(iprt>=0) then
                                                          +
                                                          1189  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                          +
                                                          1190  write ( unit=errstr, fmt='(A,A,I8,A,A)' ) 'BUFRLIB: UFBTAM - THE NO. OF DATA SUBSETS IN MEMORY ', &
                                                          +
                                                          1191  .GT.'IS LIMIT OF ', i2, ' IN THE 3RD ARG. (INPUT) - INCOMPLETE READ'
                                                          +
                                                          1192  call errwrt(errstr)
                                                          +
                                                          1193  write ( unit=errstr, fmt='(A,I8,A,I8,A)' ) '>>>UFBTAM STORED ', iret, ' REPORTS OUT OF ', nrep, '<<<'
                                                          +
                                                          1194  call errwrt(errstr)
                                                          +
                                                          1195  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                          +
                                                          1196  call errwrt(' ')
                                                          +
                                                          1197  endif
                                                          +
                                                          1198  exit outer
                                                          +
                                                          1199  endif
                                                          +
                                                          1200 
                                                          +
                                                          1201  iret = iret+1
                                                          +
                                                          1202 
                                                          +
                                                          1203  do i=1,nnod
                                                          +
                                                          1204  nods(i) = abs(nods(i))
                                                          +
                                                          1205  enddo
                                                          +
                                                          1206 
                                                          +
                                                          1207  call usrtpl(lun,1,1)
                                                          +
                                                          1208  mbit = mbyt(lun)*8+16
                                                          +
                                                          1209  nbit = 0
                                                          +
                                                          1210  n = 1
                                                          +
                                                          1211 
                                                          +
                                                          1212  inner: do while(n+1<=nval(lun))
                                                          +
                                                          1213  n = n+1
                                                          +
                                                          1214  node = inv(n,lun)
                                                          +
                                                          1215  mbit = mbit+nbit
                                                          +
                                                          1216  nbit = ibt(node)
                                                          +
                                                          1217  if(itp(node)==1) then
                                                          +
                                                          1218  call upb8(ival,nbit,mbit,mbay(1,lun))
                                                          +
                                                          1219  nbmp=int(ival)
                                                          +
                                                          1220  call usrtpl(lun,n,nbmp)
                                                          +
                                                          1221  endif
                                                          +
                                                          1222  do i=1,nnod
                                                          +
                                                          1223  if(nods(i)==node) then
                                                          +
                                                          1224  if(itp(node)==1) then
                                                          +
                                                          1225  call upb8(ival,nbit,mbit,mbay(1,lun))
                                                          +
                                                          1226  tab(i,iret) = ival
                                                          +
                                                          1227  elseif(itp(node)==2) then
                                                          +
                                                          1228  call upb8(ival,nbit,mbit,mbay(1,lun))
                                                          +
                                                          1229  if(ival<mps(node)) tab(i,iret) = ups(ival,node)
                                                          +
                                                          1230  elseif(itp(node)==3) then
                                                          +
                                                          1231  cval = ' '
                                                          +
                                                          1232  kbit = mbit
                                                          +
                                                          1233  call upc(cval,nbit/8,mbay(1,lun),kbit,.true.)
                                                          +
                                                          1234  tab(i,iret) = rval
                                                          +
                                                          1235  endif
                                                          +
                                                          1236  nods(i) = -nods(i)
                                                          +
                                                          1237  cycle inner
                                                          +
                                                          1238  endif
                                                          +
                                                          1239  enddo
                                                          +
                                                          1240  do i=1,nnod
                                                          +
                                                          1241  if(nods(i)>0) cycle inner
                                                          +
                                                          1242  enddo
                                                          +
                                                          1243  enddo inner
                                                          +
                                                          1244 
                                                          +
                                                          1245  ! Update the subset pointers before next read
                                                          +
                                                          1246 
                                                          +
                                                          1247  ibit = mbyt(lun)*8
                                                          +
                                                          1248  call upb(nbyt,16,mbay(1,lun),ibit)
                                                          +
                                                          1249  mbyt(lun) = mbyt(lun) + nbyt
                                                          +
                                                          1250  nsub(lun) = nsub(lun) + 1
                                                          +
                                                          1251  if(irec>0) tab(irec,iret) = nmsg(lun)
                                                          +
                                                          1252  if(isub>0) tab(isub,iret) = nsub(lun)
                                                          +
                                                          1253  if(itbl>0) tab(itbl,iret) = ldxts
                                                          +
                                                          1254  enddo
                                                          +
                                                          1255 
                                                          +
                                                          1256  enddo outer
                                                          +
                                                          1257 
                                                          +
                                                          1258  ! Reset the memory file
                                                          +
                                                          1259  call rdmemm(0,subset,jdate,mret)
                                                          +
                                                          1260 
                                                          +
                                                          1261  return
                                                          +
                                                          1262 end subroutine ufbtam
                                                          subroutine bort(str)
                                                          Log an error message, then abort the application program.
                                                          Definition: borts.F90:15
                                                          subroutine upb(nval, nbits, ibay, ibit)
                                                          Decode an integer value from within a specified number of bits of an integer array,...
                                                          Definition: cidecode.F90:202
                                                          subroutine upb8(nval, nbits, ibit, ibay)
                                                          Decode an 8-byte integer value from within a specified number of bits of an integer array,...
                                                          Definition: cidecode.F90:80
                                                          real *8 function ups(ival, node)
                                                          Unpack a real*8 value from an integer by applying the proper scale and reference values.
                                                          Definition: cidecode.F90:319
                                                          recursive integer function iupb(mbay, nbyt, nbit)
                                                          Decode an integer value from within a specified number of bits of an integer array,...
                                                          Definition: cidecode.F90:226
                                                          subroutine upc(chr, nchr, ibay, ibit, cnvnull)
                                                          Decode a character string from within a specified number of bytes of an integer array,...
                                                          Definition: cidecode.F90:26
                                                          -
                                                          subroutine stbfdx(lun, mesg)
                                                          Copy a DX BUFR tables message into the internal memory arrays in module moda_tababd.
                                                          Definition: dxtable.F90:990
                                                          +
                                                          subroutine stbfdx(lun, mesg)
                                                          Copy a DX BUFR tables message into the internal memory arrays in module moda_tababd.
                                                          Definition: dxtable.F90:981
                                                          subroutine dxinit(lun, ioi)
                                                          Clear out the internal arrays (in module moda_tababd) holding the DX BUFR table, then optionally init...
                                                          Definition: dxtable.F90:606
                                                          -
                                                          integer function idxmsg(mesg)
                                                          Check whether a BUFR message contains DX BUFR tables information that was generated by the NCEPLIBS-b...
                                                          Definition: dxtable.F90:1123
                                                          +
                                                          integer function idxmsg(mesg)
                                                          Check whether a BUFR message contains DX BUFR tables information that was generated by the NCEPLIBS-b...
                                                          Definition: dxtable.F90:1114
                                                          subroutine errwrt(str)
                                                          Specify a custom location for the logging of error and diagnostic messages generated by the NCEPLIBS-...
                                                          Definition: errwrt.F90:32
                                                          -
                                                          recursive subroutine rdmems(isub, iret)
                                                          Read a specified data subset from the BUFR message that was most recently read via a call to subrouti...
                                                          Definition: memmsgs.F90:635
                                                          -
                                                          subroutine cpdxmm(lunit)
                                                          Read an entire DX BUFR table from a specified file into internal memory arrays.
                                                          Definition: memmsgs.F90:730
                                                          -
                                                          recursive subroutine rdmemm(imsg, subset, jdate, iret)
                                                          Read a specified BUFR message from internal arrays in memory, so that it is now in scope for processi...
                                                          Definition: memmsgs.F90:487
                                                          +
                                                          recursive subroutine rdmems(isub, iret)
                                                          Read a specified data subset from the BUFR message that was most recently read via a call to subrouti...
                                                          Definition: memmsgs.F90:629
                                                          +
                                                          subroutine cpdxmm(lunit)
                                                          Read an entire DX BUFR table from a specified file into internal memory arrays.
                                                          Definition: memmsgs.F90:722
                                                          +
                                                          recursive subroutine rdmemm(imsg, subset, jdate, iret)
                                                          Read a specified BUFR message from internal arrays in memory, so that it is now in scope for processi...
                                                          Definition: memmsgs.F90:483
                                                          recursive subroutine ufbmem(lunit, inew, iret, iunit)
                                                          Connect a new file to the NCEPLIBS-bufr software for input operations, then read the entire file cont...
                                                          Definition: memmsgs.F90:39
                                                          -
                                                          recursive subroutine readmm(imsg, subset, jdate, iret)
                                                          Read a specified BUFR message from internal arrays in memory, so that it is now in scope for processi...
                                                          Definition: memmsgs.F90:382
                                                          -
                                                          recursive subroutine ufbmex(lunit, lundx, inew, iret, mesg)
                                                          Connect a new file to the NCEPLIBS-bufr software for input operations, then read the entire file cont...
                                                          Definition: memmsgs.F90:217
                                                          -
                                                          recursive subroutine ufbmns(irep, subset, idate)
                                                          Read a specified data subset from internal arrays in memory, so that it is now in scope for processin...
                                                          Definition: memmsgs.F90:911
                                                          -
                                                          recursive subroutine ufbrms(imsg, isub, usr, i1, i2, iret, str)
                                                          Read one or more data values from a data subset in internal arrays.
                                                          Definition: memmsgs.F90:977
                                                          -
                                                          recursive subroutine ufbtam(tab, i1, i2, iret, str)
                                                          Read through every data subset in internal arrays and return one or more specified data values from e...
                                                          Definition: memmsgs.F90:1103
                                                          -
                                                          recursive subroutine ufbmms(imsg, isub, subset, jdate)
                                                          Read a specified data subset from internal arrays.
                                                          Definition: memmsgs.F90:840
                                                          -
                                                          recursive integer function ireadmm(imsg, subset, idate)
                                                          Call subroutine readmm() and pass back its return code as the function value.
                                                          Definition: memmsgs.F90:434
                                                          +
                                                          recursive subroutine readmm(imsg, subset, jdate, iret)
                                                          Read a specified BUFR message from internal arrays in memory, so that it is now in scope for processi...
                                                          Definition: memmsgs.F90:378
                                                          +
                                                          recursive subroutine ufbmex(lunit, lundx, inew, iret, mesg)
                                                          Connect a new file to the NCEPLIBS-bufr software for input operations, then read the entire file cont...
                                                          Definition: memmsgs.F90:215
                                                          +
                                                          recursive subroutine ufbmns(irep, subset, idate)
                                                          Read a specified data subset from internal arrays in memory, so that it is now in scope for processin...
                                                          Definition: memmsgs.F90:901
                                                          +
                                                          recursive subroutine ufbrms(imsg, isub, usr, i1, i2, iret, str)
                                                          Read one or more data values from a data subset in internal arrays.
                                                          Definition: memmsgs.F90:967
                                                          +
                                                          recursive subroutine ufbtam(tab, i1, i2, iret, str)
                                                          Read through every data subset in internal arrays and return one or more specified data values from e...
                                                          Definition: memmsgs.F90:1091
                                                          +
                                                          recursive subroutine ufbmms(imsg, isub, subset, jdate)
                                                          Read a specified data subset from internal arrays.
                                                          Definition: memmsgs.F90:830
                                                          +
                                                          recursive integer function ireadmm(imsg, subset, idate)
                                                          Call subroutine readmm() and pass back its return code as the function value.
                                                          Definition: memmsgs.F90:430
                                                          Wrap C NCEPLIBS-bufr functions so they can be called from within the Fortran part of the library.
                                                          Definition: bufrlib.F90:11
                                                          Declare arrays and variables used to store BUFR messages internally for multiple file IDs.
                                                          integer ibit
                                                          Bit pointer within ibay.
                                                          @@ -1166,25 +1149,25 @@
                                                          integer, dimension(:), allocatable mdx
                                                          DX BUFR table messages read from one or more BUFR files, for use in decoding the messages in msgs.
                                                          integer mxdxw
                                                          Maximum number of entries that can be stored within mdx.
                                                          integer, dimension(:), allocatable ipdxm
                                                          Pointers to the beginning of each message within mdx.
                                                          -
                                                          Declare arrays and variables used to store the internal jump/link table.
                                                          -
                                                          integer, dimension(:), allocatable ibt
                                                          Bit widths corresponding to tag and typ:
                                                          -
                                                          integer, dimension(:), allocatable itp
                                                          Integer type values corresponding to typ:
                                                          -
                                                          Declare an array used to store, for each file ID from which a BUFR message is currently being read as...
                                                          -
                                                          integer, dimension(:), allocatable msgunp
                                                          Flag indicating how to unpack data subsets from BUFR message:
                                                          -
                                                          Declare arrays used to store data values and associated metadata for the current BUFR data subset in ...
                                                          -
                                                          integer, dimension(:), allocatable nval
                                                          Number of data values in BUFR data subset.
                                                          -
                                                          integer, dimension(:,:), allocatable, target inv
                                                          Inventory pointer which links each data value to its corresponding node in the internal jump/link tab...
                                                          -
                                                          recursive subroutine closbf(lunit)
                                                          Close the connection between logical unit lunit and the NCEPLIBS-bufr software.
                                                          -
                                                          recursive subroutine openbf(lunit, io, lundx)
                                                          Connect a new file to the NCEPLIBS-bufr software for input or output operations, or initialize the li...
                                                          -
                                                          recursive subroutine status(lunit, lun, il, im)
                                                          Check whether a specified Fortran logical unit number is currently connected to the NCEPLIBS-bufr sof...
                                                          -
                                                          subroutine wtstat(lunit, lun, il, im)
                                                          Update file status in library internals.
                                                          -
                                                          recursive integer function nmsub(lunit)
                                                          Get the total number of data subsets available within the BUFR message that was most recently opened ...
                                                          -
                                                          integer function nmwrd(mbay)
                                                          Given an integer array containing Section 0 from a BUFR message, determine the array size (in integer...
                                                          -
                                                          subroutine rdmsgw(lunit, mesg, iret)
                                                          Read the next BUFR message from logical unit lunit as an array of integer words.
                                                          -
                                                          subroutine usrtpl(lun, invn, nbmp)
                                                          Expand a subset template within internal arrays.
                                                          +
                                                          Declare arrays and variables used to store the internal jump/link table.
                                                          +
                                                          integer, dimension(:), allocatable ibt
                                                          Bit widths corresponding to tag and typ:
                                                          +
                                                          integer, dimension(:), allocatable itp
                                                          Integer type values corresponding to typ:
                                                          +
                                                          Declare an array used to store, for each file ID from which a BUFR message is currently being read as...
                                                          +
                                                          integer, dimension(:), allocatable msgunp
                                                          Flag indicating how to unpack data subsets from BUFR message:
                                                          +
                                                          Declare arrays used to store data values and associated metadata for the current BUFR data subset in ...
                                                          +
                                                          integer, dimension(:), allocatable nval
                                                          Number of data values in BUFR data subset.
                                                          +
                                                          integer, dimension(:,:), allocatable, target inv
                                                          Inventory pointer which links each data value to its corresponding node in the internal jump/link tab...
                                                          +
                                                          recursive subroutine closbf(lunit)
                                                          Close the connection between logical unit lunit and the NCEPLIBS-bufr software.
                                                          +
                                                          recursive subroutine openbf(lunit, io, lundx)
                                                          Connect a new file to the NCEPLIBS-bufr software for input or output operations, or initialize the li...
                                                          +
                                                          recursive subroutine status(lunit, lun, il, im)
                                                          Check whether a specified Fortran logical unit number is currently connected to the NCEPLIBS-bufr sof...
                                                          +
                                                          subroutine wtstat(lunit, lun, il, im)
                                                          Update file status in library internals.
                                                          +
                                                          recursive integer function nmsub(lunit)
                                                          Get the total number of data subsets available within the BUFR message that was most recently opened ...
                                                          +
                                                          integer function nmwrd(mbay)
                                                          Given an integer array containing Section 0 from a BUFR message, determine the array size (in integer...
                                                          +
                                                          subroutine rdmsgw(lunit, mesg, iret)
                                                          Read the next BUFR message from logical unit lunit as an array of integer words.
                                                          +
                                                          subroutine usrtpl(lun, invn, nbmp)
                                                          Expand a subset template within internal arrays.
                                                          recursive subroutine readsb(lunit, iret)
                                                          Read the next data subset from a BUFR message.
                                                          Definition: readwritesb.F90:32
                                                          -
                                                          recursive subroutine ufbint(lunin, usr, i1, i2, iret, str)
                                                          Read or write one or more data values from or to a data subset.
                                                          -
                                                          subroutine cktaba(lun, subset, jdate, iret)
                                                          Get the Table A mnemonic from Sections 1 and 3 of a BUFR message.
                                                          Definition: s013vals.F90:1272
                                                          +
                                                          recursive subroutine ufbint(lunin, usr, i1, i2, iret, str)
                                                          Read or write one or more data values from or to a data subset.
                                                          +
                                                          subroutine cktaba(lun, subset, jdate, iret)
                                                          Get the Table A mnemonic from Sections 1 and 3 of a BUFR message.
                                                          Definition: s013vals.F90:1265
                                                          recursive integer function iupbs01(mbay, s01mnem)
                                                          Read a specified value from within Section 0 or Section 1 of a BUFR message.
                                                          Definition: s013vals.F90:247
                                                          subroutine parstr(str, tags, mtag, ntag, sep, limit80)
                                                          Parse a string containing one or more substrings into an array of substrings.
                                                          Definition: strings.F90:473
                                                          subroutine string(str, lun, i1, io)
                                                          Check whether a string is in the internal mnemonic string cache.
                                                          Definition: strings.F90:25
                                                          diff --git a/misc_8F90.html b/misc_8F90.html index 8da13c4e8..e722bfb73 100644 --- a/misc_8F90.html +++ b/misc_8F90.html @@ -26,7 +26,7 @@ @@ -97,7 +97,7 @@ - + @@ -149,7 +149,7 @@

                                                          -

                                                          Initialize numerous global variables and arrays within internal modules and COMMON blocks throughout the NCEPLIBS-bufr software.

                                                          +

                                                          Initialize numerous global variables and arrays within internal modules and common blocks throughout the NCEPLIBS-bufr software.

                                                          This subroutine isn't normally called directly by any application program, because it's automatically called internally from within subroutine openbf() during the first time that subroutine is called by any application program.

                                                          Authors
                                                          J. Woollen J. Ator
                                                          Date
                                                          1994-01-06
                                                          @@ -188,7 +188,7 @@

                                                          Author
                                                          J. Ator
                                                          Date
                                                          2009-03-23
                                                          -

                                                          Definition at line 383 of file misc.F90.

                                                          +

                                                          Definition at line 360 of file misc.F90.

                                                          References bort().

                                                          @@ -223,7 +223,7 @@

                                                          Author
                                                          J. Woollen
                                                          Date
                                                          2002-05-14
                                                          -

                                                          Definition at line 354 of file misc.F90.

                                                          +

                                                          Definition at line 333 of file misc.F90.

                                                          Referenced by cmpmsg(), codflg(), elemdx(), stbfdx(), stdmsg(), and strcpt().

                                                          @@ -265,7 +265,7 @@

                                                          Author
                                                          J. Ator
                                                          Date
                                                          2010-05-11
                                                          -

                                                          Definition at line 444 of file misc.F90.

                                                          +

                                                          Definition at line 421 of file misc.F90.

                                                          References bort(), moda_stcode::iscodes, status(), and x84().

                                                          @@ -302,7 +302,7 @@

                                                          Author
                                                          J. Ator
                                                          Date
                                                          2015-03-06
                                                          -

                                                          Definition at line 483 of file misc.F90.

                                                          +

                                                          Definition at line 460 of file misc.F90.

                                                          References imrkopr().

                                                          @@ -339,7 +339,7 @@

                                                          Author
                                                          Woollen
                                                          Date
                                                          1994-01-06
                                                          -

                                                          Definition at line 256 of file misc.F90.

                                                          +

                                                          Definition at line 235 of file misc.F90.

                                                          Referenced by ipkm(), and iupm().

                                                          @@ -373,7 +373,7 @@

                                                          Author
                                                          Ator
                                                          Date
                                                          2009-03-23
                                                          -

                                                          Definition at line 407 of file misc.F90.

                                                          +

                                                          Definition at line 384 of file misc.F90.

                                                          References bort().

                                                          @@ -434,7 +434,7 @@

                                                          Author
                                                          J. Woollen
                                                          Date
                                                          1994-01-06
                                                          -

                                                          Definition at line 302 of file misc.F90.

                                                          +

                                                          Definition at line 281 of file misc.F90.

                                                          References bort(), errwrt(), and strnum().

                                                          @@ -458,9 +458,9 @@

                                                          Author
                                                          J. Woollen
                                                          Date
                                                          1996-10-09
                                                          -

                                                          Definition at line 513 of file misc.F90.

                                                          +

                                                          Definition at line 490 of file misc.F90.

                                                          -

                                                          References errwrt().

                                                          +

                                                          References errwrt(), moda_mrgcom::namb, moda_mrgcom::nmrg, moda_mrgcom::nrpl, and moda_mrgcom::ntot.

                                                          @@ -509,7 +509,7 @@

                                                          Author
                                                          J. Woollen
                                                          Date
                                                          1994-01-06
                                                          -

                                                          Definition at line 176 of file misc.F90.

                                                          +

                                                          Definition at line 155 of file misc.F90.

                                                          References strsuc(), and x48().

                                                          @@ -562,7 +562,7 @@

                                                          Author
                                                          J. Woollen
                                                          Date
                                                          1994-01-06
                                                          -

                                                          Definition at line 219 of file misc.F90.

                                                          +

                                                          Definition at line 198 of file misc.F90.

                                                          Referenced by dxdump(), fdebufr_c(), gettagre(), hold4wlc(), mtfnam(), mtinfo(), nemspecs(), strnum(), and ufdump().

                                                          diff --git a/misc_8F90_source.html b/misc_8F90_source.html index 2ec5f4ab1..7a5358314 100644 --- a/misc_8F90_source.html +++ b/misc_8F90_source.html @@ -26,7 +26,7 @@

                                                          @@ -90,7 +90,7 @@
                                                          5 
                                                          15 subroutine bfrini
                                                          16 
                                                          -
                                                          17  use modv_vars, only: maxtba, maxtbb, maxtbd, mxmsgl, nfiles, adsn, idnr
                                                          +
                                                          17  use modv_vars, only: maxtba, maxtbb, maxtbd, mxmsgl, nfiles, adsn, idnr, lun1, lun2
                                                          18 
                                                          19  use moda_stbfr
                                                          20  use moda_idrdm
                                                          @@ -104,420 +104,396 @@
                                                          28 
                                                          29  implicit none
                                                          30 
                                                          -
                                                          31  integer ndndx(10), nldxa(10), nldxb(10), nldxd(10), nld30(10), ibct, ipd1, ipd2, ipd3, ipd4, nrpl, nmrg, namb, ntot, &
                                                          -
                                                          32  maxdx, idxv, nxstr, ldxa, ldxb, ldxd, ld30, i, j, i1, ifxy
                                                          +
                                                          31  integer ndndx(10), nldxa(10), nldxb(10), nldxd(10), nld30(10), nxstr, ldxa, ldxb, ldxd, ld30, &
                                                          +
                                                          32  i, j, i1, ifxy
                                                          33 
                                                          34  character*240 cmtdir
                                                          35  character*56 dxstr
                                                          36  character*6 dndx(25,10)
                                                          37 
                                                          -
                                                          38  common /padesc/ ibct, ipd1, ipd2, ipd3, ipd4
                                                          -
                                                          39  common /dxtab/ maxdx, idxv, nxstr(10), ldxa(10), ldxb(10), ldxd(10), ld30(10), dxstr(10)
                                                          -
                                                          40  common /mrgcom/ nrpl,nmrg,namb,ntot
                                                          -
                                                          41 
                                                          -
                                                          42  data (dndx(i,1),i=1,25)/ &
                                                          -
                                                          43  '102000','031001','000001','000002', &
                                                          -
                                                          44  '110000','031001','000010','000011','000012','000013','000015','000016','000017','000018','000019','000020', &
                                                          -
                                                          45  '107000','031001','000010','000011','000012','000013','101000','031001','000030'/
                                                          -
                                                          46 
                                                          -
                                                          47  data (dndx(i,2),i=1,15)/ &
                                                          -
                                                          48  '103000','031001','000001','000002','000003', &
                                                          -
                                                          49  '101000','031001','300004', &
                                                          -
                                                          50  '105000','031001','300003','205064','101000','031001','000030'/
                                                          -
                                                          51 
                                                          -
                                                          52  data ndndx / 25 , 15 , 8*0 /
                                                          -
                                                          53  data nldxa / 35 , 67 , 8*0 /
                                                          -
                                                          54  data nldxb / 80 , 112 , 8*0 /
                                                          -
                                                          55  data nldxd / 38 , 70 , 8*0 /
                                                          -
                                                          56  data nld30 / 5 , 6 , 8*0 /
                                                          +
                                                          38  common /dxtab/ nxstr(10), ldxa(10), ldxb(10), ldxd(10), ld30(10), dxstr(10)
                                                          +
                                                          39 
                                                          +
                                                          40  data (dndx(i,1),i=1,25)/ &
                                                          +
                                                          41  '102000','031001','000001','000002', &
                                                          +
                                                          42  '110000','031001','000010','000011','000012','000013','000015','000016','000017','000018','000019','000020', &
                                                          +
                                                          43  '107000','031001','000010','000011','000012','000013','101000','031001','000030'/
                                                          +
                                                          44 
                                                          +
                                                          45  data (dndx(i,2),i=1,15)/ &
                                                          +
                                                          46  '103000','031001','000001','000002','000003', &
                                                          +
                                                          47  '101000','031001','300004', &
                                                          +
                                                          48  '105000','031001','300003','205064','101000','031001','000030'/
                                                          +
                                                          49 
                                                          +
                                                          50  data ndndx / 25 , 15 , 8*0 /
                                                          +
                                                          51  data nldxa / 35 , 67 , 8*0 /
                                                          +
                                                          52  data nldxb / 80 , 112 , 8*0 /
                                                          +
                                                          53  data nldxd / 38 , 70 , 8*0 /
                                                          +
                                                          54  data nld30 / 5 , 6 , 8*0 /
                                                          +
                                                          55 
                                                          +
                                                          56  ! Initialize module @ref moda_bitbuf
                                                          57 
                                                          -
                                                          58  ! Initialize module moda_bitbuf
                                                          +
                                                          58  maxbyt = min(10000,mxmsgl)
                                                          59 
                                                          -
                                                          60  maxbyt = min(10000,mxmsgl)
                                                          +
                                                          60  ! Initialize module @ref moda_stbfr
                                                          61 
                                                          -
                                                          62  ! Initialize common /padesc/
                                                          -
                                                          63 
                                                          -
                                                          64  ibct = ifxy('063000')
                                                          -
                                                          65  ipd1 = ifxy('102000')
                                                          -
                                                          66  ipd2 = ifxy('031001')
                                                          -
                                                          67  ipd3 = ifxy('206001')
                                                          -
                                                          68  ipd4 = ifxy('063255')
                                                          -
                                                          69 
                                                          -
                                                          70  ! Initialize module moda_stbfr
                                                          -
                                                          71 
                                                          -
                                                          72  do i=1,nfiles
                                                          -
                                                          73  iolun(i) = 0
                                                          -
                                                          74  iomsg(i) = 0
                                                          -
                                                          75  enddo
                                                          -
                                                          76 
                                                          -
                                                          77  ! Initialize module moda_idrdm
                                                          +
                                                          62  do i=1,nfiles
                                                          +
                                                          63  iolun(i) = 0
                                                          +
                                                          64  iomsg(i) = 0
                                                          +
                                                          65  enddo
                                                          +
                                                          66 
                                                          +
                                                          67  ! Initialize module @ref moda_idrdm
                                                          +
                                                          68 
                                                          +
                                                          69  do i=1,nfiles
                                                          +
                                                          70  idrdm(i) = 0
                                                          +
                                                          71  enddo
                                                          +
                                                          72 
                                                          +
                                                          73  ! Initialize module @ref moda_msglim
                                                          +
                                                          74 
                                                          +
                                                          75  do i=1,nfiles
                                                          +
                                                          76  msglim(i) = 3
                                                          +
                                                          77  enddo
                                                          78 
                                                          -
                                                          79  do i=1,nfiles
                                                          -
                                                          80  idrdm(i) = 0
                                                          -
                                                          81  enddo
                                                          -
                                                          82 
                                                          -
                                                          83  ! Initialize module moda_msglim
                                                          +
                                                          79  ! Initialize module @ref moda_usrint
                                                          +
                                                          80 
                                                          +
                                                          81  do i=1,nfiles
                                                          +
                                                          82  nval(i) = 0
                                                          +
                                                          83  enddo
                                                          84 
                                                          -
                                                          85  do i=1,nfiles
                                                          -
                                                          86  msglim(i) = 3
                                                          -
                                                          87  enddo
                                                          -
                                                          88 
                                                          -
                                                          89  ! Initialize module moda_usrint
                                                          +
                                                          85  ! Initialize idnr array
                                                          +
                                                          86 
                                                          +
                                                          87  do i=1,10
                                                          +
                                                          88  idnr(i) = ifxy(adsn(i))
                                                          +
                                                          89  enddo
                                                          90 
                                                          -
                                                          91  do i=1,nfiles
                                                          -
                                                          92  nval(i) = 0
                                                          -
                                                          93  enddo
                                                          -
                                                          94 
                                                          -
                                                          95  ! Initialize idnr array
                                                          -
                                                          96 
                                                          -
                                                          97  do i=1,10
                                                          -
                                                          98  idnr(i) = ifxy(adsn(i))
                                                          -
                                                          99  enddo
                                                          -
                                                          100 
                                                          -
                                                          101  ! Initialize module moda_tababd
                                                          -
                                                          102 
                                                          -
                                                          103  ! ntba(0) is the maximum number of entries within internal BUFR table A
                                                          -
                                                          104  ntba(0) = maxtba
                                                          -
                                                          105  ! ntbb(0) is the maximum number of entries within internal BUFR Table B
                                                          -
                                                          106  ntbb(0) = maxtbb
                                                          -
                                                          107  ! ntbd(0) is the maximum number of entries within internal BUFR Table D
                                                          -
                                                          108  ntbd(0) = maxtbd
                                                          -
                                                          109 
                                                          -
                                                          110  ! Initialize common /dxtab/
                                                          -
                                                          111 
                                                          -
                                                          112  maxdx = maxbyt
                                                          -
                                                          113  ! idxv is the version number of the local tables
                                                          -
                                                          114  idxv = 1
                                                          -
                                                          115 
                                                          -
                                                          116  do j=1,10
                                                          -
                                                          117  ldxa(j) = nldxa(j)
                                                          -
                                                          118  ldxb(j) = nldxb(j)
                                                          -
                                                          119  ldxd(j) = nldxd(j)
                                                          -
                                                          120  ld30(j) = nld30(j)
                                                          -
                                                          121  dxstr(j) = ' '
                                                          -
                                                          122  nxstr(j) = ndndx(j)*2
                                                          -
                                                          123  do i=1,ndndx(j)
                                                          -
                                                          124  i1 = i*2-1
                                                          -
                                                          125  call ipkm(dxstr(j)(i1:i1),2,ifxy(dndx(i,j)))
                                                          -
                                                          126  enddo
                                                          -
                                                          127  enddo
                                                          +
                                                          91  ! Initialize module @ref moda_tababd
                                                          +
                                                          92 
                                                          +
                                                          93  ! ntba(0) is the maximum number of entries within internal BUFR table A
                                                          +
                                                          94  ntba(0) = maxtba
                                                          +
                                                          95  ! ntbb(0) is the maximum number of entries within internal BUFR Table B
                                                          +
                                                          96  ntbb(0) = maxtbb
                                                          +
                                                          97  ! ntbd(0) is the maximum number of entries within internal BUFR Table D
                                                          +
                                                          98  ntbd(0) = maxtbd
                                                          +
                                                          99 
                                                          +
                                                          100  ! Initialize common /dxtab/
                                                          +
                                                          101 
                                                          +
                                                          102  do j=1,10
                                                          +
                                                          103  ldxa(j) = nldxa(j)
                                                          +
                                                          104  ldxb(j) = nldxb(j)
                                                          +
                                                          105  ldxd(j) = nldxd(j)
                                                          +
                                                          106  ld30(j) = nld30(j)
                                                          +
                                                          107  dxstr(j) = ' '
                                                          +
                                                          108  nxstr(j) = ndndx(j)*2
                                                          +
                                                          109  do i=1,ndndx(j)
                                                          +
                                                          110  i1 = i*2-1
                                                          +
                                                          111  call ipkm(dxstr(j)(i1:i1),2,ifxy(dndx(i,j)))
                                                          +
                                                          112  enddo
                                                          +
                                                          113  enddo
                                                          +
                                                          114 
                                                          +
                                                          115  ! Initialize module @ref moda_bufrmg
                                                          +
                                                          116 
                                                          +
                                                          117  do i=1,nfiles
                                                          +
                                                          118  msglen(i) = 0
                                                          +
                                                          119  enddo
                                                          +
                                                          120 
                                                          +
                                                          121  ! Initialize module @ref moda_bufrsr
                                                          +
                                                          122 
                                                          +
                                                          123  do i=1,nfiles
                                                          +
                                                          124  jsr(i) = 0
                                                          +
                                                          125  enddo
                                                          +
                                                          126 
                                                          +
                                                          127  ! Initialize module @ref moda_dscach
                                                          128 
                                                          -
                                                          129  ! Initialize module moda_bufrmg
                                                          +
                                                          129  ncnem = 0
                                                          130 
                                                          -
                                                          131  do i=1,nfiles
                                                          -
                                                          132  msglen(i) = 0
                                                          -
                                                          133  enddo
                                                          -
                                                          134 
                                                          -
                                                          135  ! Initialize common /mrgcom/
                                                          -
                                                          136 
                                                          -
                                                          137  nrpl = 0
                                                          -
                                                          138  nmrg = 0
                                                          -
                                                          139  namb = 0
                                                          -
                                                          140  ntot = 0
                                                          -
                                                          141 
                                                          -
                                                          142  ! Initialize module moda_bufrsr
                                                          -
                                                          143 
                                                          -
                                                          144  do i=1,nfiles
                                                          -
                                                          145  jsr(i) = 0
                                                          -
                                                          146  enddo
                                                          -
                                                          147 
                                                          -
                                                          148  ! Initialize module moda_dscach
                                                          -
                                                          149 
                                                          -
                                                          150  ncnem = 0
                                                          -
                                                          151 
                                                          -
                                                          152  ! Initialize common /mstinf/
                                                          -
                                                          153 
                                                          -
                                                          154  cmtdir = &
                                                          -
                                                          155  '/home/runner/work/NCEPLIBS-bufr/NCEPLIBS-bufr/bufr/build-doc' // &
                                                          -
                                                          156 's/install/tables'
                                                          -
                                                          157  call mtinfo(cmtdir,98,99)
                                                          -
                                                          158 
                                                          -
                                                          159  return
                                                          -
                                                          160 end subroutine bfrini
                                                          +
                                                          131  ! Initialize master BUFR table information
                                                          +
                                                          132 
                                                          +
                                                          133  cmtdir = &
                                                          +
                                                          134  '/home/runner/work/NCEPLIBS-bufr/NCEPLIBS-bufr/bufr/build-doc' // &
                                                          +
                                                          135 's/install/tables'
                                                          +
                                                          136  call mtinfo(cmtdir,lun1,lun2)
                                                          +
                                                          137 
                                                          +
                                                          138  return
                                                          +
                                                          139 end subroutine bfrini
                                                          +
                                                          140 
                                                          +
                                                          155 recursive subroutine strnum( str, num, iret )
                                                          +
                                                          156  use modv_vars, only: im8b
                                                          +
                                                          157 
                                                          +
                                                          158  implicit none
                                                          +
                                                          159 
                                                          +
                                                          160  character*(*), intent(in) :: str
                                                          161 
                                                          -
                                                          176 recursive subroutine strnum( str, num, iret )
                                                          -
                                                          177  use modv_vars, only: im8b
                                                          -
                                                          178 
                                                          -
                                                          179  implicit none
                                                          -
                                                          180 
                                                          -
                                                          181  character*(*), intent(in) :: str
                                                          -
                                                          182 
                                                          -
                                                          183  integer, intent(out) :: num, iret
                                                          -
                                                          184 
                                                          -
                                                          185  character str2*40
                                                          -
                                                          186 
                                                          -
                                                          187  integer lens, ios
                                                          +
                                                          162  integer, intent(out) :: num, iret
                                                          +
                                                          163 
                                                          +
                                                          164  character str2*40
                                                          +
                                                          165 
                                                          +
                                                          166  integer lens, ios
                                                          +
                                                          167 
                                                          +
                                                          168  ! Check for I8 integers.
                                                          +
                                                          169  if (im8b) then
                                                          +
                                                          170  im8b = .false.
                                                          +
                                                          171  call strnum ( str, num, iret )
                                                          +
                                                          172  call x48 ( num, num, 1 )
                                                          +
                                                          173  call x48 ( iret, iret, 1 )
                                                          +
                                                          174  im8b = .true.
                                                          +
                                                          175  return
                                                          +
                                                          176  end if
                                                          +
                                                          177 
                                                          +
                                                          178  ! Decode the integer from the string.
                                                          +
                                                          179  iret = 0
                                                          +
                                                          180  num = 0
                                                          +
                                                          181  call strsuc ( str, str2, lens )
                                                          +
                                                          182  if ( lens == 0 ) return
                                                          +
                                                          183  read ( str2(1:lens), '(I40)', iostat = ios ) num
                                                          +
                                                          184  if ( ios /= 0 ) iret = -1
                                                          +
                                                          185 
                                                          +
                                                          186  return
                                                          +
                                                          187 end subroutine strnum
                                                          188 
                                                          -
                                                          189  ! Check for I8 integers.
                                                          -
                                                          190  if (im8b) then
                                                          -
                                                          191  im8b = .false.
                                                          -
                                                          192  call strnum ( str, num, iret )
                                                          -
                                                          193  call x48 ( num, num, 1 )
                                                          -
                                                          194  call x48 ( iret, iret, 1 )
                                                          -
                                                          195  im8b = .true.
                                                          -
                                                          196  return
                                                          -
                                                          197  end if
                                                          -
                                                          198 
                                                          -
                                                          199  ! Decode the integer from the string.
                                                          -
                                                          200  iret = 0
                                                          -
                                                          201  num = 0
                                                          -
                                                          202  call strsuc ( str, str2, lens )
                                                          -
                                                          203  if ( lens == 0 ) return
                                                          -
                                                          204  read ( str2(1:lens), '(I40)', iostat = ios ) num
                                                          -
                                                          205  if ( ios /= 0 ) iret = -1
                                                          -
                                                          206 
                                                          -
                                                          207  return
                                                          -
                                                          208 end subroutine strnum
                                                          -
                                                          209 
                                                          -
                                                          219 subroutine strsuc(str1,str2,lens)
                                                          -
                                                          220  implicit none
                                                          -
                                                          221 
                                                          -
                                                          222  character*(*), intent(in) :: str1
                                                          -
                                                          223  character*(*), intent(out) :: str2
                                                          -
                                                          224 
                                                          -
                                                          225  integer, intent(out) :: lens
                                                          -
                                                          226 
                                                          -
                                                          227  str2 = adjustl(str1)
                                                          -
                                                          228  lens = len_trim(str2)
                                                          -
                                                          229 
                                                          -
                                                          230  return
                                                          -
                                                          231 end subroutine strsuc
                                                          -
                                                          232 
                                                          -
                                                          256 integer function irev(n) result(iret)
                                                          -
                                                          257 
                                                          -
                                                          258  use modv_vars, only: nbytw, iordle
                                                          -
                                                          259 
                                                          -
                                                          260  implicit none
                                                          -
                                                          261 
                                                          -
                                                          262  integer, intent(in) :: n
                                                          -
                                                          263 
                                                          -
                                                          264  integer int, jnt, i
                                                          -
                                                          265 
                                                          -
                                                          266  character*8 cint,dint
                                                          -
                                                          267 
                                                          -
                                                          268  equivalence(cint,int)
                                                          -
                                                          269  equivalence(dint,jnt)
                                                          -
                                                          270 
                                                          -
                                                          271 #ifdef BIG_ENDIAN
                                                          -
                                                          272  iret = n
                                                          -
                                                          273 #else
                                                          -
                                                          274  int = n
                                                          -
                                                          275  do i=1,nbytw
                                                          -
                                                          276  dint(i:i) = cint(iordle(i):iordle(i))
                                                          -
                                                          277  enddo
                                                          -
                                                          278  iret = jnt
                                                          -
                                                          279 #endif
                                                          -
                                                          280 
                                                          -
                                                          281  return
                                                          -
                                                          282 end function irev
                                                          -
                                                          283 
                                                          -
                                                          302 subroutine jstnum(str,sign,iret)
                                                          -
                                                          303 
                                                          -
                                                          304  implicit none
                                                          -
                                                          305 
                                                          -
                                                          306  integer, intent(out) :: iret
                                                          -
                                                          307  integer iprt, lstr, num, ier
                                                          -
                                                          308 
                                                          -
                                                          309  character*(*), intent(inout) :: str
                                                          -
                                                          310  character, intent(out) :: sign
                                                          -
                                                          311  character*128 errstr
                                                          -
                                                          312 
                                                          -
                                                          313  common /quiet/ iprt
                                                          -
                                                          314 
                                                          -
                                                          315  iret = 0
                                                          -
                                                          316 
                                                          -
                                                          317  if(str==' ') call bort('BUFRLIB: JSTNUM - INPUT BLANK CHARACTER STRING NOT ALLOWED')
                                                          -
                                                          318 
                                                          -
                                                          319  str = adjustl(str)
                                                          -
                                                          320  lstr = len(str)
                                                          -
                                                          321  if(str(1:1)=='+') then
                                                          -
                                                          322  str = str(2:lstr)
                                                          -
                                                          323  sign = '+'
                                                          -
                                                          324  elseif(str(1:1)=='-') then
                                                          -
                                                          325  str = str(2:lstr)
                                                          -
                                                          326  sign = '-'
                                                          -
                                                          327  else
                                                          -
                                                          328  sign = '+'
                                                          -
                                                          329  endif
                                                          -
                                                          330 
                                                          -
                                                          331  call strnum(str,num,ier)
                                                          -
                                                          332  if(ier<0) then
                                                          -
                                                          333  if(iprt>=0) then
                                                          -
                                                          334  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                          -
                                                          335  errstr = 'BUFRLIB: JSTNUM: ENCODED VALUE WITHIN RESULTANT CHARACTER STRING (' // str // ') IS NOT AN INTEGER - '// &
                                                          -
                                                          336  'RETURN WITH IRET = -1'
                                                          -
                                                          337  call errwrt(errstr)
                                                          -
                                                          338  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                          -
                                                          339  call errwrt(' ')
                                                          -
                                                          340  endif
                                                          -
                                                          341  iret = -1
                                                          -
                                                          342  endif
                                                          -
                                                          343 
                                                          -
                                                          344  return
                                                          -
                                                          345 end subroutine jstnum
                                                          -
                                                          346 
                                                          -
                                                          354 subroutine capit(str)
                                                          -
                                                          355 
                                                          -
                                                          356  implicit none
                                                          -
                                                          357 
                                                          -
                                                          358  integer i, j
                                                          -
                                                          359 
                                                          -
                                                          360  character*(*), intent(inout) :: str
                                                          -
                                                          361  character*26 upcs, lwcs
                                                          -
                                                          362 
                                                          -
                                                          363  data upcs /'ABCDEFGHIJKLMNOPQRSTUVWXYZ'/
                                                          -
                                                          364  data lwcs /'abcdefghijklmnopqrstuvwxyz'/
                                                          +
                                                          198 subroutine strsuc(str1,str2,lens)
                                                          +
                                                          199  implicit none
                                                          +
                                                          200 
                                                          +
                                                          201  character*(*), intent(in) :: str1
                                                          +
                                                          202  character*(*), intent(out) :: str2
                                                          +
                                                          203 
                                                          +
                                                          204  integer, intent(out) :: lens
                                                          +
                                                          205 
                                                          +
                                                          206  str2 = adjustl(str1)
                                                          +
                                                          207  lens = len_trim(str2)
                                                          +
                                                          208 
                                                          +
                                                          209  return
                                                          +
                                                          210 end subroutine strsuc
                                                          +
                                                          211 
                                                          +
                                                          235 integer function irev(n) result(iret)
                                                          +
                                                          236 
                                                          +
                                                          237  use modv_vars, only: nbytw, iordle
                                                          +
                                                          238 
                                                          +
                                                          239  implicit none
                                                          +
                                                          240 
                                                          +
                                                          241  integer, intent(in) :: n
                                                          +
                                                          242 
                                                          +
                                                          243  integer int, jnt, i
                                                          +
                                                          244 
                                                          +
                                                          245  character*8 cint,dint
                                                          +
                                                          246 
                                                          +
                                                          247  equivalence(cint,int)
                                                          +
                                                          248  equivalence(dint,jnt)
                                                          +
                                                          249 
                                                          +
                                                          250 #ifdef BIG_ENDIAN
                                                          +
                                                          251  iret = n
                                                          +
                                                          252 #else
                                                          +
                                                          253  int = n
                                                          +
                                                          254  do i=1,nbytw
                                                          +
                                                          255  dint(i:i) = cint(iordle(i):iordle(i))
                                                          +
                                                          256  enddo
                                                          +
                                                          257  iret = jnt
                                                          +
                                                          258 #endif
                                                          +
                                                          259 
                                                          +
                                                          260  return
                                                          +
                                                          261 end function irev
                                                          +
                                                          262 
                                                          +
                                                          281 subroutine jstnum(str,sign,iret)
                                                          +
                                                          282 
                                                          +
                                                          283  use modv_vars, only: iprt
                                                          +
                                                          284 
                                                          +
                                                          285  implicit none
                                                          +
                                                          286 
                                                          +
                                                          287  integer, intent(out) :: iret
                                                          +
                                                          288  integer lstr, num, ier
                                                          +
                                                          289 
                                                          +
                                                          290  character*(*), intent(inout) :: str
                                                          +
                                                          291  character, intent(out) :: sign
                                                          +
                                                          292  character*128 errstr
                                                          +
                                                          293 
                                                          +
                                                          294  iret = 0
                                                          +
                                                          295 
                                                          +
                                                          296  if(str==' ') call bort('BUFRLIB: JSTNUM - INPUT BLANK CHARACTER STRING NOT ALLOWED')
                                                          +
                                                          297 
                                                          +
                                                          298  str = adjustl(str)
                                                          +
                                                          299  lstr = len(str)
                                                          +
                                                          300  if(str(1:1)=='+') then
                                                          +
                                                          301  str = str(2:lstr)
                                                          +
                                                          302  sign = '+'
                                                          +
                                                          303  elseif(str(1:1)=='-') then
                                                          +
                                                          304  str = str(2:lstr)
                                                          +
                                                          305  sign = '-'
                                                          +
                                                          306  else
                                                          +
                                                          307  sign = '+'
                                                          +
                                                          308  endif
                                                          +
                                                          309 
                                                          +
                                                          310  call strnum(str,num,ier)
                                                          +
                                                          311  if(ier<0) then
                                                          +
                                                          312  if(iprt>=0) then
                                                          +
                                                          313  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                          +
                                                          314  errstr = 'BUFRLIB: JSTNUM: ENCODED VALUE WITHIN RESULTANT CHARACTER STRING (' // str // ') IS NOT AN INTEGER - '// &
                                                          +
                                                          315  'RETURN WITH IRET = -1'
                                                          +
                                                          316  call errwrt(errstr)
                                                          +
                                                          317  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                          +
                                                          318  call errwrt(' ')
                                                          +
                                                          319  endif
                                                          +
                                                          320  iret = -1
                                                          +
                                                          321  endif
                                                          +
                                                          322 
                                                          +
                                                          323  return
                                                          +
                                                          324 end subroutine jstnum
                                                          +
                                                          325 
                                                          +
                                                          333 subroutine capit(str)
                                                          +
                                                          334 
                                                          +
                                                          335  implicit none
                                                          +
                                                          336 
                                                          +
                                                          337  integer i, j
                                                          +
                                                          338 
                                                          +
                                                          339  character*(*), intent(inout) :: str
                                                          +
                                                          340  character*26, parameter :: upcs = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
                                                          +
                                                          341  character*26, parameter :: lwcs = 'abcdefghijklmnopqrstuvwxyz'
                                                          +
                                                          342 
                                                          +
                                                          343  do i=1,len(str)
                                                          +
                                                          344  do j=1,26
                                                          +
                                                          345  if(str(i:i)==lwcs(j:j)) then
                                                          +
                                                          346  str(i:i) = upcs(j:j)
                                                          +
                                                          347  exit
                                                          +
                                                          348  endif
                                                          +
                                                          349  enddo
                                                          +
                                                          350  enddo
                                                          +
                                                          351 
                                                          +
                                                          352  return
                                                          +
                                                          353 end subroutine capit
                                                          +
                                                          354 
                                                          +
                                                          360 subroutine bvers (cverstr)
                                                          +
                                                          361 
                                                          +
                                                          362  implicit none
                                                          +
                                                          363 
                                                          +
                                                          364  character*(*), intent(out) :: cverstr
                                                          365 
                                                          -
                                                          366  do i=1,len(str)
                                                          -
                                                          367  do j=1,26
                                                          -
                                                          368  if(str(i:i)==lwcs(j:j)) then
                                                          -
                                                          369  str(i:i) = upcs(j:j)
                                                          -
                                                          370  exit
                                                          -
                                                          371  endif
                                                          -
                                                          372  enddo
                                                          -
                                                          373  enddo
                                                          -
                                                          374 
                                                          -
                                                          375  return
                                                          -
                                                          376 end subroutine capit
                                                          -
                                                          377 
                                                          -
                                                          383 subroutine bvers (cverstr)
                                                          -
                                                          384 
                                                          -
                                                          385  implicit none
                                                          -
                                                          386 
                                                          -
                                                          387  character*(*), intent(out) :: cverstr
                                                          -
                                                          388 
                                                          -
                                                          389  if (len(cverstr)<8) call bort('BUFRLIB: BVERS - INPUT STRING MUST CONTAIN SPACE FOR AT LEAST 8 CHARACTERS')
                                                          -
                                                          390 
                                                          -
                                                          391  cverstr = '12.1.0'
                                                          -
                                                          392 
                                                          -
                                                          393  return
                                                          -
                                                          394 end subroutine bvers
                                                          -
                                                          395 
                                                          -
                                                          407 integer function isize (num) result (iret)
                                                          -
                                                          408 
                                                          -
                                                          409  implicit none
                                                          -
                                                          410 
                                                          -
                                                          411  integer, intent(in) :: num
                                                          -
                                                          412 
                                                          -
                                                          413  character*128 bort_str
                                                          -
                                                          414 
                                                          -
                                                          415  if ( num >= 0 ) then
                                                          -
                                                          416  do iret = 1, 5
                                                          -
                                                          417  if ( num < 10**iret ) return
                                                          -
                                                          418  enddo
                                                          -
                                                          419  endif
                                                          -
                                                          420  write(bort_str,'("BUFRLIB: ISIZE - INPUT NUMBER (",I7,") IS OUT OF RANGE")') num
                                                          -
                                                          421  call bort(bort_str)
                                                          +
                                                          366  if (len(cverstr)<8) call bort('BUFRLIB: BVERS - INPUT STRING MUST CONTAIN SPACE FOR AT LEAST 8 CHARACTERS')
                                                          +
                                                          367 
                                                          +
                                                          368  cverstr = '12.2.0'
                                                          +
                                                          369 
                                                          +
                                                          370  return
                                                          +
                                                          371 end subroutine bvers
                                                          +
                                                          372 
                                                          +
                                                          384 integer function isize (num) result (iret)
                                                          +
                                                          385 
                                                          +
                                                          386  implicit none
                                                          +
                                                          387 
                                                          +
                                                          388  integer, intent(in) :: num
                                                          +
                                                          389 
                                                          +
                                                          390  character*128 bort_str
                                                          +
                                                          391 
                                                          +
                                                          392  if ( num >= 0 ) then
                                                          +
                                                          393  do iret = 1, 5
                                                          +
                                                          394  if ( num < 10**iret ) return
                                                          +
                                                          395  enddo
                                                          +
                                                          396  endif
                                                          +
                                                          397  write(bort_str,'("BUFRLIB: ISIZE - INPUT NUMBER (",I7,") IS OUT OF RANGE")') num
                                                          +
                                                          398  call bort(bort_str)
                                                          +
                                                          399 
                                                          +
                                                          400  return
                                                          +
                                                          401 end function isize
                                                          +
                                                          402 
                                                          +
                                                          421 recursive integer function igetsc(lunit) result(iret)
                                                          422 
                                                          -
                                                          423  return
                                                          -
                                                          424 end function isize
                                                          -
                                                          425 
                                                          -
                                                          444 recursive integer function igetsc(lunit) result(iret)
                                                          -
                                                          445 
                                                          -
                                                          446  use modv_vars, only: im8b
                                                          -
                                                          447 
                                                          -
                                                          448  use moda_stcode
                                                          -
                                                          449 
                                                          -
                                                          450  implicit none
                                                          +
                                                          423  use modv_vars, only: im8b
                                                          +
                                                          424 
                                                          +
                                                          425  use moda_stcode
                                                          +
                                                          426 
                                                          +
                                                          427  implicit none
                                                          +
                                                          428 
                                                          +
                                                          429  integer, intent(in) :: lunit
                                                          +
                                                          430  integer my_lunit, lun, il, im
                                                          +
                                                          431 
                                                          +
                                                          432  ! Check for I8 integers.
                                                          +
                                                          433  if (im8b) then
                                                          +
                                                          434  im8b = .false.
                                                          +
                                                          435  call x84(lunit,my_lunit,1)
                                                          +
                                                          436  iret = igetsc(my_lunit)
                                                          +
                                                          437  im8b = .true.
                                                          +
                                                          438  return
                                                          +
                                                          439  end if
                                                          +
                                                          440 
                                                          +
                                                          441  iret = 0
                                                          +
                                                          442 
                                                          +
                                                          443  ! Make sure the specified logical unit is connected to the library.
                                                          +
                                                          444  call status(lunit,lun,il,im)
                                                          +
                                                          445  if(il==0) call bort('BUFRLIB: IGETSC - BUFR FILE IS CLOSED, IT MUST BE OPEN')
                                                          +
                                                          446 
                                                          +
                                                          447  iret = iscodes(lun)
                                                          +
                                                          448 
                                                          +
                                                          449  return
                                                          +
                                                          450 end function igetsc
                                                          451 
                                                          -
                                                          452  integer, intent(in) :: lunit
                                                          -
                                                          453  integer my_lunit, lun, il, im
                                                          -
                                                          454 
                                                          -
                                                          455  ! Check for I8 integers.
                                                          -
                                                          456  if (im8b) then
                                                          -
                                                          457  im8b = .false.
                                                          -
                                                          458  call x84(lunit,my_lunit,1)
                                                          -
                                                          459  iret = igetsc(my_lunit)
                                                          -
                                                          460  im8b = .true.
                                                          -
                                                          461  return
                                                          -
                                                          462  end if
                                                          +
                                                          460 integer function iokoper(nemo) result(iret)
                                                          +
                                                          461 
                                                          +
                                                          462  implicit none
                                                          463 
                                                          -
                                                          464  iret = 0
                                                          +
                                                          464  integer imrkopr
                                                          465 
                                                          -
                                                          466  ! Make sure the specified logical unit is connected to the library.
                                                          -
                                                          467  call status(lunit,lun,il,im)
                                                          -
                                                          468  if(il==0) call bort('BUFRLIB: IGETSC - BUFR FILE IS CLOSED, IT MUST BE OPEN')
                                                          -
                                                          469 
                                                          -
                                                          470  iret = iscodes(lun)
                                                          -
                                                          471 
                                                          -
                                                          472  return
                                                          -
                                                          473 end function igetsc
                                                          -
                                                          474 
                                                          -
                                                          483 integer function iokoper(nemo) result(iret)
                                                          -
                                                          484 
                                                          -
                                                          485  implicit none
                                                          +
                                                          466  character*(*), intent(in) :: nemo
                                                          +
                                                          467 
                                                          +
                                                          468  if ( len(nemo)<6 ) then
                                                          +
                                                          469  iret = 0
                                                          +
                                                          470  else if ( lge(nemo(1:3),'201') .and. lle(nemo(1:3),'208') ) then
                                                          +
                                                          471  iret = 1
                                                          +
                                                          472  else if ( nemo(1:3)=='221' ) then
                                                          +
                                                          473  iret = 1
                                                          +
                                                          474  else if ( ( ( nemo(4:6)=='000' ) .or. ( nemo(4:6)=='255' ) ) .and. &
                                                          +
                                                          475  ( ( nemo(1:3)=='237' ) .or. ( lge(nemo(1:3),'241') .and. lle(nemo(1:3),'243') ) ) ) then
                                                          +
                                                          476  iret = 1
                                                          +
                                                          477  else if ( ( nemo(4:6)=='000' ) .and. ( ( lge(nemo(1:3),'222') .and. lle(nemo(1:3),'225') ) .or. &
                                                          +
                                                          478  ( nemo(1:3)=='232' ) .or. ( nemo(1:3)=='235' ) .or. ( nemo(1:3)=='236' ) ) ) then
                                                          +
                                                          479  iret = 1
                                                          +
                                                          480  else
                                                          +
                                                          481  iret = imrkopr(nemo)
                                                          +
                                                          482  endif
                                                          +
                                                          483 
                                                          +
                                                          484  return
                                                          +
                                                          485 end function iokoper
                                                          486 
                                                          -
                                                          487  integer imrkopr
                                                          -
                                                          488 
                                                          -
                                                          489  character*(*), intent(in) :: nemo
                                                          -
                                                          490 
                                                          -
                                                          491  if ( len(nemo)<6 ) then
                                                          -
                                                          492  iret = 0
                                                          -
                                                          493  else if ( lge(nemo(1:3),'201') .and. lle(nemo(1:3),'208') ) then
                                                          -
                                                          494  iret = 1
                                                          -
                                                          495  else if ( nemo(1:3)=='221' ) then
                                                          -
                                                          496  iret = 1
                                                          -
                                                          497  else if ( ( ( nemo(4:6)=='000' ) .or. ( nemo(4:6)=='255' ) ) .and. &
                                                          -
                                                          498  ( ( nemo(1:3)=='237' ) .or. ( lge(nemo(1:3),'241') .and. lle(nemo(1:3),'243') ) ) ) then
                                                          -
                                                          499  iret = 1
                                                          -
                                                          500  else if ( ( nemo(4:6)=='000' ) .and. ( ( lge(nemo(1:3),'222') .and. lle(nemo(1:3),'225') ) .or. &
                                                          -
                                                          501  ( nemo(1:3)=='232' ) .or. ( nemo(1:3)=='235' ) .or. ( nemo(1:3)=='236' ) ) ) then
                                                          -
                                                          502  iret = 1
                                                          -
                                                          503  else
                                                          -
                                                          504  iret = imrkopr(nemo)
                                                          -
                                                          505  endif
                                                          -
                                                          506 
                                                          -
                                                          507  return
                                                          -
                                                          508 end function iokoper
                                                          -
                                                          509 
                                                          -
                                                          513 subroutine mrginv
                                                          -
                                                          514 
                                                          -
                                                          515  implicit none
                                                          -
                                                          516 
                                                          -
                                                          517  integer nrpl, nmrg, namb, ntot, iprt
                                                          +
                                                          490 subroutine mrginv
                                                          +
                                                          491 
                                                          +
                                                          492  use modv_vars, only: iprt
                                                          +
                                                          493 
                                                          +
                                                          494  use moda_mrgcom
                                                          +
                                                          495 
                                                          +
                                                          496  implicit none
                                                          +
                                                          497 
                                                          +
                                                          498  character*128 errstr
                                                          +
                                                          499 
                                                          +
                                                          500  if(iprt>=0) then
                                                          +
                                                          501  call errwrt('+++++++++++++++++++++BUFRLIB+++++++++++++++++++++++')
                                                          +
                                                          502  call errwrt('---------------------------------------------------')
                                                          +
                                                          503  call errwrt('INVENTORY FROM MERGE PROCESS IN SUBROUTINE INVMRG:')
                                                          +
                                                          504  call errwrt('---------------------------------------------------')
                                                          +
                                                          505  write ( unit=errstr, fmt='(A,I8)' ) 'NUMBER OF DRB EXPANSIONS = ', nrpl
                                                          +
                                                          506  call errwrt(errstr)
                                                          +
                                                          507  write ( unit=errstr, fmt='(A,I8)' ) 'NUMBER OF MERGES = ', nmrg
                                                          +
                                                          508  call errwrt(errstr)
                                                          +
                                                          509  write ( unit=errstr, fmt='(A,I8)' ) 'NUMBER THAT ARE AMBIGUOUS = ', namb
                                                          +
                                                          510  call errwrt(errstr)
                                                          +
                                                          511  call errwrt('---------------------------------------------------')
                                                          +
                                                          512  write ( unit=errstr, fmt='(A,I9)' ) 'TOTAL NUMBER OF VISITS = ', ntot
                                                          +
                                                          513  call errwrt(errstr)
                                                          +
                                                          514  call errwrt('---------------------------------------------------')
                                                          +
                                                          515  call errwrt('+++++++++++++++++++++BUFRLIB+++++++++++++++++++++++')
                                                          +
                                                          516  call errwrt(' ')
                                                          +
                                                          517  endif
                                                          518 
                                                          -
                                                          519  character*128 errstr
                                                          -
                                                          520 
                                                          -
                                                          521  common /mrgcom/ nrpl, nmrg, namb, ntot
                                                          -
                                                          522  common /quiet/ iprt
                                                          -
                                                          523 
                                                          -
                                                          524  if(iprt>=0) then
                                                          -
                                                          525  call errwrt('+++++++++++++++++++++BUFRLIB+++++++++++++++++++++++')
                                                          -
                                                          526  call errwrt('---------------------------------------------------')
                                                          -
                                                          527  call errwrt('INVENTORY FROM MERGE PROCESS IN SUBROUTINE INVMRG:')
                                                          -
                                                          528  call errwrt('---------------------------------------------------')
                                                          -
                                                          529  write ( unit=errstr, fmt='(A,I8)' ) 'NUMBER OF DRB EXPANSIONS = ', nrpl
                                                          -
                                                          530  call errwrt(errstr)
                                                          -
                                                          531  write ( unit=errstr, fmt='(A,I8)' ) 'NUMBER OF MERGES = ', nmrg
                                                          -
                                                          532  call errwrt(errstr)
                                                          -
                                                          533  write ( unit=errstr, fmt='(A,I8)' ) 'NUMBER THAT ARE AMBIGUOUS = ', namb
                                                          -
                                                          534  call errwrt(errstr)
                                                          -
                                                          535  call errwrt('---------------------------------------------------')
                                                          -
                                                          536  write ( unit=errstr, fmt='(A,I9)' ) 'TOTAL NUMBER OF VISITS = ', ntot
                                                          -
                                                          537  call errwrt(errstr)
                                                          -
                                                          538  call errwrt('---------------------------------------------------')
                                                          -
                                                          539  call errwrt('+++++++++++++++++++++BUFRLIB+++++++++++++++++++++++')
                                                          -
                                                          540  call errwrt(' ')
                                                          -
                                                          541  endif
                                                          -
                                                          542 
                                                          -
                                                          543  return
                                                          -
                                                          544 end subroutine mrginv
                                                          -
                                                          integer function imrkopr(nemo)
                                                          Check whether a specified mnemonic is a Table C marker operator.
                                                          Definition: bitmaps.F90:354
                                                          +
                                                          519  return
                                                          +
                                                          520 end subroutine mrginv
                                                          +
                                                          integer function imrkopr(nemo)
                                                          Check whether a specified mnemonic is a Table C marker operator.
                                                          Definition: bitmaps.F90:361
                                                          subroutine bort(str)
                                                          Log an error message, then abort the application program.
                                                          Definition: borts.F90:15
                                                          recursive subroutine ipkm(cbay, nbyt, n)
                                                          Encode an integer value within a specified number of bytes of a character string, up to a maximum of ...
                                                          Definition: ciencode.F90:194
                                                          subroutine errwrt(str)
                                                          Specify a custom location for the logging of error and diagnostic messages generated by the NCEPLIBS-...
                                                          Definition: errwrt.F90:32
                                                          recursive subroutine mtinfo(cmtdir, lunmt1, lunmt2)
                                                          Specify the directory location and Fortran logical unit numbers to be used when reading master BUFR t...
                                                          Definition: mastertable.F90:35
                                                          -
                                                          subroutine jstnum(str, sign, iret)
                                                          Left-justify a character string containing an encoded integer, by removing all leading blanks and any...
                                                          Definition: misc.F90:303
                                                          -
                                                          integer function iokoper(nemo)
                                                          Check whether a specified mnemonic is a Table C operator supported by the NCEPLIBS-bufr software.
                                                          Definition: misc.F90:484
                                                          -
                                                          integer function irev(n)
                                                          Return a copy of an integer value with the bytes possibly reversed.
                                                          Definition: misc.F90:257
                                                          -
                                                          recursive integer function igetsc(lunit)
                                                          Check for an abnormal status code associated with the processing of a file.
                                                          Definition: misc.F90:445
                                                          -
                                                          subroutine bvers(cverstr)
                                                          Get the version number of the NCEPLIBS-bufr software.
                                                          Definition: misc.F90:384
                                                          -
                                                          recursive subroutine strnum(str, num, iret)
                                                          Decode an integer from a character string.
                                                          Definition: misc.F90:177
                                                          -
                                                          subroutine strsuc(str1, str2, lens)
                                                          Remove leading and trailing blanks from a character string.
                                                          Definition: misc.F90:220
                                                          -
                                                          subroutine bfrini
                                                          Initialize numerous global variables and arrays within internal modules and COMMON blocks throughout ...
                                                          Definition: misc.F90:16
                                                          -
                                                          subroutine capit(str)
                                                          Capitalize all of the alphabetic characters in a string.
                                                          Definition: misc.F90:355
                                                          -
                                                          integer function isize(num)
                                                          Compute the number of characters needed to encode an integer as a string.
                                                          Definition: misc.F90:408
                                                          -
                                                          subroutine mrginv
                                                          Print a summary of merge activity.
                                                          Definition: misc.F90:514
                                                          +
                                                          subroutine jstnum(str, sign, iret)
                                                          Left-justify a character string containing an encoded integer, by removing all leading blanks and any...
                                                          Definition: misc.F90:282
                                                          +
                                                          integer function iokoper(nemo)
                                                          Check whether a specified mnemonic is a Table C operator supported by the NCEPLIBS-bufr software.
                                                          Definition: misc.F90:461
                                                          +
                                                          integer function irev(n)
                                                          Return a copy of an integer value with the bytes possibly reversed.
                                                          Definition: misc.F90:236
                                                          +
                                                          recursive integer function igetsc(lunit)
                                                          Check for an abnormal status code associated with the processing of a file.
                                                          Definition: misc.F90:422
                                                          +
                                                          subroutine bvers(cverstr)
                                                          Get the version number of the NCEPLIBS-bufr software.
                                                          Definition: misc.F90:361
                                                          +
                                                          recursive subroutine strnum(str, num, iret)
                                                          Decode an integer from a character string.
                                                          Definition: misc.F90:156
                                                          +
                                                          subroutine strsuc(str1, str2, lens)
                                                          Remove leading and trailing blanks from a character string.
                                                          Definition: misc.F90:199
                                                          +
                                                          subroutine bfrini
                                                          Initialize numerous global variables and arrays within internal modules and common blocks throughout ...
                                                          Definition: misc.F90:16
                                                          +
                                                          subroutine capit(str)
                                                          Capitalize all of the alphabetic characters in a string.
                                                          Definition: misc.F90:334
                                                          +
                                                          integer function isize(num)
                                                          Compute the number of characters needed to encode an integer as a string.
                                                          Definition: misc.F90:385
                                                          +
                                                          subroutine mrginv
                                                          Print a summary of merge activity.
                                                          Definition: misc.F90:491
                                                          Declare arrays and variables used to store BUFR messages internally for multiple file IDs.
                                                          integer maxbyt
                                                          Maximum length of an output BUFR message.
                                                          Declare arrays used to store, for each output file ID, a copy of the BUFR message that was most recen...
                                                          @@ -528,20 +504,25 @@
                                                          integer ncnem
                                                          Number of entries in the internal Table A mnemonic cache (up to a maximum of mxcnem).
                                                          Declare an array used by subroutine readerme() to read in a new DX dictionary table as a consecutive ...
                                                          integer, dimension(:), allocatable idrdm
                                                          DX BUFR tables message count for each file ID.
                                                          +
                                                          Declare variables for use when merging parts of different data subsets.
                                                          +
                                                          integer nmrg
                                                          Number of merges.
                                                          +
                                                          integer ntot
                                                          Total number of calls to subroutine invmrg().
                                                          +
                                                          integer namb
                                                          Number of potential merges that weren't made because of ambiguities.
                                                          +
                                                          integer nrpl
                                                          Number of expansions of Table D mnemonics using short (1-bit) delayed replication.
                                                          Declare an array used to keep track of which logical units should not have any empty (zero data subse...
                                                          integer, dimension(:), allocatable msglim
                                                          Tracking index for each file ID.
                                                          -
                                                          Declare arrays used to store file and message status indicators for all logical units that have been ...
                                                          -
                                                          integer, dimension(:), allocatable iolun
                                                          File status indicators.
                                                          -
                                                          integer, dimension(:), allocatable iomsg
                                                          Message status indicator corresponding to iolun, denoting whether a BUFR message is currently open wi...
                                                          -
                                                          Declare an array used to store a status code for each file ID if an error or other abnormal result oc...
                                                          -
                                                          integer, dimension(:), allocatable iscodes
                                                          Abnormal status codes.
                                                          -
                                                          Declare arrays and variables used to store DX BUFR tables internally for multiple file IDs.
                                                          -
                                                          integer, dimension(:), allocatable ntba
                                                          Number of Table A entries for each file ID (up to a maximum of maxtba, whose value is stored in array...
                                                          -
                                                          integer, dimension(:), allocatable ntbd
                                                          Number of Table D entries for each file ID (up to a maximum of maxtbd, whose value is stored in array...
                                                          -
                                                          integer, dimension(:), allocatable ntbb
                                                          Number of Table B entries for each file ID (up to a maximum of maxtbb, whose value is stored in array...
                                                          -
                                                          Declare arrays used to store data values and associated metadata for the current BUFR data subset in ...
                                                          -
                                                          integer, dimension(:), allocatable nval
                                                          Number of data values in BUFR data subset.
                                                          -
                                                          recursive subroutine status(lunit, lun, il, im)
                                                          Check whether a specified Fortran logical unit number is currently connected to the NCEPLIBS-bufr sof...
                                                          +
                                                          Declare arrays used to store file and message status indicators for all logical units that have been ...
                                                          +
                                                          integer, dimension(:), allocatable iolun
                                                          File status indicators.
                                                          +
                                                          integer, dimension(:), allocatable iomsg
                                                          Message status indicator corresponding to iolun, denoting whether a BUFR message is currently open wi...
                                                          +
                                                          Declare an array used to store a status code for each file ID if an error or other abnormal result oc...
                                                          +
                                                          integer, dimension(:), allocatable iscodes
                                                          Abnormal status codes.
                                                          +
                                                          Declare arrays and variables used to store DX BUFR tables internally for multiple file IDs.
                                                          +
                                                          integer, dimension(:), allocatable ntba
                                                          Number of Table A entries for each file ID (up to a maximum of maxtba, whose value is stored in array...
                                                          +
                                                          integer, dimension(:), allocatable ntbd
                                                          Number of Table D entries for each file ID (up to a maximum of maxtbd, whose value is stored in array...
                                                          +
                                                          integer, dimension(:), allocatable ntbb
                                                          Number of Table B entries for each file ID (up to a maximum of maxtbb, whose value is stored in array...
                                                          +
                                                          Declare arrays used to store data values and associated metadata for the current BUFR data subset in ...
                                                          +
                                                          integer, dimension(:), allocatable nval
                                                          Number of data values in BUFR data subset.
                                                          +
                                                          recursive subroutine status(lunit, lun, il, im)
                                                          Check whether a specified Fortran logical unit number is currently connected to the NCEPLIBS-bufr sof...
                                                          subroutine x48(iin4, iout8, nval)
                                                          Encode one or more 4-byte integer values as 8-byte integer values.
                                                          Definition: x4884.F90:18
                                                          subroutine x84(iin8, iout4, nval)
                                                          Encode one or more 8-byte integer values as 4-byte integer values.
                                                          Definition: x4884.F90:65
                                                          diff --git a/missing_8F90.html b/missing_8F90.html index eb9daed94..6d6159d45 100644 --- a/missing_8F90.html +++ b/missing_8F90.html @@ -26,7 +26,7 @@ @@ -134,7 +134,7 @@

                                                          Author
                                                          J. Woollen
                                                          Date
                                                          2012-09-15
                                                          -

                                                          Definition at line 134 of file missing.F90.

                                                          +

                                                          Definition at line 135 of file missing.F90.

                                                          @@ -262,7 +262,7 @@

                                                          Author
                                                          J. Woollen
                                                          Date
                                                          2012-09-15
                                                          -

                                                          Definition at line 170 of file missing.F90.

                                                          +

                                                          Definition at line 171 of file missing.F90.

                                                          diff --git a/missing_8F90_source.html b/missing_8F90_source.html index 9b5ba294e..56b73d7ab 100644 --- a/missing_8F90_source.html +++ b/missing_8F90_source.html @@ -26,7 +26,7 @@

                                                          @@ -121,82 +121,83 @@
                                                          68 
                                                          69  integer, intent(in) :: lstr
                                                          70  integer my_lstr, numchr, ii, iupm
                                                          -
                                                          71 
                                                          -
                                                          72  equivalence(strz,rl8z)
                                                          -
                                                          73 
                                                          -
                                                          74  ! Check for I8 integers.
                                                          -
                                                          75 
                                                          -
                                                          76  if ( im8b ) then
                                                          -
                                                          77  im8b = .false.
                                                          -
                                                          78 
                                                          -
                                                          79  call x84 ( lstr, my_lstr, 1 )
                                                          -
                                                          80  iret = icbfms( str, my_lstr )
                                                          -
                                                          81 
                                                          -
                                                          82  im8b = .true.
                                                          -
                                                          83  return
                                                          -
                                                          84  end if
                                                          -
                                                          85 
                                                          -
                                                          86  iret = 0
                                                          -
                                                          87 
                                                          -
                                                          88  numchr = min(lstr,len(str))
                                                          -
                                                          89 
                                                          -
                                                          90  ! Beginning with version 10.2.0 of the NCEPLIBS-bufr, all "missing" strings have been explicitly encoded with all bits set
                                                          -
                                                          91  ! to 1, and which is the correct encoding per WMO regulations. However, prior to version 10.2.0, the library encoded a
                                                          -
                                                          92  ! "missing" string by storing the real*8 value of 10E10 into the string. So for consistency with historical archives,
                                                          -
                                                          93  ! the following logic attempts to identify some of these earlier cases, at least for strings between 4 and 8 bytes in length.
                                                          -
                                                          94 
                                                          -
                                                          95  if ( numchr>=4 .and. numchr<=8 ) then
                                                          -
                                                          96  do ii = 1, numchr
                                                          -
                                                          97  strz(ii:ii) = str(ii:ii)
                                                          -
                                                          98  end do
                                                          -
                                                          99  write (zz,'(z16.16)') rl8z
                                                          -
                                                          100  ii = 2*(8-numchr)+1
                                                          -
                                                          101  if ( zz(ii:16)==zm_be(ii:16) .or. zz(ii:16)==zm_le(ii:16) ) then
                                                          -
                                                          102  iret = 1
                                                          -
                                                          103  return
                                                          -
                                                          104  end if
                                                          -
                                                          105  end if
                                                          -
                                                          106 
                                                          -
                                                          107  ! Otherwise, the logic below will check for "missing" strings of any length which are correctly encoded with all bits set
                                                          -
                                                          108  ! to 1, including those encoded by NCEPLIBS-bufr version 10.2.0 or later.
                                                          -
                                                          109 
                                                          -
                                                          110  do ii=1,numchr
                                                          -
                                                          111  strz(1:1) = str(ii:ii)
                                                          -
                                                          112  if ( iupm(strz(1:1),8)/=255 ) return
                                                          -
                                                          113  enddo
                                                          -
                                                          114 
                                                          -
                                                          115  iret = 1
                                                          -
                                                          116 
                                                          -
                                                          117  return
                                                          -
                                                          118 end function icbfms
                                                          -
                                                          119 
                                                          -
                                                          134 real*8 function getbmiss() result(r8val)
                                                          -
                                                          135 
                                                          -
                                                          136  use modv_vars, only: bmiss
                                                          -
                                                          137 
                                                          -
                                                          138  implicit none
                                                          -
                                                          139 
                                                          -
                                                          140  r8val = bmiss
                                                          -
                                                          141 
                                                          -
                                                          142  return
                                                          -
                                                          143 end function getbmiss
                                                          -
                                                          144 
                                                          -
                                                          170 subroutine setbmiss(xmiss)
                                                          -
                                                          171 
                                                          -
                                                          172  use modv_vars, only: bmiss
                                                          -
                                                          173 
                                                          -
                                                          174  implicit none
                                                          -
                                                          175 
                                                          -
                                                          176  real*8, intent(in) :: xmiss
                                                          -
                                                          177 
                                                          -
                                                          178  bmiss = xmiss
                                                          -
                                                          179 
                                                          -
                                                          180  return
                                                          -
                                                          181 end subroutine setbmiss
                                                          +
                                                          71  integer*8 il8z
                                                          +
                                                          72 
                                                          +
                                                          73  equivalence(strz,rl8z)
                                                          +
                                                          74 
                                                          +
                                                          75  ! Check for I8 integers.
                                                          +
                                                          76 
                                                          +
                                                          77  if ( im8b ) then
                                                          +
                                                          78  im8b = .false.
                                                          +
                                                          79 
                                                          +
                                                          80  call x84 ( lstr, my_lstr, 1 )
                                                          +
                                                          81  iret = icbfms( str, my_lstr )
                                                          +
                                                          82 
                                                          +
                                                          83  im8b = .true.
                                                          +
                                                          84  return
                                                          +
                                                          85  end if
                                                          +
                                                          86 
                                                          +
                                                          87  iret = 0
                                                          +
                                                          88 
                                                          +
                                                          89  numchr = min(lstr,len(str))
                                                          +
                                                          90 
                                                          +
                                                          91  ! Beginning with version 10.2.0 of the NCEPLIBS-bufr, all "missing" strings have been explicitly encoded with all bits set
                                                          +
                                                          92  ! to 1, and which is the correct encoding per WMO regulations. However, prior to version 10.2.0, the library encoded a
                                                          +
                                                          93  ! "missing" string by storing the real*8 value of 10E10 into the string. So for consistency with historical archives,
                                                          +
                                                          94  ! the following logic attempts to identify some of these earlier cases, at least for strings between 4 and 8 bytes in length.
                                                          +
                                                          95 
                                                          +
                                                          96  if ( numchr>=4 .and. numchr<=8 ) then
                                                          +
                                                          97  do ii = 1, numchr
                                                          +
                                                          98  strz(ii:ii) = str(ii:ii)
                                                          +
                                                          99  end do
                                                          +
                                                          100  write (zz,'(z16.16)') transfer(rl8z,il8z)
                                                          +
                                                          101  ii = 2*(8-numchr)+1
                                                          +
                                                          102  if ( zz(ii:16)==zm_be(ii:16) .or. zz(ii:16)==zm_le(ii:16) ) then
                                                          +
                                                          103  iret = 1
                                                          +
                                                          104  return
                                                          +
                                                          105  end if
                                                          +
                                                          106  end if
                                                          +
                                                          107 
                                                          +
                                                          108  ! Otherwise, the logic below will check for "missing" strings of any length which are correctly encoded with all bits set
                                                          +
                                                          109  ! to 1, including those encoded by NCEPLIBS-bufr version 10.2.0 or later.
                                                          +
                                                          110 
                                                          +
                                                          111  do ii=1,numchr
                                                          +
                                                          112  strz(1:1) = str(ii:ii)
                                                          +
                                                          113  if ( iupm(strz(1:1),8)/=255 ) return
                                                          +
                                                          114  enddo
                                                          +
                                                          115 
                                                          +
                                                          116  iret = 1
                                                          +
                                                          117 
                                                          +
                                                          118  return
                                                          +
                                                          119 end function icbfms
                                                          +
                                                          120 
                                                          +
                                                          135 real*8 function getbmiss() result(r8val)
                                                          +
                                                          136 
                                                          +
                                                          137  use modv_vars, only: bmiss
                                                          +
                                                          138 
                                                          +
                                                          139  implicit none
                                                          +
                                                          140 
                                                          +
                                                          141  r8val = bmiss
                                                          +
                                                          142 
                                                          +
                                                          143  return
                                                          +
                                                          144 end function getbmiss
                                                          +
                                                          145 
                                                          +
                                                          171 subroutine setbmiss(xmiss)
                                                          +
                                                          172 
                                                          +
                                                          173  use modv_vars, only: bmiss
                                                          +
                                                          174 
                                                          +
                                                          175  implicit none
                                                          +
                                                          176 
                                                          +
                                                          177  real*8, intent(in) :: xmiss
                                                          +
                                                          178 
                                                          +
                                                          179  bmiss = xmiss
                                                          +
                                                          180 
                                                          +
                                                          181  return
                                                          +
                                                          182 end subroutine setbmiss
                                                          recursive integer function iupm(cbay, nbits)
                                                          Decode an integer value from within a specified number of bits of a character string,...
                                                          Definition: cidecode.F90:265
                                                          -
                                                          real *8 function getbmiss()
                                                          Get the current placeholder value which represents "missing" data when reading from or writing to BUF...
                                                          Definition: missing.F90:135
                                                          +
                                                          real *8 function getbmiss()
                                                          Get the current placeholder value which represents "missing" data when reading from or writing to BUF...
                                                          Definition: missing.F90:136
                                                          recursive integer function icbfms(str, lstr)
                                                          Check whether a character string returned from a previous call to subroutine readlc() was encoded as ...
                                                          Definition: missing.F90:56
                                                          -
                                                          subroutine setbmiss(xmiss)
                                                          Specify a customized value to represent "missing" data when reading from or writing to BUFR files.
                                                          Definition: missing.F90:171
                                                          +
                                                          subroutine setbmiss(xmiss)
                                                          Specify a customized value to represent "missing" data when reading from or writing to BUFR files.
                                                          Definition: missing.F90:172
                                                          integer function ibfms(r8val)
                                                          Check whether a real*8 data value returned from a previous call to any of the NCEPLIBS-bufr values-re...
                                                          Definition: missing.F90:25
                                                          subroutine x84(iin8, iout4, nval)
                                                          Encode one or more 8-byte integer values as 4-byte integer values.
                                                          Definition: x4884.F90:65
                                                          diff --git a/modules__arrs_8F90.html b/modules__arrs_8F90.html index 233cbab97..d7cda6b6b 100644 --- a/modules__arrs_8F90.html +++ b/modules__arrs_8F90.html @@ -26,7 +26,7 @@ @@ -139,6 +139,9 @@ + + + @@ -190,6 +193,9 @@ + + + @@ -310,9 +316,18 @@ + + + + + + + + + @@ -355,6 +370,9 @@ + + + @@ -607,6 +625,9 @@ + + + @@ -640,6 +661,9 @@ + + + @@ -658,6 +682,9 @@ + + + @@ -688,6 +715,9 @@ + + + diff --git a/modules__arrs_8F90.js b/modules__arrs_8F90.js index e0a88b844..53b7a09ee 100644 --- a/modules__arrs_8F90.js +++ b/modules__arrs_8F90.js @@ -30,7 +30,10 @@ var modules__arrs_8F90 = [ "ibt", "modules__arrs_8F90.html#a1ff254e3c0f169340a16225a17c5a2c2", null ], [ "ibtmse", "modules__arrs_8F90.html#ab3096b8b9d713e5183ac8275305e002a", null ], [ "ibtnrv", "modules__arrs_8F90.html#af1ca5281543dc4ce645d861f7f744c6d", null ], + [ "icdw", "modules__arrs_8F90.html#a70a224458d62bb0e617313d4e05d976b", null ], [ "icdxts", "modules__arrs_8F90.html#a52a37b6bcc7ed3492325f47e1f8018ab", null ], + [ "icrv", "modules__arrs_8F90.html#a785d2d36be7d1f598ea6d827386978f4", null ], + [ "icsc", "modules__arrs_8F90.html#a5325016ada1d1e03d49737e28d92ce47", null ], [ "idate", "modules__arrs_8F90.html#a37df9d6a60023612be784db0b759da3b", null ], [ "idcach", "modules__arrs_8F90.html#ab79409e1e5c6d8e2542bac564283a5ef", null ], [ "idefxy", "modules__arrs_8F90.html#aeabc918978c598efc0231fc59d2bfd24", null ], @@ -45,6 +48,7 @@ var modules__arrs_8F90 = [ "ifdxts", "modules__arrs_8F90.html#a55020aca1118bb6f09f8b3d1f68a5c74", null ], [ "imiss", "modules__arrs_8F90.html#a7a0967a79c236a16f1fa11ebb8f99b0f", null ], [ "incr", "modules__arrs_8F90.html#a7e5d5589bde01337616f2527beed519f", null ], + [ "incw", "modules__arrs_8F90.html#a889fda4f92be8677aecb3548c824fd18", null ], [ "inode", "modules__arrs_8F90.html#a034d50224d3416c855472ead1043b1aa", null ], [ "inodnrv", "modules__arrs_8F90.html#ad4299c9b916b83272f07cba8d2d22d4f", null ], [ "inodtamc", "modules__arrs_8F90.html#a6ab1ee23535fd8b352c4f5d863a1c458", null ], @@ -129,6 +133,7 @@ var modules__arrs_8F90 = [ "munit", "modules__arrs_8F90.html#a5ac2ef8f11fcf81b55a5353dbfda18cc", null ], [ "mxdxm", "modules__arrs_8F90.html#a549e012729bbc3cb18894d34380ce5bd", null ], [ "mxdxw", "modules__arrs_8F90.html#af2710ff69575fa7a323c654e7998e142", null ], + [ "namb", "modules__arrs_8F90.html#aca7ba3c13394414e82f8bfd925fd6d9f", null ], [ "nbit", "modules__arrs_8F90.html#a99268fc2b9168fcbbd5f8ab70e6da0b7", null ], [ "nbtm", "modules__arrs_8F90.html#a6530eb70f0a9131f659c61a74652c93d", null ], [ "nbtmse", "modules__arrs_8F90.html#ad03b1bbbb4eb8366a77af6da12f0793c", null ], @@ -140,12 +145,14 @@ var modules__arrs_8F90 = [ "ndxts", "modules__arrs_8F90.html#ab1873371ca3b5f3e44a5d19ebf30af23", null ], [ "nem", "modules__arrs_8F90.html#a94ad19bfc71bbfcd6f1caf4a744d5eb3", null ], [ "nh4wlc", "modules__arrs_8F90.html#a013b7b1f0e72002222c0ee2ae5a3dcac", null ], + [ "nmrg", "modules__arrs_8F90.html#a61d7a9354052881b929a1c7afeff24f2", null ], [ "nmsg", "modules__arrs_8F90.html#a43a1031d5c017c6f61ba6deabe22daad", null ], [ "nmtb", "modules__arrs_8F90.html#a2861db4fcd6083b5f6d194c92e873c95", null ], [ "nmtd", "modules__arrs_8F90.html#ae8e13371b82ad223284aeac9d6ad9aae", null ], [ "nnrv", "modules__arrs_8F90.html#a7f37665c0422638e65824c8b9183169e", null ], [ "nrfelm", "modules__arrs_8F90.html#ab05877244c7131b445de4326efd8aa8a", null ], [ "nrow", "modules__arrs_8F90.html#a574b3c666f5e8aa725910e20a739f561", null ], + [ "nrpl", "modules__arrs_8F90.html#ace7f78e015bbce02e77bb95dec7efa06", null ], [ "nrst", "modules__arrs_8F90.html#a6ee3ae8f4cfb91d15189834b8b62d41f", null ], [ "nrv", "modules__arrs_8F90.html#a9c4d7ff754fd79feb908c6858f7e4e5f", null ], [ "ns01v", "modules__arrs_8F90.html#a7dfdd248050c7cc36f38933711526888", null ], @@ -156,6 +163,7 @@ var modules__arrs_8F90 = [ "ntbb", "modules__arrs_8F90.html#a8f322e3d7724bb96f7ce06beec989c0f", null ], [ "ntbd", "modules__arrs_8F90.html#a875c0ff90cd5fdc88e3f10ae7b5bc556", null ], [ "ntco", "modules__arrs_8F90.html#aef82673973ab814f34658d9a1e5f3404", null ], + [ "ntot", "modules__arrs_8F90.html#a71cc22e6cdcdf0d9d885f3e2418905a9", null ], [ "null", "modules__arrs_8F90.html#a1b6c0eaf2305df7abddd8c6c66723526", null ], [ "nval", "modules__arrs_8F90.html#a2269ddd572fded029ca62080b38f6261", null ], [ "sth4wlc", "modules__arrs_8F90.html#a25deca91911dc2223155e55c8b47f889", null ], diff --git a/modules__arrs_8F90_source.html b/modules__arrs_8F90_source.html index ca6fc0250..57c76f09a 100644 --- a/modules__arrs_8F90_source.html +++ b/modules__arrs_8F90_source.html @@ -26,7 +26,7 @@ @@ -251,135 +251,149 @@
                                                          454  integer, allocatable :: krp(:,:)
                                                          455 end module moda_nmikrp
                                                          456 
                                                          - -
                                                          467  integer :: nnrv
                                                          -
                                                          471  integer :: ibtnrv
                                                          -
                                                          476  integer :: ipfnrv
                                                          -
                                                          479  character*8, allocatable :: tagnrv(:)
                                                          -
                                                          481  integer, allocatable :: inodnrv(:)
                                                          -
                                                          483  integer*8, allocatable :: nrv(:)
                                                          -
                                                          487  integer, allocatable :: isnrv(:)
                                                          -
                                                          491  integer, allocatable :: ienrv(:)
                                                          -
                                                          492 end module moda_nrv203
                                                          -
                                                          493 
                                                          - -
                                                          514  integer, allocatable :: null(:)
                                                          -
                                                          515 end module moda_nulbfr
                                                          -
                                                          516 
                                                          - -
                                                          525  integer, allocatable :: iefxyn(:,:)
                                                          -
                                                          527  character*4, allocatable :: cmdscb(:)
                                                          -
                                                          529  character*4, allocatable :: cmdscd(:)
                                                          -
                                                          531  character*120, allocatable :: ceelem(:,:)
                                                          -
                                                          532 end module moda_rdmtb
                                                          -
                                                          533 
                                                          - -
                                                          542  integer :: nrst
                                                          -
                                                          544  integer, allocatable :: irnch(:)
                                                          -
                                                          546  integer, allocatable :: irbit(:)
                                                          -
                                                          548  character*10, allocatable :: crtag(:)
                                                          -
                                                          549 end module moda_rlccmn
                                                          -
                                                          550 
                                                          - -
                                                          561  integer, allocatable :: ivmnem(:)
                                                          -
                                                          563  character*8, allocatable :: cmnem(:)
                                                          -
                                                          565  integer :: ns01v = 0
                                                          -
                                                          566 end module moda_s01cm
                                                          -
                                                          567 
                                                          - -
                                                          587  integer, allocatable :: isc3(:)
                                                          -
                                                          589  character*8, allocatable :: tamnem(:)
                                                          -
                                                          590 end module moda_sc3bfr
                                                          -
                                                          591 
                                                          - -
                                                          604  integer, allocatable :: iolun(:)
                                                          -
                                                          609  integer, allocatable :: iomsg(:)
                                                          -
                                                          610 end module moda_stbfr
                                                          -
                                                          611 
                                                          - -
                                                          623  integer, allocatable :: iscodes(:)
                                                          -
                                                          624 end module moda_stcode
                                                          -
                                                          625 
                                                          - -
                                                          633  integer, allocatable :: ntba(:)
                                                          -
                                                          636  integer, allocatable :: ntbb(:)
                                                          -
                                                          639  integer, allocatable :: ntbd(:)
                                                          -
                                                          641  integer, allocatable :: mtab(:,:)
                                                          -
                                                          644  integer, allocatable :: idna(:,:,:)
                                                          -
                                                          646  Integer, allocatable :: idnb(:,:)
                                                          -
                                                          648  integer, allocatable :: idnd(:,:)
                                                          -
                                                          650  character*128, allocatable :: taba(:,:)
                                                          -
                                                          652  character*128, allocatable :: tabb(:,:)
                                                          -
                                                          654  character*600, allocatable :: tabd(:,:)
                                                          -
                                                          655 end module moda_tababd
                                                          -
                                                          656 
                                                          - -
                                                          666  integer :: ntab
                                                          -
                                                          668  character*10, allocatable :: tag(:)
                                                          -
                                                          683  character*3, allocatable :: typ(:)
                                                          -
                                                          685  integer, allocatable :: knt(:)
                                                          -
                                                          692  integer, allocatable :: jump(:)
                                                          -
                                                          699  integer, allocatable :: link(:)
                                                          -
                                                          706  integer, allocatable :: jmpb(:)
                                                          -
                                                          710  integer, allocatable :: ibt(:)
                                                          -
                                                          716  integer, allocatable :: irf(:)
                                                          -
                                                          722  integer, allocatable :: isc(:)
                                                          -
                                                          728  integer, allocatable :: itp(:)
                                                          -
                                                          732  real*8, allocatable :: vali(:)
                                                          -
                                                          738  integer, allocatable :: knti(:)
                                                          -
                                                          740  integer, allocatable :: iseq(:,:)
                                                          -
                                                          742  integer, allocatable :: jseq(:)
                                                          -
                                                          743 end module moda_tables
                                                          -
                                                          744 
                                                          - -
                                                          757  integer, allocatable :: luncpy(:)
                                                          -
                                                          758 end module moda_ufbcpl
                                                          -
                                                          759 
                                                          - -
                                                          771  integer, allocatable :: msgunp(:)
                                                          -
                                                          772 end module moda_unptyp
                                                          -
                                                          773 
                                                          - -
                                                          781  integer, allocatable :: nbit(:)
                                                          -
                                                          783  integer, allocatable :: mbit(:)
                                                          -
                                                          784 end module moda_usrbit
                                                          -
                                                          785 
                                                          - -
                                                          793  integer, allocatable :: nval(:)
                                                          -
                                                          795  integer, target, allocatable :: inv(:,:)
                                                          -
                                                          798  integer, allocatable :: nrfelm(:,:)
                                                          -
                                                          800  real*8, target, allocatable :: val(:,:)
                                                          -
                                                          801 end module moda_usrint
                                                          + +
                                                          466  integer :: nnrv
                                                          +
                                                          470  integer :: ibtnrv
                                                          +
                                                          475  integer :: ipfnrv
                                                          +
                                                          478  character*8, allocatable :: tagnrv(:)
                                                          +
                                                          480  integer, allocatable :: inodnrv(:)
                                                          +
                                                          482  integer*8, allocatable :: nrv(:)
                                                          +
                                                          486  integer, allocatable :: isnrv(:)
                                                          +
                                                          490  integer, allocatable :: ienrv(:)
                                                          +
                                                          491 end module moda_nrv203
                                                          +
                                                          492 
                                                          + +
                                                          501  integer :: icdw
                                                          +
                                                          504  integer :: icsc
                                                          +
                                                          507  integer :: icrv
                                                          +
                                                          510  integer :: incw
                                                          +
                                                          511 end module moda_tabccc
                                                          +
                                                          512 
                                                          + +
                                                          533  integer, allocatable :: null(:)
                                                          +
                                                          534 end module moda_nulbfr
                                                          +
                                                          535 
                                                          + +
                                                          544  integer, allocatable :: iefxyn(:,:)
                                                          +
                                                          546  character*4, allocatable :: cmdscb(:)
                                                          +
                                                          548  character*4, allocatable :: cmdscd(:)
                                                          +
                                                          550  character*120, allocatable :: ceelem(:,:)
                                                          +
                                                          551 end module moda_rdmtb
                                                          +
                                                          552 
                                                          + +
                                                          561  integer :: nrst
                                                          +
                                                          563  integer, allocatable :: irnch(:)
                                                          +
                                                          565  integer, allocatable :: irbit(:)
                                                          +
                                                          567  character*10, allocatable :: crtag(:)
                                                          +
                                                          568 end module moda_rlccmn
                                                          +
                                                          569 
                                                          + +
                                                          580  integer, allocatable :: ivmnem(:)
                                                          +
                                                          582  character*8, allocatable :: cmnem(:)
                                                          +
                                                          584  integer :: ns01v = 0
                                                          +
                                                          585 end module moda_s01cm
                                                          +
                                                          586 
                                                          + +
                                                          606  integer, allocatable :: isc3(:)
                                                          +
                                                          608  character*8, allocatable :: tamnem(:)
                                                          +
                                                          609 end module moda_sc3bfr
                                                          +
                                                          610 
                                                          + +
                                                          623  integer, allocatable :: iolun(:)
                                                          +
                                                          628  integer, allocatable :: iomsg(:)
                                                          +
                                                          629 end module moda_stbfr
                                                          +
                                                          630 
                                                          + +
                                                          642  integer, allocatable :: iscodes(:)
                                                          +
                                                          643 end module moda_stcode
                                                          +
                                                          644 
                                                          + +
                                                          652  integer, allocatable :: ntba(:)
                                                          +
                                                          655  integer, allocatable :: ntbb(:)
                                                          +
                                                          658  integer, allocatable :: ntbd(:)
                                                          +
                                                          660  integer, allocatable :: mtab(:,:)
                                                          +
                                                          663  integer, allocatable :: idna(:,:,:)
                                                          +
                                                          665  Integer, allocatable :: idnb(:,:)
                                                          +
                                                          667  integer, allocatable :: idnd(:,:)
                                                          +
                                                          669  character*128, allocatable :: taba(:,:)
                                                          +
                                                          671  character*128, allocatable :: tabb(:,:)
                                                          +
                                                          673  character*600, allocatable :: tabd(:,:)
                                                          +
                                                          674 end module moda_tababd
                                                          +
                                                          675 
                                                          + +
                                                          683  integer :: ntab
                                                          +
                                                          685  character*10, allocatable :: tag(:)
                                                          +
                                                          700  character*3, allocatable :: typ(:)
                                                          +
                                                          702  integer, allocatable :: knt(:)
                                                          +
                                                          709  integer, allocatable :: jump(:)
                                                          +
                                                          716  integer, allocatable :: link(:)
                                                          +
                                                          723  integer, allocatable :: jmpb(:)
                                                          +
                                                          727  integer, allocatable :: ibt(:)
                                                          +
                                                          733  integer, allocatable :: irf(:)
                                                          +
                                                          739  integer, allocatable :: isc(:)
                                                          +
                                                          745  integer, allocatable :: itp(:)
                                                          +
                                                          749  real*8, allocatable :: vali(:)
                                                          +
                                                          755  integer, allocatable :: knti(:)
                                                          +
                                                          757  integer, allocatable :: iseq(:,:)
                                                          +
                                                          759  integer, allocatable :: jseq(:)
                                                          +
                                                          760 end module moda_tables
                                                          +
                                                          761 
                                                          + +
                                                          774  integer, allocatable :: luncpy(:)
                                                          +
                                                          775 end module moda_ufbcpl
                                                          +
                                                          776 
                                                          + +
                                                          788  integer, allocatable :: msgunp(:)
                                                          +
                                                          789 end module moda_unptyp
                                                          +
                                                          790 
                                                          + +
                                                          798  integer, allocatable :: nbit(:)
                                                          +
                                                          800  integer, allocatable :: mbit(:)
                                                          +
                                                          801 end module moda_usrbit
                                                          802 
                                                          - -
                                                          810  integer, allocatable :: iutmp(:,:)
                                                          -
                                                          812  real*8, allocatable :: vutmp(:,:)
                                                          -
                                                          813 end module moda_usrtmp
                                                          -
                                                          814 
                                                          -
                                                          826 module moda_xtab
                                                          -
                                                          831  logical, allocatable :: xtab(:)
                                                          -
                                                          832 end module moda_xtab
                                                          -
                                                          833 
                                                          - -
                                                          843  character*1 :: ctrt = 'N'
                                                          -
                                                          845  integer :: itryr
                                                          -
                                                          847  integer :: itrmo
                                                          -
                                                          849  integer :: itrdy
                                                          -
                                                          851  integer :: itrhr
                                                          -
                                                          853  integer :: itrmi
                                                          -
                                                          854 end module moda_tnkrcp
                                                          -
                                                          855 
                                                          - -
                                                          864  character :: csmf = 'N'
                                                          -
                                                          865 end module moda_msgstd
                                                          -
                                                          866 
                                                          - -
                                                          875  character :: ccmf = 'N'
                                                          -
                                                          876 end module moda_msgcmp
                                                          -
                                                          877 
                                                          - -
                                                          887  character :: cdmf = 'N'
                                                          -
                                                          888 end module moda_tablef
                                                          + +
                                                          810  integer, allocatable :: nval(:)
                                                          +
                                                          812  integer, target, allocatable :: inv(:,:)
                                                          +
                                                          815  integer, allocatable :: nrfelm(:,:)
                                                          +
                                                          817  real*8, target, allocatable :: val(:,:)
                                                          +
                                                          818 end module moda_usrint
                                                          +
                                                          819 
                                                          + +
                                                          827  integer, allocatable :: iutmp(:,:)
                                                          +
                                                          829  real*8, allocatable :: vutmp(:,:)
                                                          +
                                                          830 end module moda_usrtmp
                                                          +
                                                          831 
                                                          +
                                                          843 module moda_xtab
                                                          +
                                                          848  logical, allocatable :: xtab(:)
                                                          +
                                                          849 end module moda_xtab
                                                          +
                                                          850 
                                                          + +
                                                          860  character*1 :: ctrt = 'N'
                                                          +
                                                          862  integer :: itryr
                                                          +
                                                          864  integer :: itrmo
                                                          +
                                                          866  integer :: itrdy
                                                          +
                                                          868  integer :: itrhr
                                                          +
                                                          870  integer :: itrmi
                                                          +
                                                          871 end module moda_tnkrcp
                                                          +
                                                          872 
                                                          + +
                                                          881  character :: csmf = 'N'
                                                          +
                                                          882 end module moda_msgstd
                                                          +
                                                          883 
                                                          + +
                                                          892  character :: ccmf = 'N'
                                                          +
                                                          893 end module moda_msgcmp
                                                          +
                                                          894 
                                                          + +
                                                          904  character :: cdmf = 'N'
                                                          +
                                                          905 end module moda_tablef
                                                          +
                                                          906 
                                                          + +
                                                          914  integer :: nrpl = 0
                                                          +
                                                          916  integer :: nmrg = 0
                                                          +
                                                          918  integer :: namb = 0
                                                          +
                                                          920  integer :: ntot = 0
                                                          +
                                                          921 end module moda_mrgcom
                                                          Declare arrays and variables used to store BUFR messages internally for multiple file IDs.
                                                          integer, dimension(:), allocatable ibay
                                                          Current data subset.
                                                          integer ibit
                                                          Bit pointer within ibay.
                                                          @@ -457,8 +471,13 @@
                                                          integer, dimension(:), allocatable mgwa
                                                          Temporary working copy of BUFR message.
                                                          Declare an array used by various subroutines and functions to hold a temporary working copy of a BUFR...
                                                          integer, dimension(:), allocatable mgwb
                                                          Temporary working copy of BUFR message.
                                                          -
                                                          Declare a variable used to indicate whether output BUFR messages should be compressed.
                                                          -
                                                          character ccmf
                                                          Flag indicating whether BUFR output messages are to be compressed; this variable is initialized to a ...
                                                          +
                                                          Declare variables for use when merging parts of different data subsets.
                                                          +
                                                          integer nmrg
                                                          Number of merges.
                                                          +
                                                          integer ntot
                                                          Total number of calls to subroutine invmrg().
                                                          +
                                                          integer namb
                                                          Number of potential merges that weren't made because of ambiguities.
                                                          +
                                                          integer nrpl
                                                          Number of expansions of Table D mnemonics using short (1-bit) delayed replication.
                                                          +
                                                          Declare a variable used to indicate whether output BUFR messages should be compressed.
                                                          +
                                                          character ccmf
                                                          Flag indicating whether BUFR output messages are to be compressed; this variable is initialized to a ...
                                                          Declare arrays used to store information about the current BUFR message that is in the process of bei...
                                                          integer, dimension(:), allocatable inode
                                                          Table A mnemonic for type of BUFR message.
                                                          integer, dimension(:), allocatable idate
                                                          Section 1 date-time of message.
                                                          @@ -483,8 +502,8 @@
                                                          integer, dimension(:), allocatable mdx
                                                          DX BUFR table messages read from one or more BUFR files, for use in decoding the messages in msgs.
                                                          integer mxdxw
                                                          Maximum number of entries that can be stored within mdx.
                                                          integer, dimension(:), allocatable ipdxm
                                                          Pointers to the beginning of each message within mdx.
                                                          -
                                                          Declare a variable used to indicate whether output BUFR messages should be standardized.
                                                          -
                                                          character csmf
                                                          Flag indicating whether BUFR output messages are to be standardized; this variable is initialized to ...
                                                          +
                                                          Declare a variable used to indicate whether output BUFR messages should be standardized.
                                                          +
                                                          character csmf
                                                          Flag indicating whether BUFR output messages are to be standardized; this variable is initialized to ...
                                                          Declare arrays and variables used to store master Table B and Table D entries within internal memory.
                                                          integer, dimension(:), allocatable idfxyn
                                                          WMO bit-wise representations of FXY numbers for master Table D.
                                                          character, dimension(:,:), allocatable cbunit
                                                          Units corresponding to ibfxyn.
                                                          @@ -504,95 +523,100 @@
                                                          integer, dimension(:,:), allocatable krp
                                                          Replication counts corresponding to nem:
                                                          integer, dimension(:,:), allocatable irp
                                                          Replication indicators corresponding to nem:
                                                          character *8, dimension(:,:), allocatable nem
                                                          Child mnemonics within Table D sequences.
                                                          -
                                                          Declare arrays and variables for use with any 2-03-YYY (change reference value) operators present wit...
                                                          -
                                                          integer, dimension(:), allocatable ienrv
                                                          End of entry range in jump/link table, within which the corresponding new reference value in nrv will...
                                                          -
                                                          character *8, dimension(:), allocatable tagnrv
                                                          Table B mnemonic to which the corresponding new reference value in nrv applies.
                                                          -
                                                          integer, dimension(:), allocatable isnrv
                                                          Start of entry range in jump/link table, within which the corresponding new reference value in nrv wi...
                                                          -
                                                          integer nnrv
                                                          Number of entries in the jump/link table which contain new reference values (up to a maximum of mxnrv...
                                                          -
                                                          integer *8, dimension(:), allocatable nrv
                                                          New reference values corresponding to inodnrv.
                                                          -
                                                          integer ipfnrv
                                                          A number between 1 and nnrv, denoting the first entry within the module arrays which applies to the c...
                                                          -
                                                          integer, dimension(:), allocatable inodnrv
                                                          Entries within jump/link table which contain new reference values.
                                                          -
                                                          integer ibtnrv
                                                          Number of bits in Section 4 occupied by each new reference value for the current 2-03-YYY operator in...
                                                          -
                                                          Declare an array used to store a switch for each file ID, indicating whether any BUFR messages should...
                                                          -
                                                          integer, dimension(:), allocatable null
                                                          Output switch for each file ID:
                                                          -
                                                          Declare arrays and variables used to store master Table B and Table D entries within internal memory.
                                                          -
                                                          character *120, dimension(:,:), allocatable ceelem
                                                          Element names corresponding to iefxyn.
                                                          -
                                                          character *4, dimension(:), allocatable cmdscb
                                                          Descriptor codes for Table B elements.
                                                          -
                                                          integer, dimension(:,:), allocatable iefxyn
                                                          WMO bit-wise representations of child descriptors of Table D sequences.
                                                          -
                                                          character *4, dimension(:), allocatable cmdscd
                                                          Descriptor codes for Table D sequences.
                                                          -
                                                          Declare arrays and variables needed to store information about long character strings (greater than 8...
                                                          -
                                                          integer nrst
                                                          Number of long character strings in data subset.
                                                          -
                                                          integer, dimension(:), allocatable irnch
                                                          Lengths (in bytes) of long character strings.
                                                          -
                                                          integer, dimension(:), allocatable irbit
                                                          Pointers in data subset to first bits of long character strings.
                                                          -
                                                          character *10, dimension(:), allocatable crtag
                                                          Table B mnemonics associated with long character strings.
                                                          -
                                                          Declare arrays and variables used to store custom values for certain mnemonics within Sections 0 and ...
                                                          -
                                                          integer, dimension(:), allocatable ivmnem
                                                          Custom values for use within Sections 0 and 1 of all future output BUFR messages written to all Fortr...
                                                          -
                                                          integer ns01v
                                                          Number of custom values stored.
                                                          -
                                                          character *8, dimension(:), allocatable cmnem
                                                          Section 0 and 1 mnemonics corresponding to ivmnem.
                                                          +
                                                          Declare arrays and variables for use with any 2-03-YYY (change reference value) operators present wit...
                                                          +
                                                          integer, dimension(:), allocatable ienrv
                                                          End of entry range in jump/link table, within which the corresponding new reference value in nrv will...
                                                          +
                                                          character *8, dimension(:), allocatable tagnrv
                                                          Table B mnemonic to which the corresponding new reference value in nrv applies.
                                                          +
                                                          integer, dimension(:), allocatable isnrv
                                                          Start of entry range in jump/link table, within which the corresponding new reference value in nrv wi...
                                                          +
                                                          integer nnrv
                                                          Number of entries in the jump/link table which contain new reference values (up to a maximum of mxnrv...
                                                          +
                                                          integer *8, dimension(:), allocatable nrv
                                                          New reference values corresponding to inodnrv.
                                                          +
                                                          integer ipfnrv
                                                          A number between 1 and nnrv, denoting the first entry within the module arrays which applies to the c...
                                                          +
                                                          integer, dimension(:), allocatable inodnrv
                                                          Entries within jump/link table which contain new reference values.
                                                          +
                                                          integer ibtnrv
                                                          Number of bits in Section 4 occupied by each new reference value for the current 2-03-YYY operator in...
                                                          +
                                                          Declare an array used to store a switch for each file ID, indicating whether any BUFR messages should...
                                                          +
                                                          integer, dimension(:), allocatable null
                                                          Output switch for each file ID:
                                                          +
                                                          Declare arrays and variables used to store master Table B and Table D entries within internal memory.
                                                          +
                                                          character *120, dimension(:,:), allocatable ceelem
                                                          Element names corresponding to iefxyn.
                                                          +
                                                          character *4, dimension(:), allocatable cmdscb
                                                          Descriptor codes for Table B elements.
                                                          +
                                                          integer, dimension(:,:), allocatable iefxyn
                                                          WMO bit-wise representations of child descriptors of Table D sequences.
                                                          +
                                                          character *4, dimension(:), allocatable cmdscd
                                                          Descriptor codes for Table D sequences.
                                                          +
                                                          Declare arrays and variables needed to store information about long character strings (greater than 8...
                                                          +
                                                          integer nrst
                                                          Number of long character strings in data subset.
                                                          +
                                                          integer, dimension(:), allocatable irnch
                                                          Lengths (in bytes) of long character strings.
                                                          +
                                                          integer, dimension(:), allocatable irbit
                                                          Pointers in data subset to first bits of long character strings.
                                                          +
                                                          character *10, dimension(:), allocatable crtag
                                                          Table B mnemonics associated with long character strings.
                                                          +
                                                          Declare arrays and variables used to store custom values for certain mnemonics within Sections 0 and ...
                                                          +
                                                          integer, dimension(:), allocatable ivmnem
                                                          Custom values for use within Sections 0 and 1 of all future output BUFR messages written to all Fortr...
                                                          +
                                                          integer ns01v
                                                          Number of custom values stored.
                                                          +
                                                          character *8, dimension(:), allocatable cmnem
                                                          Section 0 and 1 mnemonics corresponding to ivmnem.
                                                          Declare arrays used by various subroutines and functions to hold a temporary working copy of a Sectio...
                                                          integer, dimension(:), allocatable ids3
                                                          Temporary working copy of Section 3 descriptor list in integer form.
                                                          character *6, dimension(:), allocatable cds3
                                                          Temporary working copy of Section 3 descriptor list in character form.
                                                          -
                                                          Declare an array used to store a switch for each file ID, indicating whether BUFR messages read from ...
                                                          -
                                                          character *8, dimension(:), allocatable tamnem
                                                          Table A mnemonic most recently read from each file ID, if isc3 = 1 for that stream.
                                                          -
                                                          integer, dimension(:), allocatable isc3
                                                          Section 3 switch for each file ID:
                                                          -
                                                          Declare arrays used to store file and message status indicators for all logical units that have been ...
                                                          -
                                                          integer, dimension(:), allocatable iolun
                                                          File status indicators.
                                                          -
                                                          integer, dimension(:), allocatable iomsg
                                                          Message status indicator corresponding to iolun, denoting whether a BUFR message is currently open wi...
                                                          -
                                                          Declare an array used to store a status code for each file ID if an error or other abnormal result oc...
                                                          -
                                                          integer, dimension(:), allocatable iscodes
                                                          Abnormal status codes.
                                                          -
                                                          Declare arrays and variables used to store DX BUFR tables internally for multiple file IDs.
                                                          -
                                                          integer, dimension(:), allocatable ntba
                                                          Number of Table A entries for each file ID (up to a maximum of maxtba, whose value is stored in array...
                                                          -
                                                          character *600, dimension(:,:), allocatable tabd
                                                          Table D entries for each file ID.
                                                          -
                                                          character *128, dimension(:,:), allocatable taba
                                                          Table A entries for each file ID.
                                                          -
                                                          integer, dimension(:,:), allocatable mtab
                                                          Entries within jump/link table corresponding to taba.
                                                          -
                                                          integer, dimension(:,:,:), allocatable idna
                                                          Message types (in array element 1) and subtypes (in array element 2) corresponding to taba.
                                                          -
                                                          integer, dimension(:), allocatable ntbd
                                                          Number of Table D entries for each file ID (up to a maximum of maxtbd, whose value is stored in array...
                                                          -
                                                          integer, dimension(:), allocatable ntbb
                                                          Number of Table B entries for each file ID (up to a maximum of maxtbb, whose value is stored in array...
                                                          -
                                                          integer, dimension(:,:), allocatable idnd
                                                          WMO bit-wise representations of the FXY values corresponding to tabd.
                                                          -
                                                          integer, dimension(:,:), allocatable idnb
                                                          WMO bit-wise representations of the FXY values corresponding to tabb.
                                                          -
                                                          character *128, dimension(:,:), allocatable tabb
                                                          Table B entries for each file ID.
                                                          -
                                                          Declare a variable used to indicate whether master code and flag tables should be read.
                                                          -
                                                          character cdmf
                                                          Flag indicating whether to include code and flag table information during reads of master BUFR tables...
                                                          -
                                                          Declare arrays and variables used to store the internal jump/link table.
                                                          -
                                                          integer, dimension(:), allocatable jseq
                                                          Temporary storage used in expanding sequences.
                                                          -
                                                          integer, dimension(:), allocatable irf
                                                          Reference values corresponding to tag and typ:
                                                          -
                                                          integer, dimension(:,:), allocatable iseq
                                                          Temporary storage used in expanding sequences.
                                                          -
                                                          integer, dimension(:), allocatable isc
                                                          Scale factors corresponding to tag and typ:
                                                          -
                                                          integer, dimension(:), allocatable ibt
                                                          Bit widths corresponding to tag and typ:
                                                          -
                                                          integer, dimension(:), allocatable knt
                                                          Temporary storage used in calculating delayed replication counts.
                                                          -
                                                          real *8, dimension(:), allocatable vali
                                                          Initialized data values corresponding to typ:
                                                          -
                                                          character *3, dimension(:), allocatable typ
                                                          Type indicators corresponding to tag:
                                                          -
                                                          integer, dimension(:), allocatable jmpb
                                                          Jump backward indices corresponding to tag and typ:
                                                          -
                                                          character *10, dimension(:), allocatable tag
                                                          Mnemonics in the jump/link table.
                                                          -
                                                          integer ntab
                                                          Number of entries in the jump/link table.
                                                          -
                                                          integer, dimension(:), allocatable jump
                                                          Jump forward indices corresponding to tag and typ:
                                                          -
                                                          integer, dimension(:), allocatable itp
                                                          Integer type values corresponding to typ:
                                                          -
                                                          integer, dimension(:), allocatable link
                                                          Link indices corresponding to tag, typ and jmpb:
                                                          -
                                                          integer, dimension(:), allocatable knti
                                                          Initialized replication counts corresponding to typ and jump:
                                                          -
                                                          Declare variables used to store tank receipt time information within Section 1 of BUFR messages.
                                                          -
                                                          integer itrhr
                                                          Tank receipt hour.
                                                          -
                                                          integer itryr
                                                          Tank receipt year.
                                                          -
                                                          integer itrdy
                                                          Tank receipt day.
                                                          -
                                                          character *1 ctrt
                                                          Flag indicating whether tank receipt times are to be included within output BUFR messages; this varia...
                                                          -
                                                          integer itrmi
                                                          Tank receipt minute.
                                                          -
                                                          integer itrmo
                                                          Tank receipt month.
                                                          -
                                                          Declare an array used to store, for each file ID, the logical unit number corresponding to a separate...
                                                          -
                                                          integer, dimension(:), allocatable luncpy
                                                          Logical unit numbers used to copy long character strings between BUFR data subsets.
                                                          -
                                                          Declare an array used to store, for each file ID from which a BUFR message is currently being read as...
                                                          -
                                                          integer, dimension(:), allocatable msgunp
                                                          Flag indicating how to unpack data subsets from BUFR message:
                                                          -
                                                          Declare arrays for internal storage of pointers to BUFR data subset values.
                                                          -
                                                          integer, dimension(:), allocatable nbit
                                                          Length (in bits) of each packed data value in data subset.
                                                          -
                                                          integer, dimension(:), allocatable mbit
                                                          Pointer in data subset to first bit of each packed data value.
                                                          -
                                                          Declare arrays used to store data values and associated metadata for the current BUFR data subset in ...
                                                          -
                                                          integer, dimension(:), allocatable nval
                                                          Number of data values in BUFR data subset.
                                                          -
                                                          real *8, dimension(:,:), allocatable, target val
                                                          Data values.
                                                          -
                                                          integer, dimension(:,:), allocatable, target inv
                                                          Inventory pointer which links each data value to its corresponding node in the internal jump/link tab...
                                                          -
                                                          integer, dimension(:,:), allocatable nrfelm
                                                          Referenced data value, for data values which refer to a previous data value in the BUFR data subset v...
                                                          -
                                                          Declare arrays used in subroutine rcstpl() to store subset segments that are being copied from a subs...
                                                          -
                                                          integer, dimension(:,:), allocatable iutmp
                                                          inv array elements for new sections of a growing subset buffer.
                                                          -
                                                          real *8, dimension(:,:), allocatable vutmp
                                                          val array elements for new sections of a growing subset buffer.
                                                          -
                                                          Declare an array used to track, for each file ID, whether the DX BUFR table associated with the corre...
                                                          -
                                                          logical, dimension(:), allocatable xtab
                                                          Tracking index for each file ID.
                                                          +
                                                          Declare an array used to store a switch for each file ID, indicating whether BUFR messages read from ...
                                                          +
                                                          character *8, dimension(:), allocatable tamnem
                                                          Table A mnemonic most recently read from each file ID, if isc3 = 1 for that stream.
                                                          +
                                                          integer, dimension(:), allocatable isc3
                                                          Section 3 switch for each file ID:
                                                          +
                                                          Declare arrays used to store file and message status indicators for all logical units that have been ...
                                                          +
                                                          integer, dimension(:), allocatable iolun
                                                          File status indicators.
                                                          +
                                                          integer, dimension(:), allocatable iomsg
                                                          Message status indicator corresponding to iolun, denoting whether a BUFR message is currently open wi...
                                                          +
                                                          Declare an array used to store a status code for each file ID if an error or other abnormal result oc...
                                                          +
                                                          integer, dimension(:), allocatable iscodes
                                                          Abnormal status codes.
                                                          +
                                                          Declare arrays and variables used to store DX BUFR tables internally for multiple file IDs.
                                                          +
                                                          integer, dimension(:), allocatable ntba
                                                          Number of Table A entries for each file ID (up to a maximum of maxtba, whose value is stored in array...
                                                          +
                                                          character *600, dimension(:,:), allocatable tabd
                                                          Table D entries for each file ID.
                                                          +
                                                          character *128, dimension(:,:), allocatable taba
                                                          Table A entries for each file ID.
                                                          +
                                                          integer, dimension(:,:), allocatable mtab
                                                          Entries within jump/link table corresponding to taba.
                                                          +
                                                          integer, dimension(:,:,:), allocatable idna
                                                          Message types (in array element 1) and subtypes (in array element 2) corresponding to taba.
                                                          +
                                                          integer, dimension(:), allocatable ntbd
                                                          Number of Table D entries for each file ID (up to a maximum of maxtbd, whose value is stored in array...
                                                          +
                                                          integer, dimension(:), allocatable ntbb
                                                          Number of Table B entries for each file ID (up to a maximum of maxtbb, whose value is stored in array...
                                                          +
                                                          integer, dimension(:,:), allocatable idnd
                                                          WMO bit-wise representations of the FXY values corresponding to tabd.
                                                          +
                                                          integer, dimension(:,:), allocatable idnb
                                                          WMO bit-wise representations of the FXY values corresponding to tabb.
                                                          +
                                                          character *128, dimension(:,:), allocatable tabb
                                                          Table B entries for each file ID.
                                                          +
                                                          Declare variables for use with certain Table C operators in the internal jump/link table.
                                                          +
                                                          integer icsc
                                                          Number by which to modify the scale of subsequent jump/link table mnemonics whose type indicator is "...
                                                          +
                                                          integer icdw
                                                          Number of bits by which to modify the data width of subsequent jump/link table mnemonics whose type i...
                                                          +
                                                          integer icrv
                                                          Factor by which to multiply the reference value of subsequent jump/link table mnemonics whose type in...
                                                          +
                                                          integer incw
                                                          New data width (in bytes) for subsequent jump/link table mnemonics whose type indicator is "CHR"; set...
                                                          +
                                                          Declare a variable used to indicate whether master code and flag tables should be read.
                                                          +
                                                          character cdmf
                                                          Flag indicating whether to include code and flag table information during reads of master BUFR tables...
                                                          +
                                                          Declare arrays and variables used to store the internal jump/link table.
                                                          +
                                                          integer, dimension(:), allocatable jseq
                                                          Temporary storage used in expanding sequences.
                                                          +
                                                          integer, dimension(:), allocatable irf
                                                          Reference values corresponding to tag and typ:
                                                          +
                                                          integer, dimension(:,:), allocatable iseq
                                                          Temporary storage used in expanding sequences.
                                                          +
                                                          integer, dimension(:), allocatable isc
                                                          Scale factors corresponding to tag and typ:
                                                          +
                                                          integer, dimension(:), allocatable ibt
                                                          Bit widths corresponding to tag and typ:
                                                          +
                                                          integer, dimension(:), allocatable knt
                                                          Temporary storage used in calculating delayed replication counts.
                                                          +
                                                          real *8, dimension(:), allocatable vali
                                                          Initialized data values corresponding to typ:
                                                          +
                                                          character *3, dimension(:), allocatable typ
                                                          Type indicators corresponding to tag:
                                                          +
                                                          integer, dimension(:), allocatable jmpb
                                                          Jump backward indices corresponding to tag and typ:
                                                          +
                                                          character *10, dimension(:), allocatable tag
                                                          Mnemonics in the jump/link table.
                                                          +
                                                          integer ntab
                                                          Number of entries in the jump/link table.
                                                          +
                                                          integer, dimension(:), allocatable jump
                                                          Jump forward indices corresponding to tag and typ:
                                                          +
                                                          integer, dimension(:), allocatable itp
                                                          Integer type values corresponding to typ:
                                                          +
                                                          integer, dimension(:), allocatable link
                                                          Link indices corresponding to tag, typ and jmpb:
                                                          +
                                                          integer, dimension(:), allocatable knti
                                                          Initialized replication counts corresponding to typ and jump:
                                                          +
                                                          Declare variables used to store tank receipt time information within Section 1 of BUFR messages.
                                                          +
                                                          integer itrhr
                                                          Tank receipt hour.
                                                          +
                                                          integer itryr
                                                          Tank receipt year.
                                                          +
                                                          integer itrdy
                                                          Tank receipt day.
                                                          +
                                                          character *1 ctrt
                                                          Flag indicating whether tank receipt times are to be included within output BUFR messages; this varia...
                                                          +
                                                          integer itrmi
                                                          Tank receipt minute.
                                                          +
                                                          integer itrmo
                                                          Tank receipt month.
                                                          +
                                                          Declare an array used to store, for each file ID, the logical unit number corresponding to a separate...
                                                          +
                                                          integer, dimension(:), allocatable luncpy
                                                          Logical unit numbers used to copy long character strings between BUFR data subsets.
                                                          +
                                                          Declare an array used to store, for each file ID from which a BUFR message is currently being read as...
                                                          +
                                                          integer, dimension(:), allocatable msgunp
                                                          Flag indicating how to unpack data subsets from BUFR message:
                                                          +
                                                          Declare arrays for internal storage of pointers to BUFR data subset values.
                                                          +
                                                          integer, dimension(:), allocatable nbit
                                                          Length (in bits) of each packed data value in data subset.
                                                          +
                                                          integer, dimension(:), allocatable mbit
                                                          Pointer in data subset to first bit of each packed data value.
                                                          +
                                                          Declare arrays used to store data values and associated metadata for the current BUFR data subset in ...
                                                          +
                                                          integer, dimension(:), allocatable nval
                                                          Number of data values in BUFR data subset.
                                                          +
                                                          real *8, dimension(:,:), allocatable, target val
                                                          Data values.
                                                          +
                                                          integer, dimension(:,:), allocatable, target inv
                                                          Inventory pointer which links each data value to its corresponding node in the internal jump/link tab...
                                                          +
                                                          integer, dimension(:,:), allocatable nrfelm
                                                          Referenced data value, for data values which refer to a previous data value in the BUFR data subset v...
                                                          +
                                                          Declare arrays used in subroutine rcstpl() to store subset segments that are being copied from a subs...
                                                          +
                                                          integer, dimension(:,:), allocatable iutmp
                                                          inv array elements for new sections of a growing subset buffer.
                                                          +
                                                          real *8, dimension(:,:), allocatable vutmp
                                                          val array elements for new sections of a growing subset buffer.
                                                          +
                                                          Declare an array used to track, for each file ID, whether the DX BUFR table associated with the corre...
                                                          +
                                                          logical, dimension(:), allocatable xtab
                                                          Tracking index for each file ID.
                                                          diff --git a/modules__vars_8F90.html b/modules__vars_8F90.html index c1e2fbb7c..e4c2fc8af 100644 --- a/modules__vars_8F90.html +++ b/modules__vars_8F90.html @@ -26,7 +26,7 @@ @@ -96,21 +96,63 @@
                                                          NCEPLIBS-bufr -  12.1.0 +  12.2.0
                                                          (integer, dimension(*), intent(in) integer, intent(in)  lunit,
                                                          integer, dimension(*), intent(in) integer, intent(in)  lundx,
                                                          integer, dimension(*), intent(in) integer, intent(in)  inew,
                                                          integer, dimension(*), intent(out) integer, intent(out)  iret,
                                                          NCEPLIBS-bufr -  12.1.0 +  12.2.0
                                                          NCEPLIBS-bufr -  12.1.0 +  12.2.0

                                                          Functions/Subroutines

                                                          subroutine bfrini
                                                           Initialize numerous global variables and arrays within internal modules and COMMON blocks throughout the NCEPLIBS-bufr software. More...
                                                           Initialize numerous global variables and arrays within internal modules and common blocks throughout the NCEPLIBS-bufr software. More...
                                                           
                                                          subroutine bvers (cverstr)
                                                           Get the version number of the NCEPLIBS-bufr software. More...
                                                          NCEPLIBS-bufr -  12.1.0 +  12.2.0
                                                          NCEPLIBS-bufr -  12.1.0 +  12.2.0
                                                          NCEPLIBS-bufr -  12.1.0 +  12.2.0
                                                          NCEPLIBS-bufr -  12.1.0 +  12.2.0
                                                          module  moda_mgwb
                                                           Declare an array used by various subroutines and functions to hold a temporary working copy of a BUFR message.
                                                           
                                                          module  moda_mrgcom
                                                           Declare variables for use when merging parts of different data subsets.
                                                           
                                                          module  moda_msgcmp
                                                           Declare a variable used to indicate whether output BUFR messages should be compressed.
                                                           
                                                          module  moda_tababd
                                                           Declare arrays and variables used to store DX BUFR tables internally for multiple file IDs.
                                                           
                                                          module  moda_tabccc
                                                           Declare variables for use with certain Table C operators in the internal jump/link table.
                                                           
                                                          module  moda_tablef
                                                           Declare a variable used to indicate whether master code and flag tables should be read.
                                                           
                                                          integer moda_nrv203::ibtnrv
                                                           Number of bits in Section 4 occupied by each new reference value for the current 2-03-YYY operator in scope; set to 0 if no such operator is currently in scope. More...
                                                           
                                                          integer moda_tabccc::icdw
                                                           Number of bits by which to modify the data width of subsequent jump/link table mnemonics whose type indicator is "NUM"; set to 0 unless a 2-01-YYY or 2-07-YYY operator is in effect. More...
                                                           
                                                          integer, dimension(:), allocatable moda_msgmem::icdxts
                                                           Number of consecutive messages within mdx which constitute each DX BUFR table, beginning with the corresponding ifdxts. More...
                                                           
                                                          integer moda_tabccc::icrv
                                                           Factor by which to multiply the reference value of subsequent jump/link table mnemonics whose type indicator is "NUM"; set to 1 unless a 2-07-YYY operator is in effect. More...
                                                           
                                                          integer moda_tabccc::icsc
                                                           Number by which to modify the scale of subsequent jump/link table mnemonics whose type indicator is "NUM"; set to 0 unless a 2-02-YYY or 2-07-YYY operator is in effect. More...
                                                           
                                                          integer, dimension(:), allocatable moda_msgcwd::idate
                                                           Section 1 date-time of message. More...
                                                           
                                                          integer *8 moda_comprs::incr
                                                           Increment used when compressing non-character data values. More...
                                                           
                                                          integer moda_tabccc::incw
                                                           New data width (in bytes) for subsequent jump/link table mnemonics whose type indicator is "CHR"; set to 0 unless a 2-08-YYY operator is in effect. More...
                                                           
                                                          integer, dimension(:), allocatable moda_msgcwd::inode
                                                           Table A mnemonic for type of BUFR message. More...
                                                           
                                                          integer moda_msgmem::mxdxw
                                                           Maximum number of entries that can be stored within mdx. More...
                                                           
                                                          integer moda_mrgcom::namb = 0
                                                           Number of potential merges that weren't made because of ambiguities. More...
                                                           
                                                          integer, dimension(:), allocatable moda_usrbit::nbit
                                                           Length (in bits) of each packed data value in data subset. More...
                                                           
                                                          integer moda_h4wlc::nh4wlc = 0
                                                           Number of long character strings being stored. More...
                                                           
                                                          integer moda_mrgcom::nmrg = 0
                                                           Number of merges. More...
                                                           
                                                          integer, dimension(:), allocatable moda_msgcwd::nmsg
                                                           Current message pointer within logical unit. More...
                                                           
                                                          integer moda_comprx::nrow
                                                           Number of data values for each data subset in message. More...
                                                           
                                                          integer moda_mrgcom::nrpl = 0
                                                           Number of expansions of Table D mnemonics using short (1-bit) delayed replication. More...
                                                           
                                                          integer moda_rlccmn::nrst
                                                           Number of long character strings in data subset. More...
                                                           
                                                          integer, dimension(:), allocatable moda_bitmaps::ntco
                                                           Number of Table C operators (with an XX value of 21 or greater) within the data subset definition of the corresponding Table A mnemonic in inodtamc. More...
                                                           
                                                          integer moda_mrgcom::ntot = 0
                                                           Total number of calls to subroutine invmrg(). More...
                                                           
                                                          integer, dimension(:), allocatable moda_nulbfr::null
                                                           Output switch for each file ID: More...
                                                           
                                                          NCEPLIBS-bufr -  12.1.0 +  12.2.0
                                                          NCEPLIBS-bufr -  12.1.0 +  12.2.0
                                                          - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + @@ -123,12 +165,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + @@ -159,6 +225,12 @@ + + + + + + @@ -222,6 +294,21 @@ + + + + + + + + + + + + + + + @@ -249,14 +336,32 @@

                                                          Variables

                                                          character *6, dimension(10), parameter modv_vars::adsn = (/'101000','360001','360002','360003','360004', '101255','031002','031001','031001','031000'/)
                                                          character *6, dimension(10), parameter modv_vars::adsn = (/ fxy_minr, fxy_drp16, fxy_drp8, fxy_drp8s, fxy_drp1, '101255', fxy_drf16, fxy_drf8, fxy_drf8 , fxy_drf1/)
                                                           FXY values corresponding to reps. More...
                                                           
                                                          character *4, parameter modv_vars::bmcstr = '7777'
                                                           Closing string of a BUFR message. More...
                                                           
                                                          real *8 modv_vars::bmiss = 10E10_8
                                                           Current placeholder value to represent "missing" data when reading from or writing to BUFR files; this value can be changed at any time via a call to subroutine setbmiss(). More...
                                                           
                                                          character *4, parameter modv_vars::bmostr = 'BUFR'
                                                           Opening string of a BUFR message. More...
                                                           
                                                          character *6, parameter modv_vars::fxy_drf1 = '031000'
                                                           FXY value for short (1-bit) delayed replication factor. More...
                                                           
                                                          character *6, parameter modv_vars::fxy_drf16 = '031002'
                                                           FXY value for long (16-bit) delayed replication factor. More...
                                                           
                                                          character *6, parameter modv_vars::fxy_drf8 = '031001'
                                                           FXY value for medium (8-bit) delayed replication factor. More...
                                                           
                                                          character *6, parameter modv_vars::fxy_drp1 = '360004'
                                                           FXY value for NCEP Table D local descriptor denoting 1-bit delayed replication of a sequence using < > notation. More...
                                                           
                                                          character *6, parameter modv_vars::fxy_drp16 = '360001'
                                                           FXY value for NCEP Table D local descriptor denoting 16-bit delayed replication of a sequence using ( ) notation. More...
                                                           
                                                          character *6, parameter modv_vars::fxy_drp8 = '360002'
                                                           FXY value for NCEP Table D local descriptor denoting 8-bit delayed replication of a sequence using { } notation. More...
                                                           
                                                          character *6, parameter modv_vars::fxy_drp8s = '360003'
                                                           FXY value for NCEP Table D local descriptor denoting 8-bit delayed replication of a sequence using [ ] notation. More...
                                                           
                                                          character *6, parameter modv_vars::fxy_fbit = '063255'
                                                           FXY value for NCEP Table B local descriptor containing a fill bit. More...
                                                           
                                                          character *6, parameter modv_vars::fxy_minr = '101000'
                                                           Minimum FXY value for a replication descriptor. More...
                                                           
                                                          character *6, parameter modv_vars::fxy_mintd = '300000'
                                                           Minimum FXY value for a Table D descriptor. More...
                                                           
                                                          character *6, parameter modv_vars::fxy_sbyct = '063000'
                                                           FXY value for NCEP Table B local descriptor containing a subset byte count. More...
                                                           
                                                          integer modv_vars::iac = 0
                                                           Status indicator to keep track of whether future calls to subroutine parusr() should allow an input mnemonic to exist in multiple replication sequences: More...
                                                           
                                                          integer modv_vars::iblock = 0
                                                           Status indicator to keep track of whether all future BUFR output messages should be encapsulated with IEEE Fortran control words: More...
                                                           Status indicator to keep track of whether all future BUFR output messages should be encapsulated with IEEE Fortran control words. More...
                                                           
                                                          integer, dimension(10) modv_vars::idnr
                                                           WMO bit-wise representations of FXY values corresponding to reps. More...
                                                           
                                                          integer modv_vars::idxv = 1
                                                           Local table version number to be encoded in output BUFR messages. More...
                                                           
                                                          integer modv_vars::ifopbf = 0
                                                           Status indicator to keep track of whether subroutine openbf() has already been called: More...
                                                           
                                                          integer, dimension(nbytw), parameter modv_vars::iordle = (/4,3,2,1/)
                                                           Order of bytes within an integer on a little-endian machine, from most to least significant. More...
                                                           
                                                          integer modv_vars::iprt = 0
                                                           Indicator for degree of printout. More...
                                                           
                                                          integer modv_vars::lendat = 8
                                                           Length of Section 1 date-time values to be output by all future calls to message-reading subroutines. More...
                                                           
                                                          integer, dimension(5), parameter modv_vars::lens = (/ 0, 16, 8, 8, 1/)
                                                           Lengths of delayed replication factors corresponding to each type of replication in reps. More...
                                                           
                                                          integer modv_vars::lmt = -99
                                                           Master table for the last BUFR message that was read from a logical unit where Section 3 decoding is being used. More...
                                                           
                                                          integer modv_vars::lmtd
                                                           Length (in bytes) of directory on local file system containing master BUFR tables. More...
                                                           
                                                          integer modv_vars::lmtv
                                                           Master table version number for the last BUFR message that was read from a logical unit where Section 3 decoding is being used. More...
                                                           
                                                          integer modv_vars::lmtvl
                                                           Local table version number for the last BUFR message that was read from a logical unit where Section 3 decoding is being used. More...
                                                           
                                                          integer modv_vars::logce
                                                           Originating center for the last BUFR message that was read from a logical unit where Section 3 decoding is being used. More...
                                                           
                                                          integer modv_vars::lun1 = 98
                                                           First of two Fortran logical unit numbers to use when reading master BUFR tables from the local file system. More...
                                                           
                                                          integer modv_vars::lun2 = 99
                                                           Second of two Fortran logical unit numbers to use when reading master BUFR tables from the local file system. More...
                                                           
                                                          integer modv_vars::maxcd = 250
                                                           Maximum number of child descriptors that can be included within the sequence definition of a Table D descriptor, not counting the recursive resolution of any child descriptors which may themselves be Table D descriptors. More...
                                                           
                                                          integer modv_vars::maxtbd = 500
                                                           Maximum number of entries in the internal BUFR Table D for each BUFR file that is connected to the NCEPLIBS-bufr software. More...
                                                           
                                                          character *240 modv_vars::mtdir
                                                           Directory on local file system containing master BUFR tables. More...
                                                           
                                                          integer modv_vars::mtv = 36
                                                           Master table version number to be encoded in output BUFR messages. More...
                                                           
                                                          integer modv_vars::mxbtm = 5
                                                           Maximum number of bitmaps that can be stored internally for a data subset. More...
                                                           
                                                          integer, parameter modv_vars::nbitw = nbytw * 8
                                                           Number of bits within an integer. More...
                                                           
                                                          integer, parameter modv_vars::nby0 = 8
                                                           Number of bytes in Section 0 of a BUFR message. More...
                                                           
                                                          integer, parameter modv_vars::nby1 = 18
                                                           Number of bytes in Section 1 of a BUFR message. More...
                                                           
                                                          integer, parameter modv_vars::nby2 = 0
                                                           Number of bytes in Section 2 of a BUFR message. More...
                                                           
                                                          integer, parameter modv_vars::nby3 = 20
                                                           Number of bytes in Section 3 of a BUFR message. More...
                                                           
                                                          integer, parameter modv_vars::nby5 = 4
                                                           Number of bytes in Section 5 of a BUFR message. More...
                                                           
                                                          integer, parameter modv_vars::nbytw = 4
                                                           Number of bytes within an integer. More...
                                                           
                                                          - +
                                                          character*6, dimension(10), parameter modv_vars::adsn = (/'101000','360001','360002','360003','360004', '101255','031002','031001','031001','031000'/)character*6, dimension(10), parameter modv_vars::adsn = (/ fxy_minr, fxy_drp16, fxy_drp8, fxy_drp8s, fxy_drp1, '101255', fxy_drf16, fxy_drf8, fxy_drf8 , fxy_drf1/)

                                                        +

                                                        + +

                                                        ◆ bmcstr

                                                        + +
                                                        +
                                                        + + + + +
                                                        character*4, parameter modv_vars::bmcstr = '7777'
                                                        +
                                                        + +

                                                        Closing string of a BUFR message.

                                                        + +

                                                        Definition at line 93 of file modules_vars.F90.

                                                        @@ -276,6 +381,223 @@

                                                        Definition at line 41 of file modules_vars.F90.

                                                        +

                                                        + + +

                                                        ◆ bmostr

                                                        + +
                                                        +
                                                        + + + + +
                                                        character*4, parameter modv_vars::bmostr = 'BUFR'
                                                        +
                                                        + +

                                                        Opening string of a BUFR message.

                                                        + +

                                                        Definition at line 90 of file modules_vars.F90.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ fxy_drf1

                                                        + +
                                                        +
                                                        + + + + +
                                                        character*6, parameter modv_vars::fxy_drf1 = '031000'
                                                        +
                                                        + +

                                                        FXY value for short (1-bit) delayed replication factor.

                                                        + +

                                                        Definition at line 109 of file modules_vars.F90.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ fxy_drf16

                                                        + +
                                                        +
                                                        + + + + +
                                                        character*6, parameter modv_vars::fxy_drf16 = '031002'
                                                        +
                                                        + +

                                                        FXY value for long (16-bit) delayed replication factor.

                                                        + +

                                                        Definition at line 115 of file modules_vars.F90.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ fxy_drf8

                                                        + +
                                                        +
                                                        + + + + +
                                                        character*6, parameter modv_vars::fxy_drf8 = '031001'
                                                        +
                                                        + +

                                                        FXY value for medium (8-bit) delayed replication factor.

                                                        + +

                                                        Definition at line 112 of file modules_vars.F90.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ fxy_drp1

                                                        + +
                                                        +
                                                        + + + + +
                                                        character*6, parameter modv_vars::fxy_drp1 = '360004'
                                                        +
                                                        + +

                                                        FXY value for NCEP Table D local descriptor denoting 1-bit delayed replication of a sequence using < > notation.

                                                        + +

                                                        Definition at line 118 of file modules_vars.F90.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ fxy_drp16

                                                        + +
                                                        +
                                                        + + + + +
                                                        character*6, parameter modv_vars::fxy_drp16 = '360001'
                                                        +
                                                        + +

                                                        FXY value for NCEP Table D local descriptor denoting 16-bit delayed replication of a sequence using ( ) notation.

                                                        + +

                                                        Definition at line 127 of file modules_vars.F90.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ fxy_drp8

                                                        + +
                                                        +
                                                        + + + + +
                                                        character*6, parameter modv_vars::fxy_drp8 = '360002'
                                                        +
                                                        + +

                                                        FXY value for NCEP Table D local descriptor denoting 8-bit delayed replication of a sequence using { } notation.

                                                        + +

                                                        Definition at line 121 of file modules_vars.F90.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ fxy_drp8s

                                                        + +
                                                        +
                                                        + + + + +
                                                        character*6, parameter modv_vars::fxy_drp8s = '360003'
                                                        +
                                                        + +

                                                        FXY value for NCEP Table D local descriptor denoting 8-bit delayed replication of a sequence using [ ] notation.

                                                        + +

                                                        Definition at line 124 of file modules_vars.F90.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ fxy_fbit

                                                        + +
                                                        +
                                                        + + + + +
                                                        character*6, parameter modv_vars::fxy_fbit = '063255'
                                                        +
                                                        + +

                                                        FXY value for NCEP Table B local descriptor containing a fill bit.

                                                        +

                                                        This is also the maximum FXY value for a Table B descriptor.

                                                        + +

                                                        Definition at line 106 of file modules_vars.F90.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ fxy_minr

                                                        + +
                                                        +
                                                        + + + + +
                                                        character*6, parameter modv_vars::fxy_minr = '101000'
                                                        +
                                                        + +

                                                        Minimum FXY value for a replication descriptor.

                                                        + +

                                                        Definition at line 99 of file modules_vars.F90.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ fxy_mintd

                                                        + +
                                                        +
                                                        + + + + +
                                                        character*6, parameter modv_vars::fxy_mintd = '300000'
                                                        +
                                                        + +

                                                        Minimum FXY value for a Table D descriptor.

                                                        + +

                                                        Definition at line 96 of file modules_vars.F90.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ fxy_sbyct

                                                        + +
                                                        +
                                                        + + + + +
                                                        character*6, parameter modv_vars::fxy_sbyct = '063000'
                                                        +
                                                        + +

                                                        FXY value for NCEP Table B local descriptor containing a subset byte count.

                                                        + +

                                                        Definition at line 102 of file modules_vars.F90.

                                                        +
                                                        @@ -296,7 +618,7 @@

                                                        Definition at line 52 of file modules_vars.F90.

                                                        +

                                                        Definition at line 80 of file modules_vars.F90.

                                                        @@ -312,11 +634,11 @@

                                                        -

                                                        Status indicator to keep track of whether all future BUFR output messages should be encapsulated with IEEE Fortran control words:

                                                        -
                                                        -

                                                        Definition at line 623 of file modules_arrs.F90.

                                                        +

                                                        Definition at line 642 of file modules_arrs.F90.

                                                        Referenced by arallocf(), ardllocf(), igetsc(), openbf(), rdcmps(), readsb(), and usrtpl().

                                                        diff --git a/namespacemoda__tababd.html b/namespacemoda__tababd.html index fd540750c..61cd57a27 100644 --- a/namespacemoda__tababd.html +++ b/namespacemoda__tababd.html @@ -26,7 +26,7 @@
                                                        NCEPLIBS-bufr -  12.1.0 +  12.2.0
                                                        @@ -144,7 +144,7 @@

                                                        Definition at line 644 of file modules_arrs.F90.

                                                        +

                                                        Definition at line 663 of file modules_arrs.F90.

                                                        Referenced by arallocf(), ardllocf(), cpbfdx(), icmpdx(), nemtbax(), rdusdx(), and stntbia().

                                                        @@ -164,7 +164,7 @@

                                                        Definition at line 646 of file modules_arrs.F90.

                                                        +

                                                        Definition at line 665 of file modules_arrs.F90.

                                                        Referenced by arallocf(), ardllocf(), cpbfdx(), dxinit(), icmpdx(), nemtab(), nemtbb(), numtbd(), stbfdx(), and stntbi().

                                                        @@ -184,7 +184,7 @@

                                                        Definition at line 648 of file modules_arrs.F90.

                                                        +

                                                        Definition at line 667 of file modules_arrs.F90.

                                                        Referenced by arallocf(), ardllocf(), cpbfdx(), dxinit(), icmpdx(), nemtab(), nemtbd(), numtbd(), stbfdx(), and stntbi().

                                                        @@ -204,7 +204,7 @@

                                                        Definition at line 641 of file modules_arrs.F90.

                                                        +

                                                        Definition at line 660 of file modules_arrs.F90.

                                                        Referenced by arallocf(), ardllocf(), cpbfdx(), dxinit(), ishrdx(), makestab(), and nemtbax().

                                                        @@ -224,7 +224,7 @@

                                                        Definition at line 633 of file modules_arrs.F90.

                                                        +

                                                        Definition at line 652 of file modules_arrs.F90.

                                                        Referenced by arallocf(), ardllocf(), bfrini(), chekstab(), cpbfdx(), dxdump(), dxinit(), icmpdx(), igetntbi(), ishrdx(), makestab(), nemtbax(), stntbia(), and wrdxtb().

                                                        @@ -244,7 +244,7 @@

                                                        Definition at line 636 of file modules_arrs.F90.

                                                        +

                                                        Definition at line 655 of file modules_arrs.F90.

                                                        Referenced by arallocf(), ardllocf(), bfrini(), chekstab(), cpbfdx(), dxdump(), dxinit(), getabdb(), icmpdx(), igetntbi(), nemtab(), nemtbb(), nenubd(), numtbd(), stbfdx(), stntbi(), and wrdxtb().

                                                        @@ -264,7 +264,7 @@

                                                        Definition at line 639 of file modules_arrs.F90.

                                                        +

                                                        Definition at line 658 of file modules_arrs.F90.

                                                        Referenced by arallocf(), ardllocf(), bfrini(), chekstab(), cpbfdx(), dxdump(), dxinit(), getabdb(), icmpdx(), igetntbi(), nemtab(), nemtbd(), nenubd(), numtbd(), stbfdx(), stntbi(), and wrdxtb().

                                                        @@ -284,7 +284,7 @@

                                                        Definition at line 650 of file modules_arrs.F90.

                                                        +

                                                        Definition at line 669 of file modules_arrs.F90.

                                                        Referenced by arallocf(), ardllocf(), chekstab(), cpbfdx(), dxdump(), dxinit(), icmpdx(), makestab(), nemtbax(), stbfdx(), stntbia(), and wrdxtb().

                                                        @@ -304,7 +304,7 @@

                                                        Definition at line 652 of file modules_arrs.F90.

                                                        +

                                                        Definition at line 671 of file modules_arrs.F90.

                                                        Referenced by arallocf(), ardllocf(), cpbfdx(), dxdump(), dxinit(), elemdx(), getabdb(), getcfmng(), icmpdx(), nemdefs(), nemtab(), nemtbb(), nenubd(), numtbd(), stbfdx(), stntbi(), ufbdmp(), ufdump(), upftbv(), and wrdxtb().

                                                        @@ -324,7 +324,7 @@

                                                        Definition at line 654 of file modules_arrs.F90.

                                                        +

                                                        Definition at line 673 of file modules_arrs.F90.

                                                        Referenced by arallocf(), ardllocf(), cpbfdx(), dxdump(), dxinit(), getabdb(), icmpdx(), nemtab(), nemtbd(), nenubd(), numtbd(), pktdd(), stbfdx(), stntbi(), uptdd(), and wrdxtb().

                                                        diff --git a/namespacemoda__tabccc.html b/namespacemoda__tabccc.html new file mode 100644 index 000000000..0ff6ae3b0 --- /dev/null +++ b/namespacemoda__tabccc.html @@ -0,0 +1,206 @@ + + + + + + + +NCEPLIBS-bufr: moda_tabccc Module Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.2.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        moda_tabccc Module Reference
                                                        +
                                                        +
                                                        + +

                                                        Declare variables for use with certain Table C operators in the internal jump/link table. +More...

                                                        + + + + + + + + + + + + + + +

                                                        +Variables

                                                        integer icdw
                                                         Number of bits by which to modify the data width of subsequent jump/link table mnemonics whose type indicator is "NUM"; set to 0 unless a 2-01-YYY or 2-07-YYY operator is in effect. More...
                                                         
                                                        integer icrv
                                                         Factor by which to multiply the reference value of subsequent jump/link table mnemonics whose type indicator is "NUM"; set to 1 unless a 2-07-YYY operator is in effect. More...
                                                         
                                                        integer icsc
                                                         Number by which to modify the scale of subsequent jump/link table mnemonics whose type indicator is "NUM"; set to 0 unless a 2-02-YYY or 2-07-YYY operator is in effect. More...
                                                         
                                                        integer incw
                                                         New data width (in bytes) for subsequent jump/link table mnemonics whose type indicator is "CHR"; set to 0 unless a 2-08-YYY operator is in effect. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Declare variables for use with certain Table C operators in the internal jump/link table.

                                                        +

                                                        Data values within this module are stored by subroutine tabsub().

                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2024-12-10
                                                        +

                                                        Variable Documentation

                                                        + +

                                                        ◆ icdw

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer moda_tabccc::icdw
                                                        +
                                                        + +

                                                        Number of bits by which to modify the data width of subsequent jump/link table mnemonics whose type indicator is "NUM"; set to 0 unless a 2-01-YYY or 2-07-YYY operator is in effect.

                                                        + +

                                                        Definition at line 501 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by tabent(), and tabsub().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ icrv

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer moda_tabccc::icrv
                                                        +
                                                        + +

                                                        Factor by which to multiply the reference value of subsequent jump/link table mnemonics whose type indicator is "NUM"; set to 1 unless a 2-07-YYY operator is in effect.

                                                        + +

                                                        Definition at line 507 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by tabent(), and tabsub().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ icsc

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer moda_tabccc::icsc
                                                        +
                                                        + +

                                                        Number by which to modify the scale of subsequent jump/link table mnemonics whose type indicator is "NUM"; set to 0 unless a 2-02-YYY or 2-07-YYY operator is in effect.

                                                        + +

                                                        Definition at line 504 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by tabent(), and tabsub().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ incw

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer moda_tabccc::incw
                                                        +
                                                        + +

                                                        New data width (in bytes) for subsequent jump/link table mnemonics whose type indicator is "CHR"; set to 0 unless a 2-08-YYY operator is in effect.

                                                        + +

                                                        Definition at line 510 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by tabent(), and tabsub().

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/namespacemoda__tablef.html b/namespacemoda__tablef.html index 0c4d0eba2..21bd9d675 100644 --- a/namespacemoda__tablef.html +++ b/namespacemoda__tablef.html @@ -26,7 +26,7 @@
                                                        NCEPLIBS-bufr -  12.1.0 +  12.2.0
                                                        @@ -121,9 +121,9 @@

                                                        Definition at line 887 of file modules_arrs.F90.

                                                        +

                                                        Definition at line 904 of file modules_arrs.F90.

                                                        -

                                                        Referenced by codflg(), exitbufr(), getcfmng(), ireadmt(), and ufdump().

                                                        +

                                                        Referenced by codflg(), getcfmng(), ireadmt(), and ufdump().

                                                        diff --git a/namespacemoda__tables.html b/namespacemoda__tables.html index 637a2bd59..d5de07ec2 100644 --- a/namespacemoda__tables.html +++ b/namespacemoda__tables.html @@ -26,7 +26,7 @@
                                                        NCEPLIBS-bufr -  12.1.0 +  12.2.0
                                                        @@ -164,7 +164,7 @@

                                                        Definition at line 710 of file modules_arrs.F90.

                                                        +

                                                        Definition at line 727 of file modules_arrs.F90.

                                                        Referenced by arallocf(), ardllocf(), igetrfel(), iok2cpy(), ipks(), lcmgdf(), makestab(), nemspecs(), rcstpl(), rdcmps(), rdtree(), tabent(), tabsub(), ufbdmp(), ufbget(), ufbtab(), ufbtam(), ufdump(), ups(), usrtpl(), wrcmps(), writlc(), and wrtree().

                                                        @@ -189,7 +189,7 @@

                                                        Definition at line 716 of file modules_arrs.F90.

                                                        +

                                                        Definition at line 733 of file modules_arrs.F90.

                                                        Referenced by arallocf(), ardllocf(), bufr_c2f_interface::get_irf_c(), igetrfel(), iok2cpy(), ipks(), makestab(), nemspecs(), tabent(), tabsub(), ufbdmp(), ufdump(), and ups().

                                                        @@ -214,9 +214,9 @@

                                                        Definition at line 722 of file modules_arrs.F90.

                                                        +

                                                        Definition at line 739 of file modules_arrs.F90.

                                                        -

                                                        Referenced by arallocf(), ardllocf(), bufr_c2f_interface::get_isc_c(), igetrfel(), iok2cpy(), ipks(), lcmgdf(), lstjpb(), makestab(), nemspecs(), parutg(), strbtm(), tabent(), tabsub(), ufbdmp(), ufbseq(), ufdump(), and ups().

                                                        +

                                                        Referenced by arallocf(), ardllocf(), bufr_c2f_interface::get_isc_c(), igetrfel(), iok2cpy(), ipks(), lcmgdf(), lstjpb(), makestab(), nemspecs(), parutg(), strbtm(), tabent(), tabsub(), ufbdmp(), ufbseq(), ufdump(), and ups().

                                                        @@ -234,7 +234,7 @@

                                                        Definition at line 740 of file modules_arrs.F90.

                                                        +

                                                        Definition at line 757 of file modules_arrs.F90.

                                                        Referenced by arallocf(), ardllocf(), makestab(), rcstpl(), and usrtpl().

                                                        @@ -260,9 +260,9 @@

                                                        Definition at line 728 of file modules_arrs.F90.

                                                        +

                                                        Definition at line 745 of file modules_arrs.F90.

                                                        -

                                                        Referenced by arallocf(), ardllocf(), drfini(), bufr_c2f_interface::get_itp_c(), igetrfel(), invmrg(), makestab(), rcstpl(), rdcmps(), rdtree(), readlc(), strbtm(), ufbcup(), ufbdmp(), ufbget(), ufbseq(), ufbtab(), ufbtam(), ufdump(), usrtpl(), wrcmps(), writlc(), and wrtree().

                                                        +

                                                        Referenced by arallocf(), ardllocf(), drfini(), bufr_c2f_interface::get_itp_c(), igetrfel(), invmrg(), makestab(), rcstpl(), rdcmps(), rdtree(), readlc(), strbtm(), ufbcup(), ufbdmp(), ufbget(), ufbseq(), ufbtab(), ufbtam(), ufdump(), usrtpl(), wrcmps(), writlc(), and wrtree().

                                                        @@ -285,7 +285,7 @@

                                                        Definition at line 706 of file modules_arrs.F90.

                                                        +

                                                        Definition at line 723 of file modules_arrs.F90.

                                                        Referenced by arallocf(), ardllocf(), drstpl(), bufr_c2f_interface::get_jmpb_c(), gettagpr(), lstjpb(), makestab(), tabent(), tabsub(), ufbdmp(), ufbseq(), and usrtpl().

                                                        @@ -305,7 +305,7 @@

                                                        Definition at line 742 of file modules_arrs.F90.

                                                        +

                                                        Definition at line 759 of file modules_arrs.F90.

                                                        Referenced by arallocf(), ardllocf(), makestab(), rcstpl(), and usrtpl().

                                                        @@ -330,7 +330,7 @@

                                                        Definition at line 692 of file modules_arrs.F90.

                                                        +

                                                        Definition at line 709 of file modules_arrs.F90.

                                                        Referenced by arallocf(), ardllocf(), makestab(), tabent(), tabsub(), and ufbdmp().

                                                        @@ -350,7 +350,7 @@

                                                        Definition at line 685 of file modules_arrs.F90.

                                                        +

                                                        Definition at line 702 of file modules_arrs.F90.

                                                        Referenced by arallocf(), ardllocf(), and makestab().

                                                        @@ -375,7 +375,7 @@

                                                        Definition at line 738 of file modules_arrs.F90.

                                                        +

                                                        Definition at line 755 of file modules_arrs.F90.

                                                        Referenced by arallocf(), ardllocf(), and makestab().

                                                        @@ -399,7 +399,7 @@

                                                        Definition at line 699 of file modules_arrs.F90.

                                                        +

                                                        Definition at line 716 of file modules_arrs.F90.

                                                        Referenced by arallocf(), ardllocf(), bufr_c2f_interface::get_link_c(), makestab(), tabent(), tabsub(), ufbdmp(), and ufbseq().

                                                        @@ -419,7 +419,7 @@

                                                        Definition at line 666 of file modules_arrs.F90.

                                                        +

                                                        Definition at line 683 of file modules_arrs.F90.

                                                        Referenced by bufr_c2f_interface::get_irf_c(), bufr_c2f_interface::get_isc_c(), bufr_c2f_interface::get_itp_c(), bufr_c2f_interface::get_jmpb_c(), bufr_c2f_interface::get_link_c(), bufr_c2f_interface::get_tag_c(), bufr_c2f_interface::get_typ_c(), inctab(), makestab(), and tabsub().

                                                        @@ -439,9 +439,9 @@

                                                        Definition at line 668 of file modules_arrs.F90.

                                                        +

                                                        Definition at line 685 of file modules_arrs.F90.

                                                        -

                                                        Referenced by arallocf(), ardllocf(), copymg(), copysb(), cpymem(), drfini(), fstag(), bufr_c2f_interface::get_tag_c(), gettagpr(), gettagre(), igetrfel(), inctab(), invtag(), iok2cpy(), ipks(), makestab(), msgini(), parutg(), rcstpl(), rdcmps(), readlc(), readns(), strbtm(), ufbcpy(), ufbcup(), ufbdmp(), ufbrw(), ufbseq(), ufdump(), ups(), usrtpl(), wrcmps(), writlc(), and wrtree().

                                                        +

                                                        Referenced by arallocf(), ardllocf(), copymg(), copysb(), cpymem(), drfini(), fstag(), bufr_c2f_interface::get_tag_c(), gettagpr(), gettagre(), igetrfel(), inctab(), invtag(), iok2cpy(), ipks(), makestab(), msgini(), parutg(), rcstpl(), rdcmps(), readlc(), readns(), strbtm(), ufbcpy(), ufbcup(), ufbdmp(), ufbrw(), ufbseq(), ufdump(), ups(), usrtpl(), wrcmps(), writlc(), and wrtree().

                                                        @@ -471,7 +471,7 @@

                                                      -

                                                      Definition at line 683 of file modules_arrs.F90.

                                                      +

                                                      Definition at line 700 of file modules_arrs.F90.

                                                      Referenced by arallocf(), ardllocf(), drstpl(), bufr_c2f_interface::get_typ_c(), inctab(), invmrg(), iok2cpy(), lcmgdf(), lstjpb(), makestab(), nemspecs(), parutg(), ufbdmp(), ufbseq(), ufdump(), usrtpl(), writlc(), and wrtree().

                                                      @@ -495,7 +495,7 @@

                                                      Definition at line 732 of file modules_arrs.F90.

                                                      +

                                                      Definition at line 749 of file modules_arrs.F90.

                                                      Referenced by arallocf(), ardllocf(), makestab(), rcstpl(), and usrtpl().

                                                      diff --git a/namespacemoda__tnkrcp.html b/namespacemoda__tnkrcp.html index d6b5786dd..e79bcbae5 100644 --- a/namespacemoda__tnkrcp.html +++ b/namespacemoda__tnkrcp.html @@ -26,7 +26,7 @@
                                                      NCEPLIBS-bufr -  12.1.0 +  12.2.0
                                                      @@ -136,7 +136,7 @@

                                                      Definition at line 843 of file modules_arrs.F90.

                                                      +

                                                      Definition at line 860 of file modules_arrs.F90.

                                                      Referenced by msgfull(), msgwrt(), and strcpt().

                                                      @@ -156,7 +156,7 @@

                                                      Definition at line 849 of file modules_arrs.F90.

                                                      +

                                                      Definition at line 866 of file modules_arrs.F90.

                                                      Referenced by atrcpt(), and strcpt().

                                                      @@ -176,7 +176,7 @@

                                                      Definition at line 851 of file modules_arrs.F90.

                                                      +

                                                      Definition at line 868 of file modules_arrs.F90.

                                                      Referenced by atrcpt(), and strcpt().

                                                      @@ -196,7 +196,7 @@

                                                      Definition at line 853 of file modules_arrs.F90.

                                                      +

                                                      Definition at line 870 of file modules_arrs.F90.

                                                      Referenced by atrcpt(), and strcpt().

                                                      @@ -216,7 +216,7 @@

                                                      Definition at line 847 of file modules_arrs.F90.

                                                      +

                                                      Definition at line 864 of file modules_arrs.F90.

                                                      Referenced by atrcpt(), and strcpt().

                                                      @@ -236,7 +236,7 @@

                                                      Definition at line 845 of file modules_arrs.F90.

                                                      +

                                                      Definition at line 862 of file modules_arrs.F90.

                                                      Referenced by atrcpt(), and strcpt().

                                                      diff --git a/namespacemoda__ufbcpl.html b/namespacemoda__ufbcpl.html index 4f5c89739..ac0349a94 100644 --- a/namespacemoda__ufbcpl.html +++ b/namespacemoda__ufbcpl.html @@ -26,7 +26,7 @@
                                                      NCEPLIBS-bufr -  12.1.0 +  12.2.0
                                                      @@ -118,7 +118,7 @@

                                                      Definition at line 757 of file modules_arrs.F90.

                                                      +

                                                      Definition at line 774 of file modules_arrs.F90.

                                                      Referenced by arallocf(), ardllocf(), msgini(), ufbcpy(), and wrtree().

                                                      diff --git a/namespacemoda__unptyp.html b/namespacemoda__unptyp.html index f0ed0ff10..fed1f14c6 100644 --- a/namespacemoda__unptyp.html +++ b/namespacemoda__unptyp.html @@ -26,7 +26,7 @@
                                                      NCEPLIBS-bufr -  12.1.0 +  12.2.0
                                                      @@ -122,7 +122,7 @@

                                                      Definition at line 771 of file modules_arrs.F90.

                                                      +

                                                      Definition at line 788 of file modules_arrs.F90.

                                                      Referenced by arallocf(), ardllocf(), cktaba(), rdmems(), readlc(), readsb(), and ufbtab().

                                                      diff --git a/namespacemoda__usrbit.html b/namespacemoda__usrbit.html index 7e5908ff4..fc24c2900 100644 --- a/namespacemoda__usrbit.html +++ b/namespacemoda__usrbit.html @@ -26,7 +26,7 @@
                                                      NCEPLIBS-bufr -  12.1.0 +  12.2.0
                                                      @@ -121,7 +121,7 @@

                                                      Definition at line 783 of file modules_arrs.F90.

                                                      +

                                                      Definition at line 800 of file modules_arrs.F90.

                                                      Referenced by arallocf(), ardllocf(), rcstpl(), rdtree(), readlc(), and ufbget().

                                                      @@ -141,7 +141,7 @@

                                                      Definition at line 781 of file modules_arrs.F90.

                                                      +

                                                      Definition at line 798 of file modules_arrs.F90.

                                                      Referenced by arallocf(), ardllocf(), rcstpl(), rdtree(), readlc(), and ufbget().

                                                      diff --git a/namespacemoda__usrint.html b/namespacemoda__usrint.html index f91d834ad..e1de31003 100644 --- a/namespacemoda__usrint.html +++ b/namespacemoda__usrint.html @@ -26,7 +26,7 @@
                                                      NCEPLIBS-bufr -  12.1.0 +  12.2.0
                                                      @@ -126,9 +126,9 @@

                                                      Definition at line 795 of file modules_arrs.F90.

                                                      +

                                                      Definition at line 812 of file modules_arrs.F90.

                                                      -

                                                      Referenced by arallocf(), ardllocf(), drfini(), fstag(), bufr_c2f_interface::get_inv_c(), gettagpr(), gettagre(), getvalnb(), igetrfel(), invcon(), invmrg(), invtag(), invwin(), makestab(), nemspecs(), nevn(), newwin(), nvnwin(), nxtwin(), rcstpl(), rdcmps(), rdtree(), readlc(), setvalnb(), strbtm(), trybump(), ufbcpy(), ufbcup(), ufbdmp(), ufbevn(), ufbget(), ufbin3(), ufbint(), ufbovr(), ufbrep(), ufbseq(), ufbstp(), ufbtab(), ufbtam(), ufdump(), usrtpl(), wrcmps(), writlc(), and wrtree().

                                                      +

                                                      Referenced by arallocf(), ardllocf(), drfini(), fstag(), bufr_c2f_interface::get_inv_c(), gettagpr(), gettagre(), getvalnb(), igetrfel(), invcon(), invmrg(), invtag(), invwin(), makestab(), nemspecs(), newwin(), nvnwin(), nxtwin(), rcstpl(), rdcmps(), rdtree(), readlc(), setvalnb(), strbtm(), trybump(), ufbcpy(), ufbcup(), ufbdmp(), ufbevn(), ufbget(), ufbint(), ufbovr(), ufbrep(), ufbseq(), ufbstp(), ufbtab(), ufbtam(), ufdump(), usrtpl(), wrcmps(), writlc(), and wrtree().

                                                      @@ -146,9 +146,9 @@

                                                      Definition at line 798 of file modules_arrs.F90.

                                                      +

                                                      Definition at line 815 of file modules_arrs.F90.

                                                      -

                                                      Referenced by arallocf(), ardllocf(), gettagre(), rcstpl(), rdcmps(), ufbcpy(), and ufdump().

                                                      +

                                                      Referenced by arallocf(), ardllocf(), gettagre(), rcstpl(), rdcmps(), rdtree(), ufbcpy(), ufdump(), wrcmps(), and wrtree().

                                                      @@ -166,7 +166,7 @@

                                                      Definition at line 793 of file modules_arrs.F90.

                                                      +

                                                      Definition at line 810 of file modules_arrs.F90.

                                                      Referenced by arallocf(), ardllocf(), bfrini(), conwin(), drfini(), fstag(), bufr_c2f_interface::get_nval_c(), getwin(), igetrfel(), invcon(), invmrg(), makestab(), newwin(), nxtwin(), rcstpl(), rdcmps(), rdtree(), readlc(), trybump(), ufbcpy(), ufbcup(), ufbdmp(), ufbget(), ufbrp(), ufbseq(), ufbsp(), ufbtab(), ufbtam(), ufdump(), usrtpl(), wrcmps(), writlc(), and wrtree().

                                                      @@ -186,9 +186,9 @@

                                                      Definition at line 800 of file modules_arrs.F90.

                                                      +

                                                      Definition at line 817 of file modules_arrs.F90.

                                                      -

                                                      Referenced by arallocf(), ardllocf(), bufr_c2f_interface::get_val_c(), getvalnb(), getwin(), invcon(), invmrg(), nevn(), newwin(), nwords(), nxtwin(), rcstpl(), rdcmps(), rdtree(), setvalnb(), strbtm(), trybump(), ufbcpy(), ufbcup(), ufbdmp(), ufbevn(), ufbrp(), ufbrw(), ufbseq(), ufbsp(), ufdump(), usrtpl(), and wrtree().

                                                      +

                                                      Referenced by arallocf(), ardllocf(), bufr_c2f_interface::get_val_c(), getvalnb(), getwin(), invcon(), invmrg(), newwin(), nwords(), nxtwin(), rcstpl(), rdcmps(), rdtree(), setvalnb(), trybump(), ufbcpy(), ufbcup(), ufbdmp(), ufbevn(), ufbrp(), ufbrw(), ufbseq(), ufbsp(), ufdump(), usrtpl(), and wrtree().

                                                      diff --git a/namespacemoda__usrtmp.html b/namespacemoda__usrtmp.html index fecff3451..2a0729149 100644 --- a/namespacemoda__usrtmp.html +++ b/namespacemoda__usrtmp.html @@ -26,7 +26,7 @@
                                                      NCEPLIBS-bufr -  12.1.0 +  12.2.0
                                                      @@ -119,7 +119,7 @@

                                                      Definition at line 810 of file modules_arrs.F90.

                                                      +

                                                      Definition at line 827 of file modules_arrs.F90.

                                                      Referenced by arallocf(), ardllocf(), and rcstpl().

                                                      @@ -139,7 +139,7 @@

                                                      Definition at line 812 of file modules_arrs.F90.

                                                      +

                                                      Definition at line 829 of file modules_arrs.F90.

                                                      Referenced by arallocf(), ardllocf(), and rcstpl().

                                                      diff --git a/namespacemoda__xtab.html b/namespacemoda__xtab.html index 380fdc977..3cfd6fe4f 100644 --- a/namespacemoda__xtab.html +++ b/namespacemoda__xtab.html @@ -26,7 +26,7 @@
                                                      NCEPLIBS-bufr -  12.1.0 +  12.2.0
                                                      @@ -119,7 +119,7 @@

                                                      makestab(); set to .false. otherwise.

                                                      -

                                                      Definition at line 831 of file modules_arrs.F90.

                                                      +

                                                      Definition at line 848 of file modules_arrs.F90.

                                                      Referenced by arallocf(), ardllocf(), and makestab().

                                                      diff --git a/namespaces.html b/namespaces.html index 67c345dc1..363151c44 100644 --- a/namespaces.html +++ b/namespaces.html @@ -26,7 +26,7 @@
                                                      NCEPLIBS-bufr -  12.1.0 +  12.2.0
                                                      @@ -94,68 +94,69 @@  Ccobfl_c  Ccrbmg_c  Ccwbmg_c - Cdlloctbf_c - NbufrlibWrap C NCEPLIBS-bufr functions so they can be called from within the Fortran part of the library - Carallocc_c - Cardllocc_c - Cbackbufr_c - Ccewind_c - Cclosfb_c - Ccpmstabs_c - Ccrdbufr_c - Ccwrbufr_c - Cicvidx_c - Cinittbf_c - Copenab_c - Copenrb_c - Copenwb_c - Crestd_c - Csorttbf_c - Csrchtbf_c - Cstrtbfe_c - Cstseq_c - Nmoda_bitbufDeclare arrays and variables used to store BUFR messages internally for multiple file IDs - Nmoda_bitmapsDeclare arrays and variables used to store bitmaps internally within a data subset definition - Nmoda_bufrmgDeclare arrays used to store, for each output file ID, a copy of the BUFR message that was most recently written to that ID, for possible later retrieval via subroutine writsa() - Nmoda_bufrsrDeclare arrays and variables needed to store the current position within a BUFR file - Nmoda_comprsDeclare arrays and variables needed for the storage of data values needed when writing compressed data subsets to a BUFR message for output - Nmoda_comprxDeclare arrays and variable needed for the storage of data values needed when writing compressed data subsets to a BUFR message for output - Nmoda_dscachDeclare arrays and variables for the internal Table A mnemonic cache that is used for Section 3 decoding of BUFR messages - Nmoda_h4wlcDeclare arrays and variables needed to store long character strings (greater than 8 bytes) via subroutine hold4wlc() - Nmoda_idrdmDeclare an array used by subroutine readerme() to read in a new DX dictionary table as a consecutive set of one or more DX BUFR tables messages - Nmoda_ivalDeclare an array used to pack or unpack all of the values of a BUFR data subset - Nmoda_ivttmpDeclare arrays which provide working space in several subprograms (usrtpl() and ufbcup()) which manipulate the contents of internal subset buffers where the contents of an evolving BUFR message are accumulated and stored under user control prior to being written out - Nmoda_lushrDeclare an array used by subroutine makestab() to keep track of which logical units share DX BUFR table information - Nmoda_mgwaDeclare an array used by various subroutines and functions to hold a temporary working copy of a BUFR message - Nmoda_mgwbDeclare an array used by various subroutines and functions to hold a temporary working copy of a BUFR message - Nmoda_msgcmpDeclare a variable used to indicate whether output BUFR messages should be compressed - Nmoda_msgcwdDeclare arrays used to store information about the current BUFR message that is in the process of being read from or written to the logical unit associated with each file ID - Nmoda_msglimDeclare an array used to keep track of which logical units should not have any empty (zero data subset) BUFR messages written to them - Nmoda_msgmemDeclare arrays and variables used to store the contents of one or more BUFR files within internal memory - Nmoda_msgstdDeclare a variable used to indicate whether output BUFR messages should be standardized - Nmoda_mstabsDeclare arrays and variables used to store master Table B and Table D entries within internal memory - Nmoda_nmikrpDeclare arrays used by various subroutines to hold information about Table D sequences - Nmoda_nrv203Declare arrays and variables for use with any 2-03-YYY (change reference value) operators present within the internal jump/link table - Nmoda_nulbfrDeclare an array used to store a switch for each file ID, indicating whether any BUFR messages should actually be written to the corresponding logical unit - Nmoda_rdmtbDeclare arrays and variables used to store master Table B and Table D entries within internal memory - Nmoda_rlccmnDeclare arrays and variables needed to store information about long character strings (greater than 8 bytes) when reading them from input data subsets in compressed BUFR messages via subroutines rdcmps() and readlc() - Nmoda_s01cmDeclare arrays and variables used to store custom values for certain mnemonics within Sections 0 and 1 of all future output BUFR messages written to all Fortran logical units - Nmoda_s3listDeclare arrays used by various subroutines and functions to hold a temporary working copy of a Section 3 descriptor list - Nmoda_sc3bfrDeclare an array used to store a switch for each file ID, indicating whether BUFR messages read from the corresponding logical unit should be decoded according to the contents of Section 3 and using master BUFR tables, rather than using DX BUFR tables - Nmoda_stbfrDeclare arrays used to store file and message status indicators for all logical units that have been connected to the library via previous calls to subroutine openbf() - Nmoda_stcodeDeclare an array used to store a status code for each file ID if an error or other abnormal result occurs while processing a BUFR message within the associated logical unit - Nmoda_tababdDeclare arrays and variables used to store DX BUFR tables internally for multiple file IDs - Nmoda_tablefDeclare a variable used to indicate whether master code and flag tables should be read - Nmoda_tablesDeclare arrays and variables used to store the internal jump/link table - Nmoda_tnkrcpDeclare variables used to store tank receipt time information within Section 1 of BUFR messages - Nmoda_ufbcplDeclare an array used to store, for each file ID, the logical unit number corresponding to a separate file ID whenever BUFR data subsets are being copied from the latter to the former via subroutine ufbcpy() - Nmoda_unptypDeclare an array used to store, for each file ID from which a BUFR message is currently being read as input, a flag indicating how to unpack the data subsets from the message - Nmoda_usrbitDeclare arrays for internal storage of pointers to BUFR data subset values - Nmoda_usrintDeclare arrays used to store data values and associated metadata for the current BUFR data subset in scope for each file ID - Nmoda_usrtmpDeclare arrays used in subroutine rcstpl() to store subset segments that are being copied from a subset template into internal subset arrays - Nmoda_xtabDeclare an array used to track, for each file ID, whether the DX BUFR table associated with the corresponding logical unit has changed during the life of the application program - Nmodv_vars - Nshare_table_infoThis module is used within the debufr utility to share information between subroutine fdebufr_c() and subroutine openbt(), since the latter is not called by the former but rather is called directly from within the NCEPLIBS-bufr software + NbufrlibWrap C NCEPLIBS-bufr functions so they can be called from within the Fortran part of the library + Carallocc_c + Cardllocc_c + Cbackbufr_c + Ccewind_c + Cclosfb_c + Ccpmstabs_c + Ccrdbufr_c + Ccwrbufr_c + Cicvidx_c + Cinittbf_c + Copenab_c + Copenrb_c + Copenwb_c + Crestd_c + Csorttbf_c + Csrchtbf_c + Cstrtbfe_c + Cstseq_c + Nmoda_bitbufDeclare arrays and variables used to store BUFR messages internally for multiple file IDs + Nmoda_bitmapsDeclare arrays and variables used to store bitmaps internally within a data subset definition + Nmoda_bufrmgDeclare arrays used to store, for each output file ID, a copy of the BUFR message that was most recently written to that ID, for possible later retrieval via subroutine writsa() + Nmoda_bufrsrDeclare arrays and variables needed to store the current position within a BUFR file + Nmoda_comprsDeclare arrays and variables needed for the storage of data values needed when writing compressed data subsets to a BUFR message for output + Nmoda_comprxDeclare arrays and variable needed for the storage of data values needed when writing compressed data subsets to a BUFR message for output + Nmoda_dscachDeclare arrays and variables for the internal Table A mnemonic cache that is used for Section 3 decoding of BUFR messages + Nmoda_h4wlcDeclare arrays and variables needed to store long character strings (greater than 8 bytes) via subroutine hold4wlc() + Nmoda_idrdmDeclare an array used by subroutine readerme() to read in a new DX dictionary table as a consecutive set of one or more DX BUFR tables messages + Nmoda_ivalDeclare an array used to pack or unpack all of the values of a BUFR data subset + Nmoda_ivttmpDeclare arrays which provide working space in several subprograms (usrtpl() and ufbcup()) which manipulate the contents of internal subset buffers where the contents of an evolving BUFR message are accumulated and stored under user control prior to being written out + Nmoda_lushrDeclare an array used by subroutine makestab() to keep track of which logical units share DX BUFR table information + Nmoda_mgwaDeclare an array used by various subroutines and functions to hold a temporary working copy of a BUFR message + Nmoda_mgwbDeclare an array used by various subroutines and functions to hold a temporary working copy of a BUFR message + Nmoda_mrgcomDeclare variables for use when merging parts of different data subsets + Nmoda_msgcmpDeclare a variable used to indicate whether output BUFR messages should be compressed + Nmoda_msgcwdDeclare arrays used to store information about the current BUFR message that is in the process of being read from or written to the logical unit associated with each file ID + Nmoda_msglimDeclare an array used to keep track of which logical units should not have any empty (zero data subset) BUFR messages written to them + Nmoda_msgmemDeclare arrays and variables used to store the contents of one or more BUFR files within internal memory + Nmoda_msgstdDeclare a variable used to indicate whether output BUFR messages should be standardized + Nmoda_mstabsDeclare arrays and variables used to store master Table B and Table D entries within internal memory + Nmoda_nmikrpDeclare arrays used by various subroutines to hold information about Table D sequences + Nmoda_nrv203Declare arrays and variables for use with any 2-03-YYY (change reference value) operators present within the internal jump/link table + Nmoda_nulbfrDeclare an array used to store a switch for each file ID, indicating whether any BUFR messages should actually be written to the corresponding logical unit + Nmoda_rdmtbDeclare arrays and variables used to store master Table B and Table D entries within internal memory + Nmoda_rlccmnDeclare arrays and variables needed to store information about long character strings (greater than 8 bytes) when reading them from input data subsets in compressed BUFR messages via subroutines rdcmps() and readlc() + Nmoda_s01cmDeclare arrays and variables used to store custom values for certain mnemonics within Sections 0 and 1 of all future output BUFR messages written to all Fortran logical units + Nmoda_s3listDeclare arrays used by various subroutines and functions to hold a temporary working copy of a Section 3 descriptor list + Nmoda_sc3bfrDeclare an array used to store a switch for each file ID, indicating whether BUFR messages read from the corresponding logical unit should be decoded according to the contents of Section 3 and using master BUFR tables, rather than using DX BUFR tables + Nmoda_stbfrDeclare arrays used to store file and message status indicators for all logical units that have been connected to the library via previous calls to subroutine openbf() + Nmoda_stcodeDeclare an array used to store a status code for each file ID if an error or other abnormal result occurs while processing a BUFR message within the associated logical unit + Nmoda_tababdDeclare arrays and variables used to store DX BUFR tables internally for multiple file IDs + Nmoda_tabcccDeclare variables for use with certain Table C operators in the internal jump/link table + Nmoda_tablefDeclare a variable used to indicate whether master code and flag tables should be read + Nmoda_tablesDeclare arrays and variables used to store the internal jump/link table + Nmoda_tnkrcpDeclare variables used to store tank receipt time information within Section 1 of BUFR messages + Nmoda_ufbcplDeclare an array used to store, for each file ID, the logical unit number corresponding to a separate file ID whenever BUFR data subsets are being copied from the latter to the former via subroutine ufbcpy() + Nmoda_unptypDeclare an array used to store, for each file ID from which a BUFR message is currently being read as input, a flag indicating how to unpack the data subsets from the message + Nmoda_usrbitDeclare arrays for internal storage of pointers to BUFR data subset values + Nmoda_usrintDeclare arrays used to store data values and associated metadata for the current BUFR data subset in scope for each file ID + Nmoda_usrtmpDeclare arrays used in subroutine rcstpl() to store subset segments that are being copied from a subset template into internal subset arrays + Nmoda_xtabDeclare an array used to track, for each file ID, whether the DX BUFR table associated with the corresponding logical unit has changed during the life of the application program + Nmodv_vars + Nshare_table_infoThis module is used within the debufr utility to share information between subroutine fdebufr_c() and subroutine openbt(), since the latter is not called by the former but rather is called directly from within the NCEPLIBS-bufr software diff --git a/namespaces_dup.js b/namespaces_dup.js index 0d9491927..130d7cee6 100644 --- a/namespaces_dup.js +++ b/namespaces_dup.js @@ -156,6 +156,12 @@ var namespaces_dup = [ "moda_mgwb", "namespacemoda__mgwb.html", [ [ "mgwb", "namespacemoda__mgwb.html#ac38651460e5e05dd70fe8c19fc1a9caa", null ] ] ], + [ "moda_mrgcom", "namespacemoda__mrgcom.html", [ + [ "namb", "namespacemoda__mrgcom.html#aca7ba3c13394414e82f8bfd925fd6d9f", null ], + [ "nmrg", "namespacemoda__mrgcom.html#a61d7a9354052881b929a1c7afeff24f2", null ], + [ "nrpl", "namespacemoda__mrgcom.html#ace7f78e015bbce02e77bb95dec7efa06", null ], + [ "ntot", "namespacemoda__mrgcom.html#a71cc22e6cdcdf0d9d885f3e2418905a9", null ] + ] ], [ "moda_msgcmp", "namespacemoda__msgcmp.html", [ [ "ccmf", "namespacemoda__msgcmp.html#a748ff156e2c817957765b05119f74270", null ] ] ], @@ -267,6 +273,12 @@ var namespaces_dup = [ "tabb", "namespacemoda__tababd.html#ad3fddde254d512cae401fc3f5532fe7c", null ], [ "tabd", "namespacemoda__tababd.html#a043c64825f8bdb44c4e6b69d2f5c253c", null ] ] ], + [ "moda_tabccc", "namespacemoda__tabccc.html", [ + [ "icdw", "namespacemoda__tabccc.html#a70a224458d62bb0e617313d4e05d976b", null ], + [ "icrv", "namespacemoda__tabccc.html#a785d2d36be7d1f598ea6d827386978f4", null ], + [ "icsc", "namespacemoda__tabccc.html#a5325016ada1d1e03d49737e28d92ce47", null ], + [ "incw", "namespacemoda__tabccc.html#a889fda4f92be8677aecb3548c824fd18", null ] + ] ], [ "moda_tablef", "namespacemoda__tablef.html", [ [ "cdmf", "namespacemoda__tablef.html#a61847a8129d1a6c6909c2ea4727d67f6", null ] ] ], @@ -320,16 +332,38 @@ var namespaces_dup = ] ], [ "modv_vars", null, [ [ "adsn", "modules__vars_8F90.html#a7a129734d8b06649619e8e9ee42eca62", null ], + [ "bmcstr", "modules__vars_8F90.html#a60ef50564d84f9a35ef70f9ad8b74df1", null ], [ "bmiss", "modules__vars_8F90.html#a745e8be4bf52246db47090996854736b", null ], + [ "bmostr", "modules__vars_8F90.html#ae7a0cf86b71d91ae0be459a6c12fff01", null ], + [ "fxy_drf1", "modules__vars_8F90.html#a9f70d749f5e71b996b0d76e93ff3b77b", null ], + [ "fxy_drf16", "modules__vars_8F90.html#ac766dd96949dc14fd798a112f230b674", null ], + [ "fxy_drf8", "modules__vars_8F90.html#adfabbf77cf9f5c71ccb41feacdc33c2e", null ], + [ "fxy_drp1", "modules__vars_8F90.html#a5a260aaa8fb7f7b661ed9d8f9e7d4226", null ], + [ "fxy_drp16", "modules__vars_8F90.html#af6996f884a38892fd146bb24b7802b07", null ], + [ "fxy_drp8", "modules__vars_8F90.html#a87ac1122752b49bf8beeae0fd310910d", null ], + [ "fxy_drp8s", "modules__vars_8F90.html#aadb8522cb68b9bb6eeb160615593e88d", null ], + [ "fxy_fbit", "modules__vars_8F90.html#ab4ef91913d1dd7697e54730589ddbe66", null ], + [ "fxy_minr", "modules__vars_8F90.html#af62548bea103b35e96b23f0ca218b2b9", null ], + [ "fxy_mintd", "modules__vars_8F90.html#abe3de88a3bba631dd4cfc880b9d206ab", null ], + [ "fxy_sbyct", "modules__vars_8F90.html#a28a7f7658d1ba1ea4609332adc148fc8", null ], [ "iac", "modules__vars_8F90.html#a7db5428bb409dc91391908e3f6005da0", null ], [ "iblock", "modules__vars_8F90.html#a8623e746f63272cf61b014607d998345", null ], [ "idnr", "modules__vars_8F90.html#a181516c96f53bedb9774c83ebfeb0a23", null ], + [ "idxv", "modules__vars_8F90.html#a100b0bdf0829aa981d26f817a995b31c", null ], [ "ifopbf", "modules__vars_8F90.html#a6007e8a5d98440d7bb16ce63bbf007e6", null ], [ "im8b", "modules__vars_8F90.html#a4ff59bf9f9ee31e187bf7f8ecb61f4dd", null ], [ "iordbe", "modules__vars_8F90.html#a2588ca33cb30f0316759c9ca7735bbb3", null ], [ "iordle", "modules__vars_8F90.html#a7376f8406ce5e5e420d4d012aea93416", null ], + [ "iprt", "modules__vars_8F90.html#a7fe62694cce4c724bbd16b144adfc1bb", null ], [ "lendat", "modules__vars_8F90.html#a9776bd15698bdb2c211a2326f0ca61dc", null ], [ "lens", "modules__vars_8F90.html#a3eaffbddfb28ae6f90cff4ec580463c1", null ], + [ "lmt", "modules__vars_8F90.html#a3ac85027a1a0f7fee907310e2c41356d", null ], + [ "lmtd", "modules__vars_8F90.html#a54fd24795f00c7f2c314c7d2c7d43582", null ], + [ "lmtv", "modules__vars_8F90.html#a939f34f2833d6529b20c2ab79b082500", null ], + [ "lmtvl", "modules__vars_8F90.html#a097f815622807c80c3d7f2f2794d4da4", null ], + [ "logce", "modules__vars_8F90.html#a48d9286f5111bf51c0c88374984e7882", null ], + [ "lun1", "modules__vars_8F90.html#a1667df28fd2399925505ff57265ad33f", null ], + [ "lun2", "modules__vars_8F90.html#a4b0e42e5050773c5cbe98839d9b54826", null ], [ "maxcd", "modules__vars_8F90.html#ae8a681bd9096d6c9a2466b3c71f6ec7e", null ], [ "maxjl", "modules__vars_8F90.html#ad2e54a398ee4fd5c87669a2883e7a37d", null ], [ "maxmem", "modules__vars_8F90.html#ab5934a6a2f8cd3e09418203c1d3c20de", null ], @@ -340,6 +374,8 @@ var namespaces_dup = [ "maxtba", "modules__vars_8F90.html#aec19b6418a5d88f574f4b196b93a5cf5", null ], [ "maxtbb", "modules__vars_8F90.html#a14452fc0317594bd880c9abba582ae74", null ], [ "maxtbd", "modules__vars_8F90.html#ab5fc7a78bb32e9a0fa7cbb1f402e7528", null ], + [ "mtdir", "modules__vars_8F90.html#a6f1f2ead234f70c8f323ba0fd5e95840", null ], + [ "mtv", "modules__vars_8F90.html#a88b08b3ed35dd7342e96bb1f84b8c510", null ], [ "mxbtm", "modules__vars_8F90.html#a9c06e9ba0f47cbeecfb1e6d1972e1e4f", null ], [ "mxbtmse", "modules__vars_8F90.html#aa7b24da237033a528cb05754d5736cc6", null ], [ "mxcdv", "modules__vars_8F90.html#ae330052e2bcc0a81949c5ef8d6e7cc9e", null ], @@ -361,6 +397,11 @@ var namespaces_dup = [ "mxtamc", "modules__vars_8F90.html#a85bed6c0b0a9aa339abd8fb7b3a136b5", null ], [ "mxtco", "modules__vars_8F90.html#a68ea76a4751743e58280e061b43313e7", null ], [ "nbitw", "modules__vars_8F90.html#a18a87ef02ab98d62e7fa272b20acd77a", null ], + [ "nby0", "modules__vars_8F90.html#ac9e6d10f3b0bde35eeb6409ad51476c1", null ], + [ "nby1", "modules__vars_8F90.html#a5c90e57dc87868bf8f5f54ac7f14d558", null ], + [ "nby2", "modules__vars_8F90.html#aa7b746f54e2897eb9651302fd656fc66", null ], + [ "nby3", "modules__vars_8F90.html#a2b075e9fd04aeb24964f4f1ef7ede526", null ], + [ "nby5", "modules__vars_8F90.html#a631f921eacf59866733aa6fa19a62fea", null ], [ "nbytw", "modules__vars_8F90.html#a2b80f794fded7bf159ff58796ec31a7c", null ], [ "nfiles", "modules__vars_8F90.html#aa9124552f5c640e47f8decc9499688d8", null ], [ "reps", "modules__vars_8F90.html#a5b163d0f13c16e94bdac566d2495faf7", null ], diff --git a/namespaceshare__table__info.html b/namespaceshare__table__info.html index a8124e4a4..ab6cd0d80 100644 --- a/namespaceshare__table__info.html +++ b/namespaceshare__table__info.html @@ -26,7 +26,7 @@
                                                      NCEPLIBS-bufr -  12.1.0 +  12.2.0
                                                      diff --git a/navtreedata.js b/navtreedata.js index 00e517187..cd25cb7fa 100644 --- a/navtreedata.js +++ b/navtreedata.js @@ -26,11 +26,11 @@ var NAVTREE = [ [ "NCEPLIBS-bufr", "index.html", [ [ "DX BUFR Tables", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_dx_tables.html", [ - [ "Documentation for Previous Versions of NCEPLIBS-bufr", "index.html#autotoc_md63", null ], - [ "Documentation for the Python API for NCEPLIBS-bufr", "index.html#autotoc_md64", null ], - [ "Introduction", "index.html#autotoc_md65", null ], - [ "The BUFR Format", "index.html#autotoc_md66", null ], - [ "NCEPLIBS-bufr Library Subroutines and Functions", "index.html#autotoc_md67", null ], + [ "Documentation for Previous Versions of NCEPLIBS-bufr", "index.html#autotoc_md64", null ], + [ "Documentation for the Python API for NCEPLIBS-bufr", "index.html#autotoc_md65", null ], + [ "Introduction", "index.html#autotoc_md66", null ], + [ "The BUFR Format", "index.html#autotoc_md67", null ], + [ "NCEPLIBS-bufr Library Subroutines and Functions", "index.html#autotoc_md68", null ], [ "Mnemonics", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_dx_tables.html#autotoc_md1", null ], [ "DX BUFR Tables File", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_dx_tables.html#autotoc_md2", [ [ "Section 1", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_dx_tables.html#autotoc_md3", null ], @@ -45,69 +45,70 @@ var NAVTREE = [ "Code/Flag Tables", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_master_tables.html#autotoc_md10", null ] ] ], [ "Release Notes", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html", [ - [ "Version 12.1.0 - July 10, 2024", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md12", null ], - [ "Version 12.0.1 - September 15, 2023", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md13", null ], - [ "Version 12.0.0 - June 8, 2023", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md14", null ], - [ "Version 11.7.1 - August 26, 2022", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md15", null ], - [ "Version 11.7.0 - May 19, 2022", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md16", null ], - [ "Version 11.6.0 - November 10, 2021", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md17", null ], - [ "Version 11.5.0 - April 26, 2021", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md18", null ], - [ "Version 11.4.0 - November 20, 2020", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md19", null ], - [ "Version 11.3.2 - July 16, 2020", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md20", null ], - [ "Version 11.3.1 - March 3, 2020", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md21", null ], - [ "Version 11.3.0 - May 21, 2019", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md22", null ], - [ "Version 11.2.0 - April 11, 2017", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md23", null ], - [ "Version 11.1.0 - April 27, 2016", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md24", null ], - [ "Version 11.0.2", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md25", null ], - [ "Version 11.0.1", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md26", null ], - [ "Version 11.0.0 - April 27, 2015", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md27", null ], - [ "Version 10.2.5", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md28", null ], - [ "Version 10.2.4", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md29", null ], - [ "Version 10.2.3 - June 21, 2013", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md30", null ], - [ "Version 10.2.2", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md31", null ], - [ "Version 10.2.1", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md32", null ], - [ "Version 10.2.0 - October 19, 2012", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md33", null ], - [ "Version 10.1.0 - June 11, 2012", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md34", null ], - [ "Version 10.0.1", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md35", null ], - [ "Version 10.0.0 - August 12, 2010", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md36", null ], - [ "May 28, 2008", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md37", null ], - [ "February 6, 2007", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md38", null ], - [ "January 31, 2006", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md39", null ], - [ "December 21, 2004", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md40", null ], - [ "November 4, 2003", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md41", null ], - [ "May 19, 2003", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md42", null ], - [ "May 14, 2002", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md43", null ], - [ "August 15, 2001", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md44", null ], - [ "September 19, 2000", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md45", null ], - [ "July 13, 1999", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md46", null ], - [ "December 14, 1998", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md47", null ], - [ "November 24, 1998", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md48", null ], - [ "October 27, 1998", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md49", null ], - [ "August 31, 1998", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md50", null ], - [ "July 8, 1998", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md51", null ], - [ "April 2, 1998", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md52", null ], - [ "September 3, 1997", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md53", null ], - [ "July 29, 1997", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md54", null ], - [ "December 17, 1996", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md55", null ], - [ "December 11, 1996", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md56", null ], - [ "November 25, 1996", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md57", null ], - [ "October 9, 1996", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md58", null ], - [ "September 9, 1996", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md59", null ], - [ "June 28, 1995", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md60", null ], - [ "January 10, 1995", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md61", null ], - [ "Original Implementation of BUFR Archive Library - January 6, 1994", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md62", null ] + [ "Version 12.2.0 - February 19, 2025", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md12", null ], + [ "Version 12.1.0 - July 10, 2024", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md13", null ], + [ "Version 12.0.1 - September 15, 2023", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md14", null ], + [ "Version 12.0.0 - June 8, 2023", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md15", null ], + [ "Version 11.7.1 - August 26, 2022", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md16", null ], + [ "Version 11.7.0 - May 19, 2022", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md17", null ], + [ "Version 11.6.0 - November 10, 2021", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md18", null ], + [ "Version 11.5.0 - April 26, 2021", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md19", null ], + [ "Version 11.4.0 - November 20, 2020", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md20", null ], + [ "Version 11.3.2 - July 16, 2020", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md21", null ], + [ "Version 11.3.1 - March 3, 2020", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md22", null ], + [ "Version 11.3.0 - May 21, 2019", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md23", null ], + [ "Version 11.2.0 - April 11, 2017", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md24", null ], + [ "Version 11.1.0 - April 27, 2016", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md25", null ], + [ "Version 11.0.2", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md26", null ], + [ "Version 11.0.1", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md27", null ], + [ "Version 11.0.0 - April 27, 2015", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md28", null ], + [ "Version 10.2.5", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md29", null ], + [ "Version 10.2.4", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md30", null ], + [ "Version 10.2.3 - June 21, 2013", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md31", null ], + [ "Version 10.2.2", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md32", null ], + [ "Version 10.2.1", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md33", null ], + [ "Version 10.2.0 - October 19, 2012", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md34", null ], + [ "Version 10.1.0 - June 11, 2012", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md35", null ], + [ "Version 10.0.1", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md36", null ], + [ "Version 10.0.0 - August 12, 2010", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md37", null ], + [ "May 28, 2008", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md38", null ], + [ "February 6, 2007", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md39", null ], + [ "January 31, 2006", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md40", null ], + [ "December 21, 2004", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md41", null ], + [ "November 4, 2003", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md42", null ], + [ "May 19, 2003", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md43", null ], + [ "May 14, 2002", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md44", null ], + [ "August 15, 2001", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md45", null ], + [ "September 19, 2000", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md46", null ], + [ "July 13, 1999", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md47", null ], + [ "December 14, 1998", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md48", null ], + [ "November 24, 1998", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md49", null ], + [ "October 27, 1998", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md50", null ], + [ "August 31, 1998", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md51", null ], + [ "July 8, 1998", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md52", null ], + [ "April 2, 1998", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md53", null ], + [ "September 3, 1997", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md54", null ], + [ "July 29, 1997", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md55", null ], + [ "December 17, 1996", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md56", null ], + [ "December 11, 1996", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md57", null ], + [ "November 25, 1996", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md58", null ], + [ "October 9, 1996", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md59", null ], + [ "September 9, 1996", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md60", null ], + [ "June 28, 1995", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md61", null ], + [ "January 10, 1995", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md62", null ], + [ "Original Implementation of BUFR Archive Library - January 6, 1994", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md63", null ] ] ], [ "Utilities", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_utils.html", [ - [ "debufr", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_utils.html#autotoc_md70", null ], - [ "readbp", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_utils.html#autotoc_md72", null ], - [ "readmp", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_utils.html#autotoc_md74", null ], - [ "binv", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_utils.html#autotoc_md76", null ], - [ "sinv", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_utils.html#autotoc_md78", null ], - [ "cmpbqm", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_utils.html#autotoc_md80", null ], - [ "gettab", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_utils.html#autotoc_md82", null ], - [ "split_by_subset", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_utils.html#autotoc_md84", null ], - [ "xbfmg", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_utils.html#autotoc_md86", null ], - [ "apxdx", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_utils.html#autotoc_md88", null ] + [ "debufr", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_utils.html#autotoc_md71", null ], + [ "readbp", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_utils.html#autotoc_md73", null ], + [ "readmp", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_utils.html#autotoc_md75", null ], + [ "binv", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_utils.html#autotoc_md77", null ], + [ "sinv", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_utils.html#autotoc_md79", null ], + [ "cmpbqm", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_utils.html#autotoc_md81", null ], + [ "gettab", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_utils.html#autotoc_md83", null ], + [ "split_by_subset", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_utils.html#autotoc_md85", null ], + [ "xbfmg", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_utils.html#autotoc_md87", null ], + [ "apxdx", "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_utils.html#autotoc_md89", null ] ] ], [ "Modules", "namespaces.html", [ [ "Modules List", "namespaces.html", "namespaces_dup" ], @@ -139,11 +140,11 @@ var NAVTREE = var NAVTREEINDEX = [ "annotated.html", -"cread_8c.html#ad5429d7ed327f515c880227bb795162b", -"md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md40", -"modules__arrs_8F90.html#afcc556a5fac9b693f0be507fafccf973", -"namespacemoda__comprx.html#ac17dd8dc0aeb695a1046a884673b1fc3", -"readwriteval_8F90.html#aecfa08f631e1af46b472c007b93b2955" +"cpmstabs_8c.html#ab993a0c7a1d8c4c04fb7006f6253025c", +"md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md33", +"modules__arrs_8F90.html#adff426f406bb1f795e94c0af6d68d856", +"namespacebufrlib.html", +"namespaceshare__table__info.html#a88fbe3e8e14e3810e1dc3f1560d1c51f" ]; var SYNCONMSG = 'click to disable panel synchronisation'; diff --git a/navtreeindex0.js b/navtreeindex0.js index 79a400e28..63b2125ae 100644 --- a/navtreeindex0.js +++ b/navtreeindex0.js @@ -21,7 +21,7 @@ var NAVTREEINDEX0 = "binv_8F90_source.html":[6,0,3], "bitmaps_8F90.html":[6,0,4], "bitmaps_8F90.html#a2dd600ba6cd71e06a19d88956337781b":[6,0,4,1], -"bitmaps_8F90.html#a81f55f4b1f740f3ac6e3f56ee0a06dee":[6,0,4,3], +"bitmaps_8F90.html#a3136c71ed068ed6a4f6018fff79d4ebd":[6,0,4,3], "bitmaps_8F90.html#a867a81be072effc2a9d2de0d6031e264":[6,0,4,0], "bitmaps_8F90.html#ad95571bf5308d6b64163d3bcc7ea3512":[6,0,4,2], "bitmaps_8F90_source.html":[6,0,4], @@ -147,38 +147,47 @@ var NAVTREEINDEX0 = "bufrlib_8F90.html":[6,0,10], "bufrlib_8F90_source.html":[6,0,10], "bufrlib_8h.html":[6,0,11], -"bufrlib_8h.html#a0320e66350174c1e05f30babd13d52c2":[6,0,11,19], -"bufrlib_8h.html#a039293342a5ca4fe52a09992db5e42c9":[6,0,11,10], -"bufrlib_8h.html#a320fb202c17784943f8223593c9123dd":[6,0,11,0], -"bufrlib_8h.html#a39fc8b2494bb5f754c2d800c4b5a2f1c":[6,0,11,15], -"bufrlib_8h.html#a3e533930a6aa9c6fc76c89d14e54cf47":[6,0,11,20], -"bufrlib_8h.html#a45c023844f35d35ee3c5e77e60fdb18a":[6,0,11,22], -"bufrlib_8h.html#a4bd8daccf2564da21968a531b87bf447":[6,0,11,9], -"bufrlib_8h.html#a4f4c37daea8a69385e280d60265f9d40":[6,0,11,30], -"bufrlib_8h.html#a6d361bdabcb605e7677b9c29cf7ba10f":[6,0,11,28], -"bufrlib_8h.html#a6fa6d930bc1885cd5cf30d57dfcc6a4b":[6,0,11,2], -"bufrlib_8h.html#a7b13da152c5a09e0fc1c92d8eb41154b":[6,0,11,12], -"bufrlib_8h.html#a87f18b149395d0c626a9ba310c959e3c":[6,0,11,3], -"bufrlib_8h.html#a8b09f32462059d646e44ea6098a08edc":[6,0,11,13], -"bufrlib_8h.html#a8eb759a820f7f12a3b75e92473db3c78":[6,0,11,23], -"bufrlib_8h.html#a9043f4f41d0f9e6a276f936a03416f69":[6,0,11,5], -"bufrlib_8h.html#a95bc32869561911e9ca020628802edc5":[6,0,11,14], -"bufrlib_8h.html#a98efd59b32b1d2ed2c060d2564824e28":[6,0,11,6], -"bufrlib_8h.html#a9941f6596dafba1e4361eb2f5e173f24":[6,0,11,17], -"bufrlib_8h.html#a9fab66c5a028abf354d075040dde317c":[6,0,11,27], -"bufrlib_8h.html#aa7b36dfb6c0fe0f9a1104d34c5acfa5e":[6,0,11,25], -"bufrlib_8h.html#aac0f5146bfdbf7042ac39e515475ba11":[6,0,11,29], -"bufrlib_8h.html#aaf134edc1efd697331c03effd4d056e0":[6,0,11,4], -"bufrlib_8h.html#ab18be8cbb2bdbdb682adce89dd1a9c69":[6,0,11,24], -"bufrlib_8h.html#ab25c8c36df6eb956d84010bc74002858":[6,0,11,1], -"bufrlib_8h.html#ab3b665adb5a53a4c82d3c5caadbb2c38":[6,0,11,16], -"bufrlib_8h.html#ac283516a1391fee0635b01beffdad7cb":[6,0,11,7], -"bufrlib_8h.html#ac68117670f91ed84a5edf1bf074bc187":[6,0,11,26], -"bufrlib_8h.html#ad32acb7e25a0763d1ecfa201884bc131":[6,0,11,18], -"bufrlib_8h.html#ad5429d7ed327f515c880227bb795162b":[6,0,11,8], -"bufrlib_8h.html#af730245754e061e8dd5f7d77f0310f8b":[6,0,11,31], -"bufrlib_8h.html#af98949e6ee91a0b77a8f24509401ed2d":[6,0,11,21], -"bufrlib_8h.html#afffb1b48f2c7d82abebcf2564d47438a":[6,0,11,11], +"bufrlib_8h.html#a0320e66350174c1e05f30babd13d52c2":[6,0,11,28], +"bufrlib_8h.html#a039293342a5ca4fe52a09992db5e42c9":[6,0,11,18], +"bufrlib_8h.html#a0594bcf6e40e8c738c1b986531803103":[6,0,11,4], +"bufrlib_8h.html#a0eaedf1628e74c9cf33925349602c234":[6,0,11,0], +"bufrlib_8h.html#a1242c4d43753a37cdb9abfb3f01e5583":[6,0,11,23], +"bufrlib_8h.html#a25dc173d68b3afa24cc277fd47351b08":[6,0,11,2], +"bufrlib_8h.html#a320fb202c17784943f8223593c9123dd":[6,0,11,11], +"bufrlib_8h.html#a39fc8b2494bb5f754c2d800c4b5a2f1c":[6,0,11,24], +"bufrlib_8h.html#a3e533930a6aa9c6fc76c89d14e54cf47":[6,0,11,29], +"bufrlib_8h.html#a45c023844f35d35ee3c5e77e60fdb18a":[6,0,11,31], +"bufrlib_8h.html#a4bd8daccf2564da21968a531b87bf447":[6,0,11,17], +"bufrlib_8h.html#a4f4c37daea8a69385e280d60265f9d40":[6,0,11,39], +"bufrlib_8h.html#a59b3be3abd88311baddcaaabb93b9293":[6,0,11,9], +"bufrlib_8h.html#a6cac2647154ce58c562d8bcd3ebdfd30":[6,0,11,1], +"bufrlib_8h.html#a6d361bdabcb605e7677b9c29cf7ba10f":[6,0,11,37], +"bufrlib_8h.html#a7b13da152c5a09e0fc1c92d8eb41154b":[6,0,11,20], +"bufrlib_8h.html#a8b09f32462059d646e44ea6098a08edc":[6,0,11,21], +"bufrlib_8h.html#a8eb759a820f7f12a3b75e92473db3c78":[6,0,11,32], +"bufrlib_8h.html#a9043f4f41d0f9e6a276f936a03416f69":[6,0,11,13], +"bufrlib_8h.html#a95bc32869561911e9ca020628802edc5":[6,0,11,22], +"bufrlib_8h.html#a965d697089b48eb887e65dec5fa7565c":[6,0,11,5], +"bufrlib_8h.html#a98efd59b32b1d2ed2c060d2564824e28":[6,0,11,14], +"bufrlib_8h.html#a9941f6596dafba1e4361eb2f5e173f24":[6,0,11,26], +"bufrlib_8h.html#a9fab66c5a028abf354d075040dde317c":[6,0,11,36], +"bufrlib_8h.html#aa7b36dfb6c0fe0f9a1104d34c5acfa5e":[6,0,11,34], +"bufrlib_8h.html#aa90cf4e9894a2ec47026ae5308746dab":[6,0,11,7], +"bufrlib_8h.html#aac0f5146bfdbf7042ac39e515475ba11":[6,0,11,38], +"bufrlib_8h.html#aaf134edc1efd697331c03effd4d056e0":[6,0,11,12], +"bufrlib_8h.html#ab18be8cbb2bdbdb682adce89dd1a9c69":[6,0,11,33], +"bufrlib_8h.html#ab3b665adb5a53a4c82d3c5caadbb2c38":[6,0,11,25], +"bufrlib_8h.html#ac283516a1391fee0635b01beffdad7cb":[6,0,11,15], +"bufrlib_8h.html#ac68117670f91ed84a5edf1bf074bc187":[6,0,11,35], +"bufrlib_8h.html#ad2fcc22b1b96013c10ae5464fe22836b":[6,0,11,6], +"bufrlib_8h.html#ad32acb7e25a0763d1ecfa201884bc131":[6,0,11,27], +"bufrlib_8h.html#ad4c1adc1bcab5f8db9b6b05f4f3d7da0":[6,0,11,3], +"bufrlib_8h.html#ad5429d7ed327f515c880227bb795162b":[6,0,11,16], +"bufrlib_8h.html#adadd9c7831a26b7410d97b12e47d19b3":[6,0,11,8], +"bufrlib_8h.html#af730245754e061e8dd5f7d77f0310f8b":[6,0,11,40], +"bufrlib_8h.html#af87e679a3aed76b3e5809ddf209e2c67":[6,0,11,10], +"bufrlib_8h.html#af98949e6ee91a0b77a8f24509401ed2d":[6,0,11,30], +"bufrlib_8h.html#afffb1b48f2c7d82abebcf2564d47438a":[6,0,11,19], "bufrlib_8h_source.html":[6,0,11], "cfe_8c.html":[6,0,12], "cfe_8c.html#a1242c4d43753a37cdb9abfb3f01e5583":[6,0,12,3], @@ -240,14 +249,5 @@ var NAVTREEINDEX0 = "copydata_8F90.html#aed892e851f07fc9bf94a2c58c809c09c":[6,0,18,9], "copydata_8F90.html#aedfe2559c1f9c59ec85c11993b378e7e":[6,0,18,1], "copydata_8F90_source.html":[6,0,18], -"cpmstabs_8c.html":[6,0,19], -"cpmstabs_8c.html#ab993a0c7a1d8c4c04fb7006f6253025c":[6,0,19,0], -"cpmstabs_8c_source.html":[6,0,19], -"cread_8c.html":[6,0,20], -"cread_8c.html#a7b13da152c5a09e0fc1c92d8eb41154b":[6,0,20,2], -"cread_8c.html#a8b09f32462059d646e44ea6098a08edc":[6,0,20,3], -"cread_8c.html#a8eb759a820f7f12a3b75e92473db3c78":[6,0,20,5], -"cread_8c.html#a95bc32869561911e9ca020628802edc5":[6,0,20,4], -"cread_8c.html#aa7b36dfb6c0fe0f9a1104d34c5acfa5e":[6,0,20,7], -"cread_8c.html#ab18be8cbb2bdbdb682adce89dd1a9c69":[6,0,20,6] +"cpmstabs_8c.html":[6,0,19] }; diff --git a/navtreeindex1.js b/navtreeindex1.js index 39ce8a6a8..597d229c7 100644 --- a/navtreeindex1.js +++ b/navtreeindex1.js @@ -1,5 +1,14 @@ var NAVTREEINDEX1 = { +"cpmstabs_8c.html#ab993a0c7a1d8c4c04fb7006f6253025c":[6,0,19,0], +"cpmstabs_8c_source.html":[6,0,19], +"cread_8c.html":[6,0,20], +"cread_8c.html#a7b13da152c5a09e0fc1c92d8eb41154b":[6,0,20,2], +"cread_8c.html#a8b09f32462059d646e44ea6098a08edc":[6,0,20,3], +"cread_8c.html#a8eb759a820f7f12a3b75e92473db3c78":[6,0,20,5], +"cread_8c.html#a95bc32869561911e9ca020628802edc5":[6,0,20,4], +"cread_8c.html#aa7b36dfb6c0fe0f9a1104d34c5acfa5e":[6,0,20,7], +"cread_8c.html#ab18be8cbb2bdbdb682adce89dd1a9c69":[6,0,20,6], "cread_8c.html#ad5429d7ed327f515c880227bb795162b":[6,0,20,0], "cread_8c.html#afffb1b48f2c7d82abebcf2564d47438a":[6,0,20,1], "cread_8c_source.html":[6,0,20], @@ -79,8 +88,8 @@ var NAVTREEINDEX1 = "gettab_8F90.html":[6,0,29], "gettab_8F90.html#ac9eda42ec8bf46baae0a4f34cd517813":[6,0,29,0], "gettab_8F90_source.html":[6,0,29], -"globals.html":[6,1,0], "globals.html":[6,1,0,0], +"globals.html":[6,1,0], "globals_b.html":[6,1,0,1], "globals_c.html":[6,1,0,2], "globals_d.html":[6,1,0,3], @@ -130,11 +139,11 @@ var NAVTREEINDEX1 = "icvidx_8c.html#ab3b665adb5a53a4c82d3c5caadbb2c38":[6,0,30,0], "icvidx_8c_source.html":[6,0,30], "index.html":[], -"index.html#autotoc_md63":[0], -"index.html#autotoc_md64":[1], -"index.html#autotoc_md65":[2], -"index.html#autotoc_md66":[3], -"index.html#autotoc_md67":[4], +"index.html#autotoc_md64":[0], +"index.html#autotoc_md65":[1], +"index.html#autotoc_md66":[2], +"index.html#autotoc_md67":[3], +"index.html#autotoc_md68":[4], "interfacebufr__interface_1_1ccbfl__c.html":[5,0,0,0], "interfacebufr__interface_1_1ccbfl__c.html#a465bb0ca48168a8a39e63a8a6389fbe8":[5,0,0,0,0], "interfacebufr__interface_1_1cobfl__c.html":[5,0,0,1], @@ -143,8 +152,6 @@ var NAVTREEINDEX1 = "interfacebufr__interface_1_1crbmg__c.html#a2032b00ac9a4d3230ce8f78b127f3311":[5,0,0,2,0], "interfacebufr__interface_1_1cwbmg__c.html":[5,0,0,3], "interfacebufr__interface_1_1cwbmg__c.html#a239dcd549ee24ca912e161e76619e113":[5,0,0,3,0], -"interfacebufr__interface_1_1dlloctbf__c.html":[5,0,0,4], -"interfacebufr__interface_1_1dlloctbf__c.html#a1391c5c6cddcc5daba0327f8a1b563e6":[5,0,0,4,0], "interfacebufrlib_1_1arallocc__c.html":[5,0,1,0], "interfacebufrlib_1_1arallocc__c.html#a59657ce8014f439d0bdd18713ee7788d":[5,0,1,0,0], "interfacebufrlib_1_1ardllocc__c.html":[5,0,1,1], @@ -242,12 +249,5 @@ var NAVTREEINDEX1 = "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md29":[2,17], "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md30":[2,18], "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md31":[2,19], -"md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md32":[2,20], -"md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md33":[2,21], -"md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md34":[2,22], -"md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md35":[2,23], -"md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md36":[2,24], -"md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md37":[2,25], -"md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md38":[2,26], -"md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md39":[2,27] +"md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md32":[2,20] }; diff --git a/navtreeindex2.js b/navtreeindex2.js index 8a5ec8a5e..06497ad5c 100644 --- a/navtreeindex2.js +++ b/navtreeindex2.js @@ -1,5 +1,12 @@ var NAVTREEINDEX2 = { +"md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md33":[2,21], +"md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md34":[2,22], +"md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md35":[2,23], +"md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md36":[2,24], +"md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md37":[2,25], +"md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md38":[2,26], +"md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md39":[2,27], "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md40":[2,28], "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md41":[2,29], "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md42":[2,30], @@ -23,6 +30,7 @@ var NAVTREEINDEX2 = "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md60":[2,48], "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md61":[2,49], "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md62":[2,50], +"md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html#autotoc_md63":[2,51], "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_dx_tables.html":[0], "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_dx_tables.html#autotoc_md1":[0,5], "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_dx_tables.html#autotoc_md2":[0,6], @@ -35,16 +43,16 @@ var NAVTREEINDEX2 = "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_master_tables.html#autotoc_md8":[1,0], "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_master_tables.html#autotoc_md9":[1,1], "md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_utils.html":[3], -"md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_utils.html#autotoc_md70":[3,0], -"md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_utils.html#autotoc_md72":[3,1], -"md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_utils.html#autotoc_md74":[3,2], -"md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_utils.html#autotoc_md76":[3,3], -"md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_utils.html#autotoc_md78":[3,4], -"md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_utils.html#autotoc_md80":[3,5], -"md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_utils.html#autotoc_md82":[3,6], -"md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_utils.html#autotoc_md84":[3,7], -"md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_utils.html#autotoc_md86":[3,8], -"md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_utils.html#autotoc_md88":[3,9], +"md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_utils.html#autotoc_md71":[3,0], +"md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_utils.html#autotoc_md73":[3,1], +"md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_utils.html#autotoc_md75":[3,2], +"md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_utils.html#autotoc_md77":[3,3], +"md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_utils.html#autotoc_md79":[3,4], +"md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_utils.html#autotoc_md81":[3,5], +"md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_utils.html#autotoc_md83":[3,6], +"md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_utils.html#autotoc_md85":[3,7], +"md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_utils.html#autotoc_md87":[3,8], +"md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_utils.html#autotoc_md89":[3,9], "memmsgs_8F90.html":[6,0,33], "memmsgs_8F90.html#a2687d7372647fc32c4713c7e9eb6d268":[6,0,33,3], "memmsgs_8F90.html#a28854648f33f49aaeb3b2209e00c0ae7":[6,0,33,0], @@ -78,176 +86,168 @@ var NAVTREEINDEX2 = "missing_8F90.html#a7dd66484c8bf4dd8d8e3791d02715e86":[6,0,35,1], "missing_8F90_source.html":[6,0,35], "modules__arrs_8F90.html":[6,0,36], -"modules__arrs_8F90.html#a013b7b1f0e72002222c0ee2ae5a3dcac":[6,0,36,139], -"modules__arrs_8F90.html#a02ea2421e524ac9f2f8e213dd0151558":[6,0,36,152], -"modules__arrs_8F90.html#a030ff35af84549af17fe0b0e4315ebf2":[6,0,36,120], -"modules__arrs_8F90.html#a034d50224d3416c855472ead1043b1aa":[6,0,36,45], -"modules__arrs_8F90.html#a043c64825f8bdb44c4e6b69d2f5c253c":[6,0,36,161], +"modules__arrs_8F90.html#a013b7b1f0e72002222c0ee2ae5a3dcac":[6,0,36,144], +"modules__arrs_8F90.html#a02ea2421e524ac9f2f8e213dd0151558":[6,0,36,159], +"modules__arrs_8F90.html#a030ff35af84549af17fe0b0e4315ebf2":[6,0,36,124], +"modules__arrs_8F90.html#a034d50224d3416c855472ead1043b1aa":[6,0,36,49], +"modules__arrs_8F90.html#a043c64825f8bdb44c4e6b69d2f5c253c":[6,0,36,169], "modules__arrs_8F90.html#a07c74b931e7ddbba553f8391b8e24aaf":[6,0,36,20], -"modules__arrs_8F90.html#a07ee8cbf949167ffea7e2ac9ceddd536":[6,0,36,54], -"modules__arrs_8F90.html#a07f44b4772abffacaba7e9be5fbb7fda":[6,0,36,39], -"modules__arrs_8F90.html#a089cf80d582ff75c6596063d0ed8c049":[6,0,36,34], -"modules__arrs_8F90.html#a0b8b25c6365505c5045ab473f54e03f6":[6,0,36,86], -"modules__arrs_8F90.html#a0bab4a779995493580b46f231516e133":[6,0,36,133], +"modules__arrs_8F90.html#a07ee8cbf949167ffea7e2ac9ceddd536":[6,0,36,58], +"modules__arrs_8F90.html#a07f44b4772abffacaba7e9be5fbb7fda":[6,0,36,42], +"modules__arrs_8F90.html#a089cf80d582ff75c6596063d0ed8c049":[6,0,36,37], +"modules__arrs_8F90.html#a0b8b25c6365505c5045ab473f54e03f6":[6,0,36,90], +"modules__arrs_8F90.html#a0bab4a779995493580b46f231516e133":[6,0,36,138], "modules__arrs_8F90.html#a0ccfcc43067ef6debce2218ad50abb0b":[6,0,36,6], -"modules__arrs_8F90.html#a0db33f8017f2c46947f0a5589ba98227":[6,0,36,121], +"modules__arrs_8F90.html#a0db33f8017f2c46947f0a5589ba98227":[6,0,36,125], "modules__arrs_8F90.html#a1152389e5fc9eadddbea89bd76abc653":[6,0,36,12], -"modules__arrs_8F90.html#a126e6cfde8da74741042004b33f48a9e":[6,0,36,165], -"modules__arrs_8F90.html#a12d35afcaacac53905061f928377d92b":[6,0,36,69], +"modules__arrs_8F90.html#a126e6cfde8da74741042004b33f48a9e":[6,0,36,173], +"modules__arrs_8F90.html#a12d35afcaacac53905061f928377d92b":[6,0,36,73], "modules__arrs_8F90.html#a141173c549e506cd4637af33c4efdece":[6,0,36,17], -"modules__arrs_8F90.html#a157bb0cb25913753748822ce3c384b06":[6,0,36,81], -"modules__arrs_8F90.html#a17c04e8d3d8d361463e3f2fc0b3dd599":[6,0,36,56], -"modules__arrs_8F90.html#a18e681f9bedbaadf3526641e19598901":[6,0,36,62], -"modules__arrs_8F90.html#a1b6c0eaf2305df7abddd8c6c66723526":[6,0,36,156], -"modules__arrs_8F90.html#a1c370e229cc62002283ca2462296273e":[6,0,36,59], +"modules__arrs_8F90.html#a157bb0cb25913753748822ce3c384b06":[6,0,36,85], +"modules__arrs_8F90.html#a17c04e8d3d8d361463e3f2fc0b3dd599":[6,0,36,60], +"modules__arrs_8F90.html#a18e681f9bedbaadf3526641e19598901":[6,0,36,66], +"modules__arrs_8F90.html#a1b6c0eaf2305df7abddd8c6c66723526":[6,0,36,164], +"modules__arrs_8F90.html#a1c370e229cc62002283ca2462296273e":[6,0,36,63], "modules__arrs_8F90.html#a1ff254e3c0f169340a16225a17c5a2c2":[6,0,36,27], "modules__arrs_8F90.html#a21983afeacfaf7e7755271343aca9055":[6,0,36,14], -"modules__arrs_8F90.html#a21f38471f40c0eaecdf011d5b594de65":[6,0,36,159], -"modules__arrs_8F90.html#a225d75cc454938f8da4ed39857ff2c5c":[6,0,36,82], -"modules__arrs_8F90.html#a2269ddd572fded029ca62080b38f6261":[6,0,36,157], +"modules__arrs_8F90.html#a21f38471f40c0eaecdf011d5b594de65":[6,0,36,167], +"modules__arrs_8F90.html#a225d75cc454938f8da4ed39857ff2c5c":[6,0,36,86], +"modules__arrs_8F90.html#a2269ddd572fded029ca62080b38f6261":[6,0,36,165], "modules__arrs_8F90.html#a23356dfd7172ae4d2ff05d657234d6ab":[6,0,36,19], -"modules__arrs_8F90.html#a243a2baa283f951be51ea9466cca35b8":[6,0,36,92], -"modules__arrs_8F90.html#a24e12e5c288360f0e7e6483094773db6":[6,0,36,38], -"modules__arrs_8F90.html#a2514f74da635c6ba7047ec108ce4e211":[6,0,36,118], -"modules__arrs_8F90.html#a25deca91911dc2223155e55c8b47f889":[6,0,36,158], -"modules__arrs_8F90.html#a2648b6b58fd6cf4c983b5c4c23b29574":[6,0,36,65], -"modules__arrs_8F90.html#a2784f03b6c19452c601b1377a3ed59a1":[6,0,36,41], -"modules__arrs_8F90.html#a2861db4fcd6083b5f6d194c92e873c95":[6,0,36,141], -"modules__arrs_8F90.html#a28b0f02b81a535890fc64ec13fdfc35b":[6,0,36,96], -"modules__arrs_8F90.html#a29788f9aef200e10d2f557c16abfaa56":[6,0,36,125], -"modules__arrs_8F90.html#a2a706219ab0edde0511570bfa32093ed":[6,0,36,168], +"modules__arrs_8F90.html#a243a2baa283f951be51ea9466cca35b8":[6,0,36,96], +"modules__arrs_8F90.html#a24e12e5c288360f0e7e6483094773db6":[6,0,36,41], +"modules__arrs_8F90.html#a2514f74da635c6ba7047ec108ce4e211":[6,0,36,122], +"modules__arrs_8F90.html#a25deca91911dc2223155e55c8b47f889":[6,0,36,166], +"modules__arrs_8F90.html#a2648b6b58fd6cf4c983b5c4c23b29574":[6,0,36,69], +"modules__arrs_8F90.html#a2784f03b6c19452c601b1377a3ed59a1":[6,0,36,44], +"modules__arrs_8F90.html#a2861db4fcd6083b5f6d194c92e873c95":[6,0,36,147], +"modules__arrs_8F90.html#a28b0f02b81a535890fc64ec13fdfc35b":[6,0,36,100], +"modules__arrs_8F90.html#a29788f9aef200e10d2f557c16abfaa56":[6,0,36,129], +"modules__arrs_8F90.html#a2a706219ab0edde0511570bfa32093ed":[6,0,36,176], "modules__arrs_8F90.html#a2ceee9741718460b614f37fb6b976259":[6,0,36,10], "modules__arrs_8F90.html#a31164f84ab9d27493a19afee2fda502a":[6,0,36,1], -"modules__arrs_8F90.html#a320a25005a0063e8a0713fc66973b655":[6,0,36,76], -"modules__arrs_8F90.html#a352a33aaf989dcaab7646f86aa41e27d":[6,0,36,103], -"modules__arrs_8F90.html#a354161b574c84bfd3401bc0b287335c7":[6,0,36,75], +"modules__arrs_8F90.html#a320a25005a0063e8a0713fc66973b655":[6,0,36,80], +"modules__arrs_8F90.html#a352a33aaf989dcaab7646f86aa41e27d":[6,0,36,107], +"modules__arrs_8F90.html#a354161b574c84bfd3401bc0b287335c7":[6,0,36,79], "modules__arrs_8F90.html#a37a325646f12fe6d0dd3ae3c341f20d7":[6,0,36,11], -"modules__arrs_8F90.html#a37df9d6a60023612be784db0b759da3b":[6,0,36,31], -"modules__arrs_8F90.html#a38470e8cca9ad2afce56dd577ddd5b51":[6,0,36,87], -"modules__arrs_8F90.html#a3baea9191da6d91a8590cba5181493a6":[6,0,36,108], -"modules__arrs_8F90.html#a3f402734944f1438bc986b0d877a0bd7":[6,0,36,72], -"modules__arrs_8F90.html#a43a1031d5c017c6f61ba6deabe22daad":[6,0,36,140], +"modules__arrs_8F90.html#a37df9d6a60023612be784db0b759da3b":[6,0,36,34], +"modules__arrs_8F90.html#a38470e8cca9ad2afce56dd577ddd5b51":[6,0,36,91], +"modules__arrs_8F90.html#a3baea9191da6d91a8590cba5181493a6":[6,0,36,112], +"modules__arrs_8F90.html#a3f402734944f1438bc986b0d877a0bd7":[6,0,36,76], +"modules__arrs_8F90.html#a43a1031d5c017c6f61ba6deabe22daad":[6,0,36,146], "modules__arrs_8F90.html#a47438a5eff5e61065fce0dc3df1694a7":[6,0,36,23], -"modules__arrs_8F90.html#a481c60320ac88f9d5b5d85d1af3a60cf":[6,0,36,48], +"modules__arrs_8F90.html#a481c60320ac88f9d5b5d85d1af3a60cf":[6,0,36,52], "modules__arrs_8F90.html#a4910f483014af612d37ea34a1f477434":[6,0,36,24], -"modules__arrs_8F90.html#a4971d723fe9c86ed7741f7cfae61f2f0":[6,0,36,85], +"modules__arrs_8F90.html#a4971d723fe9c86ed7741f7cfae61f2f0":[6,0,36,89], "modules__arrs_8F90.html#a4c761088ff4243b661ec78773c07adaa":[6,0,36,3], -"modules__arrs_8F90.html#a4dfbf13c3d38b007276cb0f5c5418396":[6,0,36,151], -"modules__arrs_8F90.html#a4ff0c6b9328407caa52c08dd22d7525c":[6,0,36,166], -"modules__arrs_8F90.html#a52a37b6bcc7ed3492325f47e1f8018ab":[6,0,36,30], -"modules__arrs_8F90.html#a547378be8180b17844161916eca1e876":[6,0,36,98], -"modules__arrs_8F90.html#a549e012729bbc3cb18894d34380ce5bd":[6,0,36,127], -"modules__arrs_8F90.html#a55020aca1118bb6f09f8b3d1f68a5c74":[6,0,36,42], -"modules__arrs_8F90.html#a574b3c666f5e8aa725910e20a739f561":[6,0,36,145], -"modules__arrs_8F90.html#a5a1f71e4a27babbf5eadd01f7b3dcdcb":[6,0,36,84], -"modules__arrs_8F90.html#a5a7267a967fec712c56a680893698965":[6,0,36,64], -"modules__arrs_8F90.html#a5ac2ef8f11fcf81b55a5353dbfda18cc":[6,0,36,126], -"modules__arrs_8F90.html#a5f03be0ecd3fa7e059b9c74fb67cd4e4":[6,0,36,162], -"modules__arrs_8F90.html#a5f77a3f33df1fc46f007160428b674d1":[6,0,36,135], -"modules__arrs_8F90.html#a5f80cd868154c06f202e5886d40750de":[6,0,36,163], +"modules__arrs_8F90.html#a4dfbf13c3d38b007276cb0f5c5418396":[6,0,36,158], +"modules__arrs_8F90.html#a4ff0c6b9328407caa52c08dd22d7525c":[6,0,36,174], +"modules__arrs_8F90.html#a52a37b6bcc7ed3492325f47e1f8018ab":[6,0,36,31], +"modules__arrs_8F90.html#a5325016ada1d1e03d49737e28d92ce47":[6,0,36,33], +"modules__arrs_8F90.html#a547378be8180b17844161916eca1e876":[6,0,36,102], +"modules__arrs_8F90.html#a549e012729bbc3cb18894d34380ce5bd":[6,0,36,131], +"modules__arrs_8F90.html#a55020aca1118bb6f09f8b3d1f68a5c74":[6,0,36,45], +"modules__arrs_8F90.html#a574b3c666f5e8aa725910e20a739f561":[6,0,36,151], +"modules__arrs_8F90.html#a5a1f71e4a27babbf5eadd01f7b3dcdcb":[6,0,36,88], +"modules__arrs_8F90.html#a5a7267a967fec712c56a680893698965":[6,0,36,68], +"modules__arrs_8F90.html#a5ac2ef8f11fcf81b55a5353dbfda18cc":[6,0,36,130], +"modules__arrs_8F90.html#a5f03be0ecd3fa7e059b9c74fb67cd4e4":[6,0,36,170], +"modules__arrs_8F90.html#a5f77a3f33df1fc46f007160428b674d1":[6,0,36,140], +"modules__arrs_8F90.html#a5f80cd868154c06f202e5886d40750de":[6,0,36,171], "modules__arrs_8F90.html#a61847a8129d1a6c6909c2ea4727d67f6":[6,0,36,8], -"modules__arrs_8F90.html#a61eaac2cb0e3dd6de4d02e9986cab602":[6,0,36,63], -"modules__arrs_8F90.html#a6530eb70f0a9131f659c61a74652c93d":[6,0,36,130], -"modules__arrs_8F90.html#a67590bc418c6aeb7792572c11a6bc793":[6,0,36,122], -"modules__arrs_8F90.html#a6ab1ee23535fd8b352c4f5d863a1c458":[6,0,36,47], -"modules__arrs_8F90.html#a6e28d53baf8dce1d6a5c4b91546cfcca":[6,0,36,35], -"modules__arrs_8F90.html#a6e3f292bfc1ab7b63b783bdf0266c812":[6,0,36,58], -"modules__arrs_8F90.html#a6e754cd1cdefe0c8c93ab497fcb33637":[6,0,36,136], -"modules__arrs_8F90.html#a6ee3ae8f4cfb91d15189834b8b62d41f":[6,0,36,146], +"modules__arrs_8F90.html#a61d7a9354052881b929a1c7afeff24f2":[6,0,36,145], +"modules__arrs_8F90.html#a61eaac2cb0e3dd6de4d02e9986cab602":[6,0,36,67], +"modules__arrs_8F90.html#a6530eb70f0a9131f659c61a74652c93d":[6,0,36,135], +"modules__arrs_8F90.html#a67590bc418c6aeb7792572c11a6bc793":[6,0,36,126], +"modules__arrs_8F90.html#a6ab1ee23535fd8b352c4f5d863a1c458":[6,0,36,51], +"modules__arrs_8F90.html#a6e28d53baf8dce1d6a5c4b91546cfcca":[6,0,36,38], +"modules__arrs_8F90.html#a6e3f292bfc1ab7b63b783bdf0266c812":[6,0,36,62], +"modules__arrs_8F90.html#a6e754cd1cdefe0c8c93ab497fcb33637":[6,0,36,141], +"modules__arrs_8F90.html#a6ee3ae8f4cfb91d15189834b8b62d41f":[6,0,36,153], +"modules__arrs_8F90.html#a70a224458d62bb0e617313d4e05d976b":[6,0,36,30], +"modules__arrs_8F90.html#a71cc22e6cdcdf0d9d885f3e2418905a9":[6,0,36,163], "modules__arrs_8F90.html#a748ff156e2c817957765b05119f74270":[6,0,36,7], -"modules__arrs_8F90.html#a74976394b2b70036d27222507ba4bfcc":[6,0,36,150], -"modules__arrs_8F90.html#a76b8845911215f91b5a91128facb7cbd":[6,0,36,57], -"modules__arrs_8F90.html#a77349b5f0a6f8916850dcb253aee1f30":[6,0,36,74], -"modules__arrs_8F90.html#a79bdd90460fa467a8e9130089d7963a5":[6,0,36,99], -"modules__arrs_8F90.html#a7a0967a79c236a16f1fa11ebb8f99b0f":[6,0,36,43], -"modules__arrs_8F90.html#a7ad9ef51fc135aad9fcecba2a636f486":[6,0,36,167], -"modules__arrs_8F90.html#a7c3104f9c9731b91a8a105bcc5212542":[6,0,36,93], -"modules__arrs_8F90.html#a7caf741d65ff0b68932fa7d207c689ba":[6,0,36,83], -"modules__arrs_8F90.html#a7dfdd248050c7cc36f38933711526888":[6,0,36,148], -"modules__arrs_8F90.html#a7e27d4bdf5a372fd7dac8ede033f969e":[6,0,36,49], -"modules__arrs_8F90.html#a7e5d5589bde01337616f2527beed519f":[6,0,36,44], -"modules__arrs_8F90.html#a7f37665c0422638e65824c8b9183169e":[6,0,36,143], -"modules__arrs_8F90.html#a80dd6be1ed3b93e6cb6fcfef1e87ee08":[6,0,36,79], -"modules__arrs_8F90.html#a81b647a972ded879adf10cb98bfaab2e":[6,0,36,61], -"modules__arrs_8F90.html#a821fcf75cf865aaebdba3527d04190e0":[6,0,36,88], -"modules__arrs_8F90.html#a875c0ff90cd5fdc88e3f10ae7b5bc556":[6,0,36,154], -"modules__arrs_8F90.html#a8be10a997d67944a328d256bfc60bf02":[6,0,36,171], +"modules__arrs_8F90.html#a74976394b2b70036d27222507ba4bfcc":[6,0,36,157], +"modules__arrs_8F90.html#a76b8845911215f91b5a91128facb7cbd":[6,0,36,61], +"modules__arrs_8F90.html#a77349b5f0a6f8916850dcb253aee1f30":[6,0,36,78], +"modules__arrs_8F90.html#a785d2d36be7d1f598ea6d827386978f4":[6,0,36,32], +"modules__arrs_8F90.html#a79bdd90460fa467a8e9130089d7963a5":[6,0,36,103], +"modules__arrs_8F90.html#a7a0967a79c236a16f1fa11ebb8f99b0f":[6,0,36,46], +"modules__arrs_8F90.html#a7ad9ef51fc135aad9fcecba2a636f486":[6,0,36,175], +"modules__arrs_8F90.html#a7c3104f9c9731b91a8a105bcc5212542":[6,0,36,97], +"modules__arrs_8F90.html#a7caf741d65ff0b68932fa7d207c689ba":[6,0,36,87], +"modules__arrs_8F90.html#a7dfdd248050c7cc36f38933711526888":[6,0,36,155], +"modules__arrs_8F90.html#a7e27d4bdf5a372fd7dac8ede033f969e":[6,0,36,53], +"modules__arrs_8F90.html#a7e5d5589bde01337616f2527beed519f":[6,0,36,47], +"modules__arrs_8F90.html#a7f37665c0422638e65824c8b9183169e":[6,0,36,149], +"modules__arrs_8F90.html#a80dd6be1ed3b93e6cb6fcfef1e87ee08":[6,0,36,83], +"modules__arrs_8F90.html#a81b647a972ded879adf10cb98bfaab2e":[6,0,36,65], +"modules__arrs_8F90.html#a821fcf75cf865aaebdba3527d04190e0":[6,0,36,92], +"modules__arrs_8F90.html#a875c0ff90cd5fdc88e3f10ae7b5bc556":[6,0,36,161], +"modules__arrs_8F90.html#a889fda4f92be8677aecb3548c824fd18":[6,0,36,48], +"modules__arrs_8F90.html#a8be10a997d67944a328d256bfc60bf02":[6,0,36,179], "modules__arrs_8F90.html#a8c052fc732472f6f329209ac2db75cf9":[6,0,36,26], -"modules__arrs_8F90.html#a8ecc5d87d79c8c3aa778665041bcb522":[6,0,36,73], -"modules__arrs_8F90.html#a8f322e3d7724bb96f7ce06beec989c0f":[6,0,36,153], -"modules__arrs_8F90.html#a90cc348c7156330efc75a45e5e5860ca":[6,0,36,55], -"modules__arrs_8F90.html#a945fc956c1c6ba8c37bfe63c04837b36":[6,0,36,89], -"modules__arrs_8F90.html#a94ad19bfc71bbfcd6f1caf4a744d5eb3":[6,0,36,138], +"modules__arrs_8F90.html#a8ecc5d87d79c8c3aa778665041bcb522":[6,0,36,77], +"modules__arrs_8F90.html#a8f322e3d7724bb96f7ce06beec989c0f":[6,0,36,160], +"modules__arrs_8F90.html#a90cc348c7156330efc75a45e5e5860ca":[6,0,36,59], +"modules__arrs_8F90.html#a945fc956c1c6ba8c37bfe63c04837b36":[6,0,36,93], +"modules__arrs_8F90.html#a94ad19bfc71bbfcd6f1caf4a744d5eb3":[6,0,36,143], "modules__arrs_8F90.html#a94ea2c3cfc88079d837ac29324d61937":[6,0,36,0], -"modules__arrs_8F90.html#a97f45bd4e10b6016c9ef17bbd0efc2ca":[6,0,36,68], -"modules__arrs_8F90.html#a9905d8bc2ddc7681086ea0319442d0d9":[6,0,36,117], -"modules__arrs_8F90.html#a99268fc2b9168fcbbd5f8ab70e6da0b7":[6,0,36,129], -"modules__arrs_8F90.html#a9c4d7ff754fd79feb908c6858f7e4e5f":[6,0,36,147], -"modules__arrs_8F90.html#a9e14841d9a084410d3ee7d5d08d3bf5e":[6,0,36,37], -"modules__arrs_8F90.html#a9ec76b10297b2e9521682a1e2014370d":[6,0,36,90], -"modules__arrs_8F90.html#aa480a82940946343d0d30d8f65c27584":[6,0,36,164], -"modules__arrs_8F90.html#aa6ed42f02eb5933c83e7acf1422b8d99":[6,0,36,50], -"modules__arrs_8F90.html#aa768890377f016eaae82cb56404ecdc6":[6,0,36,132], +"modules__arrs_8F90.html#a97f45bd4e10b6016c9ef17bbd0efc2ca":[6,0,36,72], +"modules__arrs_8F90.html#a9905d8bc2ddc7681086ea0319442d0d9":[6,0,36,121], +"modules__arrs_8F90.html#a99268fc2b9168fcbbd5f8ab70e6da0b7":[6,0,36,134], +"modules__arrs_8F90.html#a9c4d7ff754fd79feb908c6858f7e4e5f":[6,0,36,154], +"modules__arrs_8F90.html#a9e14841d9a084410d3ee7d5d08d3bf5e":[6,0,36,40], +"modules__arrs_8F90.html#a9ec76b10297b2e9521682a1e2014370d":[6,0,36,94], +"modules__arrs_8F90.html#aa480a82940946343d0d30d8f65c27584":[6,0,36,172], +"modules__arrs_8F90.html#aa6ed42f02eb5933c83e7acf1422b8d99":[6,0,36,54], +"modules__arrs_8F90.html#aa768890377f016eaae82cb56404ecdc6":[6,0,36,137], "modules__arrs_8F90.html#aa842e38ba6243a4ff1ab1e56404c2cb7":[6,0,36,2], -"modules__arrs_8F90.html#aa92c2a9b9faf87958775d45a00ee866f":[6,0,36,100], -"modules__arrs_8F90.html#aa945d27bc1c5cf32ea5ba624ef289808":[6,0,36,77], +"modules__arrs_8F90.html#aa92c2a9b9faf87958775d45a00ee866f":[6,0,36,104], +"modules__arrs_8F90.html#aa945d27bc1c5cf32ea5ba624ef289808":[6,0,36,81], "modules__arrs_8F90.html#aab2cc4c7c57e7c7d111f49187aff44ea":[6,0,36,4], -"modules__arrs_8F90.html#aad8a1595878ac1a9907c708067c4c050":[6,0,36,111], -"modules__arrs_8F90.html#aadd51c4f00c0c4a12b922aace0ed04f7":[6,0,36,53], -"modules__arrs_8F90.html#aaf25479459e35ef12ce20eecfc632295":[6,0,36,124], -"modules__arrs_8F90.html#ab05877244c7131b445de4326efd8aa8a":[6,0,36,144], -"modules__arrs_8F90.html#ab09abac79a48acf677cf36764ffe5db5":[6,0,36,36], -"modules__arrs_8F90.html#ab12171885e93720ae2716b4b1ecae251":[6,0,36,67], -"modules__arrs_8F90.html#ab1873371ca3b5f3e44a5d19ebf30af23":[6,0,36,137], -"modules__arrs_8F90.html#ab23685bcce40ee0d9f71f881bdfa0d07":[6,0,36,80], -"modules__arrs_8F90.html#ab26bcc9dccfa0b250af20392755adf93":[6,0,36,40], +"modules__arrs_8F90.html#aad8a1595878ac1a9907c708067c4c050":[6,0,36,115], +"modules__arrs_8F90.html#aadd51c4f00c0c4a12b922aace0ed04f7":[6,0,36,57], +"modules__arrs_8F90.html#aaf25479459e35ef12ce20eecfc632295":[6,0,36,128], +"modules__arrs_8F90.html#ab05877244c7131b445de4326efd8aa8a":[6,0,36,150], +"modules__arrs_8F90.html#ab09abac79a48acf677cf36764ffe5db5":[6,0,36,39], +"modules__arrs_8F90.html#ab12171885e93720ae2716b4b1ecae251":[6,0,36,71], +"modules__arrs_8F90.html#ab1873371ca3b5f3e44a5d19ebf30af23":[6,0,36,142], +"modules__arrs_8F90.html#ab23685bcce40ee0d9f71f881bdfa0d07":[6,0,36,84], +"modules__arrs_8F90.html#ab26bcc9dccfa0b250af20392755adf93":[6,0,36,43], "modules__arrs_8F90.html#ab2e77035e8e8a5f8e6a2f544279ab168":[6,0,36,9], "modules__arrs_8F90.html#ab3096b8b9d713e5183ac8275305e002a":[6,0,36,28], -"modules__arrs_8F90.html#ab5ade5e51c2620a6e6be9cad890baf7a":[6,0,36,112], -"modules__arrs_8F90.html#ab79409e1e5c6d8e2542bac564283a5ef":[6,0,36,32], +"modules__arrs_8F90.html#ab5ade5e51c2620a6e6be9cad890baf7a":[6,0,36,116], +"modules__arrs_8F90.html#ab79409e1e5c6d8e2542bac564283a5ef":[6,0,36,35], "modules__arrs_8F90.html#ab7e403dca694be4ae4d4c3803e7bc4c7":[6,0,36,16], "modules__arrs_8F90.html#ab8fe0a01ea7ba06916fd450273c1c38f":[6,0,36,15], -"modules__arrs_8F90.html#ab991cce44554fb17b1c1cd0474929a94":[6,0,36,114], +"modules__arrs_8F90.html#ab991cce44554fb17b1c1cd0474929a94":[6,0,36,118], "modules__arrs_8F90.html#aba2ec73dacc32807332a7c1e38468f38":[6,0,36,22], -"modules__arrs_8F90.html#abbb9e570ae869b4abdf6e18c14475485":[6,0,36,134], -"modules__arrs_8F90.html#abc7e7be12befacea858a7f249c9425ca":[6,0,36,123], -"modules__arrs_8F90.html#abe572c04d3aa498e8135d20e656d0e6a":[6,0,36,115], -"modules__arrs_8F90.html#abe63e3ddf9a739b073e8dd5b01460ddf":[6,0,36,119], -"modules__arrs_8F90.html#abf94758379c91be61fcf18f6c9dae5cf":[6,0,36,107], -"modules__arrs_8F90.html#ac0c5953da2d8867d81acad1800fec53c":[6,0,36,102], -"modules__arrs_8F90.html#ac17dd8dc0aeb695a1046a884673b1fc3":[6,0,36,106], -"modules__arrs_8F90.html#ac23d0e71777440374b51773ab34d31c7":[6,0,36,51], +"modules__arrs_8F90.html#abbb9e570ae869b4abdf6e18c14475485":[6,0,36,139], +"modules__arrs_8F90.html#abc7e7be12befacea858a7f249c9425ca":[6,0,36,127], +"modules__arrs_8F90.html#abe572c04d3aa498e8135d20e656d0e6a":[6,0,36,119], +"modules__arrs_8F90.html#abe63e3ddf9a739b073e8dd5b01460ddf":[6,0,36,123], +"modules__arrs_8F90.html#abf94758379c91be61fcf18f6c9dae5cf":[6,0,36,111], +"modules__arrs_8F90.html#ac0c5953da2d8867d81acad1800fec53c":[6,0,36,106], +"modules__arrs_8F90.html#ac17dd8dc0aeb695a1046a884673b1fc3":[6,0,36,110], +"modules__arrs_8F90.html#ac23d0e71777440374b51773ab34d31c7":[6,0,36,55], "modules__arrs_8F90.html#ac34001b0c39f1c7b156214adaf3381d0":[6,0,36,5], -"modules__arrs_8F90.html#ac38651460e5e05dd70fe8c19fc1a9caa":[6,0,36,116], -"modules__arrs_8F90.html#ac3bbd45f25c8071e161bf7898230695a":[6,0,36,60], -"modules__arrs_8F90.html#ac477545b5d44685da84af7f23d7baa59":[6,0,36,149], -"modules__arrs_8F90.html#ac4fd15b3e268548d17edca4e1e5e5675":[6,0,36,109], +"modules__arrs_8F90.html#ac38651460e5e05dd70fe8c19fc1a9caa":[6,0,36,120], +"modules__arrs_8F90.html#ac3bbd45f25c8071e161bf7898230695a":[6,0,36,64], +"modules__arrs_8F90.html#ac477545b5d44685da84af7f23d7baa59":[6,0,36,156], +"modules__arrs_8F90.html#ac4fd15b3e268548d17edca4e1e5e5675":[6,0,36,113], +"modules__arrs_8F90.html#aca7ba3c13394414e82f8bfd925fd6d9f":[6,0,36,133], "modules__arrs_8F90.html#acaa72aa1ab54d9a7a82f83e58c8aeed1":[6,0,36,18], -"modules__arrs_8F90.html#accaa0826b48e876c29f6bb8ebe21c83e":[6,0,36,104], -"modules__arrs_8F90.html#acd6cd1e5190bdc17381e81624a7e2e80":[6,0,36,101], -"modules__arrs_8F90.html#aceb65be824d657fa109be2d9059a3a2b":[6,0,36,70], -"modules__arrs_8F90.html#acfcd2b4391b00ae43bdb026de8573c7a":[6,0,36,113], -"modules__arrs_8F90.html#ad03b1bbbb4eb8366a77af6da12f0793c":[6,0,36,131], -"modules__arrs_8F90.html#ad3fddde254d512cae401fc3f5532fe7c":[6,0,36,160], -"modules__arrs_8F90.html#ad4299c9b916b83272f07cba8d2d22d4f":[6,0,36,46], -"modules__arrs_8F90.html#ad4937a8d8159f5b7fff9d51b59c6324b":[6,0,36,169], -"modules__arrs_8F90.html#ad9b27559a7e05f9939764fa6688d7147":[6,0,36,91], -"modules__arrs_8F90.html#ada2721216de79b6527d89323df61956d":[6,0,36,172], -"modules__arrs_8F90.html#adbe38c29980443a65ff0bb0cfa1bb753":[6,0,36,21], -"modules__arrs_8F90.html#adff426f406bb1f795e94c0af6d68d856":[6,0,36,78], -"modules__arrs_8F90.html#ae8e13371b82ad223284aeac9d6ad9aae":[6,0,36,142], -"modules__arrs_8F90.html#aeabc918978c598efc0231fc59d2bfd24":[6,0,36,33], -"modules__arrs_8F90.html#aeb00e574adb63bf7cc809d540d5a02bc":[6,0,36,110], -"modules__arrs_8F90.html#aec0b91e9c09fffd506b27ea574b7da71":[6,0,36,105], -"modules__arrs_8F90.html#aedf59ef218e980c24d128aa7bc8884b1":[6,0,36,95], -"modules__arrs_8F90.html#aef82673973ab814f34658d9a1e5f3404":[6,0,36,155], -"modules__arrs_8F90.html#af081362974b0ae4f5be67c4bea20bae6":[6,0,36,71], -"modules__arrs_8F90.html#af0d2b78411b01dc1aabe9baf6c946b38":[6,0,36,25], -"modules__arrs_8F90.html#af1ca5281543dc4ce645d861f7f744c6d":[6,0,36,29], -"modules__arrs_8F90.html#af2710ff69575fa7a323c654e7998e142":[6,0,36,128], -"modules__arrs_8F90.html#af3c2aa97661a37d85840d480e611695e":[6,0,36,94], -"modules__arrs_8F90.html#af55ccb71d40a6980f3e18dee2ea3a9db":[6,0,36,52], -"modules__arrs_8F90.html#af59d63e63df8f925e55a922d70a37785":[6,0,36,66], -"modules__arrs_8F90.html#af5a5b5688cbfbea4a3d5d0705172fba3":[6,0,36,97], -"modules__arrs_8F90.html#afbc0cd7c0f91147bca16c7fd909a0d75":[6,0,36,13] +"modules__arrs_8F90.html#accaa0826b48e876c29f6bb8ebe21c83e":[6,0,36,108], +"modules__arrs_8F90.html#acd6cd1e5190bdc17381e81624a7e2e80":[6,0,36,105], +"modules__arrs_8F90.html#ace7f78e015bbce02e77bb95dec7efa06":[6,0,36,152], +"modules__arrs_8F90.html#aceb65be824d657fa109be2d9059a3a2b":[6,0,36,74], +"modules__arrs_8F90.html#acfcd2b4391b00ae43bdb026de8573c7a":[6,0,36,117], +"modules__arrs_8F90.html#ad03b1bbbb4eb8366a77af6da12f0793c":[6,0,36,136], +"modules__arrs_8F90.html#ad3fddde254d512cae401fc3f5532fe7c":[6,0,36,168], +"modules__arrs_8F90.html#ad4299c9b916b83272f07cba8d2d22d4f":[6,0,36,50], +"modules__arrs_8F90.html#ad4937a8d8159f5b7fff9d51b59c6324b":[6,0,36,177], +"modules__arrs_8F90.html#ad9b27559a7e05f9939764fa6688d7147":[6,0,36,95], +"modules__arrs_8F90.html#ada2721216de79b6527d89323df61956d":[6,0,36,180], +"modules__arrs_8F90.html#adbe38c29980443a65ff0bb0cfa1bb753":[6,0,36,21] }; diff --git a/navtreeindex3.js b/navtreeindex3.js index 080171989..fdcce70b5 100644 --- a/navtreeindex3.js +++ b/navtreeindex3.js @@ -1,100 +1,174 @@ var NAVTREEINDEX3 = { -"modules__arrs_8F90.html#afcc556a5fac9b693f0be507fafccf973":[6,0,36,170], +"modules__arrs_8F90.html#adff426f406bb1f795e94c0af6d68d856":[6,0,36,82], +"modules__arrs_8F90.html#ae8e13371b82ad223284aeac9d6ad9aae":[6,0,36,148], +"modules__arrs_8F90.html#aeabc918978c598efc0231fc59d2bfd24":[6,0,36,36], +"modules__arrs_8F90.html#aeb00e574adb63bf7cc809d540d5a02bc":[6,0,36,114], +"modules__arrs_8F90.html#aec0b91e9c09fffd506b27ea574b7da71":[6,0,36,109], +"modules__arrs_8F90.html#aedf59ef218e980c24d128aa7bc8884b1":[6,0,36,99], +"modules__arrs_8F90.html#aef82673973ab814f34658d9a1e5f3404":[6,0,36,162], +"modules__arrs_8F90.html#af081362974b0ae4f5be67c4bea20bae6":[6,0,36,75], +"modules__arrs_8F90.html#af0d2b78411b01dc1aabe9baf6c946b38":[6,0,36,25], +"modules__arrs_8F90.html#af1ca5281543dc4ce645d861f7f744c6d":[6,0,36,29], +"modules__arrs_8F90.html#af2710ff69575fa7a323c654e7998e142":[6,0,36,132], +"modules__arrs_8F90.html#af3c2aa97661a37d85840d480e611695e":[6,0,36,98], +"modules__arrs_8F90.html#af55ccb71d40a6980f3e18dee2ea3a9db":[6,0,36,56], +"modules__arrs_8F90.html#af59d63e63df8f925e55a922d70a37785":[6,0,36,70], +"modules__arrs_8F90.html#af5a5b5688cbfbea4a3d5d0705172fba3":[6,0,36,101], +"modules__arrs_8F90.html#afbc0cd7c0f91147bca16c7fd909a0d75":[6,0,36,13], +"modules__arrs_8F90.html#afcc556a5fac9b693f0be507fafccf973":[6,0,36,178], "modules__arrs_8F90_source.html":[6,0,36], "modules__vars_8F90.html":[6,0,37], -"modules__vars_8F90.html#a009fea23b90695d1556e33a557d4b7f1":[6,0,37,35], -"modules__vars_8F90.html#a009fea23b90695d1556e33a557d4b7f1":[4,0,43,35], -"modules__vars_8F90.html#a14452fc0317594bd880c9abba582ae74":[6,0,37,19], -"modules__vars_8F90.html#a14452fc0317594bd880c9abba582ae74":[4,0,43,19], -"modules__vars_8F90.html#a179ebe33ab923f74ef05e2851a86d33b":[6,0,37,26], -"modules__vars_8F90.html#a179ebe33ab923f74ef05e2851a86d33b":[4,0,43,26], -"modules__vars_8F90.html#a181516c96f53bedb9774c83ebfeb0a23":[6,0,37,4], -"modules__vars_8F90.html#a181516c96f53bedb9774c83ebfeb0a23":[4,0,43,4], -"modules__vars_8F90.html#a18a87ef02ab98d62e7fa272b20acd77a":[6,0,37,41], -"modules__vars_8F90.html#a18a87ef02ab98d62e7fa272b20acd77a":[4,0,43,41], -"modules__vars_8F90.html#a2588ca33cb30f0316759c9ca7735bbb3":[6,0,37,7], -"modules__vars_8F90.html#a2588ca33cb30f0316759c9ca7735bbb3":[4,0,43,7], -"modules__vars_8F90.html#a2b80f794fded7bf159ff58796ec31a7c":[6,0,37,42], -"modules__vars_8F90.html#a2b80f794fded7bf159ff58796ec31a7c":[4,0,43,42], -"modules__vars_8F90.html#a3eaffbddfb28ae6f90cff4ec580463c1":[6,0,37,10], -"modules__vars_8F90.html#a3eaffbddfb28ae6f90cff4ec580463c1":[4,0,43,10], -"modules__vars_8F90.html#a4ff59bf9f9ee31e187bf7f8ecb61f4dd":[6,0,37,6], -"modules__vars_8F90.html#a4ff59bf9f9ee31e187bf7f8ecb61f4dd":[4,0,43,6], -"modules__vars_8F90.html#a59f64f9f847d2171ecac822482b2f0a9":[6,0,37,27], -"modules__vars_8F90.html#a59f64f9f847d2171ecac822482b2f0a9":[4,0,43,27], -"modules__vars_8F90.html#a5a89be3220392c5b182d4d475d22e3e1":[6,0,37,30], -"modules__vars_8F90.html#a5a89be3220392c5b182d4d475d22e3e1":[4,0,43,30], -"modules__vars_8F90.html#a5b163d0f13c16e94bdac566d2495faf7":[6,0,37,44], -"modules__vars_8F90.html#a5b163d0f13c16e94bdac566d2495faf7":[4,0,43,44], -"modules__vars_8F90.html#a6007e8a5d98440d7bb16ce63bbf007e6":[6,0,37,5], -"modules__vars_8F90.html#a6007e8a5d98440d7bb16ce63bbf007e6":[4,0,43,5], -"modules__vars_8F90.html#a6062176c0f51fa9f593310f46cc14fe0":[6,0,37,29], -"modules__vars_8F90.html#a6062176c0f51fa9f593310f46cc14fe0":[4,0,43,29], -"modules__vars_8F90.html#a61162c966b964b3039b9180818d0e7ee":[6,0,37,14], -"modules__vars_8F90.html#a61162c966b964b3039b9180818d0e7ee":[4,0,43,14], -"modules__vars_8F90.html#a61b398d330ce6937423db44f080b93fd":[6,0,37,38], -"modules__vars_8F90.html#a61b398d330ce6937423db44f080b93fd":[4,0,43,38], -"modules__vars_8F90.html#a656c690a79e927a6d824a1e8cef901e9":[6,0,37,16], -"modules__vars_8F90.html#a656c690a79e927a6d824a1e8cef901e9":[4,0,43,16], -"modules__vars_8F90.html#a6780f1f07eeec5333e01ca17588f7d39":[6,0,37,25], -"modules__vars_8F90.html#a6780f1f07eeec5333e01ca17588f7d39":[4,0,43,25], -"modules__vars_8F90.html#a68ea76a4751743e58280e061b43313e7":[6,0,37,40], -"modules__vars_8F90.html#a68ea76a4751743e58280e061b43313e7":[4,0,43,40], -"modules__vars_8F90.html#a695fe6ca7714604e88e1fc4d21cc839d":[6,0,37,37], -"modules__vars_8F90.html#a695fe6ca7714604e88e1fc4d21cc839d":[4,0,43,37], -"modules__vars_8F90.html#a6c14025516cc65ace5f17fc2c4e4a9a3":[6,0,37,15], -"modules__vars_8F90.html#a6c14025516cc65ace5f17fc2c4e4a9a3":[4,0,43,15], -"modules__vars_8F90.html#a7376f8406ce5e5e420d4d012aea93416":[6,0,37,8], -"modules__vars_8F90.html#a7376f8406ce5e5e420d4d012aea93416":[4,0,43,8], -"modules__vars_8F90.html#a739ea87803beaa51dd172adb95af9b86":[6,0,37,28], -"modules__vars_8F90.html#a739ea87803beaa51dd172adb95af9b86":[4,0,43,28], -"modules__vars_8F90.html#a745e8be4bf52246db47090996854736b":[6,0,37,1], -"modules__vars_8F90.html#a745e8be4bf52246db47090996854736b":[4,0,43,1], -"modules__vars_8F90.html#a7a129734d8b06649619e8e9ee42eca62":[4,0,43,0], +"modules__vars_8F90.html#a009fea23b90695d1556e33a557d4b7f1":[6,0,37,59], +"modules__vars_8F90.html#a009fea23b90695d1556e33a557d4b7f1":[4,0,45,59], +"modules__vars_8F90.html#a097f815622807c80c3d7f2f2794d4da4":[6,0,37,29], +"modules__vars_8F90.html#a097f815622807c80c3d7f2f2794d4da4":[4,0,45,29], +"modules__vars_8F90.html#a100b0bdf0829aa981d26f817a995b31c":[6,0,37,18], +"modules__vars_8F90.html#a100b0bdf0829aa981d26f817a995b31c":[4,0,45,18], +"modules__vars_8F90.html#a14452fc0317594bd880c9abba582ae74":[6,0,37,41], +"modules__vars_8F90.html#a14452fc0317594bd880c9abba582ae74":[4,0,45,41], +"modules__vars_8F90.html#a1667df28fd2399925505ff57265ad33f":[6,0,37,31], +"modules__vars_8F90.html#a1667df28fd2399925505ff57265ad33f":[4,0,45,31], +"modules__vars_8F90.html#a179ebe33ab923f74ef05e2851a86d33b":[6,0,37,50], +"modules__vars_8F90.html#a179ebe33ab923f74ef05e2851a86d33b":[4,0,45,50], +"modules__vars_8F90.html#a181516c96f53bedb9774c83ebfeb0a23":[6,0,37,17], +"modules__vars_8F90.html#a181516c96f53bedb9774c83ebfeb0a23":[4,0,45,17], +"modules__vars_8F90.html#a18a87ef02ab98d62e7fa272b20acd77a":[6,0,37,65], +"modules__vars_8F90.html#a18a87ef02ab98d62e7fa272b20acd77a":[4,0,45,65], +"modules__vars_8F90.html#a2588ca33cb30f0316759c9ca7735bbb3":[6,0,37,21], +"modules__vars_8F90.html#a2588ca33cb30f0316759c9ca7735bbb3":[4,0,45,21], +"modules__vars_8F90.html#a28a7f7658d1ba1ea4609332adc148fc8":[6,0,37,14], +"modules__vars_8F90.html#a28a7f7658d1ba1ea4609332adc148fc8":[4,0,45,14], +"modules__vars_8F90.html#a2b075e9fd04aeb24964f4f1ef7ede526":[6,0,37,69], +"modules__vars_8F90.html#a2b075e9fd04aeb24964f4f1ef7ede526":[4,0,45,69], +"modules__vars_8F90.html#a2b80f794fded7bf159ff58796ec31a7c":[6,0,37,71], +"modules__vars_8F90.html#a2b80f794fded7bf159ff58796ec31a7c":[4,0,45,71], +"modules__vars_8F90.html#a3ac85027a1a0f7fee907310e2c41356d":[6,0,37,26], +"modules__vars_8F90.html#a3ac85027a1a0f7fee907310e2c41356d":[4,0,45,26], +"modules__vars_8F90.html#a3eaffbddfb28ae6f90cff4ec580463c1":[6,0,37,25], +"modules__vars_8F90.html#a3eaffbddfb28ae6f90cff4ec580463c1":[4,0,45,25], +"modules__vars_8F90.html#a48d9286f5111bf51c0c88374984e7882":[6,0,37,30], +"modules__vars_8F90.html#a48d9286f5111bf51c0c88374984e7882":[4,0,45,30], +"modules__vars_8F90.html#a4b0e42e5050773c5cbe98839d9b54826":[6,0,37,32], +"modules__vars_8F90.html#a4b0e42e5050773c5cbe98839d9b54826":[4,0,45,32], +"modules__vars_8F90.html#a4ff59bf9f9ee31e187bf7f8ecb61f4dd":[6,0,37,20], +"modules__vars_8F90.html#a4ff59bf9f9ee31e187bf7f8ecb61f4dd":[4,0,45,20], +"modules__vars_8F90.html#a54fd24795f00c7f2c314c7d2c7d43582":[6,0,37,27], +"modules__vars_8F90.html#a54fd24795f00c7f2c314c7d2c7d43582":[4,0,45,27], +"modules__vars_8F90.html#a59f64f9f847d2171ecac822482b2f0a9":[6,0,37,51], +"modules__vars_8F90.html#a59f64f9f847d2171ecac822482b2f0a9":[4,0,45,51], +"modules__vars_8F90.html#a5a260aaa8fb7f7b661ed9d8f9e7d4226":[6,0,37,7], +"modules__vars_8F90.html#a5a260aaa8fb7f7b661ed9d8f9e7d4226":[4,0,45,7], +"modules__vars_8F90.html#a5a89be3220392c5b182d4d475d22e3e1":[6,0,37,54], +"modules__vars_8F90.html#a5a89be3220392c5b182d4d475d22e3e1":[4,0,45,54], +"modules__vars_8F90.html#a5b163d0f13c16e94bdac566d2495faf7":[6,0,37,73], +"modules__vars_8F90.html#a5b163d0f13c16e94bdac566d2495faf7":[4,0,45,73], +"modules__vars_8F90.html#a5c90e57dc87868bf8f5f54ac7f14d558":[6,0,37,67], +"modules__vars_8F90.html#a5c90e57dc87868bf8f5f54ac7f14d558":[4,0,45,67], +"modules__vars_8F90.html#a6007e8a5d98440d7bb16ce63bbf007e6":[4,0,45,19], +"modules__vars_8F90.html#a6007e8a5d98440d7bb16ce63bbf007e6":[6,0,37,19], +"modules__vars_8F90.html#a6062176c0f51fa9f593310f46cc14fe0":[6,0,37,53], +"modules__vars_8F90.html#a6062176c0f51fa9f593310f46cc14fe0":[4,0,45,53], +"modules__vars_8F90.html#a60ef50564d84f9a35ef70f9ad8b74df1":[6,0,37,1], +"modules__vars_8F90.html#a60ef50564d84f9a35ef70f9ad8b74df1":[4,0,45,1], +"modules__vars_8F90.html#a61162c966b964b3039b9180818d0e7ee":[6,0,37,36], +"modules__vars_8F90.html#a61162c966b964b3039b9180818d0e7ee":[4,0,45,36], +"modules__vars_8F90.html#a61b398d330ce6937423db44f080b93fd":[6,0,37,62], +"modules__vars_8F90.html#a61b398d330ce6937423db44f080b93fd":[4,0,45,62], +"modules__vars_8F90.html#a631f921eacf59866733aa6fa19a62fea":[6,0,37,70], +"modules__vars_8F90.html#a631f921eacf59866733aa6fa19a62fea":[4,0,45,70], +"modules__vars_8F90.html#a656c690a79e927a6d824a1e8cef901e9":[6,0,37,38], +"modules__vars_8F90.html#a656c690a79e927a6d824a1e8cef901e9":[4,0,45,38], +"modules__vars_8F90.html#a6780f1f07eeec5333e01ca17588f7d39":[6,0,37,49], +"modules__vars_8F90.html#a6780f1f07eeec5333e01ca17588f7d39":[4,0,45,49], +"modules__vars_8F90.html#a68ea76a4751743e58280e061b43313e7":[6,0,37,64], +"modules__vars_8F90.html#a68ea76a4751743e58280e061b43313e7":[4,0,45,64], +"modules__vars_8F90.html#a695fe6ca7714604e88e1fc4d21cc839d":[6,0,37,61], +"modules__vars_8F90.html#a695fe6ca7714604e88e1fc4d21cc839d":[4,0,45,61], +"modules__vars_8F90.html#a6c14025516cc65ace5f17fc2c4e4a9a3":[6,0,37,37], +"modules__vars_8F90.html#a6c14025516cc65ace5f17fc2c4e4a9a3":[4,0,45,37], +"modules__vars_8F90.html#a6f1f2ead234f70c8f323ba0fd5e95840":[6,0,37,43], +"modules__vars_8F90.html#a6f1f2ead234f70c8f323ba0fd5e95840":[4,0,45,43], +"modules__vars_8F90.html#a7376f8406ce5e5e420d4d012aea93416":[6,0,37,22], +"modules__vars_8F90.html#a7376f8406ce5e5e420d4d012aea93416":[4,0,45,22], +"modules__vars_8F90.html#a739ea87803beaa51dd172adb95af9b86":[6,0,37,52], +"modules__vars_8F90.html#a739ea87803beaa51dd172adb95af9b86":[4,0,45,52], +"modules__vars_8F90.html#a745e8be4bf52246db47090996854736b":[6,0,37,2], +"modules__vars_8F90.html#a745e8be4bf52246db47090996854736b":[4,0,45,2], "modules__vars_8F90.html#a7a129734d8b06649619e8e9ee42eca62":[6,0,37,0], -"modules__vars_8F90.html#a7b92c0b0ed1fb2b80b048414fa1e54ce":[6,0,37,34], -"modules__vars_8F90.html#a7b92c0b0ed1fb2b80b048414fa1e54ce":[4,0,43,34], -"modules__vars_8F90.html#a7db5428bb409dc91391908e3f6005da0":[6,0,37,2], -"modules__vars_8F90.html#a7db5428bb409dc91391908e3f6005da0":[4,0,43,2], -"modules__vars_8F90.html#a85bed6c0b0a9aa339abd8fb7b3a136b5":[4,0,43,39], -"modules__vars_8F90.html#a85bed6c0b0a9aa339abd8fb7b3a136b5":[6,0,37,39], -"modules__vars_8F90.html#a8623e746f63272cf61b014607d998345":[4,0,43,3], -"modules__vars_8F90.html#a8623e746f63272cf61b014607d998345":[6,0,37,3], -"modules__vars_8F90.html#a9242cd091e5ab5d3956740035f6b6207":[6,0,37,33], -"modules__vars_8F90.html#a9242cd091e5ab5d3956740035f6b6207":[4,0,43,33], -"modules__vars_8F90.html#a9776bd15698bdb2c211a2326f0ca61dc":[6,0,37,9], -"modules__vars_8F90.html#a9776bd15698bdb2c211a2326f0ca61dc":[4,0,43,9], -"modules__vars_8F90.html#a9c06e9ba0f47cbeecfb1e6d1972e1e4f":[6,0,37,21], -"modules__vars_8F90.html#a9c06e9ba0f47cbeecfb1e6d1972e1e4f":[4,0,43,21], -"modules__vars_8F90.html#a9d4bd8b03fd20102645f0a43d8867bff":[6,0,37,45], -"modules__vars_8F90.html#a9d4bd8b03fd20102645f0a43d8867bff":[4,0,43,45], -"modules__vars_8F90.html#aa7b24da237033a528cb05754d5736cc6":[6,0,37,22], -"modules__vars_8F90.html#aa7b24da237033a528cb05754d5736cc6":[4,0,43,22], -"modules__vars_8F90.html#aa9124552f5c640e47f8decc9499688d8":[6,0,37,43], -"modules__vars_8F90.html#aa9124552f5c640e47f8decc9499688d8":[4,0,43,43], -"modules__vars_8F90.html#ab2c78405872b159e107674c2fc2a12f7":[6,0,37,31], -"modules__vars_8F90.html#ab2c78405872b159e107674c2fc2a12f7":[4,0,43,31], -"modules__vars_8F90.html#ab5934a6a2f8cd3e09418203c1d3c20de":[6,0,37,13], -"modules__vars_8F90.html#ab5934a6a2f8cd3e09418203c1d3c20de":[4,0,43,13], -"modules__vars_8F90.html#ab5fc7a78bb32e9a0fa7cbb1f402e7528":[6,0,37,20], -"modules__vars_8F90.html#ab5fc7a78bb32e9a0fa7cbb1f402e7528":[4,0,43,20], -"modules__vars_8F90.html#ad2e54a398ee4fd5c87669a2883e7a37d":[6,0,37,12], -"modules__vars_8F90.html#ad2e54a398ee4fd5c87669a2883e7a37d":[4,0,43,12], -"modules__vars_8F90.html#ad5cda585f8b55a9e6e3a81808c23630f":[6,0,37,24], -"modules__vars_8F90.html#ad5cda585f8b55a9e6e3a81808c23630f":[4,0,43,24], -"modules__vars_8F90.html#adaae2c5fadf243ece139cc7e84688d75":[6,0,37,17], -"modules__vars_8F90.html#adaae2c5fadf243ece139cc7e84688d75":[4,0,43,17], -"modules__vars_8F90.html#ae0bf7b02df4e070e72a90672e3eded90":[4,0,43,32], -"modules__vars_8F90.html#ae0bf7b02df4e070e72a90672e3eded90":[6,0,37,32], -"modules__vars_8F90.html#ae2e923a33b968adc577317f6cef8f24e":[4,0,43,36], -"modules__vars_8F90.html#ae2e923a33b968adc577317f6cef8f24e":[6,0,37,36], -"modules__vars_8F90.html#ae330052e2bcc0a81949c5ef8d6e7cc9e":[6,0,37,23], -"modules__vars_8F90.html#ae330052e2bcc0a81949c5ef8d6e7cc9e":[4,0,43,23], -"modules__vars_8F90.html#ae8a681bd9096d6c9a2466b3c71f6ec7e":[6,0,37,11], -"modules__vars_8F90.html#ae8a681bd9096d6c9a2466b3c71f6ec7e":[4,0,43,11], -"modules__vars_8F90.html#aec19b6418a5d88f574f4b196b93a5cf5":[6,0,37,18], -"modules__vars_8F90.html#aec19b6418a5d88f574f4b196b93a5cf5":[4,0,43,18], +"modules__vars_8F90.html#a7a129734d8b06649619e8e9ee42eca62":[4,0,45,0], +"modules__vars_8F90.html#a7b92c0b0ed1fb2b80b048414fa1e54ce":[6,0,37,58], +"modules__vars_8F90.html#a7b92c0b0ed1fb2b80b048414fa1e54ce":[4,0,45,58], +"modules__vars_8F90.html#a7db5428bb409dc91391908e3f6005da0":[6,0,37,15], +"modules__vars_8F90.html#a7db5428bb409dc91391908e3f6005da0":[4,0,45,15], +"modules__vars_8F90.html#a7fe62694cce4c724bbd16b144adfc1bb":[6,0,37,23], +"modules__vars_8F90.html#a7fe62694cce4c724bbd16b144adfc1bb":[4,0,45,23], +"modules__vars_8F90.html#a85bed6c0b0a9aa339abd8fb7b3a136b5":[6,0,37,63], +"modules__vars_8F90.html#a85bed6c0b0a9aa339abd8fb7b3a136b5":[4,0,45,63], +"modules__vars_8F90.html#a8623e746f63272cf61b014607d998345":[4,0,45,16], +"modules__vars_8F90.html#a8623e746f63272cf61b014607d998345":[6,0,37,16], +"modules__vars_8F90.html#a87ac1122752b49bf8beeae0fd310910d":[6,0,37,9], +"modules__vars_8F90.html#a87ac1122752b49bf8beeae0fd310910d":[4,0,45,9], +"modules__vars_8F90.html#a88b08b3ed35dd7342e96bb1f84b8c510":[6,0,37,44], +"modules__vars_8F90.html#a88b08b3ed35dd7342e96bb1f84b8c510":[4,0,45,44], +"modules__vars_8F90.html#a9242cd091e5ab5d3956740035f6b6207":[6,0,37,57], +"modules__vars_8F90.html#a9242cd091e5ab5d3956740035f6b6207":[4,0,45,57], +"modules__vars_8F90.html#a939f34f2833d6529b20c2ab79b082500":[6,0,37,28], +"modules__vars_8F90.html#a939f34f2833d6529b20c2ab79b082500":[4,0,45,28], +"modules__vars_8F90.html#a9776bd15698bdb2c211a2326f0ca61dc":[4,0,45,24], +"modules__vars_8F90.html#a9776bd15698bdb2c211a2326f0ca61dc":[6,0,37,24], +"modules__vars_8F90.html#a9c06e9ba0f47cbeecfb1e6d1972e1e4f":[6,0,37,45], +"modules__vars_8F90.html#a9c06e9ba0f47cbeecfb1e6d1972e1e4f":[4,0,45,45], +"modules__vars_8F90.html#a9d4bd8b03fd20102645f0a43d8867bff":[6,0,37,74], +"modules__vars_8F90.html#a9d4bd8b03fd20102645f0a43d8867bff":[4,0,45,74], +"modules__vars_8F90.html#a9f70d749f5e71b996b0d76e93ff3b77b":[6,0,37,4], +"modules__vars_8F90.html#a9f70d749f5e71b996b0d76e93ff3b77b":[4,0,45,4], +"modules__vars_8F90.html#aa7b24da237033a528cb05754d5736cc6":[6,0,37,46], +"modules__vars_8F90.html#aa7b24da237033a528cb05754d5736cc6":[4,0,45,46], +"modules__vars_8F90.html#aa7b746f54e2897eb9651302fd656fc66":[6,0,37,68], +"modules__vars_8F90.html#aa7b746f54e2897eb9651302fd656fc66":[4,0,45,68], +"modules__vars_8F90.html#aa9124552f5c640e47f8decc9499688d8":[6,0,37,72], +"modules__vars_8F90.html#aa9124552f5c640e47f8decc9499688d8":[4,0,45,72], +"modules__vars_8F90.html#aadb8522cb68b9bb6eeb160615593e88d":[4,0,45,10], +"modules__vars_8F90.html#aadb8522cb68b9bb6eeb160615593e88d":[6,0,37,10], +"modules__vars_8F90.html#ab2c78405872b159e107674c2fc2a12f7":[6,0,37,55], +"modules__vars_8F90.html#ab2c78405872b159e107674c2fc2a12f7":[4,0,45,55], +"modules__vars_8F90.html#ab4ef91913d1dd7697e54730589ddbe66":[6,0,37,11], +"modules__vars_8F90.html#ab4ef91913d1dd7697e54730589ddbe66":[4,0,45,11], +"modules__vars_8F90.html#ab5934a6a2f8cd3e09418203c1d3c20de":[6,0,37,35], +"modules__vars_8F90.html#ab5934a6a2f8cd3e09418203c1d3c20de":[4,0,45,35], +"modules__vars_8F90.html#ab5fc7a78bb32e9a0fa7cbb1f402e7528":[6,0,37,42], +"modules__vars_8F90.html#ab5fc7a78bb32e9a0fa7cbb1f402e7528":[4,0,45,42], +"modules__vars_8F90.html#abe3de88a3bba631dd4cfc880b9d206ab":[6,0,37,13], +"modules__vars_8F90.html#abe3de88a3bba631dd4cfc880b9d206ab":[4,0,45,13], +"modules__vars_8F90.html#ac766dd96949dc14fd798a112f230b674":[6,0,37,5], +"modules__vars_8F90.html#ac766dd96949dc14fd798a112f230b674":[4,0,45,5], +"modules__vars_8F90.html#ac9e6d10f3b0bde35eeb6409ad51476c1":[6,0,37,66], +"modules__vars_8F90.html#ac9e6d10f3b0bde35eeb6409ad51476c1":[4,0,45,66], +"modules__vars_8F90.html#ad2e54a398ee4fd5c87669a2883e7a37d":[6,0,37,34], +"modules__vars_8F90.html#ad2e54a398ee4fd5c87669a2883e7a37d":[4,0,45,34], +"modules__vars_8F90.html#ad5cda585f8b55a9e6e3a81808c23630f":[6,0,37,48], +"modules__vars_8F90.html#ad5cda585f8b55a9e6e3a81808c23630f":[4,0,45,48], +"modules__vars_8F90.html#adaae2c5fadf243ece139cc7e84688d75":[6,0,37,39], +"modules__vars_8F90.html#adaae2c5fadf243ece139cc7e84688d75":[4,0,45,39], +"modules__vars_8F90.html#adfabbf77cf9f5c71ccb41feacdc33c2e":[4,0,45,6], +"modules__vars_8F90.html#adfabbf77cf9f5c71ccb41feacdc33c2e":[6,0,37,6], +"modules__vars_8F90.html#ae0bf7b02df4e070e72a90672e3eded90":[6,0,37,56], +"modules__vars_8F90.html#ae0bf7b02df4e070e72a90672e3eded90":[4,0,45,56], +"modules__vars_8F90.html#ae2e923a33b968adc577317f6cef8f24e":[6,0,37,60], +"modules__vars_8F90.html#ae2e923a33b968adc577317f6cef8f24e":[4,0,45,60], +"modules__vars_8F90.html#ae330052e2bcc0a81949c5ef8d6e7cc9e":[6,0,37,47], +"modules__vars_8F90.html#ae330052e2bcc0a81949c5ef8d6e7cc9e":[4,0,45,47], +"modules__vars_8F90.html#ae7a0cf86b71d91ae0be459a6c12fff01":[4,0,45,3], +"modules__vars_8F90.html#ae7a0cf86b71d91ae0be459a6c12fff01":[6,0,37,3], +"modules__vars_8F90.html#ae8a681bd9096d6c9a2466b3c71f6ec7e":[6,0,37,33], +"modules__vars_8F90.html#ae8a681bd9096d6c9a2466b3c71f6ec7e":[4,0,45,33], +"modules__vars_8F90.html#aec19b6418a5d88f574f4b196b93a5cf5":[6,0,37,40], +"modules__vars_8F90.html#aec19b6418a5d88f574f4b196b93a5cf5":[4,0,45,40], +"modules__vars_8F90.html#af62548bea103b35e96b23f0ca218b2b9":[4,0,45,12], +"modules__vars_8F90.html#af62548bea103b35e96b23f0ca218b2b9":[6,0,37,12], +"modules__vars_8F90.html#af6996f884a38892fd146bb24b7802b07":[6,0,37,8], +"modules__vars_8F90.html#af6996f884a38892fd146bb24b7802b07":[4,0,45,8], "modules__vars_8F90_source.html":[6,0,37], "mstabs_8h.html":[6,0,38], "mstabs_8h.html#a006ec50bbb9f20fad017eb980cc7afa0":[6,0,38,10], @@ -175,79 +249,5 @@ var NAVTREEINDEX3 = "namespacebufr__c2f__interface.html#af73382fa68e368c201131fd89d1be252":[4,0,0,13], "namespacebufr__c2f__interface.html#af7e6742b654813bd1922947049c42a54":[4,0,0,21], "namespacebufr__c2f__interface.html#af9137b87796fbc3395e596227515c4f2":[4,0,0,49], -"namespacebufr__interface.html":[4,0,1], -"namespacebufrlib.html":[4,0,2], -"namespacemembers.html":[4,1,0,0], -"namespacemembers.html":[4,1,0], -"namespacemembers_c.html":[4,1,0,1], -"namespacemembers_d.html":[4,1,0,2], -"namespacemembers_e.html":[4,1,0,3], -"namespacemembers_f.html":[4,1,0,4], -"namespacemembers_func.html":[4,1,1], -"namespacemembers_g.html":[4,1,0,5], -"namespacemembers_i.html":[4,1,0,6], -"namespacemembers_j.html":[4,1,0,7], -"namespacemembers_k.html":[4,1,0,8], -"namespacemembers_l.html":[4,1,0,9], -"namespacemembers_m.html":[4,1,0,10], -"namespacemembers_n.html":[4,1,0,11], -"namespacemembers_o.html":[4,1,0,12], -"namespacemembers_p.html":[4,1,0,13], -"namespacemembers_r.html":[4,1,0,14], -"namespacemembers_s.html":[4,1,0,15], -"namespacemembers_t.html":[4,1,0,16], -"namespacemembers_u.html":[4,1,0,17], -"namespacemembers_v.html":[4,1,0,18], -"namespacemembers_vars.html":[4,1,2], -"namespacemembers_w.html":[4,1,0,19], -"namespacemembers_x.html":[4,1,0,20], -"namespacemoda__bitbuf.html":[4,0,3], -"namespacemoda__bitbuf.html#a4910f483014af612d37ea34a1f477434":[4,0,3,0], -"namespacemoda__bitbuf.html#a8c052fc732472f6f329209ac2db75cf9":[4,0,3,1], -"namespacemoda__bitbuf.html#aad8a1595878ac1a9907c708067c4c050":[4,0,3,3], -"namespacemoda__bitbuf.html#acfcd2b4391b00ae43bdb026de8573c7a":[4,0,3,4], -"namespacemoda__bitbuf.html#aeb00e574adb63bf7cc809d540d5a02bc":[4,0,3,2], -"namespacemoda__bitmaps.html":[4,0,4], -"namespacemoda__bitmaps.html#a2648b6b58fd6cf4c983b5c4c23b29574":[4,0,4,5], -"namespacemoda__bitmaps.html#a352a33aaf989dcaab7646f86aa41e27d":[4,0,4,7], -"namespacemoda__bitmaps.html#a481c60320ac88f9d5b5d85d1af3a60cf":[4,0,4,3], -"namespacemoda__bitmaps.html#a4dfbf13c3d38b007276cb0f5c5418396":[4,0,4,11], -"namespacemoda__bitmaps.html#a5a7267a967fec712c56a680893698965":[4,0,4,4], -"namespacemoda__bitmaps.html#a6530eb70f0a9131f659c61a74652c93d":[4,0,4,9], -"namespacemoda__bitmaps.html#a6ab1ee23535fd8b352c4f5d863a1c458":[4,0,4,2], -"namespacemoda__bitmaps.html#ab3096b8b9d713e5183ac8275305e002a":[4,0,4,1], -"namespacemoda__bitmaps.html#accaa0826b48e876c29f6bb8ebe21c83e":[4,0,4,8], -"namespacemoda__bitmaps.html#acd6cd1e5190bdc17381e81624a7e2e80":[4,0,4,6], -"namespacemoda__bitmaps.html#ad03b1bbbb4eb8366a77af6da12f0793c":[4,0,4,10], -"namespacemoda__bitmaps.html#adbe38c29980443a65ff0bb0cfa1bb753":[4,0,4,0], -"namespacemoda__bitmaps.html#aef82673973ab814f34658d9a1e5f3404":[4,0,4,12], -"namespacemoda__bufrmg.html":[4,0,5], -"namespacemoda__bufrmg.html#a2514f74da635c6ba7047ec108ce4e211":[4,0,5,0], -"namespacemoda__bufrmg.html#a67590bc418c6aeb7792572c11a6bc793":[4,0,5,1], -"namespacemoda__bufrsr.html":[4,0,6], -"namespacemoda__bufrsr.html#a157bb0cb25913753748822ce3c384b06":[4,0,6,3], -"namespacemoda__bufrsr.html#a225d75cc454938f8da4ed39857ff2c5c":[4,0,6,4], -"namespacemoda__bufrsr.html#a38470e8cca9ad2afce56dd577ddd5b51":[4,0,6,6], -"namespacemoda__bufrsr.html#a4971d723fe9c86ed7741f7cfae61f2f0":[4,0,6,5], -"namespacemoda__bufrsr.html#a80dd6be1ed3b93e6cb6fcfef1e87ee08":[4,0,6,1], -"namespacemoda__bufrsr.html#a821fcf75cf865aaebdba3527d04190e0":[4,0,6,7], -"namespacemoda__bufrsr.html#a9ec76b10297b2e9521682a1e2014370d":[4,0,6,8], -"namespacemoda__bufrsr.html#ab23685bcce40ee0d9f71f881bdfa0d07":[4,0,6,2], -"namespacemoda__bufrsr.html#adff426f406bb1f795e94c0af6d68d856":[4,0,6,0], -"namespacemoda__comprs.html":[4,0,7], -"namespacemoda__comprs.html#a0bab4a779995493580b46f231516e133":[4,0,7,3], -"namespacemoda__comprs.html#a7e5d5589bde01337616f2527beed519f":[4,0,7,1], -"namespacemoda__comprs.html#a94ea2c3cfc88079d837ac29324d61937":[4,0,7,0], -"namespacemoda__comprs.html#ac4fd15b3e268548d17edca4e1e5e5675":[4,0,7,2], -"namespacemoda__comprx.html":[4,0,8], -"namespacemoda__comprx.html#a07c74b931e7ddbba553f8391b8e24aaf":[4,0,8,0], -"namespacemoda__comprx.html#a243a2baa283f951be51ea9466cca35b8":[4,0,8,7], -"namespacemoda__comprx.html#a47438a5eff5e61065fce0dc3df1694a7":[4,0,8,1], -"namespacemoda__comprx.html#a574b3c666f5e8aa725910e20a739f561":[4,0,8,12], -"namespacemoda__comprx.html#a7a0967a79c236a16f1fa11ebb8f99b0f":[4,0,8,2], -"namespacemoda__comprx.html#a7c3104f9c9731b91a8a105bcc5212542":[4,0,8,8], -"namespacemoda__comprx.html#a7caf741d65ff0b68932fa7d207c689ba":[4,0,8,5], -"namespacemoda__comprx.html#a8be10a997d67944a328d256bfc60bf02":[4,0,8,13], -"namespacemoda__comprx.html#a8ecc5d87d79c8c3aa778665041bcb522":[4,0,8,3], -"namespacemoda__comprx.html#aa945d27bc1c5cf32ea5ba624ef289808":[4,0,8,4] +"namespacebufr__interface.html":[4,0,1] }; diff --git a/navtreeindex4.js b/navtreeindex4.js index 88cd571a3..57adc96d3 100644 --- a/navtreeindex4.js +++ b/navtreeindex4.js @@ -1,5 +1,79 @@ var NAVTREEINDEX4 = { +"namespacebufrlib.html":[4,0,2], +"namespacemembers.html":[4,1,0,0], +"namespacemembers.html":[4,1,0], +"namespacemembers_c.html":[4,1,0,1], +"namespacemembers_d.html":[4,1,0,2], +"namespacemembers_e.html":[4,1,0,3], +"namespacemembers_f.html":[4,1,0,4], +"namespacemembers_func.html":[4,1,1], +"namespacemembers_g.html":[4,1,0,5], +"namespacemembers_i.html":[4,1,0,6], +"namespacemembers_j.html":[4,1,0,7], +"namespacemembers_k.html":[4,1,0,8], +"namespacemembers_l.html":[4,1,0,9], +"namespacemembers_m.html":[4,1,0,10], +"namespacemembers_n.html":[4,1,0,11], +"namespacemembers_o.html":[4,1,0,12], +"namespacemembers_p.html":[4,1,0,13], +"namespacemembers_r.html":[4,1,0,14], +"namespacemembers_s.html":[4,1,0,15], +"namespacemembers_t.html":[4,1,0,16], +"namespacemembers_u.html":[4,1,0,17], +"namespacemembers_v.html":[4,1,0,18], +"namespacemembers_vars.html":[4,1,2], +"namespacemembers_w.html":[4,1,0,19], +"namespacemembers_x.html":[4,1,0,20], +"namespacemoda__bitbuf.html":[4,0,3], +"namespacemoda__bitbuf.html#a4910f483014af612d37ea34a1f477434":[4,0,3,0], +"namespacemoda__bitbuf.html#a8c052fc732472f6f329209ac2db75cf9":[4,0,3,1], +"namespacemoda__bitbuf.html#aad8a1595878ac1a9907c708067c4c050":[4,0,3,3], +"namespacemoda__bitbuf.html#acfcd2b4391b00ae43bdb026de8573c7a":[4,0,3,4], +"namespacemoda__bitbuf.html#aeb00e574adb63bf7cc809d540d5a02bc":[4,0,3,2], +"namespacemoda__bitmaps.html":[4,0,4], +"namespacemoda__bitmaps.html#a2648b6b58fd6cf4c983b5c4c23b29574":[4,0,4,5], +"namespacemoda__bitmaps.html#a352a33aaf989dcaab7646f86aa41e27d":[4,0,4,7], +"namespacemoda__bitmaps.html#a481c60320ac88f9d5b5d85d1af3a60cf":[4,0,4,3], +"namespacemoda__bitmaps.html#a4dfbf13c3d38b007276cb0f5c5418396":[4,0,4,11], +"namespacemoda__bitmaps.html#a5a7267a967fec712c56a680893698965":[4,0,4,4], +"namespacemoda__bitmaps.html#a6530eb70f0a9131f659c61a74652c93d":[4,0,4,9], +"namespacemoda__bitmaps.html#a6ab1ee23535fd8b352c4f5d863a1c458":[4,0,4,2], +"namespacemoda__bitmaps.html#ab3096b8b9d713e5183ac8275305e002a":[4,0,4,1], +"namespacemoda__bitmaps.html#accaa0826b48e876c29f6bb8ebe21c83e":[4,0,4,8], +"namespacemoda__bitmaps.html#acd6cd1e5190bdc17381e81624a7e2e80":[4,0,4,6], +"namespacemoda__bitmaps.html#ad03b1bbbb4eb8366a77af6da12f0793c":[4,0,4,10], +"namespacemoda__bitmaps.html#adbe38c29980443a65ff0bb0cfa1bb753":[4,0,4,0], +"namespacemoda__bitmaps.html#aef82673973ab814f34658d9a1e5f3404":[4,0,4,12], +"namespacemoda__bufrmg.html":[4,0,5], +"namespacemoda__bufrmg.html#a2514f74da635c6ba7047ec108ce4e211":[4,0,5,0], +"namespacemoda__bufrmg.html#a67590bc418c6aeb7792572c11a6bc793":[4,0,5,1], +"namespacemoda__bufrsr.html":[4,0,6], +"namespacemoda__bufrsr.html#a157bb0cb25913753748822ce3c384b06":[4,0,6,3], +"namespacemoda__bufrsr.html#a225d75cc454938f8da4ed39857ff2c5c":[4,0,6,4], +"namespacemoda__bufrsr.html#a38470e8cca9ad2afce56dd577ddd5b51":[4,0,6,6], +"namespacemoda__bufrsr.html#a4971d723fe9c86ed7741f7cfae61f2f0":[4,0,6,5], +"namespacemoda__bufrsr.html#a80dd6be1ed3b93e6cb6fcfef1e87ee08":[4,0,6,1], +"namespacemoda__bufrsr.html#a821fcf75cf865aaebdba3527d04190e0":[4,0,6,7], +"namespacemoda__bufrsr.html#a9ec76b10297b2e9521682a1e2014370d":[4,0,6,8], +"namespacemoda__bufrsr.html#ab23685bcce40ee0d9f71f881bdfa0d07":[4,0,6,2], +"namespacemoda__bufrsr.html#adff426f406bb1f795e94c0af6d68d856":[4,0,6,0], +"namespacemoda__comprs.html":[4,0,7], +"namespacemoda__comprs.html#a0bab4a779995493580b46f231516e133":[4,0,7,3], +"namespacemoda__comprs.html#a7e5d5589bde01337616f2527beed519f":[4,0,7,1], +"namespacemoda__comprs.html#a94ea2c3cfc88079d837ac29324d61937":[4,0,7,0], +"namespacemoda__comprs.html#ac4fd15b3e268548d17edca4e1e5e5675":[4,0,7,2], +"namespacemoda__comprx.html":[4,0,8], +"namespacemoda__comprx.html#a07c74b931e7ddbba553f8391b8e24aaf":[4,0,8,0], +"namespacemoda__comprx.html#a243a2baa283f951be51ea9466cca35b8":[4,0,8,7], +"namespacemoda__comprx.html#a47438a5eff5e61065fce0dc3df1694a7":[4,0,8,1], +"namespacemoda__comprx.html#a574b3c666f5e8aa725910e20a739f561":[4,0,8,12], +"namespacemoda__comprx.html#a7a0967a79c236a16f1fa11ebb8f99b0f":[4,0,8,2], +"namespacemoda__comprx.html#a7c3104f9c9731b91a8a105bcc5212542":[4,0,8,8], +"namespacemoda__comprx.html#a7caf741d65ff0b68932fa7d207c689ba":[4,0,8,5], +"namespacemoda__comprx.html#a8be10a997d67944a328d256bfc60bf02":[4,0,8,13], +"namespacemoda__comprx.html#a8ecc5d87d79c8c3aa778665041bcb522":[4,0,8,3], +"namespacemoda__comprx.html#aa945d27bc1c5cf32ea5ba624ef289808":[4,0,8,4], "namespacemoda__comprx.html#ac17dd8dc0aeb695a1046a884673b1fc3":[4,0,8,11], "namespacemoda__comprx.html#ad9b27559a7e05f9939764fa6688d7147":[4,0,8,6], "namespacemoda__comprx.html#aedf59ef218e980c24d128aa7bc8884b1":[4,0,8,10], @@ -28,226 +102,152 @@ var NAVTREEINDEX4 = "namespacemoda__mgwa.html#abe572c04d3aa498e8135d20e656d0e6a":[4,0,15,0], "namespacemoda__mgwb.html":[4,0,16], "namespacemoda__mgwb.html#ac38651460e5e05dd70fe8c19fc1a9caa":[4,0,16,0], -"namespacemoda__msgcmp.html":[4,0,17], -"namespacemoda__msgcmp.html#a748ff156e2c817957765b05119f74270":[4,0,17,0], -"namespacemoda__msgcwd.html":[4,0,18], -"namespacemoda__msgcwd.html#a034d50224d3416c855472ead1043b1aa":[4,0,18,1], -"namespacemoda__msgcwd.html#a37df9d6a60023612be784db0b759da3b":[4,0,18,0], -"namespacemoda__msgcwd.html#a43a1031d5c017c6f61ba6deabe22daad":[4,0,18,3], -"namespacemoda__msgcwd.html#aaf25479459e35ef12ce20eecfc632295":[4,0,18,2], -"namespacemoda__msgcwd.html#ac477545b5d44685da84af7f23d7baa59":[4,0,18,4], -"namespacemoda__msglim.html":[4,0,19], -"namespacemoda__msglim.html#abe63e3ddf9a739b073e8dd5b01460ddf":[4,0,19,0], -"namespacemoda__msgmem.html":[4,0,20], -"namespacemoda__msgmem.html#a030ff35af84549af17fe0b0e4315ebf2":[4,0,20,8], -"namespacemoda__msgmem.html#a07ee8cbf949167ffea7e2ac9ceddd536":[4,0,20,3], -"namespacemoda__msgmem.html#a0db33f8017f2c46947f0a5589ba98227":[4,0,20,9], -"namespacemoda__msgmem.html#a52a37b6bcc7ed3492325f47e1f8018ab":[4,0,20,0], -"namespacemoda__msgmem.html#a549e012729bbc3cb18894d34380ce5bd":[4,0,20,11], -"namespacemoda__msgmem.html#a55020aca1118bb6f09f8b3d1f68a5c74":[4,0,20,1], -"namespacemoda__msgmem.html#a5ac2ef8f11fcf81b55a5353dbfda18cc":[4,0,20,10], -"namespacemoda__msgmem.html#a6e754cd1cdefe0c8c93ab497fcb33637":[4,0,20,13], -"namespacemoda__msgmem.html#a79bdd90460fa467a8e9130089d7963a5":[4,0,20,4], -"namespacemoda__msgmem.html#a9905d8bc2ddc7681086ea0319442d0d9":[4,0,20,7], -"namespacemoda__msgmem.html#aa92c2a9b9faf87958775d45a00ee866f":[4,0,20,5], -"namespacemoda__msgmem.html#ab1873371ca3b5f3e44a5d19ebf30af23":[4,0,20,14], -"namespacemoda__msgmem.html#ab991cce44554fb17b1c1cd0474929a94":[4,0,20,6], -"namespacemoda__msgmem.html#af2710ff69575fa7a323c654e7998e142":[4,0,20,12], -"namespacemoda__msgmem.html#af55ccb71d40a6980f3e18dee2ea3a9db":[4,0,20,2], -"namespacemoda__msgstd.html":[4,0,21], -"namespacemoda__msgstd.html#a23356dfd7172ae4d2ff05d657234d6ab":[4,0,21,0], -"namespacemoda__mstabs.html":[4,0,22], -"namespacemoda__mstabs.html#a089cf80d582ff75c6596063d0ed8c049":[4,0,22,10], -"namespacemoda__mstabs.html#a0ccfcc43067ef6debce2218ad50abb0b":[4,0,22,5], -"namespacemoda__mstabs.html#a2861db4fcd6083b5f6d194c92e873c95":[4,0,22,12], -"namespacemoda__mstabs.html#a31164f84ab9d27493a19afee2fda502a":[4,0,22,0], -"namespacemoda__mstabs.html#a37a325646f12fe6d0dd3ae3c341f20d7":[4,0,22,7], -"namespacemoda__mstabs.html#a4c761088ff4243b661ec78773c07adaa":[4,0,22,2], -"namespacemoda__mstabs.html#a5f77a3f33df1fc46f007160428b674d1":[4,0,22,11], -"namespacemoda__mstabs.html#aa842e38ba6243a4ff1ab1e56404c2cb7":[4,0,22,1], -"namespacemoda__mstabs.html#aab2cc4c7c57e7c7d111f49187aff44ea":[4,0,22,3], -"namespacemoda__mstabs.html#ab2e77035e8e8a5f8e6a2f544279ab168":[4,0,22,6], -"namespacemoda__mstabs.html#ac34001b0c39f1c7b156214adaf3381d0":[4,0,22,4], -"namespacemoda__mstabs.html#ae8e13371b82ad223284aeac9d6ad9aae":[4,0,22,13], -"namespacemoda__mstabs.html#aeabc918978c598efc0231fc59d2bfd24":[4,0,22,9], -"namespacemoda__mstabs.html#af0d2b78411b01dc1aabe9baf6c946b38":[4,0,22,8], -"namespacemoda__nmikrp.html":[4,0,23], -"namespacemoda__nmikrp.html#a547378be8180b17844161916eca1e876":[4,0,23,1], -"namespacemoda__nmikrp.html#a6e3f292bfc1ab7b63b783bdf0266c812":[4,0,23,0], -"namespacemoda__nmikrp.html#a94ad19bfc71bbfcd6f1caf4a744d5eb3":[4,0,23,2], -"namespacemoda__nrv203.html":[4,0,24], -"namespacemoda__nrv203.html#a2784f03b6c19452c601b1377a3ed59a1":[4,0,24,1], -"namespacemoda__nrv203.html#a5f80cd868154c06f202e5886d40750de":[4,0,24,7], -"namespacemoda__nrv203.html#a61eaac2cb0e3dd6de4d02e9986cab602":[4,0,24,4], -"namespacemoda__nrv203.html#a7f37665c0422638e65824c8b9183169e":[4,0,24,5], -"namespacemoda__nrv203.html#a9c4d7ff754fd79feb908c6858f7e4e5f":[4,0,24,6], -"namespacemoda__nrv203.html#aadd51c4f00c0c4a12b922aace0ed04f7":[4,0,24,3], -"namespacemoda__nrv203.html#ad4299c9b916b83272f07cba8d2d22d4f":[4,0,24,2], -"namespacemoda__nrv203.html#af1ca5281543dc4ce645d861f7f744c6d":[4,0,24,0], -"namespacemoda__nulbfr.html":[4,0,25], -"namespacemoda__nulbfr.html#a1b6c0eaf2305df7abddd8c6c66723526":[4,0,25,0], -"namespacemoda__rdmtb.html":[4,0,26], -"namespacemoda__rdmtb.html#a1152389e5fc9eadddbea89bd76abc653":[4,0,26,0], -"namespacemoda__rdmtb.html#a21983afeacfaf7e7755271343aca9055":[4,0,26,1], -"namespacemoda__rdmtb.html#ab26bcc9dccfa0b250af20392755adf93":[4,0,26,3], -"namespacemoda__rdmtb.html#ab8fe0a01ea7ba06916fd450273c1c38f":[4,0,26,2], -"namespacemoda__rlccmn.html":[4,0,27], -"namespacemoda__rlccmn.html#a6ee3ae8f4cfb91d15189834b8b62d41f":[4,0,27,3], -"namespacemoda__rlccmn.html#a76b8845911215f91b5a91128facb7cbd":[4,0,27,2], -"namespacemoda__rlccmn.html#a90cc348c7156330efc75a45e5e5860ca":[4,0,27,1], -"namespacemoda__rlccmn.html#acaa72aa1ab54d9a7a82f83e58c8aeed1":[4,0,27,0], -"namespacemoda__s01cm.html":[4,0,28], -"namespacemoda__s01cm.html#a320a25005a0063e8a0713fc66973b655":[4,0,28,1], -"namespacemoda__s01cm.html#a7dfdd248050c7cc36f38933711526888":[4,0,28,2], -"namespacemoda__s01cm.html#ab7e403dca694be4ae4d4c3803e7bc4c7":[4,0,28,0], -"namespacemoda__s3list.html":[4,0,29], -"namespacemoda__s3list.html#a07f44b4772abffacaba7e9be5fbb7fda":[4,0,29,1], -"namespacemoda__s3list.html#a2ceee9741718460b614f37fb6b976259":[4,0,29,0], -"namespacemoda__sc3bfr.html":[4,0,30], -"namespacemoda__sc3bfr.html#aa480a82940946343d0d30d8f65c27584":[4,0,30,1], -"namespacemoda__sc3bfr.html#ac3bbd45f25c8071e161bf7898230695a":[4,0,30,0], -"namespacemoda__stbfr.html":[4,0,31], -"namespacemoda__stbfr.html#aa6ed42f02eb5933c83e7acf1422b8d99":[4,0,31,0], -"namespacemoda__stbfr.html#ac23d0e71777440374b51773ab34d31c7":[4,0,31,1], -"namespacemoda__stcode.html":[4,0,32], -"namespacemoda__stcode.html#a81b647a972ded879adf10cb98bfaab2e":[4,0,32,0], -"namespacemoda__tababd.html":[4,0,33], -"namespacemoda__tababd.html#a02ea2421e524ac9f2f8e213dd0151558":[4,0,33,4], -"namespacemoda__tababd.html#a043c64825f8bdb44c4e6b69d2f5c253c":[4,0,33,9], -"namespacemoda__tababd.html#a21f38471f40c0eaecdf011d5b594de65":[4,0,33,7], -"namespacemoda__tababd.html#a29788f9aef200e10d2f557c16abfaa56":[4,0,33,3], -"namespacemoda__tababd.html#a6e28d53baf8dce1d6a5c4b91546cfcca":[4,0,33,0], -"namespacemoda__tababd.html#a875c0ff90cd5fdc88e3f10ae7b5bc556":[4,0,33,6], -"namespacemoda__tababd.html#a8f322e3d7724bb96f7ce06beec989c0f":[4,0,33,5], -"namespacemoda__tababd.html#a9e14841d9a084410d3ee7d5d08d3bf5e":[4,0,33,2], -"namespacemoda__tababd.html#ab09abac79a48acf677cf36764ffe5db5":[4,0,33,1], -"namespacemoda__tababd.html#ad3fddde254d512cae401fc3f5532fe7c":[4,0,33,8], -"namespacemoda__tablef.html":[4,0,34], -"namespacemoda__tablef.html#a61847a8129d1a6c6909c2ea4727d67f6":[4,0,34,0], -"namespacemoda__tables.html":[4,0,35], -"namespacemoda__tables.html#a0b8b25c6365505c5045ab473f54e03f6":[4,0,35,6], -"namespacemoda__tables.html#a17c04e8d3d8d361463e3f2fc0b3dd599":[4,0,35,1], -"namespacemoda__tables.html#a18e681f9bedbaadf3526641e19598901":[4,0,35,3], -"namespacemoda__tables.html#a1c370e229cc62002283ca2462296273e":[4,0,35,2], -"namespacemoda__tables.html#a1ff254e3c0f169340a16225a17c5a2c2":[4,0,35,0], -"namespacemoda__tables.html#a28b0f02b81a535890fc64ec13fdfc35b":[4,0,35,8], -"namespacemoda__tables.html#a2a706219ab0edde0511570bfa32093ed":[4,0,35,14], -"namespacemoda__tables.html#a4ff0c6b9328407caa52c08dd22d7525c":[4,0,35,13], -"namespacemoda__tables.html#a5a1f71e4a27babbf5eadd01f7b3dcdcb":[4,0,35,5], -"namespacemoda__tables.html#a5f03be0ecd3fa7e059b9c74fb67cd4e4":[4,0,35,12], -"namespacemoda__tables.html#a74976394b2b70036d27222507ba4bfcc":[4,0,35,11], -"namespacemoda__tables.html#a945fc956c1c6ba8c37bfe63c04837b36":[4,0,35,7], -"namespacemoda__tables.html#ab12171885e93720ae2716b4b1ecae251":[4,0,35,4], -"namespacemoda__tables.html#ac0c5953da2d8867d81acad1800fec53c":[4,0,35,10], -"namespacemoda__tables.html#af5a5b5688cbfbea4a3d5d0705172fba3":[4,0,35,9], -"namespacemoda__tnkrcp.html":[4,0,36], -"namespacemoda__tnkrcp.html#a12d35afcaacac53905061f928377d92b":[4,0,36,2], -"namespacemoda__tnkrcp.html#a3f402734944f1438bc986b0d877a0bd7":[4,0,36,5], -"namespacemoda__tnkrcp.html#a97f45bd4e10b6016c9ef17bbd0efc2ca":[4,0,36,1], -"namespacemoda__tnkrcp.html#aba2ec73dacc32807332a7c1e38468f38":[4,0,36,0], -"namespacemoda__tnkrcp.html#aceb65be824d657fa109be2d9059a3a2b":[4,0,36,3], -"namespacemoda__tnkrcp.html#af081362974b0ae4f5be67c4bea20bae6":[4,0,36,4], -"namespacemoda__ufbcpl.html":[4,0,37], -"namespacemoda__ufbcpl.html#abf94758379c91be61fcf18f6c9dae5cf":[4,0,37,0], -"namespacemoda__unptyp.html":[4,0,38], -"namespacemoda__unptyp.html#abc7e7be12befacea858a7f249c9425ca":[4,0,38,0], -"namespacemoda__usrbit.html":[4,0,39], -"namespacemoda__usrbit.html#a99268fc2b9168fcbbd5f8ab70e6da0b7":[4,0,39,1], -"namespacemoda__usrbit.html#ab5ade5e51c2620a6e6be9cad890baf7a":[4,0,39,0], -"namespacemoda__usrint.html":[4,0,40], -"namespacemoda__usrint.html#a2269ddd572fded029ca62080b38f6261":[4,0,40,2], -"namespacemoda__usrint.html#a7ad9ef51fc135aad9fcecba2a636f486":[4,0,40,3], -"namespacemoda__usrint.html#a7e27d4bdf5a372fd7dac8ede033f969e":[4,0,40,0], -"namespacemoda__usrint.html#ab05877244c7131b445de4326efd8aa8a":[4,0,40,1], -"namespacemoda__usrtmp.html":[4,0,41], -"namespacemoda__usrtmp.html#a77349b5f0a6f8916850dcb253aee1f30":[4,0,41,0], -"namespacemoda__usrtmp.html#afcc556a5fac9b693f0be507fafccf973":[4,0,41,1], -"namespacemoda__xtab.html":[4,0,42], -"namespacemoda__xtab.html#ada2721216de79b6527d89323df61956d":[4,0,42,0], +"namespacemoda__mrgcom.html":[4,0,17], +"namespacemoda__mrgcom.html#a61d7a9354052881b929a1c7afeff24f2":[4,0,17,1], +"namespacemoda__mrgcom.html#a71cc22e6cdcdf0d9d885f3e2418905a9":[4,0,17,3], +"namespacemoda__mrgcom.html#aca7ba3c13394414e82f8bfd925fd6d9f":[4,0,17,0], +"namespacemoda__mrgcom.html#ace7f78e015bbce02e77bb95dec7efa06":[4,0,17,2], +"namespacemoda__msgcmp.html":[4,0,18], +"namespacemoda__msgcmp.html#a748ff156e2c817957765b05119f74270":[4,0,18,0], +"namespacemoda__msgcwd.html":[4,0,19], +"namespacemoda__msgcwd.html#a034d50224d3416c855472ead1043b1aa":[4,0,19,1], +"namespacemoda__msgcwd.html#a37df9d6a60023612be784db0b759da3b":[4,0,19,0], +"namespacemoda__msgcwd.html#a43a1031d5c017c6f61ba6deabe22daad":[4,0,19,3], +"namespacemoda__msgcwd.html#aaf25479459e35ef12ce20eecfc632295":[4,0,19,2], +"namespacemoda__msgcwd.html#ac477545b5d44685da84af7f23d7baa59":[4,0,19,4], +"namespacemoda__msglim.html":[4,0,20], +"namespacemoda__msglim.html#abe63e3ddf9a739b073e8dd5b01460ddf":[4,0,20,0], +"namespacemoda__msgmem.html":[4,0,21], +"namespacemoda__msgmem.html#a030ff35af84549af17fe0b0e4315ebf2":[4,0,21,8], +"namespacemoda__msgmem.html#a07ee8cbf949167ffea7e2ac9ceddd536":[4,0,21,3], +"namespacemoda__msgmem.html#a0db33f8017f2c46947f0a5589ba98227":[4,0,21,9], +"namespacemoda__msgmem.html#a52a37b6bcc7ed3492325f47e1f8018ab":[4,0,21,0], +"namespacemoda__msgmem.html#a549e012729bbc3cb18894d34380ce5bd":[4,0,21,11], +"namespacemoda__msgmem.html#a55020aca1118bb6f09f8b3d1f68a5c74":[4,0,21,1], +"namespacemoda__msgmem.html#a5ac2ef8f11fcf81b55a5353dbfda18cc":[4,0,21,10], +"namespacemoda__msgmem.html#a6e754cd1cdefe0c8c93ab497fcb33637":[4,0,21,13], +"namespacemoda__msgmem.html#a79bdd90460fa467a8e9130089d7963a5":[4,0,21,4], +"namespacemoda__msgmem.html#a9905d8bc2ddc7681086ea0319442d0d9":[4,0,21,7], +"namespacemoda__msgmem.html#aa92c2a9b9faf87958775d45a00ee866f":[4,0,21,5], +"namespacemoda__msgmem.html#ab1873371ca3b5f3e44a5d19ebf30af23":[4,0,21,14], +"namespacemoda__msgmem.html#ab991cce44554fb17b1c1cd0474929a94":[4,0,21,6], +"namespacemoda__msgmem.html#af2710ff69575fa7a323c654e7998e142":[4,0,21,12], +"namespacemoda__msgmem.html#af55ccb71d40a6980f3e18dee2ea3a9db":[4,0,21,2], +"namespacemoda__msgstd.html":[4,0,22], +"namespacemoda__msgstd.html#a23356dfd7172ae4d2ff05d657234d6ab":[4,0,22,0], +"namespacemoda__mstabs.html":[4,0,23], +"namespacemoda__mstabs.html#a089cf80d582ff75c6596063d0ed8c049":[4,0,23,10], +"namespacemoda__mstabs.html#a0ccfcc43067ef6debce2218ad50abb0b":[4,0,23,5], +"namespacemoda__mstabs.html#a2861db4fcd6083b5f6d194c92e873c95":[4,0,23,12], +"namespacemoda__mstabs.html#a31164f84ab9d27493a19afee2fda502a":[4,0,23,0], +"namespacemoda__mstabs.html#a37a325646f12fe6d0dd3ae3c341f20d7":[4,0,23,7], +"namespacemoda__mstabs.html#a4c761088ff4243b661ec78773c07adaa":[4,0,23,2], +"namespacemoda__mstabs.html#a5f77a3f33df1fc46f007160428b674d1":[4,0,23,11], +"namespacemoda__mstabs.html#aa842e38ba6243a4ff1ab1e56404c2cb7":[4,0,23,1], +"namespacemoda__mstabs.html#aab2cc4c7c57e7c7d111f49187aff44ea":[4,0,23,3], +"namespacemoda__mstabs.html#ab2e77035e8e8a5f8e6a2f544279ab168":[4,0,23,6], +"namespacemoda__mstabs.html#ac34001b0c39f1c7b156214adaf3381d0":[4,0,23,4], +"namespacemoda__mstabs.html#ae8e13371b82ad223284aeac9d6ad9aae":[4,0,23,13], +"namespacemoda__mstabs.html#aeabc918978c598efc0231fc59d2bfd24":[4,0,23,9], +"namespacemoda__mstabs.html#af0d2b78411b01dc1aabe9baf6c946b38":[4,0,23,8], +"namespacemoda__nmikrp.html":[4,0,24], +"namespacemoda__nmikrp.html#a547378be8180b17844161916eca1e876":[4,0,24,1], +"namespacemoda__nmikrp.html#a6e3f292bfc1ab7b63b783bdf0266c812":[4,0,24,0], +"namespacemoda__nmikrp.html#a94ad19bfc71bbfcd6f1caf4a744d5eb3":[4,0,24,2], +"namespacemoda__nrv203.html":[4,0,25], +"namespacemoda__nrv203.html#a2784f03b6c19452c601b1377a3ed59a1":[4,0,25,1], +"namespacemoda__nrv203.html#a5f80cd868154c06f202e5886d40750de":[4,0,25,7], +"namespacemoda__nrv203.html#a61eaac2cb0e3dd6de4d02e9986cab602":[4,0,25,4], +"namespacemoda__nrv203.html#a7f37665c0422638e65824c8b9183169e":[4,0,25,5], +"namespacemoda__nrv203.html#a9c4d7ff754fd79feb908c6858f7e4e5f":[4,0,25,6], +"namespacemoda__nrv203.html#aadd51c4f00c0c4a12b922aace0ed04f7":[4,0,25,3], +"namespacemoda__nrv203.html#ad4299c9b916b83272f07cba8d2d22d4f":[4,0,25,2], +"namespacemoda__nrv203.html#af1ca5281543dc4ce645d861f7f744c6d":[4,0,25,0], +"namespacemoda__nulbfr.html":[4,0,26], +"namespacemoda__nulbfr.html#a1b6c0eaf2305df7abddd8c6c66723526":[4,0,26,0], +"namespacemoda__rdmtb.html":[4,0,27], +"namespacemoda__rdmtb.html#a1152389e5fc9eadddbea89bd76abc653":[4,0,27,0], +"namespacemoda__rdmtb.html#a21983afeacfaf7e7755271343aca9055":[4,0,27,1], +"namespacemoda__rdmtb.html#ab26bcc9dccfa0b250af20392755adf93":[4,0,27,3], +"namespacemoda__rdmtb.html#ab8fe0a01ea7ba06916fd450273c1c38f":[4,0,27,2], +"namespacemoda__rlccmn.html":[4,0,28], +"namespacemoda__rlccmn.html#a6ee3ae8f4cfb91d15189834b8b62d41f":[4,0,28,3], +"namespacemoda__rlccmn.html#a76b8845911215f91b5a91128facb7cbd":[4,0,28,2], +"namespacemoda__rlccmn.html#a90cc348c7156330efc75a45e5e5860ca":[4,0,28,1], +"namespacemoda__rlccmn.html#acaa72aa1ab54d9a7a82f83e58c8aeed1":[4,0,28,0], +"namespacemoda__s01cm.html":[4,0,29], +"namespacemoda__s01cm.html#a320a25005a0063e8a0713fc66973b655":[4,0,29,1], +"namespacemoda__s01cm.html#a7dfdd248050c7cc36f38933711526888":[4,0,29,2], +"namespacemoda__s01cm.html#ab7e403dca694be4ae4d4c3803e7bc4c7":[4,0,29,0], +"namespacemoda__s3list.html":[4,0,30], +"namespacemoda__s3list.html#a07f44b4772abffacaba7e9be5fbb7fda":[4,0,30,1], +"namespacemoda__s3list.html#a2ceee9741718460b614f37fb6b976259":[4,0,30,0], +"namespacemoda__sc3bfr.html":[4,0,31], +"namespacemoda__sc3bfr.html#aa480a82940946343d0d30d8f65c27584":[4,0,31,1], +"namespacemoda__sc3bfr.html#ac3bbd45f25c8071e161bf7898230695a":[4,0,31,0], +"namespacemoda__stbfr.html":[4,0,32], +"namespacemoda__stbfr.html#aa6ed42f02eb5933c83e7acf1422b8d99":[4,0,32,0], +"namespacemoda__stbfr.html#ac23d0e71777440374b51773ab34d31c7":[4,0,32,1], +"namespacemoda__stcode.html":[4,0,33], +"namespacemoda__stcode.html#a81b647a972ded879adf10cb98bfaab2e":[4,0,33,0], +"namespacemoda__tababd.html":[4,0,34], +"namespacemoda__tababd.html#a02ea2421e524ac9f2f8e213dd0151558":[4,0,34,4], +"namespacemoda__tababd.html#a043c64825f8bdb44c4e6b69d2f5c253c":[4,0,34,9], +"namespacemoda__tababd.html#a21f38471f40c0eaecdf011d5b594de65":[4,0,34,7], +"namespacemoda__tababd.html#a29788f9aef200e10d2f557c16abfaa56":[4,0,34,3], +"namespacemoda__tababd.html#a6e28d53baf8dce1d6a5c4b91546cfcca":[4,0,34,0], +"namespacemoda__tababd.html#a875c0ff90cd5fdc88e3f10ae7b5bc556":[4,0,34,6], +"namespacemoda__tababd.html#a8f322e3d7724bb96f7ce06beec989c0f":[4,0,34,5], +"namespacemoda__tababd.html#a9e14841d9a084410d3ee7d5d08d3bf5e":[4,0,34,2], +"namespacemoda__tababd.html#ab09abac79a48acf677cf36764ffe5db5":[4,0,34,1], +"namespacemoda__tababd.html#ad3fddde254d512cae401fc3f5532fe7c":[4,0,34,8], +"namespacemoda__tabccc.html":[4,0,35], +"namespacemoda__tabccc.html#a5325016ada1d1e03d49737e28d92ce47":[4,0,35,2], +"namespacemoda__tabccc.html#a70a224458d62bb0e617313d4e05d976b":[4,0,35,0], +"namespacemoda__tabccc.html#a785d2d36be7d1f598ea6d827386978f4":[4,0,35,1], +"namespacemoda__tabccc.html#a889fda4f92be8677aecb3548c824fd18":[4,0,35,3], +"namespacemoda__tablef.html":[4,0,36], +"namespacemoda__tablef.html#a61847a8129d1a6c6909c2ea4727d67f6":[4,0,36,0], +"namespacemoda__tables.html":[4,0,37], +"namespacemoda__tables.html#a0b8b25c6365505c5045ab473f54e03f6":[4,0,37,6], +"namespacemoda__tables.html#a17c04e8d3d8d361463e3f2fc0b3dd599":[4,0,37,1], +"namespacemoda__tables.html#a18e681f9bedbaadf3526641e19598901":[4,0,37,3], +"namespacemoda__tables.html#a1c370e229cc62002283ca2462296273e":[4,0,37,2], +"namespacemoda__tables.html#a1ff254e3c0f169340a16225a17c5a2c2":[4,0,37,0], +"namespacemoda__tables.html#a28b0f02b81a535890fc64ec13fdfc35b":[4,0,37,8], +"namespacemoda__tables.html#a2a706219ab0edde0511570bfa32093ed":[4,0,37,14], +"namespacemoda__tables.html#a4ff0c6b9328407caa52c08dd22d7525c":[4,0,37,13], +"namespacemoda__tables.html#a5a1f71e4a27babbf5eadd01f7b3dcdcb":[4,0,37,5], +"namespacemoda__tables.html#a5f03be0ecd3fa7e059b9c74fb67cd4e4":[4,0,37,12], +"namespacemoda__tables.html#a74976394b2b70036d27222507ba4bfcc":[4,0,37,11], +"namespacemoda__tables.html#a945fc956c1c6ba8c37bfe63c04837b36":[4,0,37,7], +"namespacemoda__tables.html#ab12171885e93720ae2716b4b1ecae251":[4,0,37,4], +"namespacemoda__tables.html#ac0c5953da2d8867d81acad1800fec53c":[4,0,37,10], +"namespacemoda__tables.html#af5a5b5688cbfbea4a3d5d0705172fba3":[4,0,37,9], +"namespacemoda__tnkrcp.html":[4,0,38], +"namespacemoda__tnkrcp.html#a12d35afcaacac53905061f928377d92b":[4,0,38,2], +"namespacemoda__tnkrcp.html#a3f402734944f1438bc986b0d877a0bd7":[4,0,38,5], +"namespacemoda__tnkrcp.html#a97f45bd4e10b6016c9ef17bbd0efc2ca":[4,0,38,1], +"namespacemoda__tnkrcp.html#aba2ec73dacc32807332a7c1e38468f38":[4,0,38,0], +"namespacemoda__tnkrcp.html#aceb65be824d657fa109be2d9059a3a2b":[4,0,38,3], +"namespacemoda__tnkrcp.html#af081362974b0ae4f5be67c4bea20bae6":[4,0,38,4], +"namespacemoda__ufbcpl.html":[4,0,39], +"namespacemoda__ufbcpl.html#abf94758379c91be61fcf18f6c9dae5cf":[4,0,39,0], +"namespacemoda__unptyp.html":[4,0,40], +"namespacemoda__unptyp.html#abc7e7be12befacea858a7f249c9425ca":[4,0,40,0], +"namespacemoda__usrbit.html":[4,0,41], +"namespacemoda__usrbit.html#a99268fc2b9168fcbbd5f8ab70e6da0b7":[4,0,41,1], +"namespacemoda__usrbit.html#ab5ade5e51c2620a6e6be9cad890baf7a":[4,0,41,0], +"namespacemoda__usrint.html":[4,0,42], +"namespacemoda__usrint.html#a2269ddd572fded029ca62080b38f6261":[4,0,42,2], +"namespacemoda__usrint.html#a7ad9ef51fc135aad9fcecba2a636f486":[4,0,42,3], +"namespacemoda__usrint.html#a7e27d4bdf5a372fd7dac8ede033f969e":[4,0,42,0], +"namespacemoda__usrint.html#ab05877244c7131b445de4326efd8aa8a":[4,0,42,1], +"namespacemoda__usrtmp.html":[4,0,43], +"namespacemoda__usrtmp.html#a77349b5f0a6f8916850dcb253aee1f30":[4,0,43,0], +"namespacemoda__usrtmp.html#afcc556a5fac9b693f0be507fafccf973":[4,0,43,1], +"namespacemoda__xtab.html":[4,0,44], +"namespacemoda__xtab.html#ada2721216de79b6527d89323df61956d":[4,0,44,0], "namespaces.html":[4,0], -"namespaceshare__table__info.html":[4,0,44], -"namespaceshare__table__info.html#a88fbe3e8e14e3810e1dc3f1560d1c51f":[4,0,44,1], -"namespaceshare__table__info.html#a9cb558bc60eed8b777532f56fff8a08c":[4,0,44,0], -"namespaceshare__table__info.html#ad7e71b6c16362d8d65d97662bcdd7d02":[4,0,44,2], -"openbt_8F90.html":[6,0,39], -"openbt_8F90.html#a7e64e80a4c6a00f66c7dc1cbdeab96ef":[6,0,39,0], -"openbt_8F90_source.html":[6,0,39], -"openclosebf_8F90.html":[6,0,40], -"openclosebf_8F90.html#a48a49bb82348400c1ba6af00c0138ab3":[6,0,40,0], -"openclosebf_8F90.html#a56b33c6538a8c0abf1b6a31584c68494":[6,0,40,5], -"openclosebf_8F90.html#a80df0d62e629b094edd2b3682a7d9e3a":[6,0,40,2], -"openclosebf_8F90.html#a9dc7e4fb476a5528a958ee132ee6392d":[6,0,40,3], -"openclosebf_8F90.html#aa585324fae3ecf559d6f39507dde6715":[6,0,40,1], -"openclosebf_8F90.html#aac1b87fbbb688e4f5e2120012eaee382":[6,0,40,7], -"openclosebf_8F90.html#abceda08f9c29378d3ddadeb46e823d00":[6,0,40,6], -"openclosebf_8F90.html#ada4363a068f7df043d75b4519c55142f":[6,0,40,9], -"openclosebf_8F90.html#ae88bf9794ed98ec79e9de0faff0093af":[6,0,40,8], -"openclosebf_8F90.html#aeef6f5d08d9631dbe92c1821a9d02903":[6,0,40,4], -"openclosebf_8F90_source.html":[6,0,40], -"pages.html":[], -"readbp_8F90.html":[6,0,41], -"readbp_8F90.html#a20f66afc4b9a6ab619111b0d614e452c":[6,0,41,0], -"readbp_8F90.html#ac55f7a6af2af963791bb395c6dcc331b":[6,0,41,1], -"readbp_8F90_source.html":[6,0,41], -"readmp_8F90.html":[6,0,42], -"readmp_8F90.html#a0b84a15ad24b7d8dfbef402295b8b650":[6,0,42,0], -"readmp_8F90_source.html":[6,0,42], -"readwritemg_8F90.html":[6,0,43], -"readwritemg_8F90.html#a127f4e4664445595654494dea28d7d8f":[6,0,43,15], -"readwritemg_8F90.html#a1c8cdc47f69010cd4eaa20710e28f53d":[6,0,43,7], -"readwritemg_8F90.html#a44d876e69afb2688f364d8bdd0ca2400":[6,0,43,6], -"readwritemg_8F90.html#a47d4a63b5e7276a90eee0ce83237cb60":[6,0,43,8], -"readwritemg_8F90.html#a493ce59c1a2976e9714c2d9b283bdb11":[6,0,43,14], -"readwritemg_8F90.html#a5edbefade4e7194e4dd3ee42f394034b":[6,0,43,13], -"readwritemg_8F90.html#a63b37b74d9833df9d99e3937a2fa293a":[6,0,43,0], -"readwritemg_8F90.html#a7430cdcec381d86f72a4b60a6a7db982":[6,0,43,11], -"readwritemg_8F90.html#a7c7234f006ddb78fb82844c95b608002":[6,0,43,12], -"readwritemg_8F90.html#a87f1117bcbbc713c95bdca6f1bb1214c":[6,0,43,4], -"readwritemg_8F90.html#aa2a7bf49cad422b474a24edd3a1cb232":[6,0,43,17], -"readwritemg_8F90.html#aad947e23951efbcba54930d6f309e0a8":[6,0,43,18], -"readwritemg_8F90.html#ab6c6c3d1925977e2c4013b3da342dc37":[6,0,43,2], -"readwritemg_8F90.html#abb1acb6092b6e1f49737498c1f76f0d0":[6,0,43,3], -"readwritemg_8F90.html#ac23041847910e299fa2c89962597a312":[6,0,43,16], -"readwritemg_8F90.html#adc65969dd9c1cedbab0425827e241963":[6,0,43,1], -"readwritemg_8F90.html#ae023a7cc381f488ac7669dc3e3ee8236":[6,0,43,5], -"readwritemg_8F90.html#ae5477034329440d4127a5243305b81e4":[6,0,43,9], -"readwritemg_8F90.html#af49a08bdf36b69217da7571dcfc90624":[6,0,43,10], -"readwritemg_8F90_source.html":[6,0,43], -"readwritesb_8F90.html":[6,0,44], -"readwritesb_8F90.html#a178ebc9cfe70d3119632799fc3db25de":[6,0,44,12], -"readwritesb_8F90.html#a1ca33013e4c11f3c9d1fe614f9f1d585":[6,0,44,6], -"readwritesb_8F90.html#a1dab1c658cb8511cfd1cc6a360221da8":[6,0,44,9], -"readwritesb_8F90.html#a2324e7f253ba3ad6209d7ab0fce5bc0e":[6,0,44,16], -"readwritesb_8F90.html#a237f33069932c5fae473ac718c2eae9a":[6,0,44,4], -"readwritesb_8F90.html#a470af56bdf10d0b31292b0edac067597":[6,0,44,13], -"readwritesb_8F90.html#a4b62a40d2c2860279670bf59a68e8204":[6,0,44,14], -"readwritesb_8F90.html#a8a621b1996440ed233c796e49c8971f3":[6,0,44,1], -"readwritesb_8F90.html#a90ab4c66c5564da3a326c66cc42d067f":[6,0,44,5], -"readwritesb_8F90.html#aa2218d1cd25f8d558448bdc3061b3a04":[6,0,44,15], -"readwritesb_8F90.html#aa926be9632b9da3990e2591f0386ee94":[6,0,44,0], -"readwritesb_8F90.html#aae33d6dd74331ba0a2a34ba22e8e56ab":[6,0,44,2], -"readwritesb_8F90.html#ab4b6c52feffa76d2a4d8fab6e3547f3c":[6,0,44,11], -"readwritesb_8F90.html#abb101b31fac13895d22320a918215372":[6,0,44,7], -"readwritesb_8F90.html#acd820000e0fca0bc8d4ca0abac7b81fd":[6,0,44,3], -"readwritesb_8F90.html#ad3f468fd2fbb1a36ebfff82d32674953":[6,0,44,8], -"readwritesb_8F90.html#aeb1fdb4af8ca100d3d80c52a221f1de8":[6,0,44,10], -"readwritesb_8F90_source.html":[6,0,44], -"readwriteval_8F90.html":[6,0,45], -"readwriteval_8F90.html#a10cd831e6dc0a773534c5c2787da56c8":[6,0,45,1], -"readwriteval_8F90.html#a1ac6ef2be222bff2bab58e3f58f5d67e":[6,0,45,9], -"readwriteval_8F90.html#a1d88d30e5ee23d6d86cbfb66537b512f":[6,0,45,11], -"readwriteval_8F90.html#a2017ce90611078ae96c6bc12da4e8e02":[6,0,45,3], -"readwriteval_8F90.html#a3f676e2267d902f8bc913a6d9d1a6aac":[6,0,45,14], -"readwriteval_8F90.html#a4895b24addb0b3e23f5bd92fd891656e":[6,0,45,16], -"readwriteval_8F90.html#a543d19ccf3a36ded022cbbe8db66ee85":[6,0,45,15], -"readwriteval_8F90.html#a551fbe590397eacf06bb471b738dd6a5":[6,0,45,2], -"readwriteval_8F90.html#a62aacb5a102aaf1ee01deef68c63cdb8":[6,0,45,12], -"readwriteval_8F90.html#a6eb38e7aa610c36787b90e50b290eea7":[6,0,45,10], -"readwriteval_8F90.html#a7281bf7fbd6efa3a9be946f7d63cffad":[6,0,45,17], -"readwriteval_8F90.html#a79d01683a99ab7e6a31359c00c317bd8":[6,0,45,6], -"readwriteval_8F90.html#a8a84d615371869d93f16c8617575dee2":[6,0,45,0], -"readwriteval_8F90.html#a921e4820b81e9f33e28a0d0452785a14":[6,0,45,18], -"readwriteval_8F90.html#aad0d9cae550b97bc950c739ff44ca6b2":[6,0,45,4], -"readwriteval_8F90.html#ac8bbcb32a65a5acdf50e0f5d835c6ac2":[6,0,45,5], -"readwriteval_8F90.html#ad0c9f5c0f8e4dc0e1ebd7c685b9a5ba9":[6,0,45,7] +"namespaceshare__table__info.html":[4,0,46] }; diff --git a/navtreeindex5.js b/navtreeindex5.js index b3529c629..3d0b25125 100644 --- a/navtreeindex5.js +++ b/navtreeindex5.js @@ -1,70 +1,163 @@ var NAVTREEINDEX5 = { -"readwriteval_8F90.html#aecfa08f631e1af46b472c007b93b2955":[6,0,45,19], -"readwriteval_8F90.html#aee2899967d88055f73e4d5ad954d7b5a":[6,0,45,8], -"readwriteval_8F90.html#af46dec3ef4cc6f467323b40eb14a4024":[6,0,45,13], +"namespaceshare__table__info.html#a88fbe3e8e14e3810e1dc3f1560d1c51f":[4,0,46,1], +"namespaceshare__table__info.html#a9cb558bc60eed8b777532f56fff8a08c":[4,0,46,0], +"namespaceshare__table__info.html#ad7e71b6c16362d8d65d97662bcdd7d02":[4,0,46,2], +"openbt_8F90.html":[6,0,39], +"openbt_8F90.html#a7e64e80a4c6a00f66c7dc1cbdeab96ef":[6,0,39,0], +"openbt_8F90_source.html":[6,0,39], +"openclosebf_8F90.html":[6,0,40], +"openclosebf_8F90.html#a48a49bb82348400c1ba6af00c0138ab3":[6,0,40,0], +"openclosebf_8F90.html#a56b33c6538a8c0abf1b6a31584c68494":[6,0,40,5], +"openclosebf_8F90.html#a80df0d62e629b094edd2b3682a7d9e3a":[6,0,40,2], +"openclosebf_8F90.html#a9dc7e4fb476a5528a958ee132ee6392d":[6,0,40,3], +"openclosebf_8F90.html#aa585324fae3ecf559d6f39507dde6715":[6,0,40,1], +"openclosebf_8F90.html#aac1b87fbbb688e4f5e2120012eaee382":[6,0,40,7], +"openclosebf_8F90.html#abceda08f9c29378d3ddadeb46e823d00":[6,0,40,6], +"openclosebf_8F90.html#ada4363a068f7df043d75b4519c55142f":[6,0,40,9], +"openclosebf_8F90.html#ae88bf9794ed98ec79e9de0faff0093af":[6,0,40,8], +"openclosebf_8F90.html#aeef6f5d08d9631dbe92c1821a9d02903":[6,0,40,4], +"openclosebf_8F90_source.html":[6,0,40], +"pages.html":[], +"readbp_8F90.html":[6,0,41], +"readbp_8F90.html#a20f66afc4b9a6ab619111b0d614e452c":[6,0,41,0], +"readbp_8F90.html#ac55f7a6af2af963791bb395c6dcc331b":[6,0,41,1], +"readbp_8F90_source.html":[6,0,41], +"readmp_8F90.html":[6,0,42], +"readmp_8F90.html#a0b84a15ad24b7d8dfbef402295b8b650":[6,0,42,0], +"readmp_8F90_source.html":[6,0,42], +"readwritemg_8F90.html":[6,0,43], +"readwritemg_8F90.html#a127f4e4664445595654494dea28d7d8f":[6,0,43,15], +"readwritemg_8F90.html#a1c8cdc47f69010cd4eaa20710e28f53d":[6,0,43,7], +"readwritemg_8F90.html#a44d876e69afb2688f364d8bdd0ca2400":[6,0,43,6], +"readwritemg_8F90.html#a47d4a63b5e7276a90eee0ce83237cb60":[6,0,43,8], +"readwritemg_8F90.html#a493ce59c1a2976e9714c2d9b283bdb11":[6,0,43,14], +"readwritemg_8F90.html#a5edbefade4e7194e4dd3ee42f394034b":[6,0,43,13], +"readwritemg_8F90.html#a63b37b74d9833df9d99e3937a2fa293a":[6,0,43,0], +"readwritemg_8F90.html#a7430cdcec381d86f72a4b60a6a7db982":[6,0,43,11], +"readwritemg_8F90.html#a7c7234f006ddb78fb82844c95b608002":[6,0,43,12], +"readwritemg_8F90.html#a87f1117bcbbc713c95bdca6f1bb1214c":[6,0,43,4], +"readwritemg_8F90.html#aa2a7bf49cad422b474a24edd3a1cb232":[6,0,43,17], +"readwritemg_8F90.html#aad947e23951efbcba54930d6f309e0a8":[6,0,43,18], +"readwritemg_8F90.html#ab6c6c3d1925977e2c4013b3da342dc37":[6,0,43,2], +"readwritemg_8F90.html#abb1acb6092b6e1f49737498c1f76f0d0":[6,0,43,3], +"readwritemg_8F90.html#ac23041847910e299fa2c89962597a312":[6,0,43,16], +"readwritemg_8F90.html#adc65969dd9c1cedbab0425827e241963":[6,0,43,1], +"readwritemg_8F90.html#ae023a7cc381f488ac7669dc3e3ee8236":[6,0,43,5], +"readwritemg_8F90.html#ae5477034329440d4127a5243305b81e4":[6,0,43,9], +"readwritemg_8F90.html#af49a08bdf36b69217da7571dcfc90624":[6,0,43,10], +"readwritemg_8F90_source.html":[6,0,43], +"readwritesb_8F90.html":[6,0,44], +"readwritesb_8F90.html#a178ebc9cfe70d3119632799fc3db25de":[6,0,44,12], +"readwritesb_8F90.html#a1ca33013e4c11f3c9d1fe614f9f1d585":[6,0,44,6], +"readwritesb_8F90.html#a1dab1c658cb8511cfd1cc6a360221da8":[6,0,44,9], +"readwritesb_8F90.html#a2324e7f253ba3ad6209d7ab0fce5bc0e":[6,0,44,16], +"readwritesb_8F90.html#a237f33069932c5fae473ac718c2eae9a":[6,0,44,4], +"readwritesb_8F90.html#a470af56bdf10d0b31292b0edac067597":[6,0,44,13], +"readwritesb_8F90.html#a4b62a40d2c2860279670bf59a68e8204":[6,0,44,14], +"readwritesb_8F90.html#a8a621b1996440ed233c796e49c8971f3":[6,0,44,1], +"readwritesb_8F90.html#a90ab4c66c5564da3a326c66cc42d067f":[6,0,44,5], +"readwritesb_8F90.html#aa2218d1cd25f8d558448bdc3061b3a04":[6,0,44,15], +"readwritesb_8F90.html#aa926be9632b9da3990e2591f0386ee94":[6,0,44,0], +"readwritesb_8F90.html#aae33d6dd74331ba0a2a34ba22e8e56ab":[6,0,44,2], +"readwritesb_8F90.html#ab4b6c52feffa76d2a4d8fab6e3547f3c":[6,0,44,11], +"readwritesb_8F90.html#abb101b31fac13895d22320a918215372":[6,0,44,7], +"readwritesb_8F90.html#acd820000e0fca0bc8d4ca0abac7b81fd":[6,0,44,3], +"readwritesb_8F90.html#ad3f468fd2fbb1a36ebfff82d32674953":[6,0,44,8], +"readwritesb_8F90.html#aeb1fdb4af8ca100d3d80c52a221f1de8":[6,0,44,10], +"readwritesb_8F90_source.html":[6,0,44], +"readwriteval_8F90.html":[6,0,45], +"readwriteval_8F90.html#a10cd831e6dc0a773534c5c2787da56c8":[6,0,45,1], +"readwriteval_8F90.html#a1d88d30e5ee23d6d86cbfb66537b512f":[6,0,45,9], +"readwriteval_8F90.html#a3f676e2267d902f8bc913a6d9d1a6aac":[6,0,45,12], +"readwriteval_8F90.html#a4895b24addb0b3e23f5bd92fd891656e":[6,0,45,14], +"readwriteval_8F90.html#a543d19ccf3a36ded022cbbe8db66ee85":[6,0,45,13], +"readwriteval_8F90.html#a551fbe590397eacf06bb471b738dd6a5":[6,0,45,2], +"readwriteval_8F90.html#a62aacb5a102aaf1ee01deef68c63cdb8":[6,0,45,10], +"readwriteval_8F90.html#a6eb38e7aa610c36787b90e50b290eea7":[6,0,45,8], +"readwriteval_8F90.html#a7281bf7fbd6efa3a9be946f7d63cffad":[6,0,45,15], +"readwriteval_8F90.html#a79d01683a99ab7e6a31359c00c317bd8":[6,0,45,5], +"readwriteval_8F90.html#a8a84d615371869d93f16c8617575dee2":[6,0,45,0], +"readwriteval_8F90.html#a921e4820b81e9f33e28a0d0452785a14":[6,0,45,16], +"readwriteval_8F90.html#aad0d9cae550b97bc950c739ff44ca6b2":[6,0,45,3], +"readwriteval_8F90.html#ac8bbcb32a65a5acdf50e0f5d835c6ac2":[6,0,45,4], +"readwriteval_8F90.html#ad0c9f5c0f8e4dc0e1ebd7c685b9a5ba9":[6,0,45,6], +"readwriteval_8F90.html#aecfa08f631e1af46b472c007b93b2955":[6,0,45,17], +"readwriteval_8F90.html#aee2899967d88055f73e4d5ad954d7b5a":[6,0,45,7], +"readwriteval_8F90.html#af46dec3ef4cc6f467323b40eb14a4024":[6,0,45,11], "readwriteval_8F90_source.html":[6,0,45], "restd_8c.html":[6,0,46], "restd_8c.html#ab9426972c9b597e6b7382b00416dd572":[6,0,46,1], "restd_8c.html#ad5e16b436141e02ca2b1a8def406a1d3":[6,0,46,0], "restd_8c_source.html":[6,0,46], -"s013vals_8F90.html":[6,0,47], -"s013vals_8F90.html#a1f8f8b7d0f3b0eb6042e170c0c84c18f":[6,0,47,0], -"s013vals_8F90.html#a28944a4d73587a3943964a95619cb8a2":[6,0,47,7], -"s013vals_8F90.html#a311f8836440703db774ee651425337b4":[6,0,47,1], -"s013vals_8F90.html#a3b1a6e580f306826c680ff0a71d883f8":[6,0,47,9], -"s013vals_8F90.html#a5522b3ec85470f1def91880bbc5df5e6":[6,0,47,13], -"s013vals_8F90.html#a6060b7b617646ee396097f20317e2f4d":[6,0,47,8], -"s013vals_8F90.html#a70447e085c4523fa53796c5317f63ae8":[6,0,47,12], -"s013vals_8F90.html#a7bf4d22f9bb27412a9d041f7a5d7bca6":[6,0,47,16], -"s013vals_8F90.html#a837bd14b4718718edb57b5f53c7bbcbe":[6,0,47,11], -"s013vals_8F90.html#a867795708832230010199b5a31f687a8":[6,0,47,4], -"s013vals_8F90.html#aadd84c217cf5fab0d94564da3f377ebe":[6,0,47,2], -"s013vals_8F90.html#ac2e40c9d462d2855dd693d9498f55342":[6,0,47,3], -"s013vals_8F90.html#ac3a5070d2415122d7a93471e5f019247":[6,0,47,10], -"s013vals_8F90.html#ac8fa984389323f08dd1cbd3aa6b57da9":[6,0,47,14], -"s013vals_8F90.html#ac96e5200de4ecc84f79caa98177e60f6":[6,0,47,15], -"s013vals_8F90.html#ada4930358eb16c05c65c2df068db90c1":[6,0,47,5], -"s013vals_8F90.html#aedbe120baa1a1058174325c5e2d0e487":[6,0,47,6], -"s013vals_8F90_source.html":[6,0,47], -"sinv_8F90.html":[6,0,48], -"sinv_8F90.html#a4ab4fad455062f4d66f23adb61d13c7c":[6,0,48,0], -"sinv_8F90.html#add80e304e2ffa251811ac6a19162f807":[6,0,48,1], -"sinv_8F90_source.html":[6,0,48], -"split__by__subset_8F90.html":[6,0,49], -"split__by__subset_8F90.html#ae5d45e2086aa783d8ca85e2fd47c8118":[6,0,49,0], -"split__by__subset_8F90_source.html":[6,0,49], -"standard_8F90.html":[6,0,50], -"standard_8F90.html#a1f7f89920afdd318ec3ff39559c42ecd":[6,0,50,1], -"standard_8F90.html#a543c53880e96f04934213352ea77a7ab":[6,0,50,2], -"standard_8F90.html#af4f78acf5cbb9eda9a8ef03d03030aaf":[6,0,50,0], -"standard_8F90_source.html":[6,0,50], -"strings_8F90.html":[6,0,51], -"strings_8F90.html#a19c92d247281ffcad8aab45d7debb54f":[6,0,51,3], -"strings_8F90.html#a1d493e7de1c23739a0fcd06089139f35":[6,0,51,0], -"strings_8F90.html#a2da1c300ec049ee215d937b5ab545f53":[6,0,51,2], -"strings_8F90.html#aa3112b3661ec475fe7949d9ae5bafb40":[6,0,51,4], -"strings_8F90.html#ae49e5fa3610c743607ca6288d4107d28":[6,0,51,1], -"strings_8F90_source.html":[6,0,51], -"stseq_8c.html":[6,0,52], -"stseq_8c.html#a340a16a2c0d988d37fbc2e92974b2b5e":[6,0,52,1], -"stseq_8c.html#a4f4c37daea8a69385e280d60265f9d40":[6,0,52,2], -"stseq_8c.html#afe9ff1cb9d09192a6d0c76f58c2e3f29":[6,0,52,0], -"stseq_8c_source.html":[6,0,52], -"tankrcpt_8F90.html":[6,0,53], -"tankrcpt_8F90.html#a24ba916e2d398ca162381b0d8b3f54fe":[6,0,53,3], -"tankrcpt_8F90.html#a5d6fa241d34622347252bf41b73d8610":[6,0,53,1], -"tankrcpt_8F90.html#a9ae992beefc572ef3ae02a330b221ffa":[6,0,53,2], -"tankrcpt_8F90.html#adca31c0fc592e5bf04c10572b26c85b1":[6,0,53,0], -"tankrcpt_8F90_source.html":[6,0,53], -"x4884_8F90.html":[6,0,54], -"x4884_8F90.html#a156e77d86141acd042efd97146dd18cf":[6,0,54,0], -"x4884_8F90.html#a5b19b8932da48639e6bcaeefc4d03bfb":[6,0,54,1], -"x4884_8F90.html#aa1e012dbd8da45797592cc65a399d71d":[6,0,54,2], -"x4884_8F90_source.html":[6,0,54], -"xbfmg_8c.html":[6,0,55], -"xbfmg_8c.html#a0ddf1224851353fc92bfbff6f499fa97":[6,0,55,0], -"xbfmg_8c.html#a54cbb8b652032605c043b18a134cd85d":[6,0,55,1], -"xbfmg_8c_source.html":[6,0,55], -"":[4,0,43] +"rpseqs_8h.html":[6,0,47], +"rpseqs_8h.html#a0a77b4e5d2b40123ebff20c4154898d8":[6,0,47,5], +"rpseqs_8h.html#a24aa1baebc11ce6abf3ead8256f38803":[6,0,47,1], +"rpseqs_8h.html#a4128b549a5bd62aaf4a65704cb9e1a00":[6,0,47,4], +"rpseqs_8h.html#a5339bc1b8006b14e4ccbf5dda327f2d7":[6,0,47,0], +"rpseqs_8h.html#a6edccabc4d438f6859856ef07e30f5d9":[6,0,47,2], +"rpseqs_8h.html#a70ce7476c9911bf1ca05a3417c6c38cc":[6,0,47,6], +"rpseqs_8h.html#aacd54dfde836a1cda39a9ea008e53a74":[6,0,47,3], +"rpseqs_8h_source.html":[6,0,47], +"s013vals_8F90.html":[6,0,48], +"s013vals_8F90.html#a1f8f8b7d0f3b0eb6042e170c0c84c18f":[6,0,48,0], +"s013vals_8F90.html#a28944a4d73587a3943964a95619cb8a2":[6,0,48,7], +"s013vals_8F90.html#a311f8836440703db774ee651425337b4":[6,0,48,1], +"s013vals_8F90.html#a3b1a6e580f306826c680ff0a71d883f8":[6,0,48,9], +"s013vals_8F90.html#a5522b3ec85470f1def91880bbc5df5e6":[6,0,48,13], +"s013vals_8F90.html#a6060b7b617646ee396097f20317e2f4d":[6,0,48,8], +"s013vals_8F90.html#a70447e085c4523fa53796c5317f63ae8":[6,0,48,12], +"s013vals_8F90.html#a7bf4d22f9bb27412a9d041f7a5d7bca6":[6,0,48,16], +"s013vals_8F90.html#a837bd14b4718718edb57b5f53c7bbcbe":[6,0,48,11], +"s013vals_8F90.html#a867795708832230010199b5a31f687a8":[6,0,48,4], +"s013vals_8F90.html#aadd84c217cf5fab0d94564da3f377ebe":[6,0,48,2], +"s013vals_8F90.html#ac2e40c9d462d2855dd693d9498f55342":[6,0,48,3], +"s013vals_8F90.html#ac3a5070d2415122d7a93471e5f019247":[6,0,48,10], +"s013vals_8F90.html#ac8fa984389323f08dd1cbd3aa6b57da9":[6,0,48,14], +"s013vals_8F90.html#ac96e5200de4ecc84f79caa98177e60f6":[6,0,48,15], +"s013vals_8F90.html#ada4930358eb16c05c65c2df068db90c1":[6,0,48,5], +"s013vals_8F90.html#aedbe120baa1a1058174325c5e2d0e487":[6,0,48,6], +"s013vals_8F90_source.html":[6,0,48], +"sinv_8F90.html":[6,0,49], +"sinv_8F90.html#a4ab4fad455062f4d66f23adb61d13c7c":[6,0,49,0], +"sinv_8F90.html#add80e304e2ffa251811ac6a19162f807":[6,0,49,1], +"sinv_8F90_source.html":[6,0,49], +"split__by__subset_8F90.html":[6,0,50], +"split__by__subset_8F90.html#ae5d45e2086aa783d8ca85e2fd47c8118":[6,0,50,0], +"split__by__subset_8F90_source.html":[6,0,50], +"standard_8F90.html":[6,0,51], +"standard_8F90.html#a1f7f89920afdd318ec3ff39559c42ecd":[6,0,51,1], +"standard_8F90.html#a543c53880e96f04934213352ea77a7ab":[6,0,51,2], +"standard_8F90.html#af4f78acf5cbb9eda9a8ef03d03030aaf":[6,0,51,0], +"standard_8F90_source.html":[6,0,51], +"strings_8F90.html":[6,0,52], +"strings_8F90.html#a19c92d247281ffcad8aab45d7debb54f":[6,0,52,3], +"strings_8F90.html#a1d493e7de1c23739a0fcd06089139f35":[6,0,52,0], +"strings_8F90.html#a2da1c300ec049ee215d937b5ab545f53":[6,0,52,2], +"strings_8F90.html#aa3112b3661ec475fe7949d9ae5bafb40":[6,0,52,4], +"strings_8F90.html#ae49e5fa3610c743607ca6288d4107d28":[6,0,52,1], +"strings_8F90_source.html":[6,0,52], +"stseq_8c.html":[6,0,53], +"stseq_8c.html#a059ea636d5300547db3423560ce52bd2":[6,0,53,3], +"stseq_8c.html#a2a80851a279f9ca9c50c674da679d2f1":[6,0,53,2], +"stseq_8c.html#a340a16a2c0d988d37fbc2e92974b2b5e":[6,0,53,1], +"stseq_8c.html#a4f4c37daea8a69385e280d60265f9d40":[6,0,53,4], +"stseq_8c.html#afe9ff1cb9d09192a6d0c76f58c2e3f29":[6,0,53,0], +"stseq_8c_source.html":[6,0,53], +"tankrcpt_8F90.html":[6,0,54], +"tankrcpt_8F90.html#a24ba916e2d398ca162381b0d8b3f54fe":[6,0,54,3], +"tankrcpt_8F90.html#a5d6fa241d34622347252bf41b73d8610":[6,0,54,1], +"tankrcpt_8F90.html#a9ae992beefc572ef3ae02a330b221ffa":[6,0,54,2], +"tankrcpt_8F90.html#adca31c0fc592e5bf04c10572b26c85b1":[6,0,54,0], +"tankrcpt_8F90_source.html":[6,0,54], +"x4884_8F90.html":[6,0,55], +"x4884_8F90.html#a156e77d86141acd042efd97146dd18cf":[6,0,55,0], +"x4884_8F90.html#a5b19b8932da48639e6bcaeefc4d03bfb":[6,0,55,1], +"x4884_8F90.html#aa1e012dbd8da45797592cc65a399d71d":[6,0,55,2], +"x4884_8F90_source.html":[6,0,55], +"xbfmg_8c.html":[6,0,56], +"xbfmg_8c.html#a0ddf1224851353fc92bfbff6f499fa97":[6,0,56,0], +"xbfmg_8c.html#a54cbb8b652032605c043b18a134cd85d":[6,0,56,1], +"xbfmg_8c_source.html":[6,0,56], +"":[4,0,45] }; diff --git a/openbt_8F90.html b/openbt_8F90.html index 5381da65b..b506d526b 100644 --- a/openbt_8F90.html +++ b/openbt_8F90.html @@ -26,7 +26,7 @@
                                                      NCEPLIBS-bufr -  12.1.0 +  12.2.0
                                                      diff --git a/openbt_8F90_source.html b/openbt_8F90_source.html index 17ac047cc..ddb1c1cd8 100644 --- a/openbt_8F90_source.html +++ b/openbt_8F90_source.html @@ -26,7 +26,7 @@
                                                      NCEPLIBS-bufr -  12.1.0 +  12.2.0
                                                      @@ -90,41 +90,39 @@
                                                      5 
                                                      30 recursive subroutine openbt(lundx,mtyp)
                                                      31 
                                                      -
                                                      32  use modv_vars, only: im8b
                                                      +
                                                      32  use modv_vars, only: im8b, iprt
                                                      33 
                                                      34  implicit none
                                                      35 
                                                      36  integer, intent(in) :: mtyp
                                                      37  integer, intent(out) :: lundx
                                                      -
                                                      38  integer iprt, my_mtyp
                                                      +
                                                      38  integer my_mtyp
                                                      39 
                                                      -
                                                      40  common /quiet/ iprt
                                                      +
                                                      40  character*128 errstr
                                                      41 
                                                      -
                                                      42  character*128 errstr
                                                      -
                                                      43 
                                                      -
                                                      44  ! Check for I8 integers
                                                      -
                                                      45  if(im8b) then
                                                      -
                                                      46  im8b=.false.
                                                      -
                                                      47  call x84(mtyp,my_mtyp,1)
                                                      -
                                                      48  call openbt(lundx,my_mtyp)
                                                      -
                                                      49  call x48(lundx,lundx,1)
                                                      -
                                                      50  im8b=.true.
                                                      -
                                                      51  return
                                                      -
                                                      52  endif
                                                      -
                                                      53 
                                                      -
                                                      54  if(iprt>=0) then
                                                      -
                                                      55  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                      -
                                                      56  errstr = 'BUFRLIB: OPENBT - THIS IS A DUMMY BUFRLIB ROUTINE'// &
                                                      -
                                                      57  ' CALLED BY CKTABA OR APPL. PGM; OPENBT SHOULD BE INCL. IN-LINE IN APPL. PGM'
                                                      -
                                                      58  call errwrt(errstr)
                                                      -
                                                      59  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                      -
                                                      60  call errwrt(' ')
                                                      -
                                                      61  endif
                                                      +
                                                      42  ! Check for I8 integers
                                                      +
                                                      43  if(im8b) then
                                                      +
                                                      44  im8b=.false.
                                                      +
                                                      45  call x84(mtyp,my_mtyp,1)
                                                      +
                                                      46  call openbt(lundx,my_mtyp)
                                                      +
                                                      47  call x48(lundx,lundx,1)
                                                      +
                                                      48  im8b=.true.
                                                      +
                                                      49  return
                                                      +
                                                      50  endif
                                                      +
                                                      51 
                                                      +
                                                      52  if(iprt>=0) then
                                                      +
                                                      53  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                      +
                                                      54  errstr = 'BUFRLIB: OPENBT - THIS IS A DUMMY BUFRLIB ROUTINE'// &
                                                      +
                                                      55  ' CALLED BY CKTABA OR APPL. PGM; OPENBT SHOULD BE INCL. IN-LINE IN APPL. PGM'
                                                      +
                                                      56  call errwrt(errstr)
                                                      +
                                                      57  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                      +
                                                      58  call errwrt(' ')
                                                      +
                                                      59  endif
                                                      +
                                                      60 
                                                      +
                                                      61  lundx = 0
                                                      62 
                                                      -
                                                      63  lundx = 0
                                                      -
                                                      64 
                                                      -
                                                      65  return
                                                      -
                                                      66 end subroutine openbt
                                                      +
                                                      63  return
                                                      +
                                                      64 end subroutine openbt
                                                      subroutine errwrt(str)
                                                      Specify a custom location for the logging of error and diagnostic messages generated by the NCEPLIBS-...
                                                      Definition: errwrt.F90:32
                                                      recursive subroutine openbt(lundx, mtyp)
                                                      Specify a DX BUFR table of last resort, in case subroutine cktaba() is unable to locate a DX BUFR tab...
                                                      Definition: openbt.F90:31
                                                      subroutine x48(iin4, iout8, nval)
                                                      Encode one or more 4-byte integer values as 8-byte integer values.
                                                      Definition: x4884.F90:18
                                                      diff --git a/openclosebf_8F90.html b/openclosebf_8F90.html index 2e098ec7f..286e2fc57 100644 --- a/openclosebf_8F90.html +++ b/openclosebf_8F90.html @@ -26,7 +26,7 @@
                                                      NCEPLIBS-bufr -  12.1.0 +  12.2.0
                                                      @@ -165,7 +165,7 @@

                                                      Author
                                                      J. Woollen, J. Ator
                                                      Date
                                                      1994-01-06
                                                      -

                                                      Definition at line 337 of file openclosebf.F90.

                                                      +

                                                      Definition at line 330 of file openclosebf.F90.

                                                      References closmg(), errwrt(), moda_nulbfr::null, status(), wtstat(), and x84().

                                                      @@ -336,14 +336,14 @@

                                                      writsa() is to be used)

                                                    • 'INUL' = same as 'IN', except don't read any messages whatsoever from lunit (e.g. when subroutine readerme() is to be used)
                                                    • -
                                                    • 'QUIET' = lunit is ignored; this is an indicator that the value for iprt in common block /quiet/ is being reset to the value in lundx
                                                    • +
                                                    • 'QUIET' = lunit is ignored; this is an indicator that the value for module variable iprt is being reset to the value in lundx
                                                    • 'FIRST' = lunit and lundx are ignored; this is an indicator to initialize the NCEPLIBS-bufr software, in case this subroutine was never previously called
                                                    lundx- Fortran logical unit number containing DX BUFR table information, except as noted below:
                                                    • If io is not set to 'FIRST' or 'QUIET' = Fortran logical unit number containing DX BUFR table information to be used in reading/writing from/to lunit (depending on the case); this value may be set equal to lunit if DX BUFR table information is already embedded in lunit
                                                    • If io is set to 'QUIET' = indicator for degree of printout:
                                                        -
                                                      • -1 = no printout except for ABORT messages
                                                      • +
                                                      • -1 = no printout except for abort messages
                                                      • 0 = limited printout (default)
                                                      • 1 = all warning messages are printed
                                                      • 2 = all warning and info messages are printed
                                                      • @@ -358,7 +358,7 @@

                                                        Authors
                                                        J. Woollen, J. Ator, D. Keyser
                                                        Date
                                                        1994-01-06
                                                        -

                                                        Definition at line 168 of file openclosebf.F90.

                                                        +

                                                        Definition at line 167 of file openclosebf.F90.

                                                        References arallocf(), bfrini(), bort(), errwrt(), moda_msgcwd::idate, moda_msgcwd::inode, moda_sc3bfr::isc3, moda_stcode::iscodes, moda_lushr::lus, moda_msgcwd::msub, moda_msgcwd::nmsg, moda_msgcwd::nsub, moda_nulbfr::null, posapx(), readdx(), status(), writdx(), wtstat(), and x84().

                                                        @@ -393,7 +393,7 @@

                                                        Author
                                                        Woollen
                                                        Date
                                                        1994-01-06
                                                        -

                                                        Definition at line 630 of file openclosebf.F90.

                                                        +

                                                        Definition at line 623 of file openclosebf.F90.

                                                        References bort(), moda_mgwa::mgwa, rdbfdx(), rdmsgw(), and status().

                                                        @@ -447,7 +447,7 @@

                                                        Author
                                                        Woollen
                                                        Date
                                                        2003-11-04
                                                        -

                                                        Definition at line 693 of file openclosebf.F90.

                                                        +

                                                        Definition at line 686 of file openclosebf.F90.

                                                        References bort(), moda_bitbuf::ibit, moda_bufrsr::jbay, moda_bufrsr::jbit, moda_bufrsr::jbyt, moda_bufrsr::jill, moda_bufrsr::jimm, moda_bufrsr::jmsg, moda_bufrsr::jsr, moda_bufrsr::jsub, moda_bufrsr::junn, moda_bitbuf::mbay, moda_bitbuf::mbyt, moda_msgcwd::nmsg, moda_msgcwd::nsub, readmg(), readsb(), status(), and wtstat().

                                                        @@ -519,11 +519,11 @@

                                                        Author
                                                        J. Woollen
                                                        Date
                                                        1994-01-06
                                                        -

                                                        Definition at line 405 of file openclosebf.F90.

                                                        +

                                                        Definition at line 398 of file openclosebf.F90.

                                                        References bort(), errwrt(), moda_stbfr::iolun, moda_stbfr::iomsg, x48(), and x84().

                                                        -

                                                        Referenced by closbf(), closmg(), copybf(), copymg(), copysb(), cpdxmm(), cpymem(), datebf(), drfini(), dumpbf(), dxdump(), getabdb(), getcfmng(), gettab(), gettagpr(), gettagre(), getvalnb(), ifbget(), igetsc(), invmrg(), iupvs01(), lcmgdf(), mesgbc(), minimg(), msgwrt(), nemdefs(), nemspecs(), nmsub(), openbf(), openmb(), openmg(), posapx(), rdmemm(), rdmems(), rdmgsb(), rdmsgw(), readdx(), readerme(), readlc(), readmg(), readns(), readsb(), rewnbf(), rtrcpt(), setvalnb(), bufr_c2f_interface::status_c(), stndrd(), ufbcnt(), ufbcpy(), ufbcup(), ufbdmp(), ufbevn(), ufbget(), ufbin3(), ufbint(), ufbinx(), ufbmem(), ufbmms(), ufbovr(), ufbpos(), ufbqcd(), ufbqcp(), ufbrep(), ufbrms(), ufbseq(), ufbstp(), ufbtab(), ufbtam(), ufdump(), upftbv(), wrcmps(), wrdxtb(), writlc(), writsa(), and writsb().

                                                        +

                                                        Referenced by closbf(), closmg(), copybf(), copymg(), copysb(), cpdxmm(), cpymem(), datebf(), drfini(), dumpbf(), dxdump(), getabdb(), getcfmng(), gettab(), gettagpr(), gettagre(), getvalnb(), ifbget(), igetsc(), invmrg(), iupvs01(), lcmgdf(), mesgbc(), minimg(), msgwrt(), nemdefs(), nemspecs(), nmsub(), openbf(), openmb(), openmg(), posapx(), rdmemm(), rdmems(), rdmgsb(), rdmsgw(), readdx(), readerme(), readlc(), readmg(), readns(), readsb(), rewnbf(), rtrcpt(), setvalnb(), bufr_c2f_interface::status_c(), stndrd(), ufbcnt(), ufbcpy(), ufbcup(), ufbdmp(), ufbevn(), ufbget(), ufbint(), ufbinx(), ufbmem(), ufbmms(), ufbovr(), ufbpos(), ufbqcd(), ufbqcp(), ufbrep(), ufbrms(), ufbseq(), ufbstp(), ufbtab(), ufbtam(), ufdump(), upftbv(), wrcmps(), wrdxtb(), writlc(), writsa(), and writsb().

                                                        @@ -576,7 +576,7 @@

                                                        Author
                                                        J. Woollen
                                                        Date
                                                        1994-01-06
                                                        -

                                                        Definition at line 585 of file openclosebf.F90.

                                                        +

                                                        Definition at line 578 of file openclosebf.F90.

                                                        References bort(), moda_msgcwd::nmsg, moda_msgcwd::nsub, status(), x48(), and x84().

                                                        @@ -662,7 +662,7 @@

                                                        Author
                                                        J. Woollen
                                                        Date
                                                        1994-01-06
                                                        -

                                                        Definition at line 856 of file openclosebf.F90.

                                                        +

                                                        Definition at line 854 of file openclosebf.F90.

                                                        References bort(), closbf(), errwrt(), moda_bitbuf::ibit, moda_tables::ibt, moda_usrint::inv, ireadmg(), ireadsb(), moda_tables::itp, moda_bitbuf::mbay, moda_bitbuf::mbyt, moda_unptyp::msgunp, moda_msgcwd::msub, moda_msgcwd::nmsg, nmsub(), moda_msgcwd::nsub, moda_usrint::nval, openbf(), parstr(), rewnbf(), status(), string(), up8(), upb(), upb8(), upc(), ups(), usrtpl(), x48(), and x84().

                                                        @@ -732,7 +732,7 @@

                                                        Author
                                                        J. Woollen
                                                        Date
                                                        1994-01-06
                                                        -

                                                        Definition at line 508 of file openclosebf.F90.

                                                        +

                                                        Definition at line 501 of file openclosebf.F90.

                                                        References bort(), moda_stbfr::iolun, and moda_stbfr::iomsg.

                                                        diff --git a/openclosebf_8F90_source.html b/openclosebf_8F90_source.html index 8c9c9a3a7..cfbc1305c 100644 --- a/openclosebf_8F90_source.html +++ b/openclosebf_8F90_source.html @@ -26,7 +26,7 @@
                                                        NCEPLIBS-bufr -  12.1.0 +  12.2.0
                                                        @@ -141,818 +141,813 @@
                                                        71  return
                                                        72 end subroutine fortran_close
                                                        73 
                                                        -
                                                        168 recursive subroutine openbf(lunit,io,lundx)
                                                        -
                                                        169 
                                                        -
                                                        170  use bufrlib
                                                        -
                                                        171 
                                                        -
                                                        172  use modv_vars, only: im8b, ifopbf, nfiles
                                                        -
                                                        173 
                                                        -
                                                        174  use moda_msgcwd
                                                        -
                                                        175  use moda_stbfr
                                                        -
                                                        176  use moda_sc3bfr
                                                        -
                                                        177  use moda_lushr
                                                        -
                                                        178  use moda_nulbfr
                                                        -
                                                        179  use moda_stcode
                                                        -
                                                        180 
                                                        -
                                                        181  implicit none
                                                        -
                                                        182 
                                                        -
                                                        183  integer, intent(in) :: lunit, lundx
                                                        -
                                                        184  integer my_lunit, my_lundx, iprt, iprtprv, lun, il, im
                                                        -
                                                        185 
                                                        -
                                                        186  character*(*), intent(in) :: io
                                                        -
                                                        187  character*255 filename, fileacc
                                                        -
                                                        188  character*128 bort_str, errstr
                                                        -
                                                        189  character*28 cprint(0:4)
                                                        -
                                                        190 
                                                        -
                                                        191  common /quiet/ iprt
                                                        -
                                                        192 
                                                        -
                                                        193  data cprint/ &
                                                        -
                                                        194  ' (only ABORTs) ', &
                                                        -
                                                        195  ' (limited -default) ', &
                                                        -
                                                        196  ' (all warnings) ', &
                                                        -
                                                        197  ' (all warnings+infos) ', &
                                                        -
                                                        198  ' (all warnings+infos+debugs)'/
                                                        -
                                                        199 
                                                        -
                                                        200  ! Check for i8 integers
                                                        +
                                                        167 recursive subroutine openbf(lunit,io,lundx)
                                                        +
                                                        168 
                                                        +
                                                        169  use bufrlib
                                                        +
                                                        170 
                                                        +
                                                        171  use modv_vars, only: im8b, ifopbf, nfiles, iprt
                                                        +
                                                        172 
                                                        +
                                                        173  use moda_msgcwd
                                                        +
                                                        174  use moda_stbfr
                                                        +
                                                        175  use moda_sc3bfr
                                                        +
                                                        176  use moda_lushr
                                                        +
                                                        177  use moda_nulbfr
                                                        +
                                                        178  use moda_stcode
                                                        +
                                                        179 
                                                        +
                                                        180  implicit none
                                                        +
                                                        181 
                                                        +
                                                        182  integer, intent(in) :: lunit, lundx
                                                        +
                                                        183  integer my_lunit, my_lundx, iprtprv, lun, il, im
                                                        +
                                                        184 
                                                        +
                                                        185  character*(*), intent(in) :: io
                                                        +
                                                        186  character*255 filename, fileacc
                                                        +
                                                        187  character*128 bort_str, errstr
                                                        +
                                                        188  character*28 cprint(0:4)
                                                        +
                                                        189 
                                                        +
                                                        190  data cprint/ &
                                                        +
                                                        191  ' (only aborts) ', &
                                                        +
                                                        192  ' (limited -default) ', &
                                                        +
                                                        193  ' (all warnings) ', &
                                                        +
                                                        194  ' (all warnings+infos) ', &
                                                        +
                                                        195  ' (all warnings+infos+debugs)'/
                                                        +
                                                        196 
                                                        +
                                                        197  ! Check for i8 integers
                                                        +
                                                        198 
                                                        +
                                                        199  if(im8b) then
                                                        +
                                                        200  im8b=.false.
                                                        201 
                                                        -
                                                        202  if(im8b) then
                                                        -
                                                        203  im8b=.false.
                                                        -
                                                        204 
                                                        -
                                                        205  call x84(lunit,my_lunit,1)
                                                        -
                                                        206  call x84(lundx,my_lundx,1)
                                                        -
                                                        207  call openbf(my_lunit,io,my_lundx)
                                                        -
                                                        208 
                                                        -
                                                        209  im8b=.true.
                                                        -
                                                        210  return
                                                        -
                                                        211  endif
                                                        -
                                                        212 
                                                        -
                                                        213  ! If this is the first call to this subroutine, initialize iprt in /quiet/ as 0
                                                        -
                                                        214 
                                                        -
                                                        215  if(ifopbf==0) iprt = 0
                                                        -
                                                        216 
                                                        -
                                                        217  if(io=='QUIET') then
                                                        -
                                                        218  ! override previous iprt value (printout indicator)
                                                        -
                                                        219  iprtprv = iprt
                                                        -
                                                        220  iprt = lundx
                                                        -
                                                        221  if(iprt<-1) iprt = -1
                                                        -
                                                        222  if(iprt>3) iprt = 3
                                                        -
                                                        223  if(iprt>=0) then
                                                        -
                                                        224  call errwrt('++++++++++++++BUFR ARCHIVE LIBRARY+++++++++++++++++')
                                                        -
                                                        225  write ( unit=errstr, fmt='(A,I3,A,A,I3,A)' ) 'BUFRLIB: OPENBF - DEGREE OF MESSAGE PRINT INDICATOR CHNGED FROM', &
                                                        -
                                                        226  iprtprv,cprint(iprtprv+1),' TO',iprt,cprint(iprt+1)
                                                        -
                                                        227  call errwrt(errstr)
                                                        -
                                                        228  call errwrt('++++++++++++++BUFR ARCHIVE LIBRARY+++++++++++++++++')
                                                        -
                                                        229  call errwrt(' ')
                                                        -
                                                        230  endif
                                                        -
                                                        231  endif
                                                        -
                                                        232 
                                                        -
                                                        233  if(ifopbf==0) then
                                                        -
                                                        234  ! This is the first call to this subroutine, so take care of some initial housekeeping tasks.
                                                        -
                                                        235  ! Note that arallocf and arallocc_c must be called before calling bfrini.
                                                        +
                                                        202  call x84(lunit,my_lunit,1)
                                                        +
                                                        203  call x84(lundx,my_lundx,1)
                                                        +
                                                        204  call openbf(my_lunit,io,my_lundx)
                                                        +
                                                        205 
                                                        +
                                                        206  im8b=.true.
                                                        +
                                                        207  return
                                                        +
                                                        208  endif
                                                        +
                                                        209 
                                                        +
                                                        210  if(io=='QUIET') then
                                                        +
                                                        211  ! Override previous iprt value
                                                        +
                                                        212  iprtprv = iprt
                                                        +
                                                        213  iprt = lundx
                                                        +
                                                        214  if(iprt<-1) iprt = -1
                                                        +
                                                        215  if(iprt>3) iprt = 3
                                                        +
                                                        216  if(iprt>=0) then
                                                        +
                                                        217  call errwrt('++++++++++++++BUFR ARCHIVE LIBRARY+++++++++++++++++')
                                                        +
                                                        218  write ( unit=errstr, fmt='(A,I3,A,A,I3,A)' ) 'BUFRLIB: OPENBF - DEGREE OF MESSAGE PRINT INDICATOR CHNGED FROM', &
                                                        +
                                                        219  iprtprv,cprint(iprtprv+1),' TO',iprt,cprint(iprt+1)
                                                        +
                                                        220  call errwrt(errstr)
                                                        +
                                                        221  call errwrt('++++++++++++++BUFR ARCHIVE LIBRARY+++++++++++++++++')
                                                        +
                                                        222  call errwrt(' ')
                                                        +
                                                        223  endif
                                                        +
                                                        224  endif
                                                        +
                                                        225 
                                                        +
                                                        226  if(ifopbf==0) then
                                                        +
                                                        227  ! This is the first call to this subroutine, so take care of some initial housekeeping tasks.
                                                        +
                                                        228  ! Note that arallocf and arallocc_c must be called before calling bfrini.
                                                        +
                                                        229 
                                                        +
                                                        230  ! Allocate internal arrays.
                                                        +
                                                        231  call arallocf
                                                        +
                                                        232  call arallocc_c
                                                        +
                                                        233 
                                                        +
                                                        234  ! Initialize some global variables.
                                                        +
                                                        235  call bfrini
                                                        236 
                                                        -
                                                        237  ! Allocate internal arrays.
                                                        -
                                                        238  call arallocf
                                                        -
                                                        239  call arallocc_c
                                                        +
                                                        237  ifopbf = 1
                                                        +
                                                        238  endif
                                                        +
                                                        239  if( (io=='FIRST') .or. (io=='QUIET') ) return
                                                        240 
                                                        -
                                                        241  ! Initialize some global variables.
                                                        -
                                                        242  call bfrini
                                                        -
                                                        243 
                                                        -
                                                        244  ifopbf = 1
                                                        -
                                                        245  endif
                                                        -
                                                        246  if( (io=='FIRST') .or. (io=='QUIET') ) return
                                                        -
                                                        247 
                                                        -
                                                        248  ! See if a file can be opened
                                                        -
                                                        249 
                                                        -
                                                        250  call status(lunit,lun,il,im)
                                                        -
                                                        251  if(lun==0) then
                                                        -
                                                        252  write(bort_str,'("BUFRLIB: OPENBF - THERE ARE ALREADY",I3," BUFR FILES OPENED, CANNOT OPEN FILE CONNECTED TO UNIT",I4)') &
                                                        -
                                                        253  nfiles,lunit
                                                        -
                                                        254  call bort(bort_str)
                                                        -
                                                        255  endif
                                                        -
                                                        256  if(il/=0) then
                                                        -
                                                        257  write(bort_str,'("BUFRLIB: OPENBF - THE FILE CONNECTED TO UNIT",I5," IS ALREADY OPEN")') lunit
                                                        -
                                                        258  call bort(bort_str)
                                                        -
                                                        259  endif
                                                        -
                                                        260  null(lun) = 0
                                                        -
                                                        261  isc3(lun) = 0
                                                        -
                                                        262  iscodes(lun) = 0
                                                        -
                                                        263  lus(lun) = 0
                                                        -
                                                        264 
                                                        -
                                                        265  ! Use inquire to obtain the filename associated with unit lunit
                                                        +
                                                        241  ! See if a file can be opened
                                                        +
                                                        242 
                                                        +
                                                        243  call status(lunit,lun,il,im)
                                                        +
                                                        244  if(lun==0) then
                                                        +
                                                        245  write(bort_str,'("BUFRLIB: OPENBF - THERE ARE ALREADY",I3," BUFR FILES OPENED, CANNOT OPEN FILE CONNECTED TO UNIT",I4)') &
                                                        +
                                                        246  nfiles,lunit
                                                        +
                                                        247  call bort(bort_str)
                                                        +
                                                        248  endif
                                                        +
                                                        249  if(il/=0) then
                                                        +
                                                        250  write(bort_str,'("BUFRLIB: OPENBF - THE FILE CONNECTED TO UNIT",I5," IS ALREADY OPEN")') lunit
                                                        +
                                                        251  call bort(bort_str)
                                                        +
                                                        252  endif
                                                        +
                                                        253  null(lun) = 0
                                                        +
                                                        254  isc3(lun) = 0
                                                        +
                                                        255  iscodes(lun) = 0
                                                        +
                                                        256  lus(lun) = 0
                                                        +
                                                        257 
                                                        +
                                                        258  ! Use inquire to obtain the filename associated with unit lunit
                                                        +
                                                        259 
                                                        +
                                                        260  if (io/='NUL' .and. io/='INUL') then
                                                        +
                                                        261  inquire(lunit,access=fileacc)
                                                        +
                                                        262  if(fileacc=='UNDEFINED') open(lunit)
                                                        +
                                                        263  inquire(lunit,name=filename)
                                                        +
                                                        264  filename=trim(filename)//char(0)
                                                        +
                                                        265  endif
                                                        266 
                                                        -
                                                        267  if (io/='NUL' .and. io/='INUL') then
                                                        -
                                                        268  inquire(lunit,access=fileacc)
                                                        -
                                                        269  if(fileacc=='UNDEFINED') open(lunit)
                                                        -
                                                        270  inquire(lunit,name=filename)
                                                        -
                                                        271  filename=trim(filename)//char(0)
                                                        -
                                                        272  endif
                                                        -
                                                        273 
                                                        -
                                                        274  nmsg(lun) = 0
                                                        -
                                                        275  nsub(lun) = 0
                                                        -
                                                        276  msub(lun) = 0
                                                        -
                                                        277  inode(lun) = 0
                                                        -
                                                        278  idate(lun) = 0
                                                        -
                                                        279 
                                                        -
                                                        280  ! Decide how to open the file and setup the dictionary
                                                        -
                                                        281 
                                                        -
                                                        282  if(io=='IN') then
                                                        -
                                                        283  call openrb_c(lun,filename)
                                                        -
                                                        284  call wtstat(lunit,lun,-1,0)
                                                        -
                                                        285  call readdx(lunit,lun,lundx)
                                                        -
                                                        286  else if(io=='INUL') then
                                                        -
                                                        287  call wtstat(lunit,lun,-1,0)
                                                        -
                                                        288  if(lunit/=lundx) call readdx(lunit,lun,lundx)
                                                        -
                                                        289  null(lun) = 1
                                                        -
                                                        290  else if(io=='NUL') then
                                                        -
                                                        291  call wtstat(lunit,lun,1,0)
                                                        -
                                                        292  if(lunit/=lundx) call readdx(lunit,lun,lundx)
                                                        -
                                                        293  null(lun) = 1
                                                        -
                                                        294  else if(io=='INX') then
                                                        +
                                                        267  nmsg(lun) = 0
                                                        +
                                                        268  nsub(lun) = 0
                                                        +
                                                        269  msub(lun) = 0
                                                        +
                                                        270  inode(lun) = 0
                                                        +
                                                        271  idate(lun) = 0
                                                        +
                                                        272 
                                                        +
                                                        273  ! Decide how to open the file and setup the dictionary
                                                        +
                                                        274 
                                                        +
                                                        275  if(io=='IN') then
                                                        +
                                                        276  call openrb_c(lun,filename)
                                                        +
                                                        277  call wtstat(lunit,lun,-1,0)
                                                        +
                                                        278  call readdx(lunit,lun,lundx)
                                                        +
                                                        279  else if(io=='INUL') then
                                                        +
                                                        280  call wtstat(lunit,lun,-1,0)
                                                        +
                                                        281  if(lunit/=lundx) call readdx(lunit,lun,lundx)
                                                        +
                                                        282  null(lun) = 1
                                                        +
                                                        283  else if(io=='NUL') then
                                                        +
                                                        284  call wtstat(lunit,lun,1,0)
                                                        +
                                                        285  if(lunit/=lundx) call readdx(lunit,lun,lundx)
                                                        +
                                                        286  null(lun) = 1
                                                        +
                                                        287  else if(io=='INX') then
                                                        +
                                                        288  call openrb_c(lun,filename)
                                                        +
                                                        289  call wtstat(lunit,lun,-1,0)
                                                        +
                                                        290  null(lun) = 1
                                                        +
                                                        291  else if(io=='OUX') then
                                                        +
                                                        292  call openwb_c(lun,filename)
                                                        +
                                                        293  call wtstat(lunit,lun,1,0)
                                                        +
                                                        294  else if(io=='SEC3') then
                                                        295  call openrb_c(lun,filename)
                                                        296  call wtstat(lunit,lun,-1,0)
                                                        -
                                                        297  null(lun) = 1
                                                        -
                                                        298  else if(io=='OUX') then
                                                        +
                                                        297  isc3(lun) = 1
                                                        +
                                                        298  else if(io=='OUT') then
                                                        299  call openwb_c(lun,filename)
                                                        300  call wtstat(lunit,lun,1,0)
                                                        -
                                                        301  else if(io=='SEC3') then
                                                        -
                                                        302  call openrb_c(lun,filename)
                                                        -
                                                        303  call wtstat(lunit,lun,-1,0)
                                                        -
                                                        304  isc3(lun) = 1
                                                        -
                                                        305  else if(io=='OUT') then
                                                        -
                                                        306  call openwb_c(lun,filename)
                                                        -
                                                        307  call wtstat(lunit,lun,1,0)
                                                        -
                                                        308  call writdx(lunit,lun,lundx)
                                                        -
                                                        309  else if(io=='NODX') then
                                                        -
                                                        310  call openwb_c(lun,filename)
                                                        -
                                                        311  call wtstat(lunit,lun,1,0)
                                                        -
                                                        312  call readdx(lunit,lun,lundx)
                                                        -
                                                        313  else if(io=='APN' .or. io=='APX') then
                                                        -
                                                        314  call openab_c(lun,filename)
                                                        -
                                                        315  call wtstat(lunit,lun,1,0)
                                                        -
                                                        316  if(lunit/=lundx) call readdx(lunit,lun,lundx)
                                                        -
                                                        317  call posapx(lunit)
                                                        -
                                                        318  else
                                                        -
                                                        319  call bort('BUFRLIB: OPENBF - ILLEGAL SECOND (INPUT) ARGUMENT')
                                                        -
                                                        320  endif
                                                        -
                                                        321 
                                                        -
                                                        322  return
                                                        -
                                                        323 end subroutine openbf
                                                        -
                                                        324 
                                                        -
                                                        337 recursive subroutine closbf(lunit)
                                                        -
                                                        338 
                                                        -
                                                        339  use bufrlib
                                                        -
                                                        340 
                                                        -
                                                        341  use modv_vars, only: im8b
                                                        -
                                                        342 
                                                        -
                                                        343  use moda_nulbfr
                                                        +
                                                        301  call writdx(lunit,lun,lundx)
                                                        +
                                                        302  else if(io=='NODX') then
                                                        +
                                                        303  call openwb_c(lun,filename)
                                                        +
                                                        304  call wtstat(lunit,lun,1,0)
                                                        +
                                                        305  call readdx(lunit,lun,lundx)
                                                        +
                                                        306  else if(io=='APN' .or. io=='APX') then
                                                        +
                                                        307  call openab_c(lun,filename)
                                                        +
                                                        308  call wtstat(lunit,lun,1,0)
                                                        +
                                                        309  if(lunit/=lundx) call readdx(lunit,lun,lundx)
                                                        +
                                                        310  call posapx(lunit)
                                                        +
                                                        311  else
                                                        +
                                                        312  call bort('BUFRLIB: OPENBF - ILLEGAL SECOND (INPUT) ARGUMENT')
                                                        +
                                                        313  endif
                                                        +
                                                        314 
                                                        +
                                                        315  return
                                                        +
                                                        316 end subroutine openbf
                                                        +
                                                        317 
                                                        +
                                                        330 recursive subroutine closbf(lunit)
                                                        +
                                                        331 
                                                        +
                                                        332  use bufrlib
                                                        +
                                                        333 
                                                        +
                                                        334  use modv_vars, only: im8b
                                                        +
                                                        335 
                                                        +
                                                        336  use moda_nulbfr
                                                        +
                                                        337 
                                                        +
                                                        338  implicit none
                                                        +
                                                        339 
                                                        +
                                                        340  character*128 errstr
                                                        +
                                                        341 
                                                        +
                                                        342  integer, intent(in) :: lunit
                                                        +
                                                        343  integer my_lunit, lun, il, im
                                                        344 
                                                        -
                                                        345  implicit none
                                                        +
                                                        345  ! Check for i8 integers
                                                        346 
                                                        -
                                                        347  character*128 errstr
                                                        -
                                                        348 
                                                        -
                                                        349  integer, intent(in) :: lunit
                                                        -
                                                        350  integer my_lunit, lun, il, im
                                                        -
                                                        351 
                                                        -
                                                        352  ! Check for i8 integers
                                                        -
                                                        353 
                                                        -
                                                        354  if(im8b) then
                                                        -
                                                        355  im8b=.false.
                                                        +
                                                        347  if(im8b) then
                                                        +
                                                        348  im8b=.false.
                                                        +
                                                        349 
                                                        +
                                                        350  call x84(lunit,my_lunit,1)
                                                        +
                                                        351  call closbf(my_lunit)
                                                        +
                                                        352 
                                                        +
                                                        353  im8b=.true.
                                                        +
                                                        354  return
                                                        +
                                                        355  endif
                                                        356 
                                                        -
                                                        357  call x84(lunit,my_lunit,1)
                                                        -
                                                        358  call closbf(my_lunit)
                                                        -
                                                        359 
                                                        -
                                                        360  im8b=.true.
                                                        -
                                                        361  return
                                                        -
                                                        362  endif
                                                        -
                                                        363 
                                                        -
                                                        364  if ( .not. allocated(null) ) then
                                                        -
                                                        365  call errwrt('++++++++++++++++++++WARNING++++++++++++++++++++++')
                                                        -
                                                        366  errstr = 'BUFRLIB: CLOSBF WAS CALLED WITHOUT HAVING PREVIOUSLY CALLED OPENBF'
                                                        -
                                                        367  call errwrt(errstr)
                                                        -
                                                        368  call errwrt('++++++++++++++++++++WARNING++++++++++++++++++++++')
                                                        -
                                                        369  return
                                                        -
                                                        370  endif
                                                        +
                                                        357  if ( .not. allocated(null) ) then
                                                        +
                                                        358  call errwrt('++++++++++++++++++++WARNING++++++++++++++++++++++')
                                                        +
                                                        359  errstr = 'BUFRLIB: CLOSBF WAS CALLED WITHOUT HAVING PREVIOUSLY CALLED OPENBF'
                                                        +
                                                        360  call errwrt(errstr)
                                                        +
                                                        361  call errwrt('++++++++++++++++++++WARNING++++++++++++++++++++++')
                                                        +
                                                        362  return
                                                        +
                                                        363  endif
                                                        +
                                                        364 
                                                        +
                                                        365  call status(lunit,lun,il,im)
                                                        +
                                                        366  if(il>0 .and. im/=0) call closmg(lunit)
                                                        +
                                                        367  if(il/=0 .and. null(lun)==0) call closfb_c(lun)
                                                        +
                                                        368  call wtstat(lunit,lun,0,0)
                                                        +
                                                        369 
                                                        +
                                                        370  ! Close Fortran unit if null(lun) = 0
                                                        371 
                                                        -
                                                        372  call status(lunit,lun,il,im)
                                                        -
                                                        373  if(il>0 .and. im/=0) call closmg(lunit)
                                                        -
                                                        374  if(il/=0 .and. null(lun)==0) call closfb_c(lun)
                                                        -
                                                        375  call wtstat(lunit,lun,0,0)
                                                        +
                                                        372  if(null(lun)==0) close(lunit)
                                                        +
                                                        373 
                                                        +
                                                        374  return
                                                        +
                                                        375 end subroutine closbf
                                                        376 
                                                        -
                                                        377  ! Close Fortran unit if null(lun) = 0
                                                        -
                                                        378 
                                                        -
                                                        379  if(null(lun)==0) close(lunit)
                                                        -
                                                        380 
                                                        -
                                                        381  return
                                                        -
                                                        382 end subroutine closbf
                                                        -
                                                        383 
                                                        -
                                                        405 recursive subroutine status(lunit,lun,il,im)
                                                        -
                                                        406 
                                                        -
                                                        407  use modv_vars, only: im8b, nfiles
                                                        -
                                                        408 
                                                        -
                                                        409  use moda_stbfr
                                                        -
                                                        410 
                                                        -
                                                        411  implicit none
                                                        -
                                                        412 
                                                        -
                                                        413  integer, intent(in) :: lunit
                                                        -
                                                        414  integer, intent(out) :: lun, il, im
                                                        -
                                                        415  integer my_lunit, i
                                                        +
                                                        398 recursive subroutine status(lunit,lun,il,im)
                                                        +
                                                        399 
                                                        +
                                                        400  use modv_vars, only: im8b, nfiles
                                                        +
                                                        401 
                                                        +
                                                        402  use moda_stbfr
                                                        +
                                                        403 
                                                        +
                                                        404  implicit none
                                                        +
                                                        405 
                                                        +
                                                        406  integer, intent(in) :: lunit
                                                        +
                                                        407  integer, intent(out) :: lun, il, im
                                                        +
                                                        408  integer my_lunit, i
                                                        +
                                                        409 
                                                        +
                                                        410  character*128 bort_str, errstr
                                                        +
                                                        411 
                                                        +
                                                        412  ! Check for I8 integers
                                                        +
                                                        413 
                                                        +
                                                        414  if(im8b) then
                                                        +
                                                        415  im8b=.false.
                                                        416 
                                                        -
                                                        417  character*128 bort_str, errstr
                                                        -
                                                        418 
                                                        -
                                                        419  ! Check for I8 integers
                                                        -
                                                        420 
                                                        -
                                                        421  if(im8b) then
                                                        -
                                                        422  im8b=.false.
                                                        -
                                                        423 
                                                        -
                                                        424  call x84(lunit,my_lunit,1)
                                                        -
                                                        425  call status(my_lunit,lun,il,im)
                                                        -
                                                        426  call x48(lun,lun,1)
                                                        -
                                                        427  call x48(il,il,1)
                                                        -
                                                        428  call x48(im,im,1)
                                                        -
                                                        429 
                                                        -
                                                        430  im8b=.true.
                                                        -
                                                        431  return
                                                        -
                                                        432  endif
                                                        +
                                                        417  call x84(lunit,my_lunit,1)
                                                        +
                                                        418  call status(my_lunit,lun,il,im)
                                                        +
                                                        419  call x48(lun,lun,1)
                                                        +
                                                        420  call x48(il,il,1)
                                                        +
                                                        421  call x48(im,im,1)
                                                        +
                                                        422 
                                                        +
                                                        423  im8b=.true.
                                                        +
                                                        424  return
                                                        +
                                                        425  endif
                                                        +
                                                        426 
                                                        +
                                                        427  if(lunit<=0 .or. lunit>99) then
                                                        +
                                                        428  write(bort_str,'("BUFRLIB: STATUS - INPUT UNIT NUMBER (",I3,") OUTSIDE LEGAL RANGE OF 1-99")') lunit
                                                        +
                                                        429  call bort(bort_str)
                                                        +
                                                        430  endif
                                                        +
                                                        431 
                                                        +
                                                        432  ! Clear the status indicators
                                                        433 
                                                        -
                                                        434  if(lunit<=0 .or. lunit>99) then
                                                        -
                                                        435  write(bort_str,'("BUFRLIB: STATUS - INPUT UNIT NUMBER (",I3,") OUTSIDE LEGAL RANGE OF 1-99")') lunit
                                                        -
                                                        436  call bort(bort_str)
                                                        -
                                                        437  endif
                                                        -
                                                        438 
                                                        -
                                                        439  ! Clear the status indicators
                                                        -
                                                        440 
                                                        -
                                                        441  lun = 0
                                                        -
                                                        442  il = 0
                                                        -
                                                        443  im = 0
                                                        -
                                                        444 
                                                        -
                                                        445  ! See if the unit is already connected to the library
                                                        -
                                                        446 
                                                        -
                                                        447  if ( .not. allocated(iolun) ) then
                                                        -
                                                        448  call errwrt('++++++++++++++++++++WARNING++++++++++++++++++++++')
                                                        -
                                                        449  errstr = 'BUFRLIB: STATUS WAS CALLED WITHOUT HAVING PREVIOUSLY CALLED OPENBF'
                                                        -
                                                        450  call errwrt(errstr)
                                                        -
                                                        451  call errwrt('++++++++++++++++++++WARNING++++++++++++++++++++++')
                                                        -
                                                        452  return
                                                        -
                                                        453  endif
                                                        -
                                                        454 
                                                        -
                                                        455  do i=1,nfiles
                                                        -
                                                        456  if(abs(iolun(i))==lunit) lun = i
                                                        -
                                                        457  enddo
                                                        -
                                                        458 
                                                        -
                                                        459  ! If not, try to define it so as to connect it to the library
                                                        -
                                                        460 
                                                        -
                                                        461  if(lun==0) then
                                                        -
                                                        462  do i=1,nfiles
                                                        -
                                                        463  if(iolun(i)==0) then
                                                        -
                                                        464  ! File space is available, return with lun > 0, il and im remain 0
                                                        -
                                                        465  lun = i
                                                        -
                                                        466  return
                                                        -
                                                        467  endif
                                                        -
                                                        468  enddo
                                                        -
                                                        469  ! File space is NOT available, return with lun, il and im all 0
                                                        -
                                                        470  return
                                                        -
                                                        471  endif
                                                        -
                                                        472 
                                                        -
                                                        473  ! If the unit was already connected to the library prior to this call, then return statuses
                                                        -
                                                        474 
                                                        -
                                                        475  il = sign(1,iolun(lun))
                                                        -
                                                        476  im = iomsg(lun)
                                                        -
                                                        477 
                                                        -
                                                        478  return
                                                        -
                                                        479 end subroutine status
                                                        -
                                                        480 
                                                        -
                                                        508 subroutine wtstat(lunit,lun,il,im)
                                                        -
                                                        509 
                                                        -
                                                        510  use moda_stbfr
                                                        -
                                                        511 
                                                        -
                                                        512  implicit none
                                                        -
                                                        513 
                                                        -
                                                        514  integer, intent(in) :: lunit, lun, il, im
                                                        -
                                                        515 
                                                        -
                                                        516  character*128 bort_str
                                                        -
                                                        517 
                                                        -
                                                        518  ! Check on the arguments
                                                        -
                                                        519 
                                                        -
                                                        520  if(lunit<=0) then
                                                        -
                                                        521  write(bort_str,'("BUFRLIB: WTSTAT - INVALID UNIT NUMBER PASSED INTO FIRST ARGUMENT (INPUT) (=",I3,")")') lunit
                                                        -
                                                        522  call bort(bort_str)
                                                        -
                                                        523  endif
                                                        -
                                                        524  if(lun<=0) then
                                                        -
                                                        525  write(bort_str,'("BUFRLIB: WTSTAT - INVALID FILE ID PASSED INTO SECOND ARGUMENT (INPUT) (=",I3,")")') lun
                                                        -
                                                        526  call bort(bort_str)
                                                        -
                                                        527  endif
                                                        -
                                                        528  if(il<-1 .or. il>1) then
                                                        -
                                                        529  write(bort_str,'("BUFRLIB: WTSTAT - INVALID LOGICAL UNIT STATUS INDICATOR PASSED INTO THIRD ARGUMENT '// &
                                                        -
                                                        530  '(INPUT) (=",I4,")")') il
                                                        -
                                                        531  call bort(bort_str)
                                                        -
                                                        532  endif
                                                        -
                                                        533  if(im< 0 .or. im>1) then
                                                        -
                                                        534  write(bort_str,'("BUFRLIB: WTSTAT - INVALID BUFR MESSAGE STATUS INDICATOR PASSED INTO FOURTH ARGUMENT '// &
                                                        -
                                                        535  '(INPUT) (=",I4,")")') im
                                                        -
                                                        536  call bort(bort_str)
                                                        -
                                                        537  endif
                                                        -
                                                        538 
                                                        -
                                                        539  ! Check on lunit-lun combination
                                                        -
                                                        540 
                                                        -
                                                        541  if(abs(iolun(lun))/=lunit .and. (iolun(lun)/=0)) then
                                                        -
                                                        542  write(bort_str,'("BUFRLIB: WTSTAT - ATTEMPTING TO REDEFINE EXISTING FILE UNIT (LOGICAL UNIT '// &
                                                        -
                                                        543  'NUMBER ",I3,")")') iolun(lun)
                                                        -
                                                        544  call bort(bort_str)
                                                        -
                                                        545  endif
                                                        -
                                                        546 
                                                        -
                                                        547  ! Reset the file statuses
                                                        -
                                                        548 
                                                        -
                                                        549  if(il/=0) then
                                                        -
                                                        550  iolun(lun) = sign(lunit,il)
                                                        -
                                                        551  iomsg(lun) = im
                                                        -
                                                        552  else
                                                        -
                                                        553  iolun(lun) = 0
                                                        -
                                                        554  iomsg(lun) = 0
                                                        -
                                                        555  endif
                                                        -
                                                        556 
                                                        -
                                                        557  return
                                                        -
                                                        558 end subroutine wtstat
                                                        -
                                                        559 
                                                        -
                                                        585 recursive subroutine ufbcnt(lunit,kmsg,ksub)
                                                        -
                                                        586 
                                                        -
                                                        587  use modv_vars, only: im8b
                                                        -
                                                        588 
                                                        -
                                                        589  use moda_msgcwd
                                                        -
                                                        590 
                                                        -
                                                        591  implicit none
                                                        -
                                                        592 
                                                        -
                                                        593  integer, intent(in) :: lunit
                                                        -
                                                        594  integer, intent(out) :: kmsg, ksub
                                                        -
                                                        595  integer my_lunit, lun, il, im
                                                        -
                                                        596 
                                                        -
                                                        597  ! Check for I8 integers
                                                        -
                                                        598 
                                                        -
                                                        599  if(im8b) then
                                                        -
                                                        600  im8b=.false.
                                                        -
                                                        601  call x84(lunit,my_lunit,1)
                                                        -
                                                        602  call ufbcnt(my_lunit,kmsg,ksub)
                                                        -
                                                        603  call x48(kmsg,kmsg,1)
                                                        -
                                                        604  call x48(ksub,ksub,1)
                                                        -
                                                        605  im8b=.true.
                                                        -
                                                        606  return
                                                        -
                                                        607  endif
                                                        +
                                                        434  lun = 0
                                                        +
                                                        435  il = 0
                                                        +
                                                        436  im = 0
                                                        +
                                                        437 
                                                        +
                                                        438  ! See if the unit is already connected to the library
                                                        +
                                                        439 
                                                        +
                                                        440  if ( .not. allocated(iolun) ) then
                                                        +
                                                        441  call errwrt('++++++++++++++++++++WARNING++++++++++++++++++++++')
                                                        +
                                                        442  errstr = 'BUFRLIB: STATUS WAS CALLED WITHOUT HAVING PREVIOUSLY CALLED OPENBF'
                                                        +
                                                        443  call errwrt(errstr)
                                                        +
                                                        444  call errwrt('++++++++++++++++++++WARNING++++++++++++++++++++++')
                                                        +
                                                        445  return
                                                        +
                                                        446  endif
                                                        +
                                                        447 
                                                        +
                                                        448  do i=1,nfiles
                                                        +
                                                        449  if(abs(iolun(i))==lunit) lun = i
                                                        +
                                                        450  enddo
                                                        +
                                                        451 
                                                        +
                                                        452  ! If not, try to define it so as to connect it to the library
                                                        +
                                                        453 
                                                        +
                                                        454  if(lun==0) then
                                                        +
                                                        455  do i=1,nfiles
                                                        +
                                                        456  if(iolun(i)==0) then
                                                        +
                                                        457  ! File space is available, return with lun > 0, il and im remain 0
                                                        +
                                                        458  lun = i
                                                        +
                                                        459  return
                                                        +
                                                        460  endif
                                                        +
                                                        461  enddo
                                                        +
                                                        462  ! File space is NOT available, return with lun, il and im all 0
                                                        +
                                                        463  return
                                                        +
                                                        464  endif
                                                        +
                                                        465 
                                                        +
                                                        466  ! If the unit was already connected to the library prior to this call, then return statuses
                                                        +
                                                        467 
                                                        +
                                                        468  il = sign(1,iolun(lun))
                                                        +
                                                        469  im = iomsg(lun)
                                                        +
                                                        470 
                                                        +
                                                        471  return
                                                        +
                                                        472 end subroutine status
                                                        +
                                                        473 
                                                        +
                                                        501 subroutine wtstat(lunit,lun,il,im)
                                                        +
                                                        502 
                                                        +
                                                        503  use moda_stbfr
                                                        +
                                                        504 
                                                        +
                                                        505  implicit none
                                                        +
                                                        506 
                                                        +
                                                        507  integer, intent(in) :: lunit, lun, il, im
                                                        +
                                                        508 
                                                        +
                                                        509  character*128 bort_str
                                                        +
                                                        510 
                                                        +
                                                        511  ! Check on the arguments
                                                        +
                                                        512 
                                                        +
                                                        513  if(lunit<=0) then
                                                        +
                                                        514  write(bort_str,'("BUFRLIB: WTSTAT - INVALID UNIT NUMBER PASSED INTO FIRST ARGUMENT (INPUT) (=",I3,")")') lunit
                                                        +
                                                        515  call bort(bort_str)
                                                        +
                                                        516  endif
                                                        +
                                                        517  if(lun<=0) then
                                                        +
                                                        518  write(bort_str,'("BUFRLIB: WTSTAT - INVALID FILE ID PASSED INTO SECOND ARGUMENT (INPUT) (=",I3,")")') lun
                                                        +
                                                        519  call bort(bort_str)
                                                        +
                                                        520  endif
                                                        +
                                                        521  if(il<-1 .or. il>1) then
                                                        +
                                                        522  write(bort_str,'("BUFRLIB: WTSTAT - INVALID LOGICAL UNIT STATUS INDICATOR PASSED INTO THIRD ARGUMENT '// &
                                                        +
                                                        523  '(INPUT) (=",I4,")")') il
                                                        +
                                                        524  call bort(bort_str)
                                                        +
                                                        525  endif
                                                        +
                                                        526  if(im< 0 .or. im>1) then
                                                        +
                                                        527  write(bort_str,'("BUFRLIB: WTSTAT - INVALID BUFR MESSAGE STATUS INDICATOR PASSED INTO FOURTH ARGUMENT '// &
                                                        +
                                                        528  '(INPUT) (=",I4,")")') im
                                                        +
                                                        529  call bort(bort_str)
                                                        +
                                                        530  endif
                                                        +
                                                        531 
                                                        +
                                                        532  ! Check on lunit-lun combination
                                                        +
                                                        533 
                                                        +
                                                        534  if(abs(iolun(lun))/=lunit .and. (iolun(lun)/=0)) then
                                                        +
                                                        535  write(bort_str,'("BUFRLIB: WTSTAT - ATTEMPTING TO REDEFINE EXISTING FILE UNIT (LOGICAL UNIT '// &
                                                        +
                                                        536  'NUMBER ",I3,")")') iolun(lun)
                                                        +
                                                        537  call bort(bort_str)
                                                        +
                                                        538  endif
                                                        +
                                                        539 
                                                        +
                                                        540  ! Reset the file statuses
                                                        +
                                                        541 
                                                        +
                                                        542  if(il/=0) then
                                                        +
                                                        543  iolun(lun) = sign(lunit,il)
                                                        +
                                                        544  iomsg(lun) = im
                                                        +
                                                        545  else
                                                        +
                                                        546  iolun(lun) = 0
                                                        +
                                                        547  iomsg(lun) = 0
                                                        +
                                                        548  endif
                                                        +
                                                        549 
                                                        +
                                                        550  return
                                                        +
                                                        551 end subroutine wtstat
                                                        +
                                                        552 
                                                        +
                                                        578 recursive subroutine ufbcnt(lunit,kmsg,ksub)
                                                        +
                                                        579 
                                                        +
                                                        580  use modv_vars, only: im8b
                                                        +
                                                        581 
                                                        +
                                                        582  use moda_msgcwd
                                                        +
                                                        583 
                                                        +
                                                        584  implicit none
                                                        +
                                                        585 
                                                        +
                                                        586  integer, intent(in) :: lunit
                                                        +
                                                        587  integer, intent(out) :: kmsg, ksub
                                                        +
                                                        588  integer my_lunit, lun, il, im
                                                        +
                                                        589 
                                                        +
                                                        590  ! Check for I8 integers
                                                        +
                                                        591 
                                                        +
                                                        592  if(im8b) then
                                                        +
                                                        593  im8b=.false.
                                                        +
                                                        594  call x84(lunit,my_lunit,1)
                                                        +
                                                        595  call ufbcnt(my_lunit,kmsg,ksub)
                                                        +
                                                        596  call x48(kmsg,kmsg,1)
                                                        +
                                                        597  call x48(ksub,ksub,1)
                                                        +
                                                        598  im8b=.true.
                                                        +
                                                        599  return
                                                        +
                                                        600  endif
                                                        +
                                                        601 
                                                        +
                                                        602  ! Check the file status - return the message and subset counters
                                                        +
                                                        603 
                                                        +
                                                        604  call status(lunit,lun,il,im)
                                                        +
                                                        605  if(il==0) call bort('BUFRLIB: UFBCNT - BUFR FILE IS CLOSED, IT MUST BE OPEN FOR EITHER INPUT OR OUTPUT')
                                                        +
                                                        606  kmsg = nmsg(lun)
                                                        +
                                                        607  ksub = nsub(lun)
                                                        608 
                                                        -
                                                        609  ! Check the file status - return the message and subset counters
                                                        -
                                                        610 
                                                        -
                                                        611  call status(lunit,lun,il,im)
                                                        -
                                                        612  if(il==0) call bort('BUFRLIB: UFBCNT - BUFR FILE IS CLOSED, IT MUST BE OPEN FOR EITHER INPUT OR OUTPUT')
                                                        -
                                                        613  kmsg = nmsg(lun)
                                                        -
                                                        614  ksub = nsub(lun)
                                                        -
                                                        615 
                                                        -
                                                        616  return
                                                        -
                                                        617 end subroutine ufbcnt
                                                        -
                                                        618 
                                                        -
                                                        630 subroutine posapx(lunxx)
                                                        -
                                                        631 
                                                        -
                                                        632  use bufrlib
                                                        +
                                                        609  return
                                                        +
                                                        610 end subroutine ufbcnt
                                                        +
                                                        611 
                                                        +
                                                        623 subroutine posapx(lunxx)
                                                        +
                                                        624 
                                                        +
                                                        625  use bufrlib
                                                        +
                                                        626 
                                                        +
                                                        627  use moda_mgwa
                                                        +
                                                        628 
                                                        +
                                                        629  implicit none
                                                        +
                                                        630 
                                                        +
                                                        631  integer, intent(in) :: lunxx
                                                        +
                                                        632  integer lunit, lun, il, im, ier, idxmsg
                                                        633 
                                                        -
                                                        634  use moda_mgwa
                                                        +
                                                        634  lunit = abs(lunxx)
                                                        635 
                                                        -
                                                        636  implicit none
                                                        -
                                                        637 
                                                        -
                                                        638  integer, intent(in) :: lunxx
                                                        -
                                                        639  integer lunit, lun, il, im, ier, idxmsg
                                                        -
                                                        640 
                                                        -
                                                        641  lunit = abs(lunxx)
                                                        -
                                                        642 
                                                        -
                                                        643  call status(lunit,lun,il,im)
                                                        -
                                                        644  if(il==0) call bort('BUFRLIB: POSAPX - INPUT BUFR FILE IS CLOSED, IT MUST BE OPEN FOR OUTPUT')
                                                        -
                                                        645  if(il<0) call bort('BUFRLIB: POSAPX - INPUT BUFR FILE IS OPEN FOR INPUT, IT MUST BE OPEN FOR OUTPUT')
                                                        -
                                                        646 
                                                        -
                                                        647  ! Try to read to the end of the file
                                                        -
                                                        648 
                                                        -
                                                        649  do while (.true.)
                                                        -
                                                        650  call rdmsgw(lunit,mgwa,ier)
                                                        -
                                                        651  if(ier<0) return
                                                        -
                                                        652  if(idxmsg(mgwa)==1) then
                                                        -
                                                        653  ! This is an internal dictionary message that was generated by the NCEPLIBS-bufr software. Backspace the file pointer
                                                        -
                                                        654  ! and then read and store all such dictionary messages (they should be stored consecutively!) and reset the internal tables.
                                                        -
                                                        655  call backbufr_c(lun)
                                                        -
                                                        656  call rdbfdx(lunit,lun)
                                                        -
                                                        657  endif
                                                        -
                                                        658  enddo
                                                        -
                                                        659 
                                                        -
                                                        660 end subroutine posapx
                                                        -
                                                        661 
                                                        -
                                                        693 subroutine rewnbf(lunit,isr)
                                                        -
                                                        694 
                                                        -
                                                        695  use bufrlib
                                                        -
                                                        696 
                                                        -
                                                        697  use moda_msgcwd
                                                        -
                                                        698  use moda_bitbuf
                                                        -
                                                        699  use moda_bufrsr
                                                        -
                                                        700 
                                                        -
                                                        701  implicit none
                                                        -
                                                        702 
                                                        -
                                                        703  integer, intent(in) :: lunit, isr
                                                        -
                                                        704  integer lun, il, im, i, kdate, ier
                                                        -
                                                        705 
                                                        -
                                                        706  character*128 bort_str
                                                        -
                                                        707  character*8 subset
                                                        -
                                                        708 
                                                        -
                                                        709  ! Try to trap bad call problems
                                                        -
                                                        710  if(isr==0) then
                                                        -
                                                        711  call status(lunit,lun,il,im)
                                                        -
                                                        712  if(jsr(lun)/=0) then
                                                        -
                                                        713  write(bort_str,'("BUFRLIB: REWNBF - ATTEMPING TO SAVE '// &
                                                        -
                                                        714  'PARAMETERS FOR FILE FOR WHICH THEY HAVE ALREADY BEEN SAVED (AND NOT YET RESTORED) (UNIT",I3,")")') lunit
                                                        -
                                                        715  call bort(bort_str)
                                                        -
                                                        716  endif
                                                        -
                                                        717  if(il==0) then
                                                        -
                                                        718  write(bort_str,'("BUFRLIB: REWNBF - ATTEMPING TO SAVE '// &
                                                        -
                                                        719  'PARAMETERS FOR BUFR FILE WHICH IS NOT OPENED FOR EITHER INPUT OR OUTPUT) (UNIT",I3,")")') lunit
                                                        -
                                                        720  call bort(bort_str)
                                                        -
                                                        721  endif
                                                        -
                                                        722  elseif(isr==1) then
                                                        -
                                                        723  if(junn==0 .or. jsr(junn)/=1) then
                                                        -
                                                        724  write(bort_str,'("BUFRLIB: REWNBF - ATTEMPING TO RESTORE '// &
                                                        -
                                                        725  'PARAMETERS TO BUFR FILE WHICH WERE NEVER SAVED (UNIT",I3,")")') lunit
                                                        -
                                                        726  call bort(bort_str)
                                                        -
                                                        727  endif
                                                        -
                                                        728  lun = junn
                                                        -
                                                        729  else
                                                        -
                                                        730  write(bort_str,'("BUFRLIB: REWNBF - SAVE/RESTORE SWITCH (INPUT '// &
                                                        -
                                                        731  'ARGUMENT ISR) IS NOT ZERO OR ONE (HERE =",I4,") (UNIT",I3,")")') isr, lunit
                                                        -
                                                        732  call bort(bort_str)
                                                        -
                                                        733  endif
                                                        -
                                                        734 
                                                        -
                                                        735  if(isr==0) then
                                                        -
                                                        736  ! Store the existing file parameters
                                                        -
                                                        737  jmsg = nmsg(lun)
                                                        -
                                                        738  jsub = nsub(lun)
                                                        -
                                                        739  if ( il > 0 ) then
                                                        -
                                                        740  ! The file is open for writing
                                                        -
                                                        741  jbit = ibit
                                                        -
                                                        742  jbyt = mbyt(lun)
                                                        -
                                                        743  do i=1,jbyt
                                                        -
                                                        744  jbay(i) = mbay(i,lun)
                                                        -
                                                        745  enddo
                                                        -
                                                        746  endif
                                                        -
                                                        747  junn = lun
                                                        -
                                                        748  jill = il
                                                        -
                                                        749  jimm = im
                                                        -
                                                        750  ! Reset the file for reading
                                                        -
                                                        751  call wtstat(lunit,lun,-1,0)
                                                        -
                                                        752  endif
                                                        -
                                                        753 
                                                        -
                                                        754  ! Rewind the file
                                                        -
                                                        755  call cewind_c(lun)
                                                        -
                                                        756 
                                                        -
                                                        757  if(isr==1) then
                                                        -
                                                        758  ! Restore the previous file parameters. Note that we already restored the previous value of lun earlier in this routine.
                                                        -
                                                        759 
                                                        -
                                                        760  ! Reset nmsg(lun) to 0, so that the below calls to readmg() will internally restore nmsg(lun) to the correct value.
                                                        -
                                                        761  nmsg(lun) = 0
                                                        -
                                                        762 
                                                        -
                                                        763  ! Note that the below calls to readmg() are valid even if the file was previously open for writing, because we haven't yet
                                                        -
                                                        764  ! called wtstat() to restore the file to its previous I/O status. So until then we can still read from it as though it
                                                        -
                                                        765  ! was an input file.
                                                        -
                                                        766  do i=1,jmsg
                                                        -
                                                        767  call readmg(lunit,subset,kdate,ier)
                                                        -
                                                        768  if(ier<0) then
                                                        -
                                                        769  write(bort_str,'("BUFRLIB: REWNBF - HIT END OF FILE BEFORE '// &
                                                        -
                                                        770  'REPOSITIONING BUFR FILE IN UNIT",I3," TO ORIGINAL MESSAGE NO.",I5)') lunit, jmsg
                                                        -
                                                        771  call bort(bort_str)
                                                        -
                                                        772  endif
                                                        -
                                                        773  enddo
                                                        -
                                                        774 
                                                        -
                                                        775  if ( jill < 0 ) then
                                                        -
                                                        776  ! The file was previously open for reading
                                                        -
                                                        777  do i=1,jsub
                                                        -
                                                        778  call readsb(lunit,ier)
                                                        -
                                                        779  enddo
                                                        -
                                                        780  else
                                                        -
                                                        781  ! The file was previously open for writing
                                                        -
                                                        782  do i=1,jbyt
                                                        -
                                                        783  mbay(i,lun) = jbay(i)
                                                        -
                                                        784  enddo
                                                        -
                                                        785  nsub(lun) = jsub
                                                        -
                                                        786  mbyt(lun) = jbyt
                                                        -
                                                        787  ibit = jbit
                                                        -
                                                        788  endif
                                                        -
                                                        789 
                                                        -
                                                        790  ! Now restore the file to its previous I/O status
                                                        -
                                                        791  il = jill
                                                        -
                                                        792  im = jimm
                                                        -
                                                        793  call wtstat(lunit,lun,il,im)
                                                        -
                                                        794  endif
                                                        -
                                                        795 
                                                        -
                                                        796  ! Toggle the stack status indicator
                                                        -
                                                        797  jsr(lun) = mod(jsr(lun)+1,2)
                                                        -
                                                        798 
                                                        -
                                                        799  return
                                                        -
                                                        800 end subroutine rewnbf
                                                        -
                                                        801 
                                                        -
                                                        856 recursive subroutine ufbtab(lunin,tab,i1,i2,iret,str)
                                                        +
                                                        636  call status(lunit,lun,il,im)
                                                        +
                                                        637  if(il==0) call bort('BUFRLIB: POSAPX - INPUT BUFR FILE IS CLOSED, IT MUST BE OPEN FOR OUTPUT')
                                                        +
                                                        638  if(il<0) call bort('BUFRLIB: POSAPX - INPUT BUFR FILE IS OPEN FOR INPUT, IT MUST BE OPEN FOR OUTPUT')
                                                        +
                                                        639 
                                                        +
                                                        640  ! Try to read to the end of the file
                                                        +
                                                        641 
                                                        +
                                                        642  do while (.true.)
                                                        +
                                                        643  call rdmsgw(lunit,mgwa,ier)
                                                        +
                                                        644  if(ier<0) return
                                                        +
                                                        645  if(idxmsg(mgwa)==1) then
                                                        +
                                                        646  ! This is an internal dictionary message that was generated by the NCEPLIBS-bufr software. Backspace the file pointer
                                                        +
                                                        647  ! and then read and store all such dictionary messages (they should be stored consecutively!) and reset the internal tables.
                                                        +
                                                        648  call backbufr_c(lun)
                                                        +
                                                        649  call rdbfdx(lunit,lun)
                                                        +
                                                        650  endif
                                                        +
                                                        651  enddo
                                                        +
                                                        652 
                                                        +
                                                        653 end subroutine posapx
                                                        +
                                                        654 
                                                        +
                                                        686 subroutine rewnbf(lunit,isr)
                                                        +
                                                        687 
                                                        +
                                                        688  use bufrlib
                                                        +
                                                        689 
                                                        +
                                                        690  use moda_msgcwd
                                                        +
                                                        691  use moda_bitbuf
                                                        +
                                                        692  use moda_bufrsr
                                                        +
                                                        693 
                                                        +
                                                        694  implicit none
                                                        +
                                                        695 
                                                        +
                                                        696  integer, intent(in) :: lunit, isr
                                                        +
                                                        697  integer lun, il, im, i, kdate, ier
                                                        +
                                                        698 
                                                        +
                                                        699  character*128 bort_str
                                                        +
                                                        700  character*8 subset
                                                        +
                                                        701 
                                                        +
                                                        702  ! Try to trap bad call problems
                                                        +
                                                        703  if(isr==0) then
                                                        +
                                                        704  call status(lunit,lun,il,im)
                                                        +
                                                        705  if(jsr(lun)/=0) then
                                                        +
                                                        706  write(bort_str,'("BUFRLIB: REWNBF - ATTEMPING TO SAVE '// &
                                                        +
                                                        707  'PARAMETERS FOR FILE FOR WHICH THEY HAVE ALREADY BEEN SAVED (AND NOT YET RESTORED) (UNIT",I3,")")') lunit
                                                        +
                                                        708  call bort(bort_str)
                                                        +
                                                        709  endif
                                                        +
                                                        710  if(il==0) then
                                                        +
                                                        711  write(bort_str,'("BUFRLIB: REWNBF - ATTEMPING TO SAVE '// &
                                                        +
                                                        712  'PARAMETERS FOR BUFR FILE WHICH IS NOT OPENED FOR EITHER INPUT OR OUTPUT) (UNIT",I3,")")') lunit
                                                        +
                                                        713  call bort(bort_str)
                                                        +
                                                        714  endif
                                                        +
                                                        715  elseif(isr==1) then
                                                        +
                                                        716  if(junn==0) then
                                                        +
                                                        717  write(bort_str,'("BUFRLIB: REWNBF - ATTEMPING TO RESTORE '// &
                                                        +
                                                        718  'PARAMETERS TO BUFR FILE WHICH WERE NEVER SAVED (UNIT",I3,")")') lunit
                                                        +
                                                        719  call bort(bort_str)
                                                        +
                                                        720  endif
                                                        +
                                                        721  if(jsr(junn)/=1) then
                                                        +
                                                        722  write(bort_str,'("BUFRLIB: REWNBF - ATTEMPING TO RESTORE '// &
                                                        +
                                                        723  'PARAMETERS TO BUFR FILE WHICH WERE NEVER SAVED (UNIT",I3,")")') lunit
                                                        +
                                                        724  call bort(bort_str)
                                                        +
                                                        725  endif
                                                        +
                                                        726  lun = junn
                                                        +
                                                        727  else
                                                        +
                                                        728  write(bort_str,'("BUFRLIB: REWNBF - SAVE/RESTORE SWITCH (INPUT '// &
                                                        +
                                                        729  'ARGUMENT ISR) IS NOT ZERO OR ONE (HERE =",I4,") (UNIT",I3,")")') isr, lunit
                                                        +
                                                        730  call bort(bort_str)
                                                        +
                                                        731  endif
                                                        +
                                                        732 
                                                        +
                                                        733  if(isr==0) then
                                                        +
                                                        734  ! Store the existing file parameters
                                                        +
                                                        735  jmsg = nmsg(lun)
                                                        +
                                                        736  jsub = nsub(lun)
                                                        +
                                                        737  if ( il > 0 ) then
                                                        +
                                                        738  ! The file is open for writing
                                                        +
                                                        739  jbit = ibit
                                                        +
                                                        740  jbyt = mbyt(lun)
                                                        +
                                                        741  do i=1,jbyt
                                                        +
                                                        742  jbay(i) = mbay(i,lun)
                                                        +
                                                        743  enddo
                                                        +
                                                        744  endif
                                                        +
                                                        745  junn = lun
                                                        +
                                                        746  jill = il
                                                        +
                                                        747  jimm = im
                                                        +
                                                        748  ! Reset the file for reading
                                                        +
                                                        749  call wtstat(lunit,lun,-1,0)
                                                        +
                                                        750  endif
                                                        +
                                                        751 
                                                        +
                                                        752  ! Rewind the file
                                                        +
                                                        753  call cewind_c(lun)
                                                        +
                                                        754 
                                                        +
                                                        755  if(isr==1) then
                                                        +
                                                        756  ! Restore the previous file parameters. Note that we already restored the previous value of lun earlier in this routine.
                                                        +
                                                        757 
                                                        +
                                                        758  ! Reset nmsg(lun) to 0, so that the below calls to readmg() will internally restore nmsg(lun) to the correct value.
                                                        +
                                                        759  nmsg(lun) = 0
                                                        +
                                                        760 
                                                        +
                                                        761  ! Note that the below calls to readmg() are valid even if the file was previously open for writing, because we haven't yet
                                                        +
                                                        762  ! called wtstat() to restore the file to its previous I/O status. So until then we can still read from it as though it
                                                        +
                                                        763  ! was an input file.
                                                        +
                                                        764  do i=1,jmsg
                                                        +
                                                        765  call readmg(lunit,subset,kdate,ier)
                                                        +
                                                        766  if(ier<0) then
                                                        +
                                                        767  write(bort_str,'("BUFRLIB: REWNBF - HIT END OF FILE BEFORE '// &
                                                        +
                                                        768  'REPOSITIONING BUFR FILE IN UNIT",I3," TO ORIGINAL MESSAGE NO.",I5)') lunit, jmsg
                                                        +
                                                        769  call bort(bort_str)
                                                        +
                                                        770  endif
                                                        +
                                                        771  enddo
                                                        +
                                                        772 
                                                        +
                                                        773  if ( jill < 0 ) then
                                                        +
                                                        774  ! The file was previously open for reading
                                                        +
                                                        775  do i=1,jsub
                                                        +
                                                        776  call readsb(lunit,ier)
                                                        +
                                                        777  enddo
                                                        +
                                                        778  else
                                                        +
                                                        779  ! The file was previously open for writing
                                                        +
                                                        780  do i=1,jbyt
                                                        +
                                                        781  mbay(i,lun) = jbay(i)
                                                        +
                                                        782  enddo
                                                        +
                                                        783  nsub(lun) = jsub
                                                        +
                                                        784  mbyt(lun) = jbyt
                                                        +
                                                        785  ibit = jbit
                                                        +
                                                        786  endif
                                                        +
                                                        787 
                                                        +
                                                        788  ! Now restore the file to its previous I/O status
                                                        +
                                                        789  il = jill
                                                        +
                                                        790  im = jimm
                                                        +
                                                        791  call wtstat(lunit,lun,il,im)
                                                        +
                                                        792  endif
                                                        +
                                                        793 
                                                        +
                                                        794  ! Toggle the stack status indicator
                                                        +
                                                        795  jsr(lun) = mod(jsr(lun)+1,2)
                                                        +
                                                        796 
                                                        +
                                                        797  return
                                                        +
                                                        798 end subroutine rewnbf
                                                        +
                                                        799 
                                                        +
                                                        854 recursive subroutine ufbtab(lunin,tab,i1,i2,iret,str)
                                                        +
                                                        855 
                                                        +
                                                        856  use modv_vars, only: im8b, bmiss, iac, iprt
                                                        857 
                                                        -
                                                        858  use modv_vars, only: im8b, bmiss, iac
                                                        -
                                                        859 
                                                        -
                                                        860  use moda_usrint
                                                        -
                                                        861  use moda_msgcwd
                                                        -
                                                        862  use moda_unptyp
                                                        -
                                                        863  use moda_bitbuf
                                                        -
                                                        864  use moda_tables
                                                        +
                                                        858  use moda_usrint
                                                        +
                                                        859  use moda_msgcwd
                                                        +
                                                        860  use moda_unptyp
                                                        +
                                                        861  use moda_bitbuf
                                                        +
                                                        862  use moda_tables
                                                        +
                                                        863 
                                                        +
                                                        864  implicit none
                                                        865 
                                                        -
                                                        866  implicit none
                                                        -
                                                        867 
                                                        -
                                                        868  integer*8 ival, lref, ninc, mps, lps
                                                        -
                                                        869  integer, intent(in) :: lunin, i1, i2
                                                        -
                                                        870  integer, intent(out) :: iret
                                                        -
                                                        871  integer, parameter :: maxtg = 100
                                                        -
                                                        872  integer nnod, ncon, nods, nodc, ivls, kons, iprt, my_lunin, my_i1, my_i2, lunit, lun, il, im, irec, isub, i, j, n, ntg, &
                                                        -
                                                        873  jdate, jbit, kbit, lbit, mbit, nbit, nibit, nbyt, nsb, node, nbmp, nrep, lret, linc, iac_prev, ityp, &
                                                        - -
                                                        875 
                                                        -
                                                        876  character*(*), intent(in) :: str
                                                        -
                                                        877  character*128 errstr
                                                        -
                                                        878  character*40 cref
                                                        -
                                                        879  character*10 tgs(maxtg)
                                                        -
                                                        880  character*8 subset, cval
                                                        +
                                                        866  integer*8 ival, lref, ninc, mps, lps
                                                        +
                                                        867  integer, intent(in) :: lunin, i1, i2
                                                        +
                                                        868  integer, intent(out) :: iret
                                                        +
                                                        869  integer, parameter :: maxtg = 100
                                                        +
                                                        870  integer nnod, ncon, nods, nodc, ivls, kons, my_lunin, my_i1, my_i2, lunit, lun, il, im, irec, isub, i, n, ntg, &
                                                        +
                                                        871  jdate, jbit, kbit, lbit, mbit, nbit, nibit, nbyt, nsb, node, nbmp, nrep, lret, linc, iac_prev, ityp, &
                                                        + +
                                                        873 
                                                        +
                                                        874  character*(*), intent(in) :: str
                                                        +
                                                        875  character*128 errstr
                                                        +
                                                        876  character*40 cref
                                                        +
                                                        877  character*10 tgs(maxtg)
                                                        +
                                                        878  character*8 subset, cval
                                                        +
                                                        879 
                                                        +
                                                        880  logical openit, overflow, just_count, need_node
                                                        881 
                                                        -
                                                        882  logical openit, overflow, just_count, need_node
                                                        -
                                                        883 
                                                        -
                                                        884  real*8, intent(out) :: tab(i1,i2)
                                                        -
                                                        885  real*8 rval, ups
                                                        +
                                                        882  real*8, intent(out) :: tab(i1,i2)
                                                        +
                                                        883  real*8 rval, ups
                                                        +
                                                        884 
                                                        +
                                                        885  common /usrstr/ nnod, ncon, nods(20), nodc(10), ivls(10), kons(10)
                                                        886 
                                                        -
                                                        887  common /usrstr/ nnod, ncon, nods(20), nodc(10), ivls(10), kons(10)
                                                        -
                                                        888  common /quiet/ iprt
                                                        -
                                                        889 
                                                        -
                                                        890  equivalence(cval,rval)
                                                        -
                                                        891 
                                                        -
                                                        892  ! Statement functions
                                                        -
                                                        893  mps(node) = 2_8**(ibt(node))-1
                                                        -
                                                        894  lps(lbit) = max(2_8**(lbit)-1,1)
                                                        -
                                                        895 
                                                        -
                                                        896  ! Check for I8 integers
                                                        -
                                                        897  if(im8b) then
                                                        -
                                                        898  im8b=.false.
                                                        -
                                                        899  call x84(lunin,my_lunin,1)
                                                        -
                                                        900  call x84(i1,my_i1,1)
                                                        -
                                                        901  call x84(i2,my_i2,1)
                                                        -
                                                        902  call ufbtab(my_lunin,tab,my_i1,my_i2,iret,str)
                                                        -
                                                        903  call x48(iret,iret,1)
                                                        -
                                                        904  im8b=.true.
                                                        -
                                                        905  return
                                                        -
                                                        906  endif
                                                        -
                                                        907 
                                                        -
                                                        908  ! Make sure subroutine openbf() has been called at least once before trying to call subroutine status(); otherwise,
                                                        -
                                                        909  ! status() might try to access array space that hasn't yet been dynamically allocated.
                                                        -
                                                        910  call openbf(0,'FIRST',0)
                                                        -
                                                        911 
                                                        -
                                                        912  lunit = abs(lunin)
                                                        -
                                                        913  call status(lunit,lun,il,im)
                                                        -
                                                        914  openit = il==0
                                                        -
                                                        915 
                                                        -
                                                        916  if(openit) then
                                                        -
                                                        917  ! Open BUFR file connected to unit lunit if it isn't already open
                                                        -
                                                        918  call openbf(lunit,'INX',lunit)
                                                        -
                                                        919  else
                                                        -
                                                        920  ! If BUFR file already opened, save position and rewind to first data message
                                                        -
                                                        921  call rewnbf(lunit,0)
                                                        -
                                                        922  endif
                                                        +
                                                        887  equivalence(cval,rval)
                                                        +
                                                        888 
                                                        +
                                                        889  ! Statement functions
                                                        +
                                                        890  mps(node) = 2_8**(ibt(node))-1
                                                        +
                                                        891  lps(lbit) = max(2_8**(lbit)-1,1)
                                                        +
                                                        892 
                                                        +
                                                        893  ! Check for I8 integers
                                                        +
                                                        894  if(im8b) then
                                                        +
                                                        895  im8b=.false.
                                                        +
                                                        896  call x84(lunin,my_lunin,1)
                                                        +
                                                        897  call x84(i1,my_i1,1)
                                                        +
                                                        898  call x84(i2,my_i2,1)
                                                        +
                                                        899  call ufbtab(my_lunin,tab,my_i1,my_i2,iret,str)
                                                        +
                                                        900  call x48(iret,iret,1)
                                                        +
                                                        901  im8b=.true.
                                                        +
                                                        902  return
                                                        +
                                                        903  endif
                                                        +
                                                        904 
                                                        +
                                                        905  ! Make sure subroutine openbf() has been called at least once before trying to call subroutine status(); otherwise,
                                                        +
                                                        906  ! status() might try to access array space that hasn't yet been dynamically allocated.
                                                        +
                                                        907  call openbf(0,'FIRST',0)
                                                        +
                                                        908 
                                                        +
                                                        909  lunit = abs(lunin)
                                                        +
                                                        910  call status(lunit,lun,il,im)
                                                        +
                                                        911  openit = il==0
                                                        +
                                                        912 
                                                        +
                                                        913  if(openit) then
                                                        +
                                                        914  ! Open BUFR file connected to unit lunit if it isn't already open
                                                        +
                                                        915  call openbf(lunit,'INX',lunit)
                                                        +
                                                        916  else
                                                        +
                                                        917  ! If BUFR file already opened, save position and rewind to first data message
                                                        +
                                                        918  call rewnbf(lunit,0)
                                                        +
                                                        919  endif
                                                        +
                                                        920 
                                                        +
                                                        921  ! Initialize all of the output array values to the current value for "missing"
                                                        +
                                                        922  tab(1:i1,1:i2) = bmiss
                                                        923 
                                                        -
                                                        924  ! Initialize all of the output array values to the current value for "missing"
                                                        -
                                                        925  do j=1,i2
                                                        -
                                                        926  do i=1,i1
                                                        -
                                                        927  tab(i,j) = bmiss
                                                        -
                                                        928  enddo
                                                        -
                                                        929  enddo
                                                        -
                                                        930 
                                                        -
                                                        931  ! Set counters to zero
                                                        -
                                                        932  iret = 0
                                                        -
                                                        933  irec = 0
                                                        -
                                                        934  isub = 0
                                                        -
                                                        935 
                                                        -
                                                        936  iac_prev = iac
                                                        -
                                                        937  iac = 1
                                                        -
                                                        938 
                                                        -
                                                        939  overflow = .false.
                                                        -
                                                        940 
                                                        -
                                                        941  ! Check for count subset only option
                                                        -
                                                        942  just_count = lunin<lunit
                                                        -
                                                        943  if(just_count) then
                                                        -
                                                        944  do while(ireadmg(-lunit,subset,jdate)>=0)
                                                        -
                                                        945  iret = iret+nmsub(lunit)
                                                        +
                                                        924  ! Set counters to zero
                                                        +
                                                        925  iret = 0
                                                        +
                                                        926  irec = 0
                                                        +
                                                        927  isub = 0
                                                        +
                                                        928 
                                                        +
                                                        929  iac_prev = iac
                                                        +
                                                        930  iac = 1
                                                        +
                                                        931 
                                                        +
                                                        932  overflow = .false.
                                                        +
                                                        933 
                                                        +
                                                        934  ! Check for count subset only option
                                                        +
                                                        935  just_count = lunin<lunit
                                                        +
                                                        936  if(just_count) then
                                                        +
                                                        937  do while(ireadmg(-lunit,subset,jdate)>=0)
                                                        +
                                                        938  iret = iret+nmsub(lunit)
                                                        +
                                                        939  enddo
                                                        +
                                                        940  else
                                                        +
                                                        941  ! Check for special tags in string
                                                        +
                                                        942  call parstr(str,tgs,maxtg,ntg,' ',.true.)
                                                        +
                                                        943  do i=1,ntg
                                                        +
                                                        944  if(tgs(i)=='IREC') irec = i
                                                        +
                                                        945  if(tgs(i)=='ISUB') isub = i
                                                        946  enddo
                                                        -
                                                        947  else
                                                        -
                                                        948  ! Check for special tags in string
                                                        -
                                                        949  call parstr(str,tgs,maxtg,ntg,' ',.true.)
                                                        -
                                                        950  do i=1,ntg
                                                        -
                                                        951  if(tgs(i)=='IREC') irec = i
                                                        -
                                                        952  if(tgs(i)=='ISUB') isub = i
                                                        -
                                                        953  enddo
                                                        -
                                                        954  endif
                                                        +
                                                        947  endif
                                                        +
                                                        948 
                                                        +
                                                        949  outer: do while (.not. just_count)
                                                        +
                                                        950  ! Read the next message from the file
                                                        +
                                                        951  if(ireadmg(-lunit,subset,jdate)<0) exit
                                                        +
                                                        952  call string(str,lun,i1,0)
                                                        +
                                                        953  if(irec>0) nods(irec) = 0
                                                        +
                                                        954  if(isub>0) nods(isub) = 0
                                                        955 
                                                        -
                                                        956  outer: do while (.not. just_count)
                                                        -
                                                        957  ! Read the next message from the file
                                                        -
                                                        958  if(ireadmg(-lunit,subset,jdate)<0) exit
                                                        -
                                                        959  call string(str,lun,i1,0)
                                                        -
                                                        960  if(irec>0) nods(irec) = 0
                                                        -
                                                        961  if(isub>0) nods(isub) = 0
                                                        -
                                                        962 
                                                        -
                                                        963  if(msgunp(lun)/=2) then
                                                        -
                                                        964  ! The message is uncompressed
                                                        -
                                                        965 
                                                        -
                                                        966  inner1: do while (.true.)
                                                        -
                                                        967  ! Get the next subset from the message
                                                        -
                                                        968  if(nsub(lun)==msub(lun)) cycle outer
                                                        -
                                                        969  if(iret+1>i2) then
                                                        -
                                                        970  overflow = .true.
                                                        -
                                                        971  exit outer
                                                        -
                                                        972  endif
                                                        -
                                                        973  iret = iret+1
                                                        -
                                                        974  do i=1,nnod
                                                        -
                                                        975  nods(i) = abs(nods(i))
                                                        -
                                                        976  enddo
                                                        -
                                                        977  if(msgunp(lun)==0) then
                                                        -
                                                        978  mbit = mbyt(lun)*8 + 16
                                                        -
                                                        979  else
                                                        -
                                                        980  mbit = mbyt(lun)
                                                        -
                                                        981  endif
                                                        -
                                                        982  nbit = 0
                                                        -
                                                        983  n = 1
                                                        -
                                                        984  call usrtpl(lun,n,n)
                                                        -
                                                        985  inner2: do while (.true.)
                                                        -
                                                        986  ! Cycle through each node of the subset to look for the requested values
                                                        -
                                                        987  if(n+1<=nval(lun)) then
                                                        -
                                                        988  n = n+1
                                                        -
                                                        989  node = inv(n,lun)
                                                        -
                                                        990  mbit = mbit+nbit
                                                        -
                                                        991  nbit = ibt(node)
                                                        -
                                                        992  if(itp(node)==1) then
                                                        -
                                                        993  call upb8(ival,nbit,mbit,mbay(1,lun))
                                                        -
                                                        994  nbmp=int(ival)
                                                        -
                                                        995  call usrtpl(lun,n,nbmp)
                                                        -
                                                        996  endif
                                                        -
                                                        997  do i=1,nnod
                                                        -
                                                        998  if(nods(i)==node) then
                                                        -
                                                        999  if(itp(node)==1) then
                                                        -
                                                        1000  call upb8(ival,nbit,mbit,mbay(1,lun))
                                                        -
                                                        1001  tab(i,iret) = ival
                                                        -
                                                        1002  elseif(itp(node)==2) then
                                                        -
                                                        1003  call upb8(ival,nbit,mbit,mbay(1,lun))
                                                        -
                                                        1004  if(ival<mps(node)) tab(i,iret) = ups(ival,node)
                                                        -
                                                        1005  elseif(itp(node)==3) then
                                                        -
                                                        1006  cval = ' '
                                                        -
                                                        1007  kbit = mbit
                                                        -
                                                        1008  call upc(cval,nbit/8,mbay(1,lun),kbit,.true.)
                                                        -
                                                        1009  tab(i,iret) = rval
                                                        -
                                                        1010  endif
                                                        -
                                                        1011  nods(i) = -nods(i)
                                                        -
                                                        1012  cycle inner2
                                                        -
                                                        1013  endif
                                                        -
                                                        1014  enddo
                                                        -
                                                        1015  do i=1,nnod
                                                        -
                                                        1016  if(nods(i)>0) cycle inner2
                                                        -
                                                        1017  enddo
                                                        -
                                                        1018  endif
                                                        -
                                                        1019  exit
                                                        -
                                                        1020  enddo inner2
                                                        -
                                                        1021  ! Update the subset pointers
                                                        -
                                                        1022  if(msgunp(lun)==0) then
                                                        -
                                                        1023  ibit = mbyt(lun)*8
                                                        -
                                                        1024  call upb(nbyt,16,mbay(1,lun),ibit)
                                                        -
                                                        1025  mbyt(lun) = mbyt(lun) + nbyt
                                                        -
                                                        1026  else
                                                        -
                                                        1027  mbyt(lun) = mbit
                                                        -
                                                        1028  endif
                                                        -
                                                        1029  nsub(lun) = nsub(lun) + 1
                                                        -
                                                        1030  if(irec>0) tab(irec,iret) = nmsg(lun)
                                                        -
                                                        1031  if(isub>0) tab(isub,iret) = nsub(lun)
                                                        -
                                                        1032  enddo inner1
                                                        -
                                                        1033 
                                                        -
                                                        1034  else
                                                        -
                                                        1035  ! The message is compressed
                                                        -
                                                        1036 
                                                        -
                                                        1037  if(iret+msub(lun)>i2) then
                                                        -
                                                        1038  overflow = .true.
                                                        -
                                                        1039  exit outer
                                                        -
                                                        1040  endif
                                                        -
                                                        1041  if(irec>0.or.isub>0) then
                                                        -
                                                        1042  do nsb=1,msub(lun)
                                                        -
                                                        1043  if(irec>0) tab(irec,iret+nsb) = nmsg(lun)
                                                        -
                                                        1044  if(isub>0) tab(isub,iret+nsb) = nsb
                                                        -
                                                        1045  enddo
                                                        -
                                                        1046  endif
                                                        -
                                                        1047  call usrtpl(lun,1,1)
                                                        -
                                                        1048  ibit = mbyt(lun)
                                                        -
                                                        1049  n = 0
                                                        -
                                                        1050  inner3: do n = n+1,nval(lun)
                                                        -
                                                        1051  ! Cycle through each node of each subset to look for the requested values
                                                        -
                                                        1052  node = inv(n,lun)
                                                        -
                                                        1053  nbit = ibt(node)
                                                        -
                                                        1054  ityp = itp(node)
                                                        -
                                                        1055  if(n==1) then
                                                        -
                                                        1056  ! Reset the node indices
                                                        +
                                                        956  if(msgunp(lun)/=2) then
                                                        +
                                                        957  ! The message is uncompressed
                                                        +
                                                        958 
                                                        +
                                                        959  inner1: do while (.true.)
                                                        +
                                                        960  ! Get the next subset from the message
                                                        +
                                                        961  if(nsub(lun)==msub(lun)) cycle outer
                                                        +
                                                        962  if(iret+1>i2) then
                                                        +
                                                        963  overflow = .true.
                                                        +
                                                        964  exit outer
                                                        +
                                                        965  endif
                                                        +
                                                        966  iret = iret+1
                                                        +
                                                        967  do i=1,nnod
                                                        +
                                                        968  nods(i) = abs(nods(i))
                                                        +
                                                        969  enddo
                                                        +
                                                        970  if(msgunp(lun)==0) then
                                                        +
                                                        971  mbit = mbyt(lun)*8 + 16
                                                        +
                                                        972  else
                                                        +
                                                        973  mbit = mbyt(lun)
                                                        +
                                                        974  endif
                                                        +
                                                        975  nbit = 0
                                                        +
                                                        976  n = 1
                                                        +
                                                        977  call usrtpl(lun,n,n)
                                                        +
                                                        978  inner2: do while (.true.)
                                                        +
                                                        979  ! Cycle through each node of the subset to look for the requested values
                                                        +
                                                        980  if(n+1<=nval(lun)) then
                                                        +
                                                        981  n = n+1
                                                        +
                                                        982  node = inv(n,lun)
                                                        +
                                                        983  mbit = mbit+nbit
                                                        +
                                                        984  nbit = ibt(node)
                                                        +
                                                        985  if(itp(node)==1) then
                                                        +
                                                        986  call upb8(ival,nbit,mbit,mbay(1,lun))
                                                        +
                                                        987  nbmp=int(ival)
                                                        +
                                                        988  call usrtpl(lun,n,nbmp)
                                                        +
                                                        989  endif
                                                        +
                                                        990  do i=1,nnod
                                                        +
                                                        991  if(nods(i)==node) then
                                                        +
                                                        992  if(itp(node)==1) then
                                                        +
                                                        993  call upb8(ival,nbit,mbit,mbay(1,lun))
                                                        +
                                                        994  tab(i,iret) = ival
                                                        +
                                                        995  elseif(itp(node)==2) then
                                                        +
                                                        996  call upb8(ival,nbit,mbit,mbay(1,lun))
                                                        +
                                                        997  if(ival<mps(node)) tab(i,iret) = ups(ival,node)
                                                        +
                                                        998  elseif(itp(node)==3) then
                                                        +
                                                        999  cval = ' '
                                                        +
                                                        1000  kbit = mbit
                                                        +
                                                        1001  call upc(cval,nbit/8,mbay(1,lun),kbit,.true.)
                                                        +
                                                        1002  tab(i,iret) = rval
                                                        +
                                                        1003  endif
                                                        +
                                                        1004  nods(i) = -nods(i)
                                                        +
                                                        1005  cycle inner2
                                                        +
                                                        1006  endif
                                                        +
                                                        1007  enddo
                                                        +
                                                        1008  do i=1,nnod
                                                        +
                                                        1009  if(nods(i)>0) cycle inner2
                                                        +
                                                        1010  enddo
                                                        +
                                                        1011  endif
                                                        +
                                                        1012  exit
                                                        +
                                                        1013  enddo inner2
                                                        +
                                                        1014  ! Update the subset pointers
                                                        +
                                                        1015  if(msgunp(lun)==0) then
                                                        +
                                                        1016  ibit = mbyt(lun)*8
                                                        +
                                                        1017  call upb(nbyt,16,mbay(1,lun),ibit)
                                                        +
                                                        1018  mbyt(lun) = mbyt(lun) + nbyt
                                                        +
                                                        1019  else
                                                        +
                                                        1020  mbyt(lun) = mbit
                                                        +
                                                        1021  endif
                                                        +
                                                        1022  nsub(lun) = nsub(lun) + 1
                                                        +
                                                        1023  if(irec>0) tab(irec,iret) = nmsg(lun)
                                                        +
                                                        1024  if(isub>0) tab(isub,iret) = nsub(lun)
                                                        +
                                                        1025  enddo inner1
                                                        +
                                                        1026 
                                                        +
                                                        1027  else
                                                        +
                                                        1028  ! The message is compressed
                                                        +
                                                        1029 
                                                        +
                                                        1030  if(iret+msub(lun)>i2) then
                                                        +
                                                        1031  overflow = .true.
                                                        +
                                                        1032  exit outer
                                                        +
                                                        1033  endif
                                                        +
                                                        1034  if(irec>0.or.isub>0) then
                                                        +
                                                        1035  do nsb=1,msub(lun)
                                                        +
                                                        1036  if(irec>0) tab(irec,iret+nsb) = nmsg(lun)
                                                        +
                                                        1037  if(isub>0) tab(isub,iret+nsb) = nsb
                                                        +
                                                        1038  enddo
                                                        +
                                                        1039  endif
                                                        +
                                                        1040  call usrtpl(lun,1,1)
                                                        +
                                                        1041  ibit = mbyt(lun)
                                                        +
                                                        1042  n = 0
                                                        +
                                                        1043  inner3: do while ( n < nval(lun) )
                                                        +
                                                        1044  ! Cycle through each node of each subset to look for the requested values
                                                        +
                                                        1045  n = n+1
                                                        +
                                                        1046  node = inv(n,lun)
                                                        +
                                                        1047  nbit = ibt(node)
                                                        +
                                                        1048  ityp = itp(node)
                                                        +
                                                        1049  if(n==1) then
                                                        +
                                                        1050  ! Reset the node indices
                                                        +
                                                        1051  do i=1,nnod
                                                        +
                                                        1052  nods(i) = abs(nods(i))
                                                        +
                                                        1053  enddo
                                                        +
                                                        1054  else
                                                        +
                                                        1055  ! Are we still looking for more values?
                                                        +
                                                        1056  need_node = .false.
                                                        1057  do i=1,nnod
                                                        -
                                                        1058  nods(i) = abs(nods(i))
                                                        -
                                                        1059  enddo
                                                        -
                                                        1060  else
                                                        -
                                                        1061  ! Are we still looking for more values?
                                                        -
                                                        1062  need_node = .false.
                                                        -
                                                        1063  do i=1,nnod
                                                        -
                                                        1064  if(nods(i)>0) then
                                                        -
                                                        1065  need_node = .true.
                                                        -
                                                        1066  exit
                                                        -
                                                        1067  endif
                                                        -
                                                        1068  enddo
                                                        -
                                                        1069  if(.not. need_node) exit inner3
                                                        -
                                                        1070  endif
                                                        -
                                                        1071  if(ityp==1 .or. ityp==2) then
                                                        -
                                                        1072  call up8(lref,nbit,mbay(1,lun),ibit)
                                                        -
                                                        1073  call upb(linc,6,mbay(1,lun),ibit)
                                                        -
                                                        1074  nibit = ibit + linc*msub(lun)
                                                        -
                                                        1075  elseif(ityp==3) then
                                                        -
                                                        1076  cref=' '
                                                        -
                                                        1077  call upc(cref,nbit/8,mbay(1,lun),ibit,.true.)
                                                        -
                                                        1078  call upb(linc,6,mbay(1,lun),ibit)
                                                        -
                                                        1079  nibit = ibit + 8*linc*msub(lun)
                                                        -
                                                        1080  else
                                                        -
                                                        1081  cycle
                                                        -
                                                        1082  endif
                                                        -
                                                        1083  if(ityp==1) then
                                                        -
                                                        1084  ! This is a delayed replication node
                                                        -
                                                        1085  jbit = ibit + linc
                                                        -
                                                        1086  call up8(ninc,linc,mbay(1,lun),jbit)
                                                        -
                                                        1087  ival = lref+ninc
                                                        -
                                                        1088  call usrtpl(lun,n,int(ival))
                                                        -
                                                        1089  cycle
                                                        -
                                                        1090  endif
                                                        -
                                                        1091  do i=1,nnod
                                                        -
                                                        1092  if(node==nods(i)) then
                                                        -
                                                        1093  ! This is one of the requested values, so store the corresponding value from each subset in the message
                                                        -
                                                        1094  nods(i) = -nods(i)
                                                        -
                                                        1095  lret = iret
                                                        -
                                                        1096  if(ityp==1 .or. ityp==2) then
                                                        -
                                                        1097  do nsb=1,msub(lun)
                                                        -
                                                        1098  jbit = ibit + linc*(nsb-1)
                                                        -
                                                        1099  call up8(ninc,linc,mbay(1,lun),jbit)
                                                        -
                                                        1100  ival = lref+ninc
                                                        -
                                                        1101  lret = lret+1
                                                        -
                                                        1102  if(ninc<lps(linc)) tab(i,lret) = ups(ival,node)
                                                        -
                                                        1103  enddo
                                                        -
                                                        1104  elseif(ityp==3) then
                                                        -
                                                        1105  do nsb=1,msub(lun)
                                                        -
                                                        1106  if(linc==0) then
                                                        -
                                                        1107  cval = cref(1:8)
                                                        -
                                                        1108  else
                                                        -
                                                        1109  jbit = ibit + linc*(nsb-1)*8
                                                        -
                                                        1110  cval = ' '
                                                        -
                                                        1111  call upc(cval,linc,mbay(1,lun),jbit,.true.)
                                                        -
                                                        1112  endif
                                                        -
                                                        1113  lret = lret+1
                                                        -
                                                        1114  tab(i,lret) = rval
                                                        -
                                                        1115  enddo
                                                        -
                                                        1116  else
                                                        -
                                                        1117  call bort('UFBTAB - INVALID ELEMENT TYPE SPECIFIED')
                                                        -
                                                        1118  endif
                                                        -
                                                        1119  endif
                                                        -
                                                        1120  enddo
                                                        -
                                                        1121  ibit = nibit
                                                        -
                                                        1122  enddo inner3
                                                        -
                                                        1123  iret = iret+msub(lun)
                                                        -
                                                        1124 
                                                        -
                                                        1125  endif
                                                        -
                                                        1126 
                                                        -
                                                        1127  enddo outer
                                                        -
                                                        1128 
                                                        -
                                                        1129  if(overflow) then
                                                        -
                                                        1130  nrep = iret
                                                        -
                                                        1131  do while(ireadsb(lunit)==0)
                                                        -
                                                        1132  nrep = nrep+1
                                                        -
                                                        1133  enddo
                                                        -
                                                        1134  do while(ireadmg(-lunit,subset,jdate)>=0)
                                                        -
                                                        1135  nrep = nrep+nmsub(lunit)
                                                        -
                                                        1136  enddo
                                                        -
                                                        1137  if(iprt>=0) then
                                                        +
                                                        1058  if(nods(i)>0) then
                                                        +
                                                        1059  need_node = .true.
                                                        +
                                                        1060  exit
                                                        +
                                                        1061  endif
                                                        +
                                                        1062  enddo
                                                        +
                                                        1063  if(.not. need_node) exit inner3
                                                        +
                                                        1064  endif
                                                        +
                                                        1065  if(ityp==1 .or. ityp==2) then
                                                        +
                                                        1066  call up8(lref,nbit,mbay(1,lun),ibit)
                                                        +
                                                        1067  call upb(linc,6,mbay(1,lun),ibit)
                                                        +
                                                        1068  nibit = ibit + linc*msub(lun)
                                                        +
                                                        1069  elseif(ityp==3) then
                                                        +
                                                        1070  cref=' '
                                                        +
                                                        1071  call upc(cref,nbit/8,mbay(1,lun),ibit,.true.)
                                                        +
                                                        1072  call upb(linc,6,mbay(1,lun),ibit)
                                                        +
                                                        1073  nibit = ibit + 8*linc*msub(lun)
                                                        +
                                                        1074  else
                                                        +
                                                        1075  cycle
                                                        +
                                                        1076  endif
                                                        +
                                                        1077  if(ityp==1) then
                                                        +
                                                        1078  ! This is a delayed replication node
                                                        +
                                                        1079  jbit = ibit + linc
                                                        +
                                                        1080  call up8(ninc,linc,mbay(1,lun),jbit)
                                                        +
                                                        1081  ival = lref+ninc
                                                        +
                                                        1082  call usrtpl(lun,n,int(ival))
                                                        +
                                                        1083  cycle
                                                        +
                                                        1084  endif
                                                        +
                                                        1085  do i=1,nnod
                                                        +
                                                        1086  if(node==nods(i)) then
                                                        +
                                                        1087  ! This is one of the requested values, so store the corresponding value from each subset in the message
                                                        +
                                                        1088  nods(i) = -nods(i)
                                                        +
                                                        1089  lret = iret
                                                        +
                                                        1090  if(ityp==1 .or. ityp==2) then
                                                        +
                                                        1091  do nsb=1,msub(lun)
                                                        +
                                                        1092  jbit = ibit + linc*(nsb-1)
                                                        +
                                                        1093  call up8(ninc,linc,mbay(1,lun),jbit)
                                                        +
                                                        1094  ival = lref+ninc
                                                        +
                                                        1095  lret = lret+1
                                                        +
                                                        1096  if(ninc<lps(linc)) tab(i,lret) = ups(ival,node)
                                                        +
                                                        1097  enddo
                                                        +
                                                        1098  elseif(ityp==3) then
                                                        +
                                                        1099  do nsb=1,msub(lun)
                                                        +
                                                        1100  if(linc==0) then
                                                        +
                                                        1101  cval = cref(1:8)
                                                        +
                                                        1102  else
                                                        +
                                                        1103  jbit = ibit + linc*(nsb-1)*8
                                                        +
                                                        1104  cval = ' '
                                                        +
                                                        1105  call upc(cval,linc,mbay(1,lun),jbit,.true.)
                                                        +
                                                        1106  endif
                                                        +
                                                        1107  lret = lret+1
                                                        +
                                                        1108  tab(i,lret) = rval
                                                        +
                                                        1109  enddo
                                                        +
                                                        1110  else
                                                        +
                                                        1111  call bort('UFBTAB - INVALID ELEMENT TYPE SPECIFIED')
                                                        +
                                                        1112  endif
                                                        +
                                                        1113  endif
                                                        +
                                                        1114  enddo
                                                        +
                                                        1115  ibit = nibit
                                                        +
                                                        1116  enddo inner3
                                                        +
                                                        1117  iret = iret+msub(lun)
                                                        +
                                                        1118 
                                                        +
                                                        1119  endif
                                                        +
                                                        1120 
                                                        +
                                                        1121  enddo outer
                                                        +
                                                        1122 
                                                        +
                                                        1123  if(overflow) then
                                                        +
                                                        1124  nrep = iret
                                                        +
                                                        1125  do while(ireadsb(lunit)==0)
                                                        +
                                                        1126  nrep = nrep+1
                                                        +
                                                        1127  enddo
                                                        +
                                                        1128  do while(ireadmg(-lunit,subset,jdate)>=0)
                                                        +
                                                        1129  nrep = nrep+nmsub(lunit)
                                                        +
                                                        1130  enddo
                                                        +
                                                        1131  if(iprt>=0) then
                                                        +
                                                        1132  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        1133  write ( unit=errstr, fmt='(A,A,I8,A)' ) 'BUFRLIB: UFBTAB - THE NO. OF DATA SUBSETS IN THE BUFR FILE ', &
                                                        +
                                                        1134  .GT.'IS LIMIT OF ', i2, ' IN THE 4TH ARG. (INPUT) - INCOMPLETE READ'
                                                        +
                                                        1135  call errwrt(errstr)
                                                        +
                                                        1136  write ( unit=errstr, fmt='(A,I8,A,I8,A)' ) '>>>UFBTAB STORED ', iret, ' REPORTS OUT OF ', nrep, '<<<'
                                                        +
                                                        1137  call errwrt(errstr)
                                                        1138  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        -
                                                        1139  write ( unit=errstr, fmt='(A,A,I8,A)' ) 'BUFRLIB: UFBTAB - THE NO. OF DATA SUBSETS IN THE BUFR FILE ', &
                                                        -
                                                        1140  .GT.'IS LIMIT OF ', i2, ' IN THE 4TH ARG. (INPUT) - INCOMPLETE READ'
                                                        -
                                                        1141  call errwrt(errstr)
                                                        -
                                                        1142  write ( unit=errstr, fmt='(A,I8,A,I8,A)' ) '>>>UFBTAB STORED ', iret, ' REPORTS OUT OF ', nrep, '<<<'
                                                        -
                                                        1143  call errwrt(errstr)
                                                        -
                                                        1144  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        -
                                                        1145  call errwrt(' ')
                                                        -
                                                        1146  endif
                                                        -
                                                        1147  endif
                                                        -
                                                        1148 
                                                        -
                                                        1149  if(openit) then
                                                        -
                                                        1150  ! Close BUFR file if it was opened here
                                                        -
                                                        1151  call closbf(lunit)
                                                        -
                                                        1152  else
                                                        -
                                                        1153  ! Restore BUFR file to its previous status and position
                                                        -
                                                        1154  call rewnbf(lunit,1)
                                                        -
                                                        1155  endif
                                                        -
                                                        1156 
                                                        -
                                                        1157  iac = iac_prev
                                                        -
                                                        1158 
                                                        -
                                                        1159  return
                                                        -
                                                        1160 end subroutine ufbtab
                                                        +
                                                        1139  call errwrt(' ')
                                                        +
                                                        1140  endif
                                                        +
                                                        1141  endif
                                                        +
                                                        1142 
                                                        +
                                                        1143  if(openit) then
                                                        +
                                                        1144  ! Close BUFR file if it was opened here
                                                        +
                                                        1145  call closbf(lunit)
                                                        +
                                                        1146  else
                                                        +
                                                        1147  ! Restore BUFR file to its previous status and position
                                                        +
                                                        1148  call rewnbf(lunit,1)
                                                        +
                                                        1149  endif
                                                        +
                                                        1150 
                                                        +
                                                        1151  iac = iac_prev
                                                        +
                                                        1152 
                                                        +
                                                        1153  return
                                                        +
                                                        1154 end subroutine ufbtab
                                                        subroutine arallocf
                                                        Dynamically allocate Fortran language arrays.
                                                        Definition: arallocf.F90:19
                                                        subroutine bort(str)
                                                        Log an error message, then abort the application program.
                                                        Definition: borts.F90:15
                                                        subroutine upb(nval, nbits, ibay, ibit)
                                                        Decode an integer value from within a specified number of bits of an integer array,...
                                                        Definition: cidecode.F90:202
                                                        @@ -960,7 +955,7 @@
                                                        real *8 function ups(ival, node)
                                                        Unpack a real*8 value from an integer by applying the proper scale and reference values.
                                                        Definition: cidecode.F90:319
                                                        subroutine up8(nval, nbits, ibay, ibit)
                                                        Decode an 8-byte integer value from within a specified number of bits of an integer array,...
                                                        Definition: cidecode.F90:128
                                                        subroutine upc(chr, nchr, ibay, ibit, cnvnull)
                                                        Decode a character string from within a specified number of bytes of an integer array,...
                                                        Definition: cidecode.F90:26
                                                        -
                                                        subroutine writdx(lunit, lun, lundx)
                                                        Write DX BUFR table (dictionary) messages to the beginning of an output BUFR file in lunit.
                                                        Definition: dxtable.F90:812
                                                        +
                                                        subroutine writdx(lunit, lun, lundx)
                                                        Write DX BUFR table (dictionary) messages to the beginning of an output BUFR file in lunit.
                                                        Definition: dxtable.F90:802
                                                        subroutine readdx(lunit, lun, lundx)
                                                        Initialize modules moda_tababd and moda_msgcwd with DX BUFR (dictionary) tables.
                                                        Definition: dxtable.F90:29
                                                        subroutine rdbfdx(lunit, lun)
                                                        Beginning at the current file pointer location within lunit, read a complete DX BUFR table into inter...
                                                        Definition: dxtable.F90:121
                                                        subroutine errwrt(str)
                                                        Specify a custom location for the logging of error and diagnostic messages generated by the NCEPLIBS-...
                                                        Definition: errwrt.F90:32
                                                        @@ -971,7 +966,7 @@ -
                                                        subroutine bfrini
                                                        Initialize numerous global variables and arrays within internal modules and COMMON blocks throughout ...
                                                        Definition: misc.F90:16
                                                        +
                                                        subroutine bfrini
                                                        Initialize numerous global variables and arrays within internal modules and common blocks throughout ...
                                                        Definition: misc.F90:16
                                                        Wrap C NCEPLIBS-bufr functions so they can be called from within the Fortran part of the library.
                                                        Definition: bufrlib.F90:11
                                                        Declare arrays and variables used to store BUFR messages internally for multiple file IDs.
                                                        integer ibit
                                                        Bit pointer within ibay.
                                                        @@ -997,39 +992,39 @@
                                                        integer, dimension(:), allocatable nmsg
                                                        Current message pointer within logical unit.
                                                        integer, dimension(:), allocatable msub
                                                        Total number of data subsets in message.
                                                        integer, dimension(:), allocatable nsub
                                                        Current subset pointer within message.
                                                        -
                                                        Declare an array used to store a switch for each file ID, indicating whether any BUFR messages should...
                                                        -
                                                        integer, dimension(:), allocatable null
                                                        Output switch for each file ID:
                                                        -
                                                        Declare an array used to store a switch for each file ID, indicating whether BUFR messages read from ...
                                                        -
                                                        integer, dimension(:), allocatable isc3
                                                        Section 3 switch for each file ID:
                                                        -
                                                        Declare arrays used to store file and message status indicators for all logical units that have been ...
                                                        -
                                                        integer, dimension(:), allocatable iolun
                                                        File status indicators.
                                                        -
                                                        integer, dimension(:), allocatable iomsg
                                                        Message status indicator corresponding to iolun, denoting whether a BUFR message is currently open wi...
                                                        -
                                                        Declare an array used to store a status code for each file ID if an error or other abnormal result oc...
                                                        -
                                                        integer, dimension(:), allocatable iscodes
                                                        Abnormal status codes.
                                                        -
                                                        Declare arrays and variables used to store the internal jump/link table.
                                                        -
                                                        integer, dimension(:), allocatable ibt
                                                        Bit widths corresponding to tag and typ:
                                                        -
                                                        integer, dimension(:), allocatable itp
                                                        Integer type values corresponding to typ:
                                                        -
                                                        Declare an array used to store, for each file ID from which a BUFR message is currently being read as...
                                                        -
                                                        integer, dimension(:), allocatable msgunp
                                                        Flag indicating how to unpack data subsets from BUFR message:
                                                        -
                                                        Declare arrays used to store data values and associated metadata for the current BUFR data subset in ...
                                                        -
                                                        integer, dimension(:), allocatable nval
                                                        Number of data values in BUFR data subset.
                                                        -
                                                        integer, dimension(:,:), allocatable, target inv
                                                        Inventory pointer which links each data value to its corresponding node in the internal jump/link tab...
                                                        -
                                                        recursive subroutine closbf(lunit)
                                                        Close the connection between logical unit lunit and the NCEPLIBS-bufr software.
                                                        -
                                                        subroutine rewnbf(lunit, isr)
                                                        Store or restore parameters associated with a BUFR file.
                                                        +
                                                        Declare an array used to store a switch for each file ID, indicating whether any BUFR messages should...
                                                        +
                                                        integer, dimension(:), allocatable null
                                                        Output switch for each file ID:
                                                        +
                                                        Declare an array used to store a switch for each file ID, indicating whether BUFR messages read from ...
                                                        +
                                                        integer, dimension(:), allocatable isc3
                                                        Section 3 switch for each file ID:
                                                        +
                                                        Declare arrays used to store file and message status indicators for all logical units that have been ...
                                                        +
                                                        integer, dimension(:), allocatable iolun
                                                        File status indicators.
                                                        +
                                                        integer, dimension(:), allocatable iomsg
                                                        Message status indicator corresponding to iolun, denoting whether a BUFR message is currently open wi...
                                                        +
                                                        Declare an array used to store a status code for each file ID if an error or other abnormal result oc...
                                                        +
                                                        integer, dimension(:), allocatable iscodes
                                                        Abnormal status codes.
                                                        +
                                                        Declare arrays and variables used to store the internal jump/link table.
                                                        +
                                                        integer, dimension(:), allocatable ibt
                                                        Bit widths corresponding to tag and typ:
                                                        +
                                                        integer, dimension(:), allocatable itp
                                                        Integer type values corresponding to typ:
                                                        +
                                                        Declare an array used to store, for each file ID from which a BUFR message is currently being read as...
                                                        +
                                                        integer, dimension(:), allocatable msgunp
                                                        Flag indicating how to unpack data subsets from BUFR message:
                                                        +
                                                        Declare arrays used to store data values and associated metadata for the current BUFR data subset in ...
                                                        +
                                                        integer, dimension(:), allocatable nval
                                                        Number of data values in BUFR data subset.
                                                        +
                                                        integer, dimension(:,:), allocatable, target inv
                                                        Inventory pointer which links each data value to its corresponding node in the internal jump/link tab...
                                                        +
                                                        recursive subroutine closbf(lunit)
                                                        Close the connection between logical unit lunit and the NCEPLIBS-bufr software.
                                                        +
                                                        subroutine rewnbf(lunit, isr)
                                                        Store or restore parameters associated with a BUFR file.
                                                        recursive subroutine fortran_open(filename, lunit, format, position, iret)
                                                        Open a Fortran file on the local system.
                                                        Definition: openclosebf.F90:16
                                                        -
                                                        recursive subroutine openbf(lunit, io, lundx)
                                                        Connect a new file to the NCEPLIBS-bufr software for input or output operations, or initialize the li...
                                                        +
                                                        recursive subroutine openbf(lunit, io, lundx)
                                                        Connect a new file to the NCEPLIBS-bufr software for input or output operations, or initialize the li...
                                                        recursive subroutine fortran_close(lunit, iret)
                                                        Close a Fortran file on the local system.
                                                        Definition: openclosebf.F90:49
                                                        -
                                                        recursive subroutine ufbcnt(lunit, kmsg, ksub)
                                                        Get the current location of the file pointer within a BUFR file, in terms of a message number countin...
                                                        -
                                                        recursive subroutine status(lunit, lun, il, im)
                                                        Check whether a specified Fortran logical unit number is currently connected to the NCEPLIBS-bufr sof...
                                                        -
                                                        subroutine wtstat(lunit, lun, il, im)
                                                        Update file status in library internals.
                                                        -
                                                        recursive subroutine ufbtab(lunin, tab, i1, i2, iret, str)
                                                        Read through every data subset in a BUFR file and return one or more specified data values from each ...
                                                        -
                                                        subroutine posapx(lunxx)
                                                        Position an output BUFR file for appending.
                                                        -
                                                        recursive subroutine closmg(lunin)
                                                        Close the BUFR message that is currently open for writing within internal arrays associated with logi...
                                                        -
                                                        recursive integer function nmsub(lunit)
                                                        Get the total number of data subsets available within the BUFR message that was most recently opened ...
                                                        +
                                                        recursive subroutine ufbcnt(lunit, kmsg, ksub)
                                                        Get the current location of the file pointer within a BUFR file, in terms of a message number countin...
                                                        +
                                                        recursive subroutine status(lunit, lun, il, im)
                                                        Check whether a specified Fortran logical unit number is currently connected to the NCEPLIBS-bufr sof...
                                                        +
                                                        subroutine wtstat(lunit, lun, il, im)
                                                        Update file status in library internals.
                                                        +
                                                        recursive subroutine ufbtab(lunin, tab, i1, i2, iret, str)
                                                        Read through every data subset in a BUFR file and return one or more specified data values from each ...
                                                        +
                                                        subroutine posapx(lunxx)
                                                        Position an output BUFR file for appending.
                                                        +
                                                        recursive subroutine closmg(lunin)
                                                        Close the BUFR message that is currently open for writing within internal arrays associated with logi...
                                                        +
                                                        recursive integer function nmsub(lunit)
                                                        Get the total number of data subsets available within the BUFR message that was most recently opened ...
                                                        recursive subroutine readmg(lunxx, subset, jdate, iret)
                                                        Read the next BUFR message from logical unit abs(lunxx) into internal arrays.
                                                        Definition: readwritemg.F90:44
                                                        -
                                                        subroutine rdmsgw(lunit, mesg, iret)
                                                        Read the next BUFR message from logical unit lunit as an array of integer words.
                                                        -
                                                        recursive integer function ireadmg(lunit, subset, idate)
                                                        Call subroutine readmg() and pass back its return code as the function value.
                                                        -
                                                        subroutine usrtpl(lun, invn, nbmp)
                                                        Expand a subset template within internal arrays.
                                                        +
                                                        subroutine rdmsgw(lunit, mesg, iret)
                                                        Read the next BUFR message from logical unit lunit as an array of integer words.
                                                        +
                                                        recursive integer function ireadmg(lunit, subset, idate)
                                                        Call subroutine readmg() and pass back its return code as the function value.
                                                        +
                                                        subroutine usrtpl(lun, invn, nbmp)
                                                        Expand a subset template within internal arrays.
                                                        recursive integer function ireadsb(lunit)
                                                        Call subroutine readsb() and pass back its return code as the function value.
                                                        recursive subroutine readsb(lunit, iret)
                                                        Read the next data subset from a BUFR message.
                                                        Definition: readwritesb.F90:32
                                                        subroutine parstr(str, tags, mtag, ntag, sep, limit80)
                                                        Parse a string containing one or more substrings into an array of substrings.
                                                        Definition: strings.F90:473
                                                        diff --git a/pages.html b/pages.html index ecf4f0a32..34f3792c3 100644 --- a/pages.html +++ b/pages.html @@ -26,7 +26,7 @@
                                                        NCEPLIBS-bufr -  12.1.0 +  12.2.0
                                                        diff --git a/previous_versions/v12.1.0/annotated.html b/previous_versions/v12.1.0/annotated.html new file mode 100644 index 000000000..83146400f --- /dev/null +++ b/previous_versions/v12.1.0/annotated.html @@ -0,0 +1,127 @@ + + + + + + + +NCEPLIBS-bufr: Data Types List + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        +
                                                        Data Types List
                                                        +
                                                        +
                                                        +
                                                        Here are the data types with brief descriptions:
                                                        +
                                                        [detail level 12]
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                         Nbufr_interfaceWrap C NCEPLIBS-bufr functions so they can be called from within Fortran application programs
                                                         Cccbfl_c
                                                         Ccobfl_c
                                                         Ccrbmg_c
                                                         Ccwbmg_c
                                                         Cdlloctbf_c
                                                         NbufrlibWrap C NCEPLIBS-bufr functions so they can be called from within the Fortran part of the library
                                                         Carallocc_c
                                                         Cardllocc_c
                                                         Cbackbufr_c
                                                         Ccewind_c
                                                         Cclosfb_c
                                                         Ccpmstabs_c
                                                         Ccrdbufr_c
                                                         Ccwrbufr_c
                                                         Cicvidx_c
                                                         Cinittbf_c
                                                         Copenab_c
                                                         Copenrb_c
                                                         Copenwb_c
                                                         Crestd_c
                                                         Csorttbf_c
                                                         Csrchtbf_c
                                                         Cstrtbfe_c
                                                         Cstseq_c
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/annotated_dup.js b/previous_versions/v12.1.0/annotated_dup.js new file mode 100644 index 000000000..f73ada25d --- /dev/null +++ b/previous_versions/v12.1.0/annotated_dup.js @@ -0,0 +1,30 @@ +var annotated_dup = +[ + [ "bufr_interface", "namespacebufr__interface.html", [ + [ "ccbfl_c", "interfacebufr__interface_1_1ccbfl__c.html", "interfacebufr__interface_1_1ccbfl__c" ], + [ "cobfl_c", "interfacebufr__interface_1_1cobfl__c.html", "interfacebufr__interface_1_1cobfl__c" ], + [ "crbmg_c", "interfacebufr__interface_1_1crbmg__c.html", "interfacebufr__interface_1_1crbmg__c" ], + [ "cwbmg_c", "interfacebufr__interface_1_1cwbmg__c.html", "interfacebufr__interface_1_1cwbmg__c" ], + [ "dlloctbf_c", "interfacebufr__interface_1_1dlloctbf__c.html", "interfacebufr__interface_1_1dlloctbf__c" ] + ] ], + [ "bufrlib", "namespacebufrlib.html", [ + [ "arallocc_c", "interfacebufrlib_1_1arallocc__c.html", "interfacebufrlib_1_1arallocc__c" ], + [ "ardllocc_c", "interfacebufrlib_1_1ardllocc__c.html", "interfacebufrlib_1_1ardllocc__c" ], + [ "backbufr_c", "interfacebufrlib_1_1backbufr__c.html", "interfacebufrlib_1_1backbufr__c" ], + [ "cewind_c", "interfacebufrlib_1_1cewind__c.html", "interfacebufrlib_1_1cewind__c" ], + [ "closfb_c", "interfacebufrlib_1_1closfb__c.html", "interfacebufrlib_1_1closfb__c" ], + [ "cpmstabs_c", "interfacebufrlib_1_1cpmstabs__c.html", "interfacebufrlib_1_1cpmstabs__c" ], + [ "crdbufr_c", "interfacebufrlib_1_1crdbufr__c.html", "interfacebufrlib_1_1crdbufr__c" ], + [ "cwrbufr_c", "interfacebufrlib_1_1cwrbufr__c.html", "interfacebufrlib_1_1cwrbufr__c" ], + [ "icvidx_c", "interfacebufrlib_1_1icvidx__c.html", "interfacebufrlib_1_1icvidx__c" ], + [ "inittbf_c", "interfacebufrlib_1_1inittbf__c.html", "interfacebufrlib_1_1inittbf__c" ], + [ "openab_c", "interfacebufrlib_1_1openab__c.html", "interfacebufrlib_1_1openab__c" ], + [ "openrb_c", "interfacebufrlib_1_1openrb__c.html", "interfacebufrlib_1_1openrb__c" ], + [ "openwb_c", "interfacebufrlib_1_1openwb__c.html", "interfacebufrlib_1_1openwb__c" ], + [ "restd_c", "interfacebufrlib_1_1restd__c.html", "interfacebufrlib_1_1restd__c" ], + [ "sorttbf_c", "interfacebufrlib_1_1sorttbf__c.html", "interfacebufrlib_1_1sorttbf__c" ], + [ "srchtbf_c", "interfacebufrlib_1_1srchtbf__c.html", "interfacebufrlib_1_1srchtbf__c" ], + [ "strtbfe_c", "interfacebufrlib_1_1strtbfe__c.html", "interfacebufrlib_1_1strtbfe__c" ], + [ "stseq_c", "interfacebufrlib_1_1stseq__c.html", "interfacebufrlib_1_1stseq__c" ] + ] ] +]; \ No newline at end of file diff --git a/previous_versions/v12.1.0/apxdx_8F90.html b/previous_versions/v12.1.0/apxdx_8F90.html new file mode 100644 index 000000000..d57ace5e5 --- /dev/null +++ b/previous_versions/v12.1.0/apxdx_8F90.html @@ -0,0 +1,151 @@ + + + + + + + +NCEPLIBS-bufr: apxdx.F90 File Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        apxdx.F90 File Reference
                                                        +
                                                        +
                                                        + +

                                                        Append a specified DX BUFR table to a specified BUFR file. +More...

                                                        + +

                                                        Go to the source code of this file.

                                                        + + + + + +

                                                        +Functions/Subroutines

                                                        program apxdx
                                                         Generate BUFR messages corresponding to a given DX BUFR table and append them to a given BUFR file. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Append a specified DX BUFR table to a specified BUFR file.

                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2009-07-01
                                                        + +

                                                        Definition in file apxdx.F90.

                                                        +

                                                        Function/Subroutine Documentation

                                                        + +

                                                        ◆ apxdx()

                                                        + +
                                                        +
                                                        + + + + +
                                                        program apxdx
                                                        +
                                                        + +

                                                        Generate BUFR messages corresponding to a given DX BUFR table and append them to a given BUFR file.

                                                        +

                                                        This program is primarily intended for use when implementing DX BUFR table changes to one or more BUFR tankfiles in the NCEP observational database, but it has other potential uses as well.

                                                        +

                                                        Usage: apxdx BUFRfile DXtable

                                                        +

                                                        Upon successful output, the original BUFRfile will have BUFR messages appended to it corresponding to the given DXtable.

                                                        +
                                                        Returns
                                                        0 for success, error message otherwise
                                                        +
                                                        Remarks
                                                          +
                                                        • The original BUFRfile must contain embedded DX BUFR table messages corresponding to any existing BUFR messages in the file
                                                        • +
                                                        • Fortran logical unit numbers 10, 11, and 12 are reserved for use within this program
                                                        • +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2009-07-01
                                                        + +

                                                        Definition at line 22 of file apxdx.F90.

                                                        + +

                                                        References closbf(), openbf(), and wrdxtb().

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/apxdx_8F90.js b/previous_versions/v12.1.0/apxdx_8F90.js new file mode 100644 index 000000000..3da59f377 --- /dev/null +++ b/previous_versions/v12.1.0/apxdx_8F90.js @@ -0,0 +1,4 @@ +var apxdx_8F90 = +[ + [ "apxdx", "apxdx_8F90.html#ae072f0fa8326c098de4e6dfe2deef450", null ] +]; \ No newline at end of file diff --git a/previous_versions/v12.1.0/apxdx_8F90_source.html b/previous_versions/v12.1.0/apxdx_8F90_source.html new file mode 100644 index 000000000..6bd222291 --- /dev/null +++ b/previous_versions/v12.1.0/apxdx_8F90_source.html @@ -0,0 +1,153 @@ + + + + + + + +NCEPLIBS-bufr: apxdx.F90 Source File + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        +
                                                        apxdx.F90
                                                        +
                                                        +
                                                        +Go to the documentation of this file.
                                                        1 
                                                        +
                                                        5 
                                                        +
                                                        22 program apxdx
                                                        +
                                                        23 
                                                        +
                                                        24  implicit none
                                                        +
                                                        25 
                                                        +
                                                        26  character*240 cdxtbl, cbffil
                                                        +
                                                        27 
                                                        +
                                                        28  integer, parameter :: lunin = 10, lundx = 11, lunot = 12
                                                        +
                                                        29  integer narg
                                                        +
                                                        30 
                                                        +
                                                        31  logical exists
                                                        +
                                                        32 
                                                        +
                                                        33  ! Read and verify the input arguments.
                                                        +
                                                        34  narg = command_argument_count()
                                                        +
                                                        35  if ( narg /= 2 ) then
                                                        +
                                                        36  print *,'Usage: apxdx BUFRfile DXtable'
                                                        +
                                                        37  call exit(1)
                                                        +
                                                        38  endif
                                                        +
                                                        39  call get_command_argument( 1, cbffil )
                                                        +
                                                        40  inquire ( file = cbffil, exist = exists )
                                                        +
                                                        41  if ( .not. exists ) then
                                                        +
                                                        42  print *,'Specified BUFR file ' // trim(cbffil) // ' does not exist'
                                                        +
                                                        43  call exit(2)
                                                        +
                                                        44  endif
                                                        +
                                                        45  call get_command_argument( 2, cdxtbl )
                                                        +
                                                        46  inquire ( file = cdxtbl, exist = exists )
                                                        +
                                                        47  if ( .not. exists ) then
                                                        +
                                                        48  print *,'Specified DX table ' // trim(cdxtbl) // ' does not exist'
                                                        +
                                                        49  call exit(3)
                                                        +
                                                        50  endif
                                                        +
                                                        51 
                                                        +
                                                        52  ! Read the user DX table into the NCEPLIBS-bufr library.
                                                        +
                                                        53  cdxtbl = trim(cdxtbl) // char(0) ! append trailing null
                                                        +
                                                        54  open ( unit = lundx, file = cdxtbl )
                                                        +
                                                        55  call openbf ( lunin, 'INUL', lundx )
                                                        +
                                                        56 
                                                        +
                                                        57  ! Open the BUFR file for append.
                                                        +
                                                        58  cbffil = trim(cbffil) // char(0) ! append trailing null
                                                        +
                                                        59  open ( unit = lunot, file = cbffil, form = 'unformatted' )
                                                        +
                                                        60  call openbf ( lunot, 'APX', lunot )
                                                        +
                                                        61 
                                                        +
                                                        62  ! Generate DX messages from the table and append them to the BUFR file.
                                                        +
                                                        63  call wrdxtb ( lunin, lunot )
                                                        +
                                                        64 
                                                        +
                                                        65  ! Close the BUFR file.
                                                        +
                                                        66  call closbf ( lunot )
                                                        +
                                                        67 
                                                        +
                                                        68  stop
                                                        +
                                                        69 end program apxdx
                                                        +
                                                        program apxdx
                                                        Generate BUFR messages corresponding to a given DX BUFR table and append them to a given BUFR file.
                                                        Definition: apxdx.F90:22
                                                        +
                                                        recursive subroutine wrdxtb(lundx, lunot)
                                                        Generate one or more BUFR messages from the DX BUFR tables information associated with a given BUFR f...
                                                        Definition: dxtable.F90:850
                                                        +
                                                        recursive subroutine closbf(lunit)
                                                        Close the connection between logical unit lunit and the NCEPLIBS-bufr software.
                                                        +
                                                        recursive subroutine openbf(lunit, io, lundx)
                                                        Connect a new file to the NCEPLIBS-bufr software for input or output operations, or initialize the li...
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/arallocc_8c.html b/previous_versions/v12.1.0/arallocc_8c.html new file mode 100644 index 000000000..a5a6fb023 --- /dev/null +++ b/previous_versions/v12.1.0/arallocc_8c.html @@ -0,0 +1,206 @@ + + + + + + + +NCEPLIBS-bufr: arallocc.c File Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        arallocc.c File Reference
                                                        +
                                                        +
                                                        + +

                                                        Allocate or deallocate C language arrays. +More...

                                                        +
                                                        #include "bufrlib.h"
                                                        +#include "cread.h"
                                                        +#include "mstabs.h"
                                                        +
                                                        +

                                                        Go to the source code of this file.

                                                        + + + + + +

                                                        +Macros

                                                        #define IN_ARALLOCC
                                                         Macro to control whether certain variables are explicitly declared or referenced as extern. More...
                                                         
                                                        + + + + + + + +

                                                        +Functions

                                                        void arallocc (void)
                                                         Dynamically allocate C language arrays. More...
                                                         
                                                        void ardllocc (void)
                                                         Free all memory that was dynamically allocated during a previous call to subroutine arallocc(). More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Allocate or deallocate C language arrays.

                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2014-12-04
                                                        + +

                                                        Definition in file arallocc.c.

                                                        +

                                                        Macro Definition Documentation

                                                        + +

                                                        ◆ IN_ARALLOCC

                                                        + +
                                                        +
                                                        + + + + +
                                                        #define IN_ARALLOCC
                                                        +
                                                        + +

                                                        Macro to control whether certain variables are explicitly declared or referenced as extern.

                                                        + +

                                                        Definition at line 9 of file arallocc.c.

                                                        + +
                                                        +
                                                        +

                                                        Function Documentation

                                                        + +

                                                        ◆ arallocc()

                                                        + +
                                                        +
                                                        + + + + + + + + +
                                                        void arallocc (void )
                                                        +
                                                        + +

                                                        Dynamically allocate C language arrays.

                                                        +

                                                        This subroutine is called internally during the first call to subroutine openbf() from an application program, in order to dynamically allocate internal C language arrays based on parameter values set during one or more previous calls to function isetprm().

                                                        +

                                                        All memory allocated within this subroutine can be freed via a subsequent call to subroutine exitbufr().

                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2014-12-04
                                                        + +

                                                        Definition at line 29 of file arallocc.c.

                                                        + +

                                                        References bort_f(), cbbw_c, cbelem_c, cbmnem_c, cbscl_c, cbsref_c, cbunit_c, cdmnem_c, cdseq_c, iafpk, ibfxyn_c, idefxy_c, idfxyn_c, igetprm_f(), lstpos, ndelem_c, and pb.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ ardllocc()

                                                        + +
                                                        +
                                                        + + + + + + + + +
                                                        void ardllocc (void )
                                                        +
                                                        + +

                                                        Free all memory that was dynamically allocated during a previous call to subroutine arallocc().

                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2014-12-04
                                                        + +

                                                        Definition at line 90 of file arallocc.c.

                                                        + +

                                                        References cbbw_c, cbelem_c, cbmnem_c, cbscl_c, cbsref_c, cbunit_c, cdmnem_c, cdseq_c, iafpk, ibfxyn_c, idefxy_c, idfxyn_c, lstpos, ndelem_c, and pb.

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/arallocc_8c.js b/previous_versions/v12.1.0/arallocc_8c.js new file mode 100644 index 000000000..4f52cf6f2 --- /dev/null +++ b/previous_versions/v12.1.0/arallocc_8c.js @@ -0,0 +1,6 @@ +var arallocc_8c = +[ + [ "IN_ARALLOCC", "arallocc_8c.html#a99a030277b9ff412087d1e599de3f730", null ], + [ "arallocc", "arallocc_8c.html#a98efd59b32b1d2ed2c060d2564824e28", null ], + [ "ardllocc", "arallocc_8c.html#ac283516a1391fee0635b01beffdad7cb", null ] +]; \ No newline at end of file diff --git a/previous_versions/v12.1.0/arallocc_8c_source.html b/previous_versions/v12.1.0/arallocc_8c_source.html new file mode 100644 index 000000000..b32887331 --- /dev/null +++ b/previous_versions/v12.1.0/arallocc_8c_source.html @@ -0,0 +1,207 @@ + + + + + + + +NCEPLIBS-bufr: arallocc.c Source File + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        +
                                                        arallocc.c
                                                        +
                                                        +
                                                        +Go to the documentation of this file.
                                                        1 
                                                        +
                                                        6 #include "bufrlib.h"
                                                        +
                                                        7 
                                                        +
                                                        9 #define IN_ARALLOCC
                                                        +
                                                        10 
                                                        +
                                                        11 #include "cread.h"
                                                        +
                                                        12 #include "mstabs.h"
                                                        +
                                                        13 
                                                        +
                                                        28 void
                                                        +
                                                        29 arallocc(void)
                                                        +
                                                        30 {
                                                        +
                                                        31  char brtstr[50] = "BUFRLIB: ARALLOCC FAILED ALLOCATING";
                                                        +
                                                        32 
                                                        +
                                                        33  int nfiles;
                                                        +
                                                        34 
                                                        +
                                                        35  int mxmtbb;
                                                        +
                                                        36  int mxmtbd;
                                                        +
                                                        37  int maxcd;
                                                        +
                                                        38  int mxnaf;
                                                        +
                                                        39 
                                                        +
                                                        40  /* cread arrays */
                                                        +
                                                        41 
                                                        +
                                                        42  nfiles = igetprm_f("NFILES");
                                                        +
                                                        43 
                                                        +
                                                        44  if (!(pb = malloc((nfiles+1) * sizeof(FILE *)))) bort_f(brtstr);
                                                        +
                                                        45 
                                                        +
                                                        46  if (!(lstpos = malloc((nfiles+1) * sizeof(fpos_t)))) bort_f(brtstr);
                                                        +
                                                        47 
                                                        +
                                                        48  /* mstabs arrays */
                                                        +
                                                        49 
                                                        +
                                                        50  mxmtbb = igetprm_f("MXMTBB");
                                                        +
                                                        51  mxmtbd = igetprm_f("MXMTBD");
                                                        +
                                                        52  maxcd = igetprm_f("MAXCD");
                                                        +
                                                        53  mxnaf = igetprm_f("MXNAF");
                                                        +
                                                        54 
                                                        +
                                                        55  if (!(ibfxyn_c = malloc(mxmtbb * sizeof(int)))) bort_f(brtstr);
                                                        +
                                                        56 
                                                        +
                                                        57  if (!(cbscl_c = malloc(mxmtbb * 4 * sizeof(char)))) bort_f(brtstr);
                                                        +
                                                        58 
                                                        +
                                                        59  if (!(cbsref_c = malloc(mxmtbb * 12 * sizeof(char)))) bort_f(brtstr);
                                                        +
                                                        60 
                                                        +
                                                        61  if (!(cbbw_c = malloc(mxmtbb * 4 * sizeof(char)))) bort_f(brtstr);
                                                        +
                                                        62 
                                                        +
                                                        63  if (!(cbunit_c = malloc(mxmtbb * 24 * sizeof(char)))) bort_f(brtstr);
                                                        +
                                                        64 
                                                        +
                                                        65  if (!(cbmnem_c = malloc(mxmtbb * 8 * sizeof(char)))) bort_f(brtstr);
                                                        +
                                                        66 
                                                        +
                                                        67  if (!(cbelem_c = malloc(mxmtbb * 120 * sizeof(char)))) bort_f(brtstr);
                                                        +
                                                        68 
                                                        +
                                                        69  if (!(idfxyn_c = malloc(mxmtbd * sizeof(int)))) bort_f(brtstr);
                                                        +
                                                        70 
                                                        +
                                                        71  if (!(cdseq_c = malloc(mxmtbd * 120 * sizeof(char)))) bort_f(brtstr);
                                                        +
                                                        72 
                                                        +
                                                        73  if (!(cdmnem_c = malloc(mxmtbd * 8 * sizeof(char)))) bort_f(brtstr);
                                                        +
                                                        74 
                                                        +
                                                        75  if (!(ndelem_c = malloc(mxmtbd * sizeof(int)))) bort_f(brtstr);
                                                        +
                                                        76 
                                                        +
                                                        77  if (!(idefxy_c = malloc(mxmtbd * maxcd * sizeof(int)))) bort_f(brtstr);
                                                        +
                                                        78 
                                                        +
                                                        79  if (!(iafpk = malloc(mxnaf * sizeof(int)))) bort_f(brtstr);
                                                        +
                                                        80 }
                                                        +
                                                        81 
                                                        +
                                                        89 void
                                                        +
                                                        90 ardllocc(void)
                                                        +
                                                        91 {
                                                        +
                                                        92  /* cread arrays */
                                                        +
                                                        93 
                                                        +
                                                        94  free( pb );
                                                        +
                                                        95  free( lstpos );
                                                        +
                                                        96 
                                                        +
                                                        97  /* mstabs arrays */
                                                        +
                                                        98 
                                                        +
                                                        99  free( ibfxyn_c );
                                                        +
                                                        100  free( cbscl_c );
                                                        +
                                                        101  free( cbsref_c );
                                                        +
                                                        102  free( cbbw_c );
                                                        +
                                                        103  free( cbunit_c );
                                                        +
                                                        104  free( cbmnem_c );
                                                        +
                                                        105  free( cbelem_c );
                                                        +
                                                        106  free( idfxyn_c );
                                                        +
                                                        107  free( cdseq_c );
                                                        +
                                                        108  free( cdmnem_c );
                                                        +
                                                        109  free( ndelem_c );
                                                        +
                                                        110  free( idefxy_c );
                                                        +
                                                        111  free( iafpk );
                                                        +
                                                        112 }
                                                        +
                                                        void arallocc(void)
                                                        Dynamically allocate C language arrays.
                                                        Definition: arallocc.c:29
                                                        +
                                                        void ardllocc(void)
                                                        Free all memory that was dynamically allocated during a previous call to subroutine arallocc().
                                                        Definition: arallocc.c:90
                                                        +
                                                        int igetprm_f(char *cprmnm)
                                                        Get the current value of a parameter.
                                                        +
                                                        Enable a number of NCEPLIBS-bufr subprograms to be called from within the C part of the library.
                                                        +
                                                        void bort_f(char *errstr)
                                                        Log one error message and abort application program.
                                                        +
                                                        Declare variables for reading or writing BUFR messages via a C language interface.
                                                        +
                                                        FILE ** pb
                                                        File pointers.
                                                        +
                                                        fpos_t * lstpos
                                                        Byte positions of last successful reads from files corresponding to pb, for files that were opened fo...
                                                        +
                                                        Declare variables for internal storage of master Table B and Table D entries.
                                                        +
                                                        int * idefxy_c
                                                        WMO bit-wise representations of child descriptors for master Table D sequences; copied from Fortran i...
                                                        +
                                                        char(* cbsref_c)[12]
                                                        Master Table B reference values; copied from Fortran cbsref array.
                                                        +
                                                        char(* cbelem_c)[120]
                                                        Master Table B element names; copied from Fortran cbelem array.
                                                        +
                                                        int * idfxyn_c
                                                        WMO bit-wise representations of master Table D FXY numbers; copied from Fortran idfxyn array.
                                                        +
                                                        char(* cdmnem_c)[8]
                                                        Master Table D mnemonics; copied from Fortran cdmnem array.
                                                        +
                                                        char(* cdseq_c)[120]
                                                        Master Table D sequence names; copied from Fortran cdseq array.
                                                        +
                                                        char(* cbscl_c)[4]
                                                        Master Table B scale factors; copied from Fortran cbscl array.
                                                        +
                                                        char(* cbunit_c)[24]
                                                        Master Table B units; copied from Fortran cbunit array.
                                                        +
                                                        char(* cbmnem_c)[8]
                                                        Master Table B mnemonics; copied from Fortran cbmnem array.
                                                        +
                                                        char(* cbbw_c)[4]
                                                        Master Table B bit widths; copied from Fortran cbbw array.
                                                        +
                                                        int * iafpk
                                                        WMO bit-wise representations of associated fields within master Table D sequences.
                                                        +
                                                        int * ibfxyn_c
                                                        WMO bit-wise representations of master Table B FXY numbers; copied from Fortran ibfxyn array.
                                                        +
                                                        int * ndelem_c
                                                        Number of child descriptors for master Table D sequences; copied from Fortran ndelem array.
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/arallocf_8F90.html b/previous_versions/v12.1.0/arallocf_8F90.html new file mode 100644 index 000000000..6b3c6e1ae --- /dev/null +++ b/previous_versions/v12.1.0/arallocf_8F90.html @@ -0,0 +1,359 @@ + + + + + + + +NCEPLIBS-bufr: arallocf.F90 File Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        arallocf.F90 File Reference
                                                        +
                                                        +
                                                        + +

                                                        Allocate or deallocate Fortran language arrays. +More...

                                                        + +

                                                        Go to the source code of this file.

                                                        + + + + + + + + + + + + + + + + + +

                                                        +Functions/Subroutines

                                                        subroutine arallocf
                                                         Dynamically allocate Fortran language arrays. More...
                                                         
                                                        subroutine ardllocf
                                                         Free all memory that was dynamically allocated during a previous call to subroutine arallocf(). More...
                                                         
                                                        subroutine exitbufr
                                                         Free all dynamically-allocated memory, close all logical units that are open within the NCEPLIBS-bufr software, and reset the library to all of its default settings as though it had never been called. More...
                                                         
                                                        integer function igetprm (cprmnm)
                                                         Return the current value of a parameter used for allocating one or more internal arrays within the NCEPLIBS-bufr software. More...
                                                         
                                                        recursive integer function isetprm (cprmnm, ipval)
                                                         Set a specified parameter to a specified value for use in dynamically allocating one or more internal arrays within the NCEPLIBS-bufr software. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Allocate or deallocate Fortran language arrays.

                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2014-12-04
                                                        + +

                                                        Definition in file arallocf.F90.

                                                        +

                                                        Function/Subroutine Documentation

                                                        + +

                                                        ◆ arallocf()

                                                        + +
                                                        +
                                                        + + + + +
                                                        subroutine arallocf
                                                        +
                                                        + +

                                                        Dynamically allocate Fortran language arrays.

                                                        +

                                                        This subroutine is called internally during the first call to subroutine openbf() from an application program, in order to dynamically allocate internal Fortran language arrays based on parameter values set during one or more previous calls to function isetprm().

                                                        +

                                                        All memory allocated within this subroutine can be freed via a subsequent call to subroutine exitbufr().

                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2014-12-04
                                                        + +

                                                        Definition at line 18 of file arallocf.F90.

                                                        + +

                                                        References bort(), moda_mstabs::cbbw, moda_mstabs::cbelem, moda_mstabs::cbmnem, moda_mstabs::cbscl, moda_mstabs::cbsref, moda_mstabs::cbunit, moda_mstabs::cdmnem, moda_s3list::cds3, moda_mstabs::cdseq, moda_rdmtb::ceelem, moda_h4wlc::chh4wlc, moda_rdmtb::cmdscb, moda_rdmtb::cmdscd, moda_s01cm::cmnem, moda_dscach::cnem, moda_rlccmn::crtag, moda_bitmaps::ctco, errwrt(), moda_bitbuf::ibay, moda_mstabs::ibfxyn, moda_tables::ibt, moda_bitmaps::ibtmse, moda_msgmem::icdxts, moda_msgcwd::idate, moda_dscach::idcach, moda_mstabs::idefxy, moda_mstabs::idfxyn, moda_tababd::idna, moda_tababd::idnb, moda_tababd::idnd, moda_idrdm::idrdm, moda_s3list::ids3, moda_rdmtb::iefxyn, moda_nrv203::ienrv, moda_msgmem::ifdxts, moda_msgcwd::inode, moda_nrv203::inodnrv, moda_bitmaps::inodtamc, moda_bitmaps::inodtco, moda_usrint::inv, moda_stbfr::iolun, moda_stbfr::iomsg, moda_msgmem::ipdxm, moda_msgmem::ipmsgs, moda_rlccmn::irbit, moda_tables::irf, moda_rlccmn::irnch, moda_nmikrp::irp, moda_tables::isc, moda_sc3bfr::isc3, moda_stcode::iscodes, moda_tables::iseq, moda_nrv203::isnrv, moda_bitmaps::istbtm, moda_bitmaps::iszbtm, moda_ivttmp::itmp, moda_tables::itp, moda_comprx::ityp, moda_usrtmp::iutmp, moda_ival::ival, moda_s01cm::ivmnem, moda_comprx::iwid, moda_bufrsr::jbay, moda_comprx::jlnode, moda_tables::jmpb, moda_tables::jseq, moda_bufrsr::jsr, moda_tables::jump, moda_comprx::kbit, moda_comprx::kmax, moda_comprx::kmin, moda_comprx::kmis, moda_tables::knt, moda_tables::knti, moda_nmikrp::krp, moda_tables::link, moda_h4wlc::luh4wlc, moda_ufbcpl::luncpy, moda_lushr::lus, moda_comprs::matx, moda_bitbuf::mbay, moda_usrbit::mbit, moda_bitbuf::mbyt, moda_msgmem::mdx, moda_mgwa::mgwa, moda_mgwb::mgwb, moda_bufrmg::msglen, moda_msglim::msglim, moda_msgmem::msgp, moda_msgmem::msgs, moda_bufrmg::msgtxt, moda_unptyp::msgunp, moda_msgcwd::msub, moda_tababd::mtab, moda_msgmem::mxdxm, moda_msgmem::mxdxw, moda_usrbit::nbit, moda_bitmaps::nbtmse, moda_dscach::ndc, moda_mstabs::ndelem, moda_nmikrp::nem, moda_msgcwd::nmsg, moda_usrint::nrfelm, moda_nrv203::nrv, moda_msgcwd::nsub, moda_tababd::ntba, moda_tababd::ntbb, moda_tababd::ntbd, moda_bitmaps::ntco, moda_nulbfr::null, moda_usrint::nval, moda_h4wlc::sth4wlc, moda_tababd::taba, moda_tababd::tabb, moda_tababd::tabd, moda_tables::tag, moda_nrv203::tagnrv, moda_sc3bfr::tamnem, moda_ivttmp::ttmp, moda_tables::typ, moda_usrint::val, moda_tables::vali, moda_ivttmp::vtmp, moda_usrtmp::vutmp, and moda_xtab::xtab.

                                                        + +

                                                        Referenced by openbf().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ ardllocf()

                                                        + +
                                                        +
                                                        + + + + +
                                                        subroutine ardllocf
                                                        +
                                                        + +

                                                        Free all memory that was dynamically allocated during a previous call to subroutine arallocf().

                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2014-12-04
                                                        + +

                                                        Definition at line 592 of file arallocf.F90.

                                                        + +

                                                        References moda_comprs::catx, moda_mstabs::cbbw, moda_mstabs::cbelem, moda_mstabs::cbmnem, moda_mstabs::cbscl, moda_mstabs::cbsref, moda_mstabs::cbunit, moda_mstabs::cdmnem, moda_s3list::cds3, moda_mstabs::cdseq, moda_rdmtb::ceelem, moda_h4wlc::chh4wlc, moda_rdmtb::cmdscb, moda_rdmtb::cmdscd, moda_s01cm::cmnem, moda_dscach::cnem, moda_rlccmn::crtag, moda_comprx::cstr, moda_bitmaps::ctco, moda_bitbuf::ibay, moda_mstabs::ibfxyn, moda_tables::ibt, moda_bitmaps::ibtmse, moda_msgmem::icdxts, moda_msgcwd::idate, moda_dscach::idcach, moda_mstabs::idefxy, moda_mstabs::idfxyn, moda_tababd::idna, moda_tababd::idnb, moda_tababd::idnd, moda_idrdm::idrdm, moda_s3list::ids3, moda_rdmtb::iefxyn, moda_nrv203::ienrv, moda_msgmem::ifdxts, moda_msgcwd::inode, moda_nrv203::inodnrv, moda_bitmaps::inodtamc, moda_bitmaps::inodtco, moda_usrint::inv, moda_stbfr::iolun, moda_stbfr::iomsg, moda_msgmem::ipdxm, moda_msgmem::ipmsgs, moda_rlccmn::irbit, moda_tables::irf, moda_rlccmn::irnch, moda_nmikrp::irp, moda_tables::isc, moda_sc3bfr::isc3, moda_stcode::iscodes, moda_tables::iseq, moda_nrv203::isnrv, moda_bitmaps::istbtm, moda_bitmaps::iszbtm, moda_ivttmp::itmp, moda_tables::itp, moda_comprx::ityp, moda_usrtmp::iutmp, moda_ival::ival, moda_s01cm::ivmnem, moda_comprx::iwid, moda_bufrsr::jbay, moda_comprx::jlnode, moda_tables::jmpb, moda_tables::jseq, moda_bufrsr::jsr, moda_tables::jump, moda_comprx::kbit, moda_comprx::kmax, moda_comprx::kmin, moda_comprx::kmis, moda_tables::knt, moda_tables::knti, moda_nmikrp::krp, moda_tables::link, moda_h4wlc::luh4wlc, moda_ufbcpl::luncpy, moda_lushr::lus, moda_comprs::matx, moda_bitbuf::mbay, moda_usrbit::mbit, moda_bitbuf::mbyt, moda_msgmem::mdx, moda_mgwa::mgwa, moda_mgwb::mgwb, moda_bufrmg::msglen, moda_msglim::msglim, moda_msgmem::msgp, moda_msgmem::msgs, moda_bufrmg::msgtxt, moda_unptyp::msgunp, moda_msgcwd::msub, moda_tababd::mtab, moda_usrbit::nbit, moda_bitmaps::nbtmse, moda_dscach::ndc, moda_mstabs::ndelem, moda_nmikrp::nem, moda_msgcwd::nmsg, moda_usrint::nrfelm, moda_nrv203::nrv, moda_msgcwd::nsub, moda_tababd::ntba, moda_tababd::ntbb, moda_tababd::ntbd, moda_bitmaps::ntco, moda_nulbfr::null, moda_usrint::nval, moda_h4wlc::sth4wlc, moda_tababd::taba, moda_tababd::tabb, moda_tababd::tabd, moda_tables::tag, moda_nrv203::tagnrv, moda_sc3bfr::tamnem, moda_ivttmp::ttmp, moda_tables::typ, moda_usrint::val, moda_tables::vali, moda_ivttmp::vtmp, moda_usrtmp::vutmp, and moda_xtab::xtab.

                                                        + +

                                                        Referenced by exitbufr().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ exitbufr()

                                                        + +
                                                        +
                                                        + + + + +
                                                        subroutine exitbufr
                                                        +
                                                        + +

                                                        Free all dynamically-allocated memory, close all logical units that are open within the NCEPLIBS-bufr software, and reset the library to all of its default settings as though it had never been called.

                                                        +
                                                        Remarks
                                                          +
                                                        • Calling this subroutine allows an application program to potentially resize arrays and reallocate memory all over again with a new subsequent series of calls to subroutines isetprm() and openbf(). However, if and when this subroutine is called, there is no longer any internal memory available within the NCEPLIBS-bufr software, and the remainder of the library becomes essentially unusable within the application program, unless and until subroutine openbf() is called once again to dynamically allocate new array space. This may be a useful capability for application programs that are finished with using the NCEPLIBS-bufr software and wish to move on to other unrelated tasks without continuing to tie up all of the allocated memory space within the library. Otherwise, and unless there's a need to change parameter sizes following the first call to subroutine openbf(), then there's no need to ever call this subroutine within an application program, since all allocated memory will automatically get freed anyway by the operating system once the application program terminates.
                                                        • +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2015-03-02
                                                        + +

                                                        Definition at line 900 of file arallocf.F90.

                                                        + +

                                                        References ardllocf(), moda_tablef::cdmf, closbf(), moda_stbfr::iolun, and moda_s01cm::ns01v.

                                                        + +

                                                        Referenced by bufr_c2f_interface::exitbufr_c().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ igetprm()

                                                        + +
                                                        +
                                                        + + + + + + + + +
                                                        integer function igetprm (character*(*), intent(in) cprmnm)
                                                        +
                                                        + +

                                                        Return the current value of a parameter used for allocating one or more internal arrays within the NCEPLIBS-bufr software.

                                                        +
                                                        Parameters
                                                        + + +
                                                        cprmnm- Parameter
                                                          +
                                                        • 'MXMSGL' = Maximum length (in bytes) of a BUFR message
                                                        • +
                                                        • 'MAXSS' = Maximum number of data values in an uncompressed BUFR subset
                                                        • +
                                                        • 'MXCDV' = Maximum number of data values that can be written into a compressed BUFR subset
                                                        • +
                                                        • 'MXLCC' = Maximum length (in bytes) of a character string that can be written into a compressed BUFR subset
                                                        • +
                                                        • 'MXCSB' = Maximum number of subsets that can be written into a compressed BUFR message
                                                        • +
                                                        • 'NFILES' = Maximum number of BUFR files that can be accessed for reading or writing at any one time
                                                        • +
                                                        • 'MAXTBA' = Maximum number of entries in internal BUFR Table A per BUFR file
                                                        • +
                                                        • 'MAXTBB' = Maximum number of entries in internal BUFR Table B per BUFR file
                                                        • +
                                                        • 'MAXTBD' = Maximum number of entries in internal BUFR Table D per BUFR file
                                                        • +
                                                        • 'MAXMEM' = Maximum number of bytes that can be used to store BUFR messages in internal memory
                                                        • +
                                                        • 'MAXMSG' = Maximum number of BUFR messages that can be stored in internal memory
                                                        • +
                                                        • 'MXDXTS' = Maximum number of dictionary tables that can be stored for use with BUFR messages in internal memory
                                                        • +
                                                        • 'MXMTBB' = Maximum number of master Table B entries
                                                        • +
                                                        • 'MXMTBD' = Maximum number of master Table D entries
                                                        • +
                                                        • 'MXMTBF' = Maximum number of master Code/Flag entries
                                                        • +
                                                        • 'MAXCD' = Maximum number of child descriptors in a Table D descriptor sequence definition
                                                        • +
                                                        • 'MAXJL' = Maximum number of entries in the internal jump/link table
                                                        • +
                                                        • 'MXS01V' = Maximum number of default Section 0 or Section 1 values that can be overwritten within an output BUFR message
                                                        • +
                                                        • 'MXBTM' = Maximum number of bitmaps that can be stored internally for a BUFR subset
                                                        • +
                                                        • 'MXBTMSE' = Maximum number of entries that can be set within a bitmap
                                                        • +
                                                        • 'MXTAMC' = Maximum number of Table A mnemonics in the internal jump/link table which contain at least one Table C operator with XX >= 21 in their subset definition
                                                        • +
                                                        • 'MXTCO' = Maximum number of Table C operators with XX >= 21 in the subset definition of a Table A mnemonic
                                                        • +
                                                        • 'MXNRV' = Maximum number of 2-03 reference values in the internal jump/link table
                                                        • +
                                                        • 'MXRST' = Maximum number of long character strings that can be read from a compressed subset
                                                        • +
                                                        • 'MXH4WLC' = Maximum number of long character strings that can be stored internally
                                                        • +
                                                        • 'MXCNEM' = Maximum number of Table A entries that can be cached during Section 3 decoding of BUFR messages
                                                        • +
                                                        • 'MAXNC' = Maximum number of descriptors within Section 3 of a BUFR message
                                                        • +
                                                        • 'MXNAF' = Maximum number of associated fields that can be in effect at any given time for a Table B descriptor
                                                        • +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        Returns
                                                        igetprm - Value of cprmnm
                                                          +
                                                        • -1 Unknown cprmnm
                                                        • +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2014-12-04
                                                        + +

                                                        Definition at line 1113 of file arallocf.F90.

                                                        + +

                                                        References errwrt().

                                                        + +

                                                        Referenced by bufr_c2f_interface::igetprm_c().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ isetprm()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        recursive integer function isetprm (character*(*), intent(in) cprmnm,
                                                        integer, intent(in) ipval 
                                                        )
                                                        +
                                                        + +

                                                        Set a specified parameter to a specified value for use in dynamically allocating one or more internal arrays within the NCEPLIBS-bufr software.

                                                        +

                                                        A separate call to this function must be made for each parameter that is to be set to a customized value, and all such calls must be made prior to the first call to subroutine openbf() from within an application program, because that is when all internal arrays are dynamically allocated based on the parameter values in effect at the time. Otherwise, if this function is never called for a particular parameter, then an internal default value for that parameter is used instead.

                                                        +
                                                        Parameters
                                                        + + + +
                                                        cprmnm- Parameter to be changed from its internal default value:
                                                          +
                                                        • 'MXMSGL' = Maximum length (in bytes) of a BUFR message
                                                        • +
                                                        • 'MAXSS' = Maximum number of data values in an uncompressed BUFR subset
                                                        • +
                                                        • 'MXCDV' = Maximum number of data values that can be written into a compressed BUFR subset
                                                        • +
                                                        • 'MXLCC' = Maximum length (in bytes) of a character string that can be written into a compressed BUFR subset
                                                        • +
                                                        • 'MXCSB' = Maximum number of subsets that can be written into a compressed BUFR message
                                                        • +
                                                        • 'NFILES' = Maximum number of BUFR files that can be accessed for reading or writing at any one time
                                                        • +
                                                        • 'MAXTBA' = Maximum number of entries in internal BUFR Table A per BUFR file
                                                        • +
                                                        • 'MAXTBB' = Maximum number of entries in internal BUFR Table B per BUFR file
                                                        • +
                                                        • 'MAXTBD' = Maximum number of entries in internal BUFR Table D per BUFR file
                                                        • +
                                                        • 'MAXMEM' = Maximum number of bytes that can be used to store BUFR messages in internal memory
                                                        • +
                                                        • 'MAXMSG' = Maximum number of BUFR messages that can be stored in internal memory
                                                        • +
                                                        • 'MXDXTS' = Maximum number of dictionary tables that can be stored for use with BUFR messages in internal memory
                                                        • +
                                                        • 'MXMTBB' = Maximum number of master Table B entries
                                                        • +
                                                        • 'MXMTBD' = Maximum number of master Table D entries
                                                        • +
                                                        • 'MXMTBF' = Maximum number of master Code/Flag entries
                                                        • +
                                                        • 'MAXCD' = Maximum number of child descriptors in a Table D descriptor sequence definition
                                                        • +
                                                        • 'MAXJL' = Maximum number of entries in the internal jump/link table
                                                        • +
                                                        • 'MXS01V' = Maximum number of default Section 0 or Section 1 values that can be overwritten within an output BUFR message
                                                        • +
                                                        • 'MXBTM' = Maximum number of bitmaps that can be stored internally for a BUFR subset
                                                        • +
                                                        • 'MXBTMSE' = Maximum number of entries that can be set within a bitmap
                                                        • +
                                                        • 'MXTAMC' = Maximum number of Table A mnemonics in the internal jump/link table which contain at least one Table C operator with XX >= 21 in their subset definition
                                                        • +
                                                        • 'MXTCO' = Maximum number of Table C operators with XX >= 21 in the subset definition of a Table A mnemonic
                                                        • +
                                                        • 'MXNRV' = Maximum number of 2-03 reference values in the internal jump/link table
                                                        • +
                                                        • 'MXRST' = Maximum number of long character strings that can be read from a compressed subset
                                                        • +
                                                        • 'MXH4WLC' = Maximum number of long character strings that can be stored internally
                                                        • +
                                                        • 'MXCNEM' = Maximum number of Table A entries that can be cached during Section 3 decoding of BUFR messages
                                                        • +
                                                        • 'MAXNC' = Maximum number of descriptors within Section 3 of a BUFR message
                                                        • +
                                                        • 'MXNAF' = Maximum number of associated fields that can be in effect at any given time for a Table B descriptor
                                                        • +
                                                        +
                                                        ipval- Value to be set for cprmnm
                                                        +
                                                        +
                                                        +
                                                        Returns
                                                        isetprm - return code:
                                                          +
                                                        • 0 = normal return
                                                        • +
                                                        • -1 = Unknown cprmnm
                                                        • +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2014-12-04
                                                        + +

                                                        Definition at line 979 of file arallocf.F90.

                                                        + +

                                                        References errwrt(), and x84().

                                                        + +

                                                        Referenced by bufr_c2f_interface::isetprm_c().

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/arallocf_8F90.js b/previous_versions/v12.1.0/arallocf_8F90.js new file mode 100644 index 000000000..fd03b5fd7 --- /dev/null +++ b/previous_versions/v12.1.0/arallocf_8F90.js @@ -0,0 +1,8 @@ +var arallocf_8F90 = +[ + [ "arallocf", "arallocf_8F90.html#a2b64630033a9306be25da1f6b28d913f", null ], + [ "ardllocf", "arallocf_8F90.html#a7b3e4d5498fedd9e94ac45b69fc04b58", null ], + [ "exitbufr", "arallocf_8F90.html#a355f094d616febcea2820cf547cbff8e", null ], + [ "igetprm", "arallocf_8F90.html#a222fe99cf2ad84fe3166a498ef20c9ce", null ], + [ "isetprm", "arallocf_8F90.html#a4a77f5d91e7900692757350632f71ff0", null ] +]; \ No newline at end of file diff --git a/previous_versions/v12.1.0/arallocf_8F90_source.html b/previous_versions/v12.1.0/arallocf_8F90_source.html new file mode 100644 index 000000000..a4db40100 --- /dev/null +++ b/previous_versions/v12.1.0/arallocf_8F90_source.html @@ -0,0 +1,1334 @@ + + + + + + + +NCEPLIBS-bufr: arallocf.F90 Source File + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        +
                                                        arallocf.F90
                                                        +
                                                        +
                                                        +Go to the documentation of this file.
                                                        1 
                                                        +
                                                        5 
                                                        +
                                                        18 subroutine arallocf
                                                        +
                                                        19 
                                                        +
                                                        20  use modv_vars, only: maxcd, maxjl, maxmem, maxmsg, maxss, maxtba, maxtbb, maxtbd, mxbtm, mxbtmse, &
                                                        +
                                                        21  mxcdv, mxcsb, mxdxts, mxlcc, mxmsgl, mxmsgld4, mxmtbb, mxmtbd, mxnrv, mxrst, &
                                                        +
                                                        22  mxs01v, mxtamc, mxtco, mxh4wlc, nfiles, mxcnem, maxnc, maxrcr
                                                        +
                                                        23 
                                                        +
                                                        24  use moda_usrint
                                                        +
                                                        25  use moda_usrbit
                                                        +
                                                        26  use moda_ival
                                                        +
                                                        27  use moda_msgcwd
                                                        +
                                                        28  use moda_stbfr
                                                        +
                                                        29  use moda_ufbcpl
                                                        +
                                                        30  use moda_sc3bfr
                                                        +
                                                        31  use moda_unptyp
                                                        +
                                                        32  use moda_lushr
                                                        +
                                                        33  use moda_nulbfr
                                                        +
                                                        34  use moda_stcode
                                                        +
                                                        35  use moda_idrdm
                                                        +
                                                        36  use moda_xtab
                                                        +
                                                        37  use moda_msglim
                                                        +
                                                        38  use moda_bitbuf
                                                        +
                                                        39  use moda_mgwa
                                                        +
                                                        40  use moda_mgwb
                                                        +
                                                        41  use moda_bufrmg
                                                        +
                                                        42  use moda_bufrsr
                                                        +
                                                        43  use moda_msgmem
                                                        +
                                                        44  use moda_tababd
                                                        +
                                                        45  use moda_tables
                                                        +
                                                        46  use moda_usrtmp
                                                        +
                                                        47  use moda_ivttmp
                                                        +
                                                        48  use moda_comprx
                                                        +
                                                        49  use moda_comprs
                                                        +
                                                        50  use moda_mstabs
                                                        +
                                                        51  use moda_rdmtb
                                                        +
                                                        52  use moda_nmikrp
                                                        +
                                                        53  use moda_s01cm
                                                        +
                                                        54  use moda_bitmaps
                                                        +
                                                        55  use moda_nrv203
                                                        +
                                                        56  use moda_rlccmn
                                                        +
                                                        57  use moda_h4wlc
                                                        +
                                                        58  use moda_dscach
                                                        +
                                                        59  use moda_s3list
                                                        +
                                                        60 
                                                        +
                                                        61  implicit none
                                                        +
                                                        62 
                                                        +
                                                        63  character*80 errstr
                                                        +
                                                        64  character*36 brtstr
                                                        +
                                                        65 
                                                        +
                                                        66  integer iost, iprt
                                                        +
                                                        67 
                                                        +
                                                        68  common /quiet/ iprt
                                                        +
                                                        69 
                                                        +
                                                        70  if ( iprt >= 1 ) then
                                                        +
                                                        71  call errwrt ('++++++++++++++BUFR ARCHIVE LIBRARY+++++++++++++++++')
                                                        +
                                                        72  call errwrt ('BUFRLIB: ARRAYS WILL BE DYNAMICALLY ALLOCATED USING THE FOLLOWING VALUES:')
                                                        +
                                                        73  write ( errstr, '(a,i7)' ) ' MAXSS = ', maxss
                                                        +
                                                        74  call errwrt (errstr)
                                                        +
                                                        75  write ( errstr, '(a,i4)' ) ' NFILES = ', nfiles
                                                        +
                                                        76  call errwrt (errstr)
                                                        +
                                                        77  write ( errstr, '(a,i7)' ) ' MXMSGL = ', mxmsgl
                                                        +
                                                        78  call errwrt (errstr)
                                                        +
                                                        79  write ( errstr, '(a,i5)' ) ' MXDXTS = ', mxdxts
                                                        +
                                                        80  call errwrt (errstr)
                                                        +
                                                        81  write ( errstr, '(a,i7)' ) ' MAXMSG = ', maxmsg
                                                        +
                                                        82  call errwrt (errstr)
                                                        +
                                                        83  write ( errstr, '(a,i9)' ) ' MAXMEM = ', maxmem
                                                        +
                                                        84  call errwrt (errstr)
                                                        +
                                                        85  write ( errstr, '(a,i5)' ) ' MAXTBA = ', maxtba
                                                        +
                                                        86  call errwrt (errstr)
                                                        +
                                                        87  write ( errstr, '(a,i5)' ) ' MAXTBB = ', maxtbb
                                                        +
                                                        88  call errwrt (errstr)
                                                        +
                                                        89  write ( errstr, '(a,i5)' ) ' MAXTBD = ', maxtbd
                                                        +
                                                        90  call errwrt (errstr)
                                                        +
                                                        91  write ( errstr, '(a,i7)' ) ' MAXJL = ', maxjl
                                                        +
                                                        92  call errwrt (errstr)
                                                        +
                                                        93  write ( errstr, '(a,i6)' ) ' MXCDV = ', mxcdv
                                                        +
                                                        94  call errwrt (errstr)
                                                        +
                                                        95  write ( errstr, '(a,i4)' ) ' MXLCC = ', mxlcc
                                                        +
                                                        96  call errwrt (errstr)
                                                        +
                                                        97  write ( errstr, '(a,i6)' ) ' MXCSB = ', mxcsb
                                                        +
                                                        98  call errwrt (errstr)
                                                        +
                                                        99  write ( errstr, '(a,i5)' ) ' MXMTBB = ', mxmtbb
                                                        +
                                                        100  call errwrt (errstr)
                                                        +
                                                        101  write ( errstr, '(a,i5)' ) ' MXMTBD = ', mxmtbd
                                                        +
                                                        102  call errwrt (errstr)
                                                        +
                                                        103  write ( errstr, '(a,i4)' ) ' MAXCD = ', maxcd
                                                        +
                                                        104  call errwrt (errstr)
                                                        +
                                                        105  write ( errstr, '(a,i4)' ) ' MXNRV = ', mxnrv
                                                        +
                                                        106  call errwrt (errstr)
                                                        +
                                                        107  write ( errstr, '(a,i4)' ) ' MXS01V = ', mxs01v
                                                        +
                                                        108  call errwrt (errstr)
                                                        +
                                                        109  write ( errstr, '(a,i4)' ) ' MXTAMC = ', mxtamc
                                                        +
                                                        110  call errwrt (errstr)
                                                        +
                                                        111  write ( errstr, '(a,i4)' ) ' MXTCO = ', mxtco
                                                        +
                                                        112  call errwrt (errstr)
                                                        +
                                                        113  write ( errstr, '(a,i4)' ) ' MXBTM = ', mxbtm
                                                        +
                                                        114  call errwrt (errstr)
                                                        +
                                                        115  write ( errstr, '(a,i4)' ) ' MXBTMSE = ', mxbtmse
                                                        +
                                                        116  call errwrt (errstr)
                                                        +
                                                        117  write ( errstr, '(a,i4)' ) ' MXH4WLC = ', mxh4wlc
                                                        +
                                                        118  call errwrt (errstr)
                                                        +
                                                        119  write ( errstr, '(a,i4)' ) ' MXRST = ', mxrst
                                                        +
                                                        120  call errwrt (errstr)
                                                        +
                                                        121  write ( errstr, '(a,i4)' ) ' MXCNEM = ', mxcnem
                                                        +
                                                        122  call errwrt (errstr)
                                                        +
                                                        123  write ( errstr, '(a,i4)' ) ' MAXNC = ', maxnc
                                                        +
                                                        124  call errwrt (errstr)
                                                        +
                                                        125  call errwrt ('++++++++++++++BUFR ARCHIVE LIBRARY+++++++++++++++++')
                                                        +
                                                        126  end if
                                                        +
                                                        127 
                                                        +
                                                        128  brtstr = 'BUFRLIB: ARALLOCF FAILED ALLOCATING '
                                                        +
                                                        129 
                                                        +
                                                        130  ! moda_usrint arrays.
                                                        +
                                                        131 
                                                        +
                                                        132  allocate( nval(nfiles), stat=iost )
                                                        +
                                                        133  if ( iost /= 0 ) call bort( brtstr // 'NVAL' )
                                                        +
                                                        134 
                                                        +
                                                        135  allocate( inv(maxss,nfiles), stat=iost )
                                                        +
                                                        136  if ( iost /= 0 ) call bort( brtstr // 'INV' )
                                                        +
                                                        137 
                                                        +
                                                        138  allocate( nrfelm(maxss,nfiles), stat=iost )
                                                        +
                                                        139  if ( iost /= 0 ) call bort( brtstr // 'NRFELM' )
                                                        +
                                                        140 
                                                        +
                                                        141  allocate( val(maxss,nfiles), stat=iost )
                                                        +
                                                        142  if ( iost /= 0 ) call bort( brtstr // 'VAL' )
                                                        +
                                                        143 
                                                        +
                                                        144  ! moda_usrbit arrays.
                                                        +
                                                        145 
                                                        +
                                                        146  allocate( nbit(maxss), stat=iost )
                                                        +
                                                        147  if ( iost /= 0 ) call bort( brtstr // 'NBIT' )
                                                        +
                                                        148 
                                                        +
                                                        149  allocate( mbit(maxss), stat=iost )
                                                        +
                                                        150  if ( iost /= 0 ) call bort( brtstr // 'MBIT' )
                                                        +
                                                        151 
                                                        +
                                                        152  ! moda_ival arrays.
                                                        +
                                                        153 
                                                        +
                                                        154  allocate( ival(maxss), stat=iost )
                                                        +
                                                        155  if ( iost /= 0 ) call bort( brtstr // 'IVAL' )
                                                        +
                                                        156 
                                                        +
                                                        157  ! moda_msgcwd arrays.
                                                        +
                                                        158 
                                                        +
                                                        159  allocate( nmsg(nfiles), stat=iost )
                                                        +
                                                        160  if ( iost /= 0 ) call bort( brtstr // 'NMSG' )
                                                        +
                                                        161 
                                                        +
                                                        162  allocate( nsub(nfiles), stat=iost )
                                                        +
                                                        163  if ( iost /= 0 ) call bort( brtstr // 'NSUB' )
                                                        +
                                                        164 
                                                        +
                                                        165  allocate( msub(nfiles), stat=iost )
                                                        +
                                                        166  if ( iost /= 0 ) call bort( brtstr // 'MSUB' )
                                                        +
                                                        167 
                                                        +
                                                        168  allocate( inode(nfiles), stat=iost )
                                                        +
                                                        169  if ( iost /= 0 ) call bort( brtstr // 'INODE' )
                                                        +
                                                        170 
                                                        +
                                                        171  allocate( idate(nfiles), stat=iost )
                                                        +
                                                        172  if ( iost /= 0 ) call bort( brtstr // 'IDATE' )
                                                        +
                                                        173 
                                                        +
                                                        174  ! moda_stbfr arrays.
                                                        +
                                                        175 
                                                        +
                                                        176  allocate( iolun(nfiles), stat=iost )
                                                        +
                                                        177  if ( iost /= 0 ) call bort( brtstr // 'IOLUN' )
                                                        +
                                                        178 
                                                        +
                                                        179  allocate( iomsg(nfiles), stat=iost )
                                                        +
                                                        180  if ( iost /= 0 ) call bort( brtstr // 'IOMSG' )
                                                        +
                                                        181 
                                                        +
                                                        182  ! moda_ufbcpl arrays.
                                                        +
                                                        183 
                                                        +
                                                        184  allocate( luncpy(nfiles), stat=iost )
                                                        +
                                                        185  if ( iost /= 0 ) call bort( brtstr // 'LUNCPY' )
                                                        +
                                                        186 
                                                        +
                                                        187  ! moda_sc3bfr arrays.
                                                        +
                                                        188 
                                                        +
                                                        189  allocate( isc3(nfiles), stat=iost )
                                                        +
                                                        190  if ( iost /= 0 ) call bort( brtstr // 'ISC3' )
                                                        +
                                                        191 
                                                        +
                                                        192  allocate( tamnem(nfiles), stat=iost )
                                                        +
                                                        193  if ( iost /= 0 ) call bort( brtstr // 'TAMNEM' )
                                                        +
                                                        194 
                                                        +
                                                        195  ! moda_unptyp arrays.
                                                        +
                                                        196 
                                                        +
                                                        197  allocate( msgunp(nfiles), stat=iost )
                                                        +
                                                        198  if ( iost /= 0 ) call bort( brtstr // 'MSGUNP' )
                                                        +
                                                        199 
                                                        +
                                                        200  ! moda_lushr arrays.
                                                        +
                                                        201 
                                                        +
                                                        202  allocate( lus(nfiles), stat=iost )
                                                        +
                                                        203  if ( iost /= 0 ) call bort( brtstr // 'LUS' )
                                                        +
                                                        204 
                                                        +
                                                        205  ! moda_nulbfr arrays.
                                                        +
                                                        206 
                                                        +
                                                        207  allocate( null(nfiles), stat=iost )
                                                        +
                                                        208  if ( iost /= 0 ) call bort( brtstr // 'NULL' )
                                                        +
                                                        209 
                                                        +
                                                        210  ! moda_stcode arrays.
                                                        +
                                                        211 
                                                        +
                                                        212  allocate( iscodes(nfiles), stat=iost )
                                                        +
                                                        213  if ( iost /= 0 ) call bort( brtstr // 'ISCODES' )
                                                        +
                                                        214 
                                                        +
                                                        215  ! moda_idrdm arrays.
                                                        +
                                                        216 
                                                        +
                                                        217  allocate( idrdm(nfiles), stat=iost )
                                                        +
                                                        218  if ( iost /= 0 ) call bort( brtstr // 'IDRDM' )
                                                        +
                                                        219 
                                                        +
                                                        220  ! moda_xtab arrays.
                                                        +
                                                        221 
                                                        +
                                                        222  allocate( xtab(nfiles), stat=iost )
                                                        +
                                                        223  if ( iost /= 0 ) call bort( brtstr // 'XTAB' )
                                                        +
                                                        224 
                                                        +
                                                        225  ! moda_msglim arrays.
                                                        +
                                                        226 
                                                        +
                                                        227  allocate( msglim(nfiles), stat=iost )
                                                        +
                                                        228  if ( iost /= 0 ) call bort( brtstr // 'MSGLIM' )
                                                        +
                                                        229 
                                                        +
                                                        230  ! Calculate mxmsgld4 from mxmsgl.
                                                        +
                                                        231 
                                                        +
                                                        232  if ( mod(mxmsgl,4) == 0 ) then
                                                        +
                                                        233  mxmsgld4 = mxmsgl/4
                                                        +
                                                        234  else
                                                        +
                                                        235  mxmsgld4 = mxmsgl/4 + 1
                                                        +
                                                        236  end if
                                                        +
                                                        237 
                                                        +
                                                        238  ! moda_bitbuf arrays.
                                                        +
                                                        239 
                                                        +
                                                        240  allocate( ibay(mxmsgld4), stat=iost )
                                                        +
                                                        241  if ( iost /= 0 ) call bort( brtstr // 'IBAY' )
                                                        +
                                                        242 
                                                        +
                                                        243  allocate( mbyt(nfiles), stat=iost )
                                                        +
                                                        244  if ( iost /= 0 ) call bort( brtstr // 'MBYT' )
                                                        +
                                                        245 
                                                        +
                                                        246  allocate( mbay(mxmsgld4,nfiles), stat=iost )
                                                        +
                                                        247  if ( iost /= 0 ) call bort( brtstr // 'MBAY' )
                                                        +
                                                        248 
                                                        +
                                                        249  ! moda_mgwa arrays.
                                                        +
                                                        250 
                                                        +
                                                        251  allocate( mgwa(mxmsgld4), stat=iost )
                                                        +
                                                        252  if ( iost /= 0 ) call bort( brtstr // 'MGWA' )
                                                        +
                                                        253 
                                                        +
                                                        254  ! moda_mgwb arrays.
                                                        +
                                                        255 
                                                        +
                                                        256  allocate( mgwb(mxmsgld4), stat=iost )
                                                        +
                                                        257  if ( iost /= 0 ) call bort( brtstr // 'MGWB' )
                                                        +
                                                        258 
                                                        +
                                                        259  ! moda_bufrmg arrays.
                                                        +
                                                        260 
                                                        +
                                                        261  allocate( msglen(nfiles), stat=iost )
                                                        +
                                                        262  if ( iost /= 0 ) call bort( brtstr // 'MSGLEN' )
                                                        +
                                                        263  allocate( msgtxt(mxmsgld4,nfiles), stat=iost )
                                                        +
                                                        264  if ( iost /= 0 ) call bort( brtstr // 'MSGTXT' )
                                                        +
                                                        265 
                                                        +
                                                        266  ! moda_bufrsr arrays.
                                                        +
                                                        267 
                                                        +
                                                        268  allocate( jsr(nfiles), stat=iost )
                                                        +
                                                        269  if ( iost /= 0 ) call bort( brtstr // 'JSR' )
                                                        +
                                                        270 
                                                        +
                                                        271  allocate( jbay(mxmsgld4), stat=iost )
                                                        +
                                                        272  if ( iost /= 0 ) call bort( brtstr // 'JBAY' )
                                                        +
                                                        273 
                                                        +
                                                        274  ! Calculate mxdxm and mxdxw from mxdxts and mxmsgld4.
                                                        +
                                                        275 
                                                        +
                                                        276  mxdxm = mxdxts*3
                                                        +
                                                        277  mxdxw = mxdxm*mxmsgld4
                                                        +
                                                        278 
                                                        +
                                                        279  ! moda_msgmem arrays.
                                                        +
                                                        280 
                                                        +
                                                        281  allocate( msgp(0:maxmsg), stat=iost )
                                                        +
                                                        282  if ( iost /= 0 ) call bort( brtstr // 'MSGP' )
                                                        +
                                                        283 
                                                        +
                                                        284  allocate( msgs(maxmem), stat=iost )
                                                        +
                                                        285  if ( iost /= 0 ) call bort( brtstr // 'MSGS' )
                                                        +
                                                        286 
                                                        +
                                                        287  allocate( mdx(mxdxw), stat=iost )
                                                        +
                                                        288  if ( iost /= 0 ) call bort( brtstr // 'MDX' )
                                                        +
                                                        289 
                                                        +
                                                        290  allocate( ipdxm(mxdxm), stat=iost )
                                                        +
                                                        291  if ( iost /= 0 ) call bort( brtstr // 'IPDXM' )
                                                        +
                                                        292 
                                                        +
                                                        293  allocate( ifdxts(mxdxts), stat=iost )
                                                        +
                                                        294  if ( iost /= 0 ) call bort( brtstr // 'ifDXTS' )
                                                        +
                                                        295 
                                                        +
                                                        296  allocate( icdxts(mxdxts), stat=iost )
                                                        +
                                                        297  if ( iost /= 0 ) call bort( brtstr // 'ICDXTS' )
                                                        +
                                                        298 
                                                        +
                                                        299  allocate( ipmsgs(mxdxts), stat=iost )
                                                        +
                                                        300  if ( iost /= 0 ) call bort( brtstr // 'IPMSGS' )
                                                        +
                                                        301 
                                                        +
                                                        302  ! moda_tababd arrays.
                                                        +
                                                        303 
                                                        +
                                                        304  allocate( ntba(0:nfiles), stat=iost )
                                                        +
                                                        305  if ( iost /= 0 ) call bort( brtstr // 'NTBA' )
                                                        +
                                                        306 
                                                        +
                                                        307  allocate( ntbb(0:nfiles), stat=iost )
                                                        +
                                                        308  if ( iost /= 0 ) call bort( brtstr // 'NTBB' )
                                                        +
                                                        309 
                                                        +
                                                        310  allocate( ntbd(0:nfiles), stat=iost )
                                                        +
                                                        311  if ( iost /= 0 ) call bort( brtstr // 'NTBD' )
                                                        +
                                                        312 
                                                        +
                                                        313  allocate( mtab(maxtba,nfiles), stat=iost )
                                                        +
                                                        314  if ( iost /= 0 ) call bort( brtstr // 'MTAB' )
                                                        +
                                                        315 
                                                        +
                                                        316  allocate( idna(maxtba,nfiles,2), stat=iost )
                                                        +
                                                        317  if ( iost /= 0 ) call bort( brtstr // 'IDNA' )
                                                        +
                                                        318 
                                                        +
                                                        319  allocate( idnb(maxtbb,nfiles), stat=iost )
                                                        +
                                                        320  if ( iost /= 0 ) call bort( brtstr // 'IDNB' )
                                                        +
                                                        321 
                                                        +
                                                        322  allocate( idnd(maxtbd,nfiles), stat=iost )
                                                        +
                                                        323  if ( iost /= 0 ) call bort( brtstr // 'IDND' )
                                                        +
                                                        324 
                                                        +
                                                        325  allocate( taba(maxtba,nfiles), stat=iost )
                                                        +
                                                        326  if ( iost /= 0 ) call bort( brtstr // 'TABA' )
                                                        +
                                                        327 
                                                        +
                                                        328  allocate( tabb(maxtbb,nfiles), stat=iost )
                                                        +
                                                        329  if ( iost /= 0 ) call bort( brtstr // 'TABB' )
                                                        +
                                                        330 
                                                        +
                                                        331  allocate( tabd(maxtbd,nfiles), stat=iost )
                                                        +
                                                        332  if ( iost /= 0 ) call bort( brtstr // 'TABD' )
                                                        +
                                                        333 
                                                        +
                                                        334  ! moda_tables arrays.
                                                        +
                                                        335 
                                                        +
                                                        336  allocate( tag(maxjl), stat=iost )
                                                        +
                                                        337  if ( iost /= 0 ) call bort( brtstr // 'TAG' )
                                                        +
                                                        338 
                                                        +
                                                        339  allocate( typ(maxjl), stat=iost )
                                                        +
                                                        340  if ( iost /= 0 ) call bort( brtstr // 'TYP' )
                                                        +
                                                        341 
                                                        +
                                                        342  allocate( knt(maxjl), stat=iost )
                                                        +
                                                        343  if ( iost /= 0 ) call bort( brtstr // 'KNT' )
                                                        +
                                                        344 
                                                        +
                                                        345  allocate( jump(maxjl), stat=iost )
                                                        +
                                                        346  if ( iost /= 0 ) call bort( brtstr // 'JUMP' )
                                                        +
                                                        347 
                                                        +
                                                        348  allocate( link(maxjl), stat=iost )
                                                        +
                                                        349  if ( iost /= 0 ) call bort( brtstr // 'LINK' )
                                                        +
                                                        350 
                                                        +
                                                        351  allocate( jmpb(maxjl), stat=iost )
                                                        +
                                                        352  if ( iost /= 0 ) call bort( brtstr // 'JMPB' )
                                                        +
                                                        353 
                                                        +
                                                        354  allocate( ibt(maxjl), stat=iost )
                                                        +
                                                        355  if ( iost /= 0 ) call bort( brtstr // 'IBT' )
                                                        +
                                                        356 
                                                        +
                                                        357  allocate( irf(maxjl), stat=iost )
                                                        +
                                                        358  if ( iost /= 0 ) call bort( brtstr // 'IRF' )
                                                        +
                                                        359 
                                                        +
                                                        360  allocate( isc(maxjl), stat=iost )
                                                        +
                                                        361  if ( iost /= 0 ) call bort( brtstr // 'ISC' )
                                                        +
                                                        362 
                                                        +
                                                        363  allocate( itp(maxjl), stat=iost )
                                                        +
                                                        364  if ( iost /= 0 ) call bort( brtstr // 'ITP' )
                                                        +
                                                        365 
                                                        +
                                                        366  allocate( vali(maxjl), stat=iost )
                                                        +
                                                        367  if ( iost /= 0 ) call bort( brtstr // 'VALI' )
                                                        +
                                                        368 
                                                        +
                                                        369  allocate( knti(maxjl), stat=iost )
                                                        +
                                                        370  if ( iost /= 0 ) call bort( brtstr // 'KNTI' )
                                                        +
                                                        371 
                                                        +
                                                        372  allocate( iseq(maxjl,2), stat=iost )
                                                        +
                                                        373  if ( iost /= 0 ) call bort( brtstr // 'ISEQ' )
                                                        +
                                                        374 
                                                        +
                                                        375  allocate( jseq(maxjl), stat=iost )
                                                        +
                                                        376  if ( iost /= 0 ) call bort( brtstr // 'JSEQ' )
                                                        +
                                                        377 
                                                        +
                                                        378  ! moda_usrtmp arrays.
                                                        +
                                                        379 
                                                        +
                                                        380  allocate( iutmp(maxjl,maxrcr), stat=iost )
                                                        +
                                                        381  if ( iost /= 0 ) call bort( brtstr // 'IUTMP' )
                                                        +
                                                        382 
                                                        +
                                                        383  allocate( vutmp(maxjl,maxrcr), stat=iost )
                                                        +
                                                        384  if ( iost /= 0 ) call bort( brtstr // 'VUTMP' )
                                                        +
                                                        385 
                                                        +
                                                        386  ! moda_ivttmp arrays.
                                                        +
                                                        387 
                                                        +
                                                        388  allocate( ttmp(maxjl), stat=iost )
                                                        +
                                                        389  if ( iost /= 0 ) call bort( brtstr // 'TTMP' )
                                                        +
                                                        390 
                                                        +
                                                        391  allocate( itmp(maxjl), stat=iost )
                                                        +
                                                        392  if ( iost /= 0 ) call bort( brtstr // 'ITMP' )
                                                        +
                                                        393 
                                                        +
                                                        394  allocate( vtmp(maxjl), stat=iost )
                                                        +
                                                        395  if ( iost /= 0 ) call bort( brtstr // 'VTMP' )
                                                        +
                                                        396 
                                                        +
                                                        397  ! moda_comprx arrays.
                                                        +
                                                        398 
                                                        +
                                                        399  allocate( kmin(mxcdv), stat=iost )
                                                        +
                                                        400  if ( iost /= 0 ) call bort( brtstr // 'KMIN' )
                                                        +
                                                        401 
                                                        +
                                                        402  allocate( kmax(mxcdv), stat=iost )
                                                        +
                                                        403  if ( iost /= 0 ) call bort( brtstr // 'KMAX' )
                                                        +
                                                        404 
                                                        +
                                                        405  allocate( kmis(mxcdv), stat=iost )
                                                        +
                                                        406  if ( iost /= 0 ) call bort( brtstr // 'KMIS' )
                                                        +
                                                        407 
                                                        +
                                                        408  allocate( kbit(mxcdv), stat=iost )
                                                        +
                                                        409  if ( iost /= 0 ) call bort( brtstr // 'KBIT' )
                                                        +
                                                        410 
                                                        +
                                                        411  allocate( ityp(mxcdv), stat=iost )
                                                        +
                                                        412  if ( iost /= 0 ) call bort( brtstr // 'ITYP' )
                                                        +
                                                        413 
                                                        +
                                                        414  allocate( iwid(mxcdv), stat=iost )
                                                        +
                                                        415  if ( iost /= 0 ) call bort( brtstr // 'IWID' )
                                                        +
                                                        416 
                                                        +
                                                        417  allocate( character*(mxlcc) :: cstr(mxcdv), stat=iost )
                                                        +
                                                        418  if ( iost /= 0 ) call bort( brtstr // 'CSTR' )
                                                        +
                                                        419 
                                                        +
                                                        420  allocate( jlnode(mxcdv), stat=iost )
                                                        +
                                                        421  if ( iost /= 0 ) call bort( brtstr // 'JLNODE' )
                                                        +
                                                        422 
                                                        +
                                                        423  ! moda_comprs arrays.
                                                        +
                                                        424 
                                                        +
                                                        425  allocate( matx(mxcdv,mxcsb), stat=iost )
                                                        +
                                                        426  if ( iost /= 0 ) call bort( brtstr // 'MATX' )
                                                        +
                                                        427 
                                                        +
                                                        428  allocate( character*(mxlcc) :: catx(mxcdv,mxcsb), stat=iost )
                                                        +
                                                        429  if ( iost /= 0 ) call bort( brtstr // 'CATX' )
                                                        +
                                                        430 
                                                        +
                                                        431  ! moda_mstabs arrays.
                                                        +
                                                        432 
                                                        +
                                                        433  allocate( ibfxyn(mxmtbb), stat=iost )
                                                        +
                                                        434  if ( iost /= 0 ) call bort( brtstr // 'IBFXYN' )
                                                        +
                                                        435 
                                                        +
                                                        436  allocate( cbscl(4,mxmtbb), stat=iost )
                                                        +
                                                        437  if ( iost /= 0 ) call bort( brtstr // 'CBSCL' )
                                                        +
                                                        438 
                                                        +
                                                        439  allocate( cbsref(12,mxmtbb), stat=iost )
                                                        +
                                                        440  if ( iost /= 0 ) call bort( brtstr // 'CBSREF' )
                                                        +
                                                        441 
                                                        +
                                                        442  allocate( cbbw(4,mxmtbb), stat=iost )
                                                        +
                                                        443  if ( iost /= 0 ) call bort( brtstr // 'CBBW' )
                                                        +
                                                        444 
                                                        +
                                                        445  allocate( cbunit(24,mxmtbb), stat=iost )
                                                        +
                                                        446  if ( iost /= 0 ) call bort( brtstr // 'CBUNIT' )
                                                        +
                                                        447 
                                                        +
                                                        448  allocate( cbmnem(8,mxmtbb), stat=iost )
                                                        +
                                                        449  if ( iost /= 0 ) call bort( brtstr // 'CBMNEM' )
                                                        +
                                                        450 
                                                        +
                                                        451  allocate( cbelem(120,mxmtbb), stat=iost )
                                                        +
                                                        452  if ( iost /= 0 ) call bort( brtstr // 'CBELEM' )
                                                        +
                                                        453 
                                                        +
                                                        454  allocate( idfxyn(mxmtbd), stat=iost )
                                                        +
                                                        455  if ( iost /= 0 ) call bort( brtstr // 'IDFXYN' )
                                                        +
                                                        456 
                                                        +
                                                        457  allocate( cdseq(120,mxmtbd), stat=iost )
                                                        +
                                                        458  if ( iost /= 0 ) call bort( brtstr // 'CDSEQ' )
                                                        +
                                                        459 
                                                        +
                                                        460  allocate( cdmnem(8,mxmtbd), stat=iost )
                                                        +
                                                        461  if ( iost /= 0 ) call bort( brtstr // 'CDMNEM' )
                                                        +
                                                        462 
                                                        +
                                                        463  allocate( ndelem(mxmtbd), stat=iost )
                                                        +
                                                        464  if ( iost /= 0 ) call bort( brtstr // 'NDELEM' )
                                                        +
                                                        465 
                                                        +
                                                        466  allocate( idefxy(mxmtbd*maxcd), stat=iost )
                                                        +
                                                        467  if ( iost /= 0 ) call bort( brtstr // 'IDEFXY' )
                                                        +
                                                        468 
                                                        +
                                                        469  ! moda_rdmtb arrays.
                                                        +
                                                        470 
                                                        +
                                                        471  allocate( iefxyn(mxmtbd,maxcd), stat=iost )
                                                        +
                                                        472  if ( iost /= 0 ) call bort( brtstr // 'IEFXYN' )
                                                        +
                                                        473 
                                                        +
                                                        474  allocate( cmdscb(mxmtbb), stat=iost )
                                                        +
                                                        475  if ( iost /= 0 ) call bort( brtstr // 'CMDSCB' )
                                                        +
                                                        476 
                                                        +
                                                        477  allocate( cmdscd(mxmtbd), stat=iost )
                                                        +
                                                        478  if ( iost /= 0 ) call bort( brtstr // 'CMDSCD' )
                                                        +
                                                        479 
                                                        +
                                                        480  allocate( ceelem(mxmtbd,maxcd), stat=iost )
                                                        +
                                                        481  if ( iost /= 0 ) call bort( brtstr // 'CEELEM' )
                                                        +
                                                        482 
                                                        +
                                                        483  ! moda_nmikrp arrays.
                                                        +
                                                        484 
                                                        +
                                                        485  allocate( nem(maxcd,10), stat=iost )
                                                        +
                                                        486  if ( iost /= 0 ) call bort( brtstr // 'NEM' )
                                                        +
                                                        487 
                                                        +
                                                        488  allocate( irp(maxcd,10), stat=iost )
                                                        +
                                                        489  if ( iost /= 0 ) call bort( brtstr // 'IRP' )
                                                        +
                                                        490 
                                                        +
                                                        491  allocate( krp(maxcd,10), stat=iost )
                                                        +
                                                        492  if ( iost /= 0 ) call bort( brtstr // 'KRP' )
                                                        +
                                                        493 
                                                        +
                                                        494  ! moda_s01cm arrays.
                                                        +
                                                        495 
                                                        +
                                                        496  allocate( ivmnem(mxs01v), stat=iost )
                                                        +
                                                        497  if ( iost /= 0 ) call bort( brtstr // 'IVMNEM' )
                                                        +
                                                        498 
                                                        +
                                                        499  allocate( cmnem(mxs01v), stat=iost )
                                                        +
                                                        500  if ( iost /= 0 ) call bort( brtstr // 'CMNEM' )
                                                        +
                                                        501 
                                                        +
                                                        502  ! moda_bitmaps arrays.
                                                        +
                                                        503 
                                                        +
                                                        504  allocate( inodtamc(mxtamc), stat=iost )
                                                        +
                                                        505  if ( iost /= 0 ) call bort( brtstr // 'INODTAMC' )
                                                        +
                                                        506 
                                                        +
                                                        507  allocate( ntco(mxtamc), stat=iost )
                                                        +
                                                        508  if ( iost /= 0 ) call bort( brtstr // 'NTCO' )
                                                        +
                                                        509 
                                                        +
                                                        510  allocate( ctco(mxtamc,mxtco), stat=iost )
                                                        +
                                                        511  if ( iost /= 0 ) call bort( brtstr // 'CTCO' )
                                                        +
                                                        512 
                                                        +
                                                        513  allocate( inodtco(mxtamc,mxtco), stat=iost )
                                                        +
                                                        514  if ( iost /= 0 ) call bort( brtstr // 'INODTCO' )
                                                        +
                                                        515 
                                                        +
                                                        516  allocate( nbtmse(mxbtm), stat=iost )
                                                        +
                                                        517  if ( iost /= 0 ) call bort( brtstr // 'NBTMSE' )
                                                        +
                                                        518 
                                                        +
                                                        519  allocate( istbtm(mxbtm), stat=iost )
                                                        +
                                                        520  if ( iost /= 0 ) call bort( brtstr // 'ISTBTM' )
                                                        +
                                                        521 
                                                        +
                                                        522  allocate( iszbtm(mxbtm), stat=iost )
                                                        +
                                                        523  if ( iost /= 0 ) call bort( brtstr // 'ISZBTM' )
                                                        +
                                                        524 
                                                        +
                                                        525  allocate( ibtmse(mxbtm,mxbtmse), stat=iost )
                                                        +
                                                        526  if ( iost /= 0 ) call bort( brtstr // 'IBTMSE' )
                                                        +
                                                        527 
                                                        +
                                                        528  ! moda_nrv203 arrays.
                                                        +
                                                        529 
                                                        +
                                                        530  allocate( tagnrv(mxnrv), stat=iost )
                                                        +
                                                        531  if ( iost /= 0 ) call bort( brtstr // 'TAGNRV' )
                                                        +
                                                        532 
                                                        +
                                                        533  allocate( inodnrv(mxnrv), stat=iost )
                                                        +
                                                        534  if ( iost /= 0 ) call bort( brtstr // 'INODNRV' )
                                                        +
                                                        535 
                                                        +
                                                        536  allocate( nrv(mxnrv), stat=iost )
                                                        +
                                                        537  if ( iost /= 0 ) call bort( brtstr // 'NRV' )
                                                        +
                                                        538 
                                                        +
                                                        539  allocate( isnrv(mxnrv), stat=iost )
                                                        +
                                                        540  if ( iost /= 0 ) call bort( brtstr // 'ISNRV' )
                                                        +
                                                        541 
                                                        +
                                                        542  allocate( ienrv(mxnrv), stat=iost )
                                                        +
                                                        543  if ( iost /= 0 ) call bort( brtstr // 'IENRV' )
                                                        +
                                                        544 
                                                        +
                                                        545  ! moda_rlccmn arrays.
                                                        +
                                                        546 
                                                        +
                                                        547  allocate( irnch(mxrst), stat=iost )
                                                        +
                                                        548  if ( iost /= 0 ) call bort( brtstr // 'IRNCH' )
                                                        +
                                                        549 
                                                        +
                                                        550  allocate( irbit(mxrst), stat=iost )
                                                        +
                                                        551  if ( iost /= 0 ) call bort( brtstr // 'IRBIT' )
                                                        +
                                                        552 
                                                        +
                                                        553  allocate( crtag(mxrst), stat=iost )
                                                        +
                                                        554  if ( iost /= 0 ) call bort( brtstr // 'CRTAG' )
                                                        +
                                                        555 
                                                        +
                                                        556  ! moda_h4wlc arrays.
                                                        +
                                                        557 
                                                        +
                                                        558  allocate( luh4wlc(mxh4wlc), stat=iost )
                                                        +
                                                        559  if ( iost /= 0 ) call bort( brtstr // 'LUH4WLC' )
                                                        +
                                                        560 
                                                        +
                                                        561  allocate( sth4wlc(mxh4wlc), stat=iost )
                                                        +
                                                        562  if ( iost /= 0 ) call bort( brtstr // 'STH4WLC' )
                                                        +
                                                        563 
                                                        +
                                                        564  allocate( chh4wlc(mxh4wlc), stat=iost )
                                                        +
                                                        565  if ( iost /= 0 ) call bort( brtstr // 'CHH4WLC' )
                                                        +
                                                        566 
                                                        +
                                                        567  ! moda_dscach arrays.
                                                        +
                                                        568 
                                                        +
                                                        569  allocate( cnem(mxcnem), stat=iost )
                                                        +
                                                        570  if ( iost /= 0 ) call bort( brtstr // 'CNEM' )
                                                        +
                                                        571 
                                                        +
                                                        572  allocate( ndc(mxcnem), stat=iost )
                                                        +
                                                        573  if ( iost /= 0 ) call bort( brtstr // 'NDC' )
                                                        +
                                                        574 
                                                        +
                                                        575  allocate( idcach(mxcnem,maxnc), stat=iost )
                                                        +
                                                        576  if ( iost /= 0 ) call bort( brtstr // 'IDCACH' )
                                                        +
                                                        577 
                                                        +
                                                        578  ! moda_s3list arrays.
                                                        +
                                                        579 
                                                        +
                                                        580  allocate( ids3(maxnc), stat=iost )
                                                        +
                                                        581  if ( iost /= 0 ) call bort( brtstr // 'IDS3' )
                                                        +
                                                        582 
                                                        +
                                                        583  allocate( cds3(maxnc), stat=iost )
                                                        +
                                                        584  if ( iost /= 0 ) call bort( brtstr // 'CDS3' )
                                                        +
                                                        585 
                                                        +
                                                        586  return
                                                        +
                                                        587 end subroutine arallocf
                                                        +
                                                        588 
                                                        +
                                                        592 subroutine ardllocf
                                                        +
                                                        593 
                                                        +
                                                        594  use bufrlib
                                                        +
                                                        595 
                                                        +
                                                        596  use moda_usrint
                                                        +
                                                        597  use moda_usrbit
                                                        +
                                                        598  use moda_ival
                                                        +
                                                        599  use moda_msgcwd
                                                        +
                                                        600  use moda_stbfr
                                                        +
                                                        601  use moda_ufbcpl
                                                        +
                                                        602  use moda_sc3bfr
                                                        +
                                                        603  use moda_unptyp
                                                        +
                                                        604  use moda_lushr
                                                        +
                                                        605  use moda_nulbfr
                                                        +
                                                        606  use moda_stcode
                                                        +
                                                        607  use moda_idrdm
                                                        +
                                                        608  use moda_xtab
                                                        +
                                                        609  use moda_msglim
                                                        +
                                                        610  use moda_bitbuf
                                                        +
                                                        611  use moda_mgwa
                                                        +
                                                        612  use moda_mgwb
                                                        +
                                                        613  use moda_bufrmg
                                                        +
                                                        614  use moda_bufrsr
                                                        +
                                                        615  use moda_msgmem
                                                        +
                                                        616  use moda_tababd
                                                        +
                                                        617  use moda_tables
                                                        +
                                                        618  use moda_usrtmp
                                                        +
                                                        619  use moda_ivttmp
                                                        +
                                                        620  use moda_comprx
                                                        +
                                                        621  use moda_comprs
                                                        +
                                                        622  use moda_mstabs
                                                        +
                                                        623  use moda_rdmtb
                                                        +
                                                        624  use moda_nmikrp
                                                        +
                                                        625  use moda_s01cm
                                                        +
                                                        626  use moda_bitmaps
                                                        +
                                                        627  use moda_nrv203
                                                        +
                                                        628  use moda_rlccmn
                                                        +
                                                        629  use moda_h4wlc
                                                        +
                                                        630  use moda_dscach
                                                        +
                                                        631  use moda_s3list
                                                        +
                                                        632 
                                                        +
                                                        633  implicit none
                                                        +
                                                        634 
                                                        +
                                                        635  ! moda_usrint arrays.
                                                        +
                                                        636 
                                                        +
                                                        637  deallocate( nval )
                                                        +
                                                        638  deallocate( inv )
                                                        +
                                                        639  deallocate( nrfelm )
                                                        +
                                                        640  deallocate( val )
                                                        +
                                                        641 
                                                        +
                                                        642  ! moda_usrbit arrays.
                                                        +
                                                        643 
                                                        +
                                                        644  deallocate( nbit )
                                                        +
                                                        645  deallocate( mbit )
                                                        +
                                                        646 
                                                        +
                                                        647  ! moda_ival arrays.
                                                        +
                                                        648 
                                                        +
                                                        649  deallocate( ival )
                                                        +
                                                        650 
                                                        +
                                                        651  ! moda_msgcwd arrays.
                                                        +
                                                        652 
                                                        +
                                                        653  deallocate( nmsg )
                                                        +
                                                        654  deallocate( nsub )
                                                        +
                                                        655  deallocate( msub )
                                                        +
                                                        656  deallocate( inode )
                                                        +
                                                        657  deallocate( idate )
                                                        +
                                                        658 
                                                        +
                                                        659  ! moda_stbfr arrays.
                                                        +
                                                        660 
                                                        +
                                                        661  deallocate( iolun )
                                                        +
                                                        662  deallocate( iomsg )
                                                        +
                                                        663 
                                                        +
                                                        664  ! moda_ufbcpl arrays.
                                                        +
                                                        665 
                                                        +
                                                        666  deallocate( luncpy )
                                                        +
                                                        667 
                                                        +
                                                        668  ! moda_sc3bfr arrays.
                                                        +
                                                        669 
                                                        +
                                                        670  deallocate( isc3 )
                                                        +
                                                        671  deallocate( tamnem )
                                                        +
                                                        672 
                                                        +
                                                        673  ! moda_unptyp arrays.
                                                        +
                                                        674 
                                                        +
                                                        675  deallocate( msgunp )
                                                        +
                                                        676 
                                                        +
                                                        677  ! moda_lushr arrays.
                                                        +
                                                        678 
                                                        +
                                                        679  deallocate( lus )
                                                        +
                                                        680 
                                                        +
                                                        681  ! moda_nulbfr arrays.
                                                        +
                                                        682 
                                                        +
                                                        683  deallocate( null )
                                                        +
                                                        684 
                                                        +
                                                        685  ! moda_stcode arrays.
                                                        +
                                                        686 
                                                        +
                                                        687  deallocate( iscodes )
                                                        +
                                                        688 
                                                        +
                                                        689  ! moda_idrdm arrays.
                                                        +
                                                        690 
                                                        +
                                                        691  deallocate( idrdm )
                                                        +
                                                        692 
                                                        +
                                                        693  ! moda_xtab arrays.
                                                        +
                                                        694 
                                                        +
                                                        695  deallocate( xtab )
                                                        +
                                                        696 
                                                        +
                                                        697  ! moda_msglim arrays.
                                                        +
                                                        698 
                                                        +
                                                        699  deallocate( msglim )
                                                        +
                                                        700 
                                                        +
                                                        701  ! moda_bitbuf arrays.
                                                        +
                                                        702 
                                                        +
                                                        703  deallocate( ibay )
                                                        +
                                                        704  deallocate( mbyt )
                                                        +
                                                        705  deallocate( mbay )
                                                        +
                                                        706 
                                                        +
                                                        707  ! moda_mgwa arrays.
                                                        +
                                                        708 
                                                        +
                                                        709  deallocate( mgwa )
                                                        +
                                                        710 
                                                        +
                                                        711  ! moda_mgwb arrays.
                                                        +
                                                        712 
                                                        +
                                                        713  deallocate( mgwb )
                                                        +
                                                        714 
                                                        +
                                                        715  ! moda_bufrmg arrays.
                                                        +
                                                        716 
                                                        +
                                                        717  deallocate( msglen )
                                                        +
                                                        718  deallocate( msgtxt )
                                                        +
                                                        719 
                                                        +
                                                        720  ! moda_bufrsr arrays.
                                                        +
                                                        721 
                                                        +
                                                        722  deallocate( jsr )
                                                        +
                                                        723  deallocate( jbay )
                                                        +
                                                        724 
                                                        +
                                                        725  ! moda_msgmem arrays.
                                                        +
                                                        726 
                                                        +
                                                        727  deallocate( msgp )
                                                        +
                                                        728  deallocate( msgs )
                                                        +
                                                        729  deallocate( mdx )
                                                        +
                                                        730  deallocate( ipdxm )
                                                        +
                                                        731  deallocate( ifdxts )
                                                        +
                                                        732  deallocate( icdxts )
                                                        +
                                                        733  deallocate( ipmsgs )
                                                        +
                                                        734 
                                                        +
                                                        735  ! moda_tababd arrays.
                                                        +
                                                        736 
                                                        +
                                                        737  deallocate( ntba )
                                                        +
                                                        738  deallocate( ntbb )
                                                        +
                                                        739  deallocate( ntbd )
                                                        +
                                                        740  deallocate( mtab )
                                                        +
                                                        741  deallocate( idna )
                                                        +
                                                        742  deallocate( idnb )
                                                        +
                                                        743  deallocate( idnd )
                                                        +
                                                        744  deallocate( taba )
                                                        +
                                                        745  deallocate( tabb )
                                                        +
                                                        746  deallocate( tabd )
                                                        +
                                                        747 
                                                        +
                                                        748  ! moda_tables arrays.
                                                        +
                                                        749 
                                                        +
                                                        750  deallocate( tag )
                                                        +
                                                        751  deallocate( typ )
                                                        +
                                                        752  deallocate( knt )
                                                        +
                                                        753  deallocate( jump )
                                                        +
                                                        754  deallocate( link )
                                                        +
                                                        755  deallocate( jmpb )
                                                        +
                                                        756  deallocate( ibt )
                                                        +
                                                        757  deallocate( irf )
                                                        +
                                                        758  deallocate( isc )
                                                        +
                                                        759  deallocate( itp )
                                                        +
                                                        760  deallocate( vali )
                                                        +
                                                        761  deallocate( knti )
                                                        +
                                                        762  deallocate( iseq )
                                                        +
                                                        763  deallocate( jseq )
                                                        +
                                                        764 
                                                        +
                                                        765  ! moda_usrtmp arrays.
                                                        +
                                                        766 
                                                        +
                                                        767  deallocate( iutmp )
                                                        +
                                                        768  deallocate( vutmp )
                                                        +
                                                        769 
                                                        +
                                                        770  ! moda_ivttmp arrays.
                                                        +
                                                        771 
                                                        +
                                                        772  deallocate( ttmp )
                                                        +
                                                        773  deallocate( itmp )
                                                        +
                                                        774  deallocate( vtmp )
                                                        +
                                                        775 
                                                        +
                                                        776  ! moda_comprx arrays.
                                                        +
                                                        777 
                                                        +
                                                        778  deallocate( kmin )
                                                        +
                                                        779  deallocate( kmax )
                                                        +
                                                        780  deallocate( kmis )
                                                        +
                                                        781  deallocate( kbit )
                                                        +
                                                        782  deallocate( ityp )
                                                        +
                                                        783  deallocate( iwid )
                                                        +
                                                        784  deallocate( cstr )
                                                        +
                                                        785  deallocate( jlnode )
                                                        +
                                                        786 
                                                        +
                                                        787  ! moda_comprs arrays.
                                                        +
                                                        788 
                                                        +
                                                        789  deallocate( matx )
                                                        +
                                                        790  deallocate( catx )
                                                        +
                                                        791 
                                                        +
                                                        792  ! moda_mstabs arrays.
                                                        +
                                                        793 
                                                        +
                                                        794  deallocate( ibfxyn )
                                                        +
                                                        795  deallocate( cbscl )
                                                        +
                                                        796  deallocate( cbsref )
                                                        +
                                                        797  deallocate( cbbw )
                                                        +
                                                        798  deallocate( cbunit )
                                                        +
                                                        799  deallocate( cbmnem )
                                                        +
                                                        800  deallocate( cbelem )
                                                        +
                                                        801  deallocate( idfxyn )
                                                        +
                                                        802  deallocate( cdseq )
                                                        +
                                                        803  deallocate( cdmnem )
                                                        +
                                                        804  deallocate( ndelem )
                                                        +
                                                        805  deallocate( idefxy )
                                                        +
                                                        806 
                                                        +
                                                        807  ! moda_rdmtb arrays.
                                                        +
                                                        808 
                                                        +
                                                        809  deallocate( iefxyn )
                                                        +
                                                        810  deallocate( cmdscb )
                                                        +
                                                        811  deallocate( cmdscd )
                                                        +
                                                        812  deallocate( ceelem )
                                                        +
                                                        813 
                                                        +
                                                        814  ! moda_nmikrp arrays.
                                                        +
                                                        815 
                                                        +
                                                        816  deallocate( nem )
                                                        +
                                                        817  deallocate( irp )
                                                        +
                                                        818  deallocate( krp )
                                                        +
                                                        819 
                                                        +
                                                        820  ! moda_s01cm arrays.
                                                        +
                                                        821 
                                                        +
                                                        822  deallocate( ivmnem )
                                                        +
                                                        823  deallocate( cmnem )
                                                        +
                                                        824 
                                                        +
                                                        825  ! moda_bitmaps arrays.
                                                        +
                                                        826 
                                                        +
                                                        827  deallocate( inodtamc )
                                                        +
                                                        828  deallocate( ntco )
                                                        +
                                                        829  deallocate( ctco )
                                                        +
                                                        830  deallocate( inodtco )
                                                        +
                                                        831  deallocate( nbtmse )
                                                        +
                                                        832  deallocate( istbtm )
                                                        +
                                                        833  deallocate( iszbtm )
                                                        +
                                                        834  deallocate( ibtmse )
                                                        +
                                                        835 
                                                        +
                                                        836  ! moda_nrv203 arrays.
                                                        +
                                                        837 
                                                        +
                                                        838  deallocate( tagnrv )
                                                        +
                                                        839  deallocate( inodnrv )
                                                        +
                                                        840  deallocate( nrv )
                                                        +
                                                        841  deallocate( isnrv )
                                                        +
                                                        842  deallocate( ienrv )
                                                        +
                                                        843 
                                                        +
                                                        844  ! moda_rlccmn arrays.
                                                        +
                                                        845 
                                                        +
                                                        846  deallocate( irnch )
                                                        +
                                                        847  deallocate( irbit )
                                                        +
                                                        848  deallocate( crtag )
                                                        +
                                                        849 
                                                        +
                                                        850  ! moda_h4wlc arrays.
                                                        +
                                                        851 
                                                        +
                                                        852  deallocate( luh4wlc )
                                                        +
                                                        853  deallocate( sth4wlc )
                                                        +
                                                        854  deallocate( chh4wlc )
                                                        +
                                                        855 
                                                        +
                                                        856  ! moda_dscach arrays.
                                                        +
                                                        857 
                                                        +
                                                        858  deallocate( cnem )
                                                        +
                                                        859  deallocate( ndc )
                                                        +
                                                        860  deallocate( idcach )
                                                        +
                                                        861 
                                                        +
                                                        862  ! moda_s3list arrays.
                                                        +
                                                        863 
                                                        +
                                                        864  deallocate( ids3 )
                                                        +
                                                        865  deallocate( cds3 )
                                                        +
                                                        866 
                                                        +
                                                        867  ! C language arrays.
                                                        +
                                                        868 
                                                        +
                                                        869  call ardllocc_c
                                                        +
                                                        870 
                                                        +
                                                        871  return
                                                        +
                                                        872 end subroutine ardllocf
                                                        +
                                                        873 
                                                        +
                                                        900 subroutine exitbufr
                                                        +
                                                        901 
                                                        +
                                                        902  use bufrlib
                                                        +
                                                        903 
                                                        +
                                                        904  use modv_vars, only: ifopbf, nfiles
                                                        +
                                                        905 
                                                        +
                                                        906  use moda_stbfr
                                                        +
                                                        907  use moda_s01cm
                                                        +
                                                        908  use moda_tablef
                                                        +
                                                        909 
                                                        +
                                                        910  ! Close any logical units that are open to the library.
                                                        +
                                                        911 
                                                        +
                                                        912  do jj = 1, nfiles
                                                        +
                                                        913  if ( iolun(jj) /= 0 ) call closbf( abs(iolun(jj)) )
                                                        +
                                                        914  end do
                                                        +
                                                        915 
                                                        +
                                                        916  ! Deallocate all allocated memory.
                                                        +
                                                        917 
                                                        +
                                                        918  call ardllocf
                                                        +
                                                        919 
                                                        +
                                                        920  if ( cdmf == 'Y' ) call dlloctbf_c
                                                        +
                                                        921 
                                                        +
                                                        922  ! Reset the library.
                                                        +
                                                        923 
                                                        +
                                                        924  ns01v = 0
                                                        +
                                                        925  ifopbf = 0
                                                        +
                                                        926 
                                                        +
                                                        927  return
                                                        +
                                                        928 end subroutine exitbufr
                                                        +
                                                        929 
                                                        +
                                                        979 recursive integer function isetprm ( cprmnm, ipval ) result ( iret )
                                                        +
                                                        980 
                                                        +
                                                        981  use modv_vars, only: mxmsgl, maxss, nfiles, mxdxts, maxmsg, maxmem, maxtba, maxtbb, maxtbd, maxjl, &
                                                        +
                                                        982  mxcdv, mxlcc, mxcsb, mxmtbb, mxmtbd, mxmtbf, maxcd, mxs01v, mxbtm, mxbtmse, &
                                                        +
                                                        983  mxtamc, mxtco, mxnrv, mxrst, mxh4wlc, im8b, mxcnem, maxnc, mxnaf
                                                        +
                                                        984 
                                                        +
                                                        985  implicit none
                                                        +
                                                        986 
                                                        +
                                                        987  character*(*), intent(in) :: cprmnm
                                                        +
                                                        988 
                                                        +
                                                        989  integer, intent(in) :: ipval
                                                        +
                                                        990 
                                                        +
                                                        991  integer my_ipval
                                                        +
                                                        992 
                                                        +
                                                        993  character*128 errstr
                                                        +
                                                        994 
                                                        +
                                                        995  ! Check for I8 integers.
                                                        +
                                                        996 
                                                        +
                                                        997  if ( im8b ) then
                                                        +
                                                        998  im8b = .false.
                                                        +
                                                        999 
                                                        +
                                                        1000  call x84 ( ipval, my_ipval, 1 )
                                                        +
                                                        1001  iret = isetprm( cprmnm, my_ipval )
                                                        +
                                                        1002 
                                                        +
                                                        1003  im8b = .true.
                                                        +
                                                        1004  return
                                                        +
                                                        1005  endif
                                                        +
                                                        1006 
                                                        +
                                                        1007  iret = 0
                                                        +
                                                        1008  if ( cprmnm == 'MAXSS' ) then
                                                        +
                                                        1009  maxss = ipval
                                                        +
                                                        1010  else if ( cprmnm == 'NFILES' ) then
                                                        +
                                                        1011  nfiles = ipval
                                                        +
                                                        1012  else if ( cprmnm == 'MXMSGL' ) then
                                                        +
                                                        1013  mxmsgl = ipval
                                                        +
                                                        1014  else if ( cprmnm == 'MXDXTS' ) then
                                                        +
                                                        1015  mxdxts = ipval
                                                        +
                                                        1016  else if ( cprmnm == 'MAXMSG' ) then
                                                        +
                                                        1017  maxmsg = ipval
                                                        +
                                                        1018  else if ( cprmnm == 'MAXMEM' ) then
                                                        +
                                                        1019  maxmem = ipval
                                                        +
                                                        1020  else if ( cprmnm == 'MAXTBA' ) then
                                                        +
                                                        1021  maxtba = ipval
                                                        +
                                                        1022  else if ( cprmnm == 'MAXTBB' ) then
                                                        +
                                                        1023  maxtbb = ipval
                                                        +
                                                        1024  else if ( cprmnm == 'MAXTBD' ) then
                                                        +
                                                        1025  maxtbd = ipval
                                                        +
                                                        1026  else if ( cprmnm == 'MAXJL' ) then
                                                        +
                                                        1027  maxjl = ipval
                                                        +
                                                        1028  else if ( cprmnm == 'MXCDV' ) then
                                                        +
                                                        1029  mxcdv = ipval
                                                        +
                                                        1030  else if ( cprmnm == 'MXLCC' ) then
                                                        +
                                                        1031  mxlcc = ipval
                                                        +
                                                        1032  else if ( cprmnm == 'MXCSB' ) then
                                                        +
                                                        1033  mxcsb = ipval
                                                        +
                                                        1034  else if ( cprmnm == 'MXMTBB' ) then
                                                        +
                                                        1035  mxmtbb = ipval
                                                        +
                                                        1036  else if ( cprmnm == 'MXMTBD' ) then
                                                        +
                                                        1037  mxmtbd = ipval
                                                        +
                                                        1038  else if ( cprmnm == 'MXMTBF' ) then
                                                        +
                                                        1039  mxmtbf = ipval
                                                        +
                                                        1040  else if ( cprmnm == 'MAXCD' ) then
                                                        +
                                                        1041  maxcd = ipval
                                                        +
                                                        1042  else if ( cprmnm == 'MXS01V' ) then
                                                        +
                                                        1043  mxs01v = ipval
                                                        +
                                                        1044  else if ( cprmnm == 'MXBTM' ) then
                                                        +
                                                        1045  mxbtm = ipval
                                                        +
                                                        1046  else if ( cprmnm == 'MXBTMSE' ) then
                                                        +
                                                        1047  mxbtmse = ipval
                                                        +
                                                        1048  else if ( cprmnm == 'MXTAMC' ) then
                                                        +
                                                        1049  mxtamc = ipval
                                                        +
                                                        1050  else if ( cprmnm == 'MXTCO' ) then
                                                        +
                                                        1051  mxtco = ipval
                                                        +
                                                        1052  else if ( cprmnm == 'MXNRV' ) then
                                                        +
                                                        1053  mxnrv = ipval
                                                        +
                                                        1054  else if ( cprmnm == 'MXRST' ) then
                                                        +
                                                        1055  mxrst = ipval
                                                        +
                                                        1056  else if ( cprmnm == 'MXH4WLC' ) then
                                                        +
                                                        1057  mxh4wlc = ipval
                                                        +
                                                        1058  else if ( cprmnm == 'MXCNEM' ) then
                                                        +
                                                        1059  mxcnem = ipval
                                                        +
                                                        1060  else if ( cprmnm == 'MAXNC' ) then
                                                        +
                                                        1061  maxnc = ipval
                                                        +
                                                        1062  else if ( cprmnm == 'MXNAF' ) then
                                                        +
                                                        1063  mxnaf = ipval
                                                        +
                                                        1064  else
                                                        +
                                                        1065  iret = -1
                                                        +
                                                        1066  call errwrt('++++++++++++++++++WARNING+++++++++++++++++++')
                                                        +
                                                        1067  errstr = 'BUFRLIB: ISETPRM - UNKNOWN INPUT PARAMETER '// cprmnm // ' -- NO ACTION WAS TAKEN'
                                                        +
                                                        1068  call errwrt(errstr)
                                                        +
                                                        1069  call errwrt('++++++++++++++++++WARNING+++++++++++++++++++')
                                                        +
                                                        1070  endif
                                                        +
                                                        1071 
                                                        +
                                                        1072  return
                                                        +
                                                        1073 end function isetprm
                                                        +
                                                        1074 
                                                        +
                                                        1113 integer function igetprm ( cprmnm ) result ( iret )
                                                        +
                                                        1114 
                                                        +
                                                        1115  use modv_vars, only: mxmsgl, maxss, nfiles, mxdxts, maxmsg, maxmem, maxtba, maxtbb, maxtbd, maxjl, &
                                                        +
                                                        1116  mxcdv, mxlcc, mxcsb, mxmtbb, mxmtbd, mxmtbf, maxcd, mxs01v, mxbtm, mxbtmse, &
                                                        +
                                                        1117  mxtamc, mxtco, mxnrv, mxrst, mxh4wlc, mxcnem, maxnc, mxnaf
                                                        +
                                                        1118 
                                                        +
                                                        1119  implicit none
                                                        +
                                                        1120 
                                                        +
                                                        1121  character*(*), intent(in) :: cprmnm
                                                        +
                                                        1122 
                                                        +
                                                        1123  character*64 errstr
                                                        +
                                                        1124 
                                                        +
                                                        1125  if ( cprmnm == 'MAXSS' ) then
                                                        +
                                                        1126  iret = maxss
                                                        +
                                                        1127  else if ( cprmnm == 'NFILES' ) then
                                                        +
                                                        1128  iret = nfiles
                                                        +
                                                        1129  else if ( cprmnm == 'MXMSGL' ) then
                                                        +
                                                        1130  iret = mxmsgl
                                                        +
                                                        1131  else if ( cprmnm == 'MXDXTS' ) then
                                                        +
                                                        1132  iret = mxdxts
                                                        +
                                                        1133  else if ( cprmnm == 'MAXMSG' ) then
                                                        +
                                                        1134  iret = maxmsg
                                                        +
                                                        1135  else if ( cprmnm == 'MAXMEM' ) then
                                                        +
                                                        1136  iret = maxmem
                                                        +
                                                        1137  else if ( cprmnm == 'MAXTBA' ) then
                                                        +
                                                        1138  iret = maxtba
                                                        +
                                                        1139  else if ( cprmnm == 'MAXTBB' ) then
                                                        +
                                                        1140  iret = maxtbb
                                                        +
                                                        1141  else if ( cprmnm == 'MAXTBD' ) then
                                                        +
                                                        1142  iret = maxtbd
                                                        +
                                                        1143  else if ( cprmnm == 'MAXJL' ) then
                                                        +
                                                        1144  iret = maxjl
                                                        +
                                                        1145  else if ( cprmnm == 'MXCDV' ) then
                                                        +
                                                        1146  iret = mxcdv
                                                        +
                                                        1147  else if ( cprmnm == 'MXLCC' ) then
                                                        +
                                                        1148  iret = mxlcc
                                                        +
                                                        1149  else if ( cprmnm == 'MXCSB' ) then
                                                        +
                                                        1150  iret = mxcsb
                                                        +
                                                        1151  else if ( cprmnm == 'MXMTBB' ) then
                                                        +
                                                        1152  iret = mxmtbb
                                                        +
                                                        1153  else if ( cprmnm == 'MXMTBD' ) then
                                                        +
                                                        1154  iret = mxmtbd
                                                        +
                                                        1155  else if ( cprmnm == 'MXMTBF' ) then
                                                        +
                                                        1156  iret = mxmtbf
                                                        +
                                                        1157  else if ( cprmnm == 'MAXCD' ) then
                                                        +
                                                        1158  iret = maxcd
                                                        +
                                                        1159  else if ( cprmnm == 'MXS01V' ) then
                                                        +
                                                        1160  iret = mxs01v
                                                        +
                                                        1161  else if ( cprmnm == 'MXBTM' ) then
                                                        +
                                                        1162  iret = mxbtm
                                                        +
                                                        1163  else if ( cprmnm == 'MXBTMSE' ) then
                                                        +
                                                        1164  iret = mxbtmse
                                                        +
                                                        1165  else if ( cprmnm == 'MXTAMC' ) then
                                                        +
                                                        1166  iret = mxtamc
                                                        +
                                                        1167  else if ( cprmnm == 'MXTCO' ) then
                                                        +
                                                        1168  iret = mxtco
                                                        +
                                                        1169  else if ( cprmnm == 'MXNRV' ) then
                                                        +
                                                        1170  iret = mxnrv
                                                        +
                                                        1171  else if ( cprmnm == 'MXRST' ) then
                                                        +
                                                        1172  iret = mxrst
                                                        +
                                                        1173  else if ( cprmnm == 'MXH4WLC' ) then
                                                        +
                                                        1174  iret = mxh4wlc
                                                        +
                                                        1175  else if ( cprmnm == 'MXCNEM' ) then
                                                        +
                                                        1176  iret = mxcnem
                                                        +
                                                        1177  else if ( cprmnm == 'MAXNC' ) then
                                                        +
                                                        1178  iret = maxnc
                                                        +
                                                        1179  else if ( cprmnm == 'MXNAF' ) then
                                                        +
                                                        1180  iret = mxnaf
                                                        +
                                                        1181  else
                                                        +
                                                        1182  iret = -1
                                                        +
                                                        1183  call errwrt('++++++++++++++++++WARNING+++++++++++++++++++')
                                                        +
                                                        1184  errstr = 'BUFRLIB: IGETPRM - UNKNOWN INPUT PARAMETER '// cprmnm
                                                        +
                                                        1185  call errwrt(errstr)
                                                        +
                                                        1186  call errwrt('++++++++++++++++++WARNING+++++++++++++++++++')
                                                        +
                                                        1187  endif
                                                        +
                                                        1188 
                                                        +
                                                        1189  return
                                                        +
                                                        1190 end function igetprm
                                                        +
                                                        integer function igetprm(cprmnm)
                                                        Return the current value of a parameter used for allocating one or more internal arrays within the NC...
                                                        Definition: arallocf.F90:1114
                                                        +
                                                        subroutine arallocf
                                                        Dynamically allocate Fortran language arrays.
                                                        Definition: arallocf.F90:19
                                                        +
                                                        subroutine exitbufr
                                                        Free all dynamically-allocated memory, close all logical units that are open within the NCEPLIBS-bufr...
                                                        Definition: arallocf.F90:901
                                                        +
                                                        recursive integer function isetprm(cprmnm, ipval)
                                                        Set a specified parameter to a specified value for use in dynamically allocating one or more internal...
                                                        Definition: arallocf.F90:980
                                                        +
                                                        subroutine ardllocf
                                                        Free all memory that was dynamically allocated during a previous call to subroutine arallocf().
                                                        Definition: arallocf.F90:593
                                                        +
                                                        subroutine bort(str)
                                                        Log an error message, then abort the application program.
                                                        Definition: borts.F90:15
                                                        +
                                                        subroutine errwrt(str)
                                                        Specify a custom location for the logging of error and diagnostic messages generated by the NCEPLIBS-...
                                                        Definition: errwrt.F90:32
                                                        + +
                                                        Wrap C NCEPLIBS-bufr functions so they can be called from within the Fortran part of the library.
                                                        Definition: bufrlib.F90:11
                                                        +
                                                        Declare arrays and variables used to store BUFR messages internally for multiple file IDs.
                                                        +
                                                        integer, dimension(:), allocatable ibay
                                                        Current data subset.
                                                        +
                                                        integer, dimension(:,:), allocatable mbay
                                                        Current BUFR message for each file ID.
                                                        +
                                                        integer, dimension(:), allocatable mbyt
                                                        Length (in bytes) of current BUFR message for each file ID.
                                                        +
                                                        Declare arrays and variables used to store bitmaps internally within a data subset definition.
                                                        +
                                                        integer, dimension(:), allocatable iszbtm
                                                        Size of bitmap (total number of entries, whether "set" (set to a value of 0) or not).
                                                        +
                                                        integer, dimension(:,:), allocatable inodtco
                                                        Entries within jump/link table which contain Table C operators.
                                                        +
                                                        integer, dimension(:), allocatable istbtm
                                                        Ordinal position in data subset definition corresponding to the first entry of the bitmap.
                                                        +
                                                        integer, dimension(:), allocatable inodtamc
                                                        Entries within jump/link table which contain Table A mnemonics.
                                                        +
                                                        integer, dimension(:,:), allocatable ibtmse
                                                        Ordinal positions in bitmap of bits that were "set" (set to a value of 0); these ordinal positions ca...
                                                        +
                                                        integer, dimension(:), allocatable nbtmse
                                                        Number of "set" entries (set to a value of 0) in the bitmap.
                                                        +
                                                        character *6, dimension(:,:), allocatable ctco
                                                        Table C operators corresponding to inodtco.
                                                        +
                                                        integer, dimension(:), allocatable ntco
                                                        Number of Table C operators (with an XX value of 21 or greater) within the data subset definition of ...
                                                        +
                                                        Declare arrays used to store, for each output file ID, a copy of the BUFR message that was most recen...
                                                        +
                                                        integer, dimension(:), allocatable msglen
                                                        Length (in integers) of BUFR message most recently written to each output file ID.
                                                        +
                                                        integer, dimension(:,:), allocatable msgtxt
                                                        BUFR message most recently written to each output file ID.
                                                        +
                                                        Declare arrays and variables needed to store the current position within a BUFR file.
                                                        +
                                                        integer, dimension(:), allocatable jsr
                                                        Indicator of stack status when entering subroutine rewnbf().
                                                        +
                                                        integer, dimension(:), allocatable jbay
                                                        BUFR message.
                                                        +
                                                        Declare arrays and variables needed for the storage of data values needed when writing compressed dat...
                                                        +
                                                        character *(:), dimension(:,:), allocatable catx
                                                        Character data values for all data subsets in message.
                                                        +
                                                        integer *8, dimension(:,:), allocatable matx
                                                        Non-character data values for all data subsets in message.
                                                        +
                                                        Declare arrays and variable needed for the storage of data values needed when writing compressed data...
                                                        +
                                                        character *(:), dimension(:), allocatable cstr
                                                        Character data value, if corresponding ityp value is set to 3.
                                                        +
                                                        integer *8, dimension(:), allocatable kmax
                                                        Maximum of each data value across all data subsets in message.
                                                        +
                                                        integer, dimension(:), allocatable jlnode
                                                        Jump/link table node corresponding to each data value.
                                                        +
                                                        integer, dimension(:), allocatable ityp
                                                        Type of each data value:
                                                        +
                                                        integer, dimension(:), allocatable iwid
                                                        Bit width of underlying data descriptor as defined within Table B for each data value.
                                                        +
                                                        integer, dimension(:), allocatable kbit
                                                        Number of bits needed to hold the increments for this data value within each data subset of the messa...
                                                        +
                                                        logical, dimension(:), allocatable kmis
                                                        "Missing" values flag.
                                                        +
                                                        integer *8, dimension(:), allocatable kmin
                                                        Minimum of each data value across all data subsets in message.
                                                        +
                                                        Declare arrays and variables for the internal Table A mnemonic cache that is used for Section 3 decod...
                                                        +
                                                        character *8, dimension(:), allocatable cnem
                                                        Table A mnemonics.
                                                        +
                                                        integer, dimension(:,:), allocatable idcach
                                                        WMO bit-wise representations of the child descriptors for the corresponding Table A mnemonic in cnem.
                                                        +
                                                        integer, dimension(:), allocatable ndc
                                                        Number of child descriptors for the corresponding Table A mnemonic in cnem.
                                                        +
                                                        Declare arrays and variables needed to store long character strings (greater than 8 bytes) via subrou...
                                                        +
                                                        character *14, dimension(:), allocatable sth4wlc
                                                        Table B mnemonics associated with long character strings.
                                                        +
                                                        integer, dimension(:), allocatable luh4wlc
                                                        File ID for associated output file.
                                                        +
                                                        character *120, dimension(:), allocatable chh4wlc
                                                        Long character strings.
                                                        +
                                                        Declare an array used by subroutine readerme() to read in a new DX dictionary table as a consecutive ...
                                                        +
                                                        integer, dimension(:), allocatable idrdm
                                                        DX BUFR tables message count for each file ID.
                                                        +
                                                        Declare an array used to pack or unpack all of the values of a BUFR data subset.
                                                        +
                                                        integer *8, dimension(:), allocatable ival
                                                        BUFR data subset values.
                                                        +
                                                        Declare arrays which provide working space in several subprograms (usrtpl() and ufbcup()) which manip...
                                                        +
                                                        character *10, dimension(:), allocatable ttmp
                                                        tag array elements for new sections of a growing subset buffer.
                                                        +
                                                        real *8, dimension(:), allocatable vtmp
                                                        val array elements for new sections of a growing subset buffer.
                                                        +
                                                        integer, dimension(:), allocatable itmp
                                                        inv array elements for new sections of a growing subset buffer.
                                                        +
                                                        Declare an array used by subroutine makestab() to keep track of which logical units share DX BUFR tab...
                                                        +
                                                        integer, dimension(:), allocatable lus
                                                        Tracking index for each file ID.
                                                        +
                                                        Declare an array used by various subroutines and functions to hold a temporary working copy of a BUFR...
                                                        +
                                                        integer, dimension(:), allocatable mgwa
                                                        Temporary working copy of BUFR message.
                                                        +
                                                        Declare an array used by various subroutines and functions to hold a temporary working copy of a BUFR...
                                                        +
                                                        integer, dimension(:), allocatable mgwb
                                                        Temporary working copy of BUFR message.
                                                        +
                                                        Declare arrays used to store information about the current BUFR message that is in the process of bei...
                                                        +
                                                        integer, dimension(:), allocatable inode
                                                        Table A mnemonic for type of BUFR message.
                                                        +
                                                        integer, dimension(:), allocatable idate
                                                        Section 1 date-time of message.
                                                        +
                                                        integer, dimension(:), allocatable nmsg
                                                        Current message pointer within logical unit.
                                                        +
                                                        integer, dimension(:), allocatable msub
                                                        Total number of data subsets in message.
                                                        +
                                                        integer, dimension(:), allocatable nsub
                                                        Current subset pointer within message.
                                                        +
                                                        Declare an array used to keep track of which logical units should not have any empty (zero data subse...
                                                        +
                                                        integer, dimension(:), allocatable msglim
                                                        Tracking index for each file ID.
                                                        +
                                                        Declare arrays and variables used to store the contents of one or more BUFR files within internal mem...
                                                        +
                                                        integer, dimension(:), allocatable msgp
                                                        Pointers to the beginning of each message within msgs (up to a maximum of maxmsg, and where array ele...
                                                        +
                                                        integer, dimension(:), allocatable ipmsgs
                                                        Pointers to first message within msgs for which each DX BUFR table applies.
                                                        +
                                                        integer, dimension(:), allocatable msgs
                                                        BUFR messages read from one or more BUFR files.
                                                        +
                                                        integer, dimension(:), allocatable icdxts
                                                        Number of consecutive messages within mdx which constitute each DX BUFR table, beginning with the cor...
                                                        +
                                                        integer mxdxm
                                                        Maximum number of DX BUFR table messages that can be stored within mdx.
                                                        +
                                                        integer, dimension(:), allocatable ifdxts
                                                        Pointers to the beginning of each DX BUFR table within mdx.
                                                        +
                                                        integer, dimension(:), allocatable mdx
                                                        DX BUFR table messages read from one or more BUFR files, for use in decoding the messages in msgs.
                                                        +
                                                        integer mxdxw
                                                        Maximum number of entries that can be stored within mdx.
                                                        +
                                                        integer, dimension(:), allocatable ipdxm
                                                        Pointers to the beginning of each message within mdx.
                                                        +
                                                        Declare arrays and variables used to store master Table B and Table D entries within internal memory.
                                                        +
                                                        integer, dimension(:), allocatable idfxyn
                                                        WMO bit-wise representations of FXY numbers for master Table D.
                                                        +
                                                        character, dimension(:,:), allocatable cbunit
                                                        Units corresponding to ibfxyn.
                                                        +
                                                        character, dimension(:,:), allocatable cbbw
                                                        Bit widths corresponding to ibfxyn.
                                                        +
                                                        character, dimension(:,:), allocatable cdseq
                                                        Sequence names corresponding to idfxyn.
                                                        +
                                                        character, dimension(:,:), allocatable cbmnem
                                                        Mnemonics corresponding to ibfxyn.
                                                        +
                                                        integer, dimension(:), allocatable ndelem
                                                        Numbers of child descriptors corresponding to idfxyn.
                                                        +
                                                        character, dimension(:,:), allocatable cbelem
                                                        Element names corresponding to ibfxyn.
                                                        +
                                                        character, dimension(:,:), allocatable cbscl
                                                        Scale factors corresponding to ibfxyn.
                                                        +
                                                        character, dimension(:,:), allocatable cdmnem
                                                        Mnemonics corresponding to idfxyn.
                                                        +
                                                        character, dimension(:,:), allocatable cbsref
                                                        Reference values corresponding to ibfxyn.
                                                        +
                                                        integer, dimension(:), allocatable idefxy
                                                        WMO bit-wise representations of child descriptors corresponding to idfxyn.
                                                        +
                                                        integer, dimension(:), allocatable ibfxyn
                                                        WMO bit-wise representations of FXY numbers for master Table B.
                                                        +
                                                        Declare arrays used by various subroutines to hold information about Table D sequences.
                                                        +
                                                        integer, dimension(:,:), allocatable krp
                                                        Replication counts corresponding to nem:
                                                        +
                                                        integer, dimension(:,:), allocatable irp
                                                        Replication indicators corresponding to nem:
                                                        +
                                                        character *8, dimension(:,:), allocatable nem
                                                        Child mnemonics within Table D sequences.
                                                        +
                                                        Declare arrays and variables for use with any 2-03-YYY (change reference value) operators present wit...
                                                        +
                                                        integer, dimension(:), allocatable ienrv
                                                        End of entry range in jump/link table, within which the corresponding new reference value in nrv will...
                                                        +
                                                        character *8, dimension(:), allocatable tagnrv
                                                        Table B mnemonic to which the corresponding new reference value in nrv applies.
                                                        +
                                                        integer, dimension(:), allocatable isnrv
                                                        Start of entry range in jump/link table, within which the corresponding new reference value in nrv wi...
                                                        +
                                                        integer *8, dimension(:), allocatable nrv
                                                        New reference values corresponding to inodnrv.
                                                        +
                                                        integer, dimension(:), allocatable inodnrv
                                                        Entries within jump/link table which contain new reference values.
                                                        +
                                                        Declare an array used to store a switch for each file ID, indicating whether any BUFR messages should...
                                                        +
                                                        integer, dimension(:), allocatable null
                                                        Output switch for each file ID:
                                                        +
                                                        Declare arrays and variables used to store master Table B and Table D entries within internal memory.
                                                        +
                                                        character *120, dimension(:,:), allocatable ceelem
                                                        Element names corresponding to iefxyn.
                                                        +
                                                        character *4, dimension(:), allocatable cmdscb
                                                        Descriptor codes for Table B elements.
                                                        +
                                                        integer, dimension(:,:), allocatable iefxyn
                                                        WMO bit-wise representations of child descriptors of Table D sequences.
                                                        +
                                                        character *4, dimension(:), allocatable cmdscd
                                                        Descriptor codes for Table D sequences.
                                                        +
                                                        Declare arrays and variables needed to store information about long character strings (greater than 8...
                                                        +
                                                        integer, dimension(:), allocatable irnch
                                                        Lengths (in bytes) of long character strings.
                                                        +
                                                        integer, dimension(:), allocatable irbit
                                                        Pointers in data subset to first bits of long character strings.
                                                        +
                                                        character *10, dimension(:), allocatable crtag
                                                        Table B mnemonics associated with long character strings.
                                                        +
                                                        Declare arrays and variables used to store custom values for certain mnemonics within Sections 0 and ...
                                                        +
                                                        integer, dimension(:), allocatable ivmnem
                                                        Custom values for use within Sections 0 and 1 of all future output BUFR messages written to all Fortr...
                                                        +
                                                        integer ns01v
                                                        Number of custom values stored.
                                                        +
                                                        character *8, dimension(:), allocatable cmnem
                                                        Section 0 and 1 mnemonics corresponding to ivmnem.
                                                        +
                                                        Declare arrays used by various subroutines and functions to hold a temporary working copy of a Sectio...
                                                        +
                                                        integer, dimension(:), allocatable ids3
                                                        Temporary working copy of Section 3 descriptor list in integer form.
                                                        +
                                                        character *6, dimension(:), allocatable cds3
                                                        Temporary working copy of Section 3 descriptor list in character form.
                                                        +
                                                        Declare an array used to store a switch for each file ID, indicating whether BUFR messages read from ...
                                                        +
                                                        character *8, dimension(:), allocatable tamnem
                                                        Table A mnemonic most recently read from each file ID, if isc3 = 1 for that stream.
                                                        +
                                                        integer, dimension(:), allocatable isc3
                                                        Section 3 switch for each file ID:
                                                        +
                                                        Declare arrays used to store file and message status indicators for all logical units that have been ...
                                                        +
                                                        integer, dimension(:), allocatable iolun
                                                        File status indicators.
                                                        +
                                                        integer, dimension(:), allocatable iomsg
                                                        Message status indicator corresponding to iolun, denoting whether a BUFR message is currently open wi...
                                                        +
                                                        Declare an array used to store a status code for each file ID if an error or other abnormal result oc...
                                                        +
                                                        integer, dimension(:), allocatable iscodes
                                                        Abnormal status codes.
                                                        +
                                                        Declare arrays and variables used to store DX BUFR tables internally for multiple file IDs.
                                                        +
                                                        integer, dimension(:), allocatable ntba
                                                        Number of Table A entries for each file ID (up to a maximum of maxtba, whose value is stored in array...
                                                        +
                                                        character *600, dimension(:,:), allocatable tabd
                                                        Table D entries for each file ID.
                                                        +
                                                        character *128, dimension(:,:), allocatable taba
                                                        Table A entries for each file ID.
                                                        +
                                                        integer, dimension(:,:), allocatable mtab
                                                        Entries within jump/link table corresponding to taba.
                                                        +
                                                        integer, dimension(:,:,:), allocatable idna
                                                        Message types (in array element 1) and subtypes (in array element 2) corresponding to taba.
                                                        +
                                                        integer, dimension(:), allocatable ntbd
                                                        Number of Table D entries for each file ID (up to a maximum of maxtbd, whose value is stored in array...
                                                        +
                                                        integer, dimension(:), allocatable ntbb
                                                        Number of Table B entries for each file ID (up to a maximum of maxtbb, whose value is stored in array...
                                                        +
                                                        integer, dimension(:,:), allocatable idnd
                                                        WMO bit-wise representations of the FXY values corresponding to tabd.
                                                        +
                                                        integer, dimension(:,:), allocatable idnb
                                                        WMO bit-wise representations of the FXY values corresponding to tabb.
                                                        +
                                                        character *128, dimension(:,:), allocatable tabb
                                                        Table B entries for each file ID.
                                                        +
                                                        Declare a variable used to indicate whether master code and flag tables should be read.
                                                        +
                                                        character cdmf
                                                        Flag indicating whether to include code and flag table information during reads of master BUFR tables...
                                                        +
                                                        Declare arrays and variables used to store the internal jump/link table.
                                                        +
                                                        integer, dimension(:), allocatable jseq
                                                        Temporary storage used in expanding sequences.
                                                        +
                                                        integer, dimension(:), allocatable irf
                                                        Reference values corresponding to tag and typ:
                                                        +
                                                        integer, dimension(:,:), allocatable iseq
                                                        Temporary storage used in expanding sequences.
                                                        +
                                                        integer, dimension(:), allocatable isc
                                                        Scale factors corresponding to tag and typ:
                                                        +
                                                        integer, dimension(:), allocatable ibt
                                                        Bit widths corresponding to tag and typ:
                                                        +
                                                        integer, dimension(:), allocatable knt
                                                        Temporary storage used in calculating delayed replication counts.
                                                        +
                                                        real *8, dimension(:), allocatable vali
                                                        Initialized data values corresponding to typ:
                                                        +
                                                        character *3, dimension(:), allocatable typ
                                                        Type indicators corresponding to tag:
                                                        +
                                                        integer, dimension(:), allocatable jmpb
                                                        Jump backward indices corresponding to tag and typ:
                                                        +
                                                        character *10, dimension(:), allocatable tag
                                                        Mnemonics in the jump/link table.
                                                        +
                                                        integer, dimension(:), allocatable jump
                                                        Jump forward indices corresponding to tag and typ:
                                                        +
                                                        integer, dimension(:), allocatable itp
                                                        Integer type values corresponding to typ:
                                                        +
                                                        integer, dimension(:), allocatable link
                                                        Link indices corresponding to tag, typ and jmpb:
                                                        +
                                                        integer, dimension(:), allocatable knti
                                                        Initialized replication counts corresponding to typ and jump:
                                                        +
                                                        Declare an array used to store, for each file ID, the logical unit number corresponding to a separate...
                                                        +
                                                        integer, dimension(:), allocatable luncpy
                                                        Logical unit numbers used to copy long character strings between BUFR data subsets.
                                                        +
                                                        Declare an array used to store, for each file ID from which a BUFR message is currently being read as...
                                                        +
                                                        integer, dimension(:), allocatable msgunp
                                                        Flag indicating how to unpack data subsets from BUFR message:
                                                        +
                                                        Declare arrays for internal storage of pointers to BUFR data subset values.
                                                        +
                                                        integer, dimension(:), allocatable nbit
                                                        Length (in bits) of each packed data value in data subset.
                                                        +
                                                        integer, dimension(:), allocatable mbit
                                                        Pointer in data subset to first bit of each packed data value.
                                                        +
                                                        Declare arrays used to store data values and associated metadata for the current BUFR data subset in ...
                                                        +
                                                        integer, dimension(:), allocatable nval
                                                        Number of data values in BUFR data subset.
                                                        +
                                                        real *8, dimension(:,:), allocatable, target val
                                                        Data values.
                                                        +
                                                        integer, dimension(:,:), allocatable, target inv
                                                        Inventory pointer which links each data value to its corresponding node in the internal jump/link tab...
                                                        +
                                                        integer, dimension(:,:), allocatable nrfelm
                                                        Referenced data value, for data values which refer to a previous data value in the BUFR data subset v...
                                                        +
                                                        Declare arrays used in subroutine rcstpl() to store subset segments that are being copied from a subs...
                                                        +
                                                        integer, dimension(:,:), allocatable iutmp
                                                        inv array elements for new sections of a growing subset buffer.
                                                        +
                                                        real *8, dimension(:,:), allocatable vutmp
                                                        val array elements for new sections of a growing subset buffer.
                                                        +
                                                        Declare an array used to track, for each file ID, whether the DX BUFR table associated with the corre...
                                                        +
                                                        logical, dimension(:), allocatable xtab
                                                        Tracking index for each file ID.
                                                        +
                                                        recursive subroutine closbf(lunit)
                                                        Close the connection between logical unit lunit and the NCEPLIBS-bufr software.
                                                        +
                                                        subroutine x84(iin8, iout4, nval)
                                                        Encode one or more 8-byte integer values as 4-byte integer values.
                                                        Definition: x4884.F90:65
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/bc_s.png b/previous_versions/v12.1.0/bc_s.png new file mode 100644 index 0000000000000000000000000000000000000000..224b29aa9847d5a4b3902efd602b7ddf7d33e6c2 GIT binary patch literal 676 zcmV;V0$crwP)y__>=_9%My z{n931IS})GlGUF8K#6VIbs%684A^L3@%PlP2>_sk`UWPq@f;rU*V%rPy_ekbhXT&s z(GN{DxFv}*vZp`F>S!r||M`I*nOwwKX+BC~3P5N3-)Y{65c;ywYiAh-1*hZcToLHK ztpl1xomJ+Yb}K(cfbJr2=GNOnT!UFA7Vy~fBz8?J>XHsbZoDad^8PxfSa0GDgENZS zuLCEqzb*xWX2CG*b&5IiO#NzrW*;`VC9455M`o1NBh+(k8~`XCEEoC1Ybwf;vr4K3 zg|EB<07?SOqHp9DhLpS&bzgo70I+ghB_#)K7H%AMU3v}xuyQq9&Bm~++VYhF09a+U zl7>n7Jjm$K#b*FONz~fj;I->Bf;ule1prFN9FovcDGBkpg>)O*-}eLnC{6oZHZ$o% zXKW$;0_{8hxHQ>l;_*HATI(`7t#^{$(zLe}h*mqwOc*nRY9=?Sx4OOeVIfI|0V(V2 zBrW#G7Ss9wvzr@>H*`r>zE z+e8bOBgqIgldUJlG(YUDviMB`9+DH8n-s9SXRLyJHO1!=wY^79WYZMTa(wiZ!zP66 zA~!21vmF3H2{ngD;+`6j#~6j;$*f*G_2ZD1E;9(yaw7d-QnSCpK(cR1zU3qU0000< KMNUMnLSTYoA~SLT literal 0 HcmV?d00001 diff --git a/previous_versions/v12.1.0/bdwn.png b/previous_versions/v12.1.0/bdwn.png new file mode 100644 index 0000000000000000000000000000000000000000..940a0b950443a0bb1b216ac03c45b8a16c955452 GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^>_E)H!3HEvS)PKZC{Gv1kP61Pb5HX&C2wk~_T + + + + + + +NCEPLIBS-bufr: binv.F90 File Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        binv.F90 File Reference
                                                        +
                                                        +
                                                        + +

                                                        Produce an inventory of subsets in a bufr file. +More...

                                                        + +

                                                        Go to the source code of this file.

                                                        + + + + + +

                                                        +Functions/Subroutines

                                                        program binv
                                                         Usage: binv <bufrfile> will print bufrfile inventory by message type. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Produce an inventory of subsets in a bufr file.

                                                        +
                                                        Author
                                                        J Woollen
                                                        +
                                                        Date
                                                        1994
                                                        + +

                                                        Definition in file binv.F90.

                                                        +

                                                        Function/Subroutine Documentation

                                                        + +

                                                        ◆ binv()

                                                        + +
                                                        +
                                                        + + + + +
                                                        program binv
                                                        +
                                                        + +

                                                        Usage: binv <bufrfile> will print bufrfile inventory by message type.

                                                        +
                                                        Returns
                                                        0 for success, error message otherwise.
                                                        +
                                                        Author
                                                        J Woollen
                                                        +
                                                        Date
                                                        1994
                                                        + +

                                                        Definition at line 11 of file binv.F90.

                                                        + +

                                                        References bort(), ireadmg(), iupvs01(), nmsub(), and openbf().

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/binv_8F90.js b/previous_versions/v12.1.0/binv_8F90.js new file mode 100644 index 000000000..2ceac0a1e --- /dev/null +++ b/previous_versions/v12.1.0/binv_8F90.js @@ -0,0 +1,4 @@ +var binv_8F90 = +[ + [ "binv", "binv_8F90.html#a7633b528a2b5299a4e2aa1c6f7e6e2e5", null ] +]; \ No newline at end of file diff --git a/previous_versions/v12.1.0/binv_8F90_source.html b/previous_versions/v12.1.0/binv_8F90_source.html new file mode 100644 index 000000000..1b6f7c8b9 --- /dev/null +++ b/previous_versions/v12.1.0/binv_8F90_source.html @@ -0,0 +1,187 @@ + + + + + + + +NCEPLIBS-bufr: binv.F90 Source File + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        +
                                                        binv.F90
                                                        +
                                                        +
                                                        +Go to the documentation of this file.
                                                        1 
                                                        +
                                                        5 
                                                        +
                                                        11 PROGRAM binv
                                                        +
                                                        12 
                                                        +
                                                        13  parameter(maxsub=100)
                                                        +
                                                        14 
                                                        +
                                                        15  CHARACTER*255 file
                                                        +
                                                        16  CHARACTER*8 subset
                                                        +
                                                        17  CHARACTER*8 sub(maxsub)
                                                        +
                                                        18  integer*8 ninv(3,maxsub)
                                                        +
                                                        19  real*8 xsub, xmsg
                                                        +
                                                        20  logical exist
                                                        +
                                                        21 
                                                        +
                                                        22  DATA lunbf /20/
                                                        +
                                                        23 
                                                        +
                                                        24  !-----------------------------------------------------------------------
                                                        +
                                                        25  nmbyt(lunit)= iupvs01(lunit,'LENM')
                                                        +
                                                        26  !-----------------------------------------------------------------------
                                                        +
                                                        27 
                                                        +
                                                        28  ! get filename
                                                        +
                                                        29 
                                                        +
                                                        30  narg=command_argument_count()
                                                        +
                                                        31  if(narg/=1) then
                                                        +
                                                        32  print *,'Usage: binv <bufrfile> will print bufrfile inventory by message type'
                                                        +
                                                        33  call exit(2)
                                                        +
                                                        34  endif
                                                        +
                                                        35 
                                                        +
                                                        36  call get_command_argument(1,file)
                                                        +
                                                        37  file = trim(file)//char(0)
                                                        +
                                                        38  inquire(file=file,exist=exist)
                                                        +
                                                        39  if (.not.exist) then
                                                        +
                                                        40  print *,trim(file)//' does not exist'
                                                        +
                                                        41  call exit(3)
                                                        +
                                                        42  endif
                                                        +
                                                        43  open(lunbf,file=file,form='unformatted')
                                                        +
                                                        44 
                                                        +
                                                        45  ninv = 0
                                                        +
                                                        46  nsub = 0
                                                        +
                                                        47 
                                                        +
                                                        48 
                                                        +
                                                        49  ! COMPUTE AN MESSAGE INVENTORY BY SUBSETS
                                                        +
                                                        50  ! ---------------------------------------
                                                        +
                                                        51 
                                                        +
                                                        52  CALL openbf(lunbf,'IN',lunbf)
                                                        +
                                                        53  DO WHILE(ireadmg(lunbf,subset,idate)==0)
                                                        +
                                                        54  isub = 0
                                                        +
                                                        55  DO i=1,nsub
                                                        +
                                                        56  IF(subset==sub(i)) isub = i
                                                        +
                                                        57  ENDDO
                                                        +
                                                        58  IF(isub==0) THEN
                                                        +
                                                        59  IF(nsub+1>maxsub) CALL bort('NSUB TOO BIG')
                                                        +
                                                        60  sub(nsub+1) = subset
                                                        +
                                                        61  nsub = nsub+1
                                                        +
                                                        62  isub = nsub
                                                        +
                                                        63  ENDIF
                                                        +
                                                        64  ninv(1,isub) = ninv(1,isub)+1
                                                        +
                                                        65  ninv(2,isub) = ninv(2,isub)+nmsub(lunbf)
                                                        +
                                                        66  ninv(3,isub) = ninv(3,isub)+nmbyt(lunbf)
                                                        +
                                                        67  ENDDO
                                                        +
                                                        68 
                                                        +
                                                        69  ! PRINT THE INVENTORY
                                                        +
                                                        70  ! -------------------
                                                        +
                                                        71 
                                                        +
                                                        72  print*
                                                        +
                                                        73  print'(a4,6x,2(a10,4x),a11)','type','messages','subsets','bytes'
                                                        +
                                                        74  print*
                                                        +
                                                        75  DO j=1,nsub
                                                        +
                                                        76  xmsg = ninv(1,j)
                                                        +
                                                        77  xsub = ninv(2,j)
                                                        +
                                                        78  print'(a8,2x,2(i10,4x),i11,4x,f8.2)',sub(j),(ninv(i,j),i=1,3),xsub/xmsg
                                                        +
                                                        79  IF(j>1) THEN
                                                        +
                                                        80  ninv(1,1) = ninv(1,1)+ninv(1,j)
                                                        +
                                                        81  ninv(2,1) = ninv(2,1)+ninv(2,j)
                                                        +
                                                        82  ninv(3,1) = ninv(3,1)+ninv(3,j)
                                                        +
                                                        83  ENDIF
                                                        +
                                                        84  ENDDO
                                                        +
                                                        85 
                                                        +
                                                        86  print'(a8,2x,2(i10,4x),i11,4x)','TOTAL ',(ninv(i,1),i=1,3)
                                                        +
                                                        87  print*
                                                        +
                                                        88 
                                                        +
                                                        89  stop
                                                        +
                                                        90 END PROGRAM binv
                                                        +
                                                        program binv
                                                        Usage: binv <bufrfile> will print bufrfile inventory by message type.
                                                        Definition: binv.F90:11
                                                        +
                                                        subroutine bort(str)
                                                        Log an error message, then abort the application program.
                                                        Definition: borts.F90:15
                                                        +
                                                        recursive subroutine openbf(lunit, io, lundx)
                                                        Connect a new file to the NCEPLIBS-bufr software for input or output operations, or initialize the li...
                                                        +
                                                        recursive integer function nmsub(lunit)
                                                        Get the total number of data subsets available within the BUFR message that was most recently opened ...
                                                        +
                                                        recursive integer function ireadmg(lunit, subset, idate)
                                                        Call subroutine readmg() and pass back its return code as the function value.
                                                        +
                                                        recursive integer function iupvs01(lunit, s01mnem)
                                                        Read a specified value from within Section 0 or 1 of a BUFR message.
                                                        Definition: s013vals.F90:443
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/bitmaps_8F90.html b/previous_versions/v12.1.0/bitmaps_8F90.html new file mode 100644 index 000000000..9e824ad7d --- /dev/null +++ b/previous_versions/v12.1.0/bitmaps_8F90.html @@ -0,0 +1,336 @@ + + + + + + + +NCEPLIBS-bufr: bitmaps.F90 File Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        bitmaps.F90 File Reference
                                                        +
                                                        +
                                                        + +

                                                        Process bitmaps within BUFR messages. +More...

                                                        + +

                                                        Go to the source code of this file.

                                                        + + + + + + + + + + + + + + +

                                                        +Functions/Subroutines

                                                        recursive subroutine gettagre (lunit, tagi, ntagi, tagre, ntagre, iret)
                                                         Check whether a specified Table B mnemonic references another Table B mnemonic within the same data subset via an internal bitmap. More...
                                                         
                                                        integer function igetrfel (n, lun)
                                                         Check whether a subset element refers to a previous element within the same subset via an internal bitmap. More...
                                                         
                                                        integer function imrkopr (nemo)
                                                         Check whether a specified mnemonic is a Table C marker operator. More...
                                                         
                                                        subroutine strbtm (n, lun)
                                                         Store internal information in module moda_bitmaps if the input element is part of a bitmap. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Process bitmaps within BUFR messages.

                                                        +
                                                        Author
                                                        J Ator
                                                        +
                                                        Date
                                                        2016-05-27
                                                        + +

                                                        Definition in file bitmaps.F90.

                                                        +

                                                        Function/Subroutine Documentation

                                                        + +

                                                        ◆ gettagre()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        recursive subroutine gettagre (integer, intent(in) lunit,
                                                        character*(*), intent(in) tagi,
                                                        integer, intent(in) ntagi,
                                                        character*(*), intent(out) tagre,
                                                        integer, intent(out) ntagre,
                                                        integer, intent(out) iret 
                                                        )
                                                        +
                                                        + +

                                                        Check whether a specified Table B mnemonic references another Table B mnemonic within the same data subset via an internal bitmap.

                                                        +

                                                        If so, then the referenced mnemonic is returned along with its location within the subset.

                                                        +
                                                        Parameters
                                                        + + + + + + + +
                                                        lunit- Fortran logical unit number for BUFR file
                                                        tagi- Table B mnemonic
                                                        ntagi- Ordinal occurrence of tagi for which tagre is to be returned, counting from the beginning of the overall subset definition
                                                        tagre- Table B mnemonic referenced by tagi via an internal bitmap
                                                        ntagre- Ordinal occurrence of tagre referenced by (ntagi)th occurrence of tagi, counting from the beginning of the overall subset definition
                                                        iret- Return code
                                                          +
                                                        • 0 = normal return
                                                        • +
                                                        • -1 = tagre could not be found, or some other error occurred
                                                        • +
                                                        +
                                                        +
                                                        +
                                                        +

                                                        A data subset must already be in scope within the NCEPLIBS-bufr internal arrays for lunit, either via a previous call to one of the subset-reading subroutines (when reading BUFR data subsets) or via a previous call to one of the message-writing subroutines (when writing BUFR data subsets).

                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2016-06-07
                                                        + +

                                                        Definition at line 102 of file bitmaps.F90.

                                                        + +

                                                        References fstag(), moda_msgcwd::inode, moda_usrint::inv, moda_usrint::nrfelm, status(), strsuc(), moda_tables::tag, x48(), and x84().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ igetrfel()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        integer function igetrfel (integer, intent(in) n,
                                                        integer, intent(in) lun 
                                                        )
                                                        +
                                                        + +

                                                        Check whether a subset element refers to a previous element within the same subset via an internal bitmap.

                                                        +

                                                        If so, then the referenced element is returned. In addition, if the input element is a 2-XX-255 marker operator, then its scale factor, bit width and reference values are set internally to match those of the referenced element.

                                                        +
                                                        Parameters
                                                        + + + +
                                                        n- Subset element
                                                        lun- File ID
                                                        +
                                                        +
                                                        +
                                                        Returns
                                                        Subset element referenced by element n within the same subset
                                                          +
                                                        • 0 = Input element does not refer to a previous element, or referenced element not found
                                                        • +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2016-05-27
                                                        + +

                                                        Definition at line 175 of file bitmaps.F90.

                                                        + +

                                                        References adn30(), bort(), moda_bitmaps::ctco, moda_tables::ibt, moda_bitmaps::ibtmse, moda_nrv203::ienrv, imrkopr(), moda_msgcwd::inode, moda_nrv203::inodnrv, moda_bitmaps::inodtamc, moda_bitmaps::inodtco, moda_usrint::inv, moda_tables::irf, moda_tables::isc, moda_nrv203::isnrv, moda_bitmaps::istbtm, moda_bitmaps::iszbtm, moda_tables::itp, lstjpb(), moda_bitmaps::lstnod, moda_bitmaps::lstnodct, moda_bitmaps::nbtm, moda_bitmaps::nbtmse, nemtab(), moda_nrv203::nnrv, moda_nrv203::nrv, moda_bitmaps::ntamc, moda_bitmaps::ntco, moda_usrint::nval, moda_tables::tag, and moda_nrv203::tagnrv.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ imrkopr()

                                                        + +
                                                        +
                                                        + + + + + + + + +
                                                        integer function imrkopr (character*(*), intent(in) nemo)
                                                        +
                                                        + +

                                                        Check whether a specified mnemonic is a Table C marker operator.

                                                        +
                                                        Parameters
                                                        + + +
                                                        nemo- Mnemonic
                                                        +
                                                        +
                                                        +
                                                        Returns
                                                        Flag indicating whether nemo is a Table C marker operator:
                                                          +
                                                        • 0 = No
                                                        • +
                                                        • 1 = Yes
                                                        • +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2016-05-04
                                                        + +

                                                        Definition at line 353 of file bitmaps.F90.

                                                        + +

                                                        Referenced by igetrfel(), bufr_c2f_interface::imrkopr_c(), and iokoper().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ strbtm()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        subroutine strbtm (integer, intent(in) n,
                                                        integer, intent(in) lun 
                                                        )
                                                        +
                                                        + +

                                                        Store internal information in module moda_bitmaps if the input element is part of a bitmap.

                                                        +
                                                        Parameters
                                                        + + + +
                                                        n- Subset element
                                                        lun- File ID
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2016-05-27
                                                        + +

                                                        Definition at line 12 of file bitmaps.F90.

                                                        + +

                                                        References bort(), moda_bitmaps::ctco, moda_bitmaps::ibtmse, moda_msgcwd::inode, moda_bitmaps::inodtamc, moda_bitmaps::inodtco, moda_usrint::inv, moda_tables::isc, moda_bitmaps::istbtm, moda_bitmaps::iszbtm, moda_tables::itp, moda_bitmaps::linbtm, moda_bitmaps::nbtm, moda_bitmaps::nbtmse, moda_bitmaps::ntamc, moda_bitmaps::ntco, moda_tables::tag, and moda_usrint::val.

                                                        + +

                                                        Referenced by rcstpl(), and rdcmps().

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/bitmaps_8F90.js b/previous_versions/v12.1.0/bitmaps_8F90.js new file mode 100644 index 000000000..45a620fea --- /dev/null +++ b/previous_versions/v12.1.0/bitmaps_8F90.js @@ -0,0 +1,7 @@ +var bitmaps_8F90 = +[ + [ "gettagre", "bitmaps_8F90.html#a867a81be072effc2a9d2de0d6031e264", null ], + [ "igetrfel", "bitmaps_8F90.html#a2dd600ba6cd71e06a19d88956337781b", null ], + [ "imrkopr", "bitmaps_8F90.html#ad95571bf5308d6b64163d3bcc7ea3512", null ], + [ "strbtm", "bitmaps_8F90.html#a81f55f4b1f740f3ac6e3f56ee0a06dee", null ] +]; \ No newline at end of file diff --git a/previous_versions/v12.1.0/bitmaps_8F90_source.html b/previous_versions/v12.1.0/bitmaps_8F90_source.html new file mode 100644 index 000000000..4f3b98565 --- /dev/null +++ b/previous_versions/v12.1.0/bitmaps_8F90_source.html @@ -0,0 +1,460 @@ + + + + + + + +NCEPLIBS-bufr: bitmaps.F90 Source File + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        +
                                                        bitmaps.F90
                                                        +
                                                        +
                                                        +Go to the documentation of this file.
                                                        1 
                                                        +
                                                        5 
                                                        +
                                                        12 subroutine strbtm ( n, lun )
                                                        +
                                                        13 
                                                        +
                                                        14  use modv_vars, only: mxbtm, mxbtmse
                                                        +
                                                        15 
                                                        +
                                                        16  use moda_msgcwd
                                                        +
                                                        17  use moda_usrint
                                                        +
                                                        18  use moda_tables
                                                        +
                                                        19  use moda_bitmaps
                                                        +
                                                        20 
                                                        +
                                                        21  implicit none
                                                        +
                                                        22 
                                                        +
                                                        23  integer, intent(in) :: n, lun
                                                        +
                                                        24  integer node, nodtam, ii, jj, ibfms, lstjpb
                                                        +
                                                        25 
                                                        +
                                                        26  logical isbtme
                                                        +
                                                        27 
                                                        +
                                                        28  node = inv( n, lun )
                                                        +
                                                        29 
                                                        +
                                                        30  if ( tag(node)(1:5) == 'DPRI ' ) then
                                                        +
                                                        31  ! Confirm that this is really an entry within a bitmap. Although it's rare, it is possible for a DPRI element
                                                        +
                                                        32  ! to appear in a subset definition outside of a bitmap.
                                                        +
                                                        33  isbtme = .false.
                                                        +
                                                        34  if ( ntamc > 0 ) then
                                                        +
                                                        35  nodtam = lstjpb( node, lun, 'SUB' )
                                                        +
                                                        36  do ii = 1, ntamc
                                                        +
                                                        37  if ( nodtam == inodtamc(ii) ) then
                                                        +
                                                        38  do jj = 1, ntco(ii)
                                                        +
                                                        39  if ( ( inodtco(ii,jj) >= inode(lun) ) .and. ( inodtco(ii,jj) <= isc(inode(lun)) ) .and. &
                                                        +
                                                        40  ( inodtco(ii,jj) < node ) ) then
                                                        +
                                                        41  if ( ctco(ii,jj) == '236000' ) then
                                                        +
                                                        42  isbtme = .true.
                                                        +
                                                        43  else if ( ( ctco(ii,jj) == '235000' ) .or. ( ctco(ii,jj) == '237255' ) ) then
                                                        +
                                                        44  isbtme = .false.
                                                        +
                                                        45  end if
                                                        +
                                                        46  end if
                                                        +
                                                        47  end do
                                                        +
                                                        48  end if
                                                        +
                                                        49  end do
                                                        +
                                                        50  end if
                                                        +
                                                        51  if ( .not. isbtme ) then
                                                        +
                                                        52  linbtm = .false.
                                                        +
                                                        53  return
                                                        +
                                                        54  endif
                                                        +
                                                        55  if ( .not. linbtm ) then
                                                        +
                                                        56  ! This is the start of a new bitmap.
                                                        +
                                                        57  if ( nbtm >= mxbtm ) call bort('BUFRLIB: STRBTM - MXBTM OVERFLOW')
                                                        +
                                                        58  nbtm = nbtm + 1
                                                        +
                                                        59  istbtm(nbtm) = n
                                                        +
                                                        60  iszbtm(nbtm) = 0
                                                        +
                                                        61  nbtmse(nbtm) = 0
                                                        +
                                                        62  linbtm = .true.
                                                        +
                                                        63  end if
                                                        +
                                                        64  iszbtm(nbtm) = iszbtm(nbtm) + 1
                                                        +
                                                        65  if ( ibfms(val(n,lun)) == 0 ) then
                                                        +
                                                        66  ! This is a "set" (value=0) entry in the bitmap.
                                                        +
                                                        67  if ( nbtmse(nbtm) >= mxbtmse ) call bort('BUFRLIB: STRBTM - MXBTMSE OVERFLOW')
                                                        +
                                                        68  nbtmse(nbtm) = nbtmse(nbtm) + 1
                                                        + +
                                                        70  end if
                                                        +
                                                        71  else if ( itp(node) > 1 ) then
                                                        +
                                                        72  linbtm = .false.
                                                        +
                                                        73  end if
                                                        +
                                                        74 
                                                        +
                                                        75  return
                                                        +
                                                        76 end subroutine strbtm
                                                        +
                                                        77 
                                                        +
                                                        102 recursive subroutine gettagre ( lunit, tagi, ntagi, tagre, ntagre, iret )
                                                        +
                                                        103 
                                                        +
                                                        104  use modv_vars, only: im8b
                                                        +
                                                        105 
                                                        +
                                                        106  use moda_usrint
                                                        +
                                                        107  use moda_msgcwd
                                                        +
                                                        108  use moda_tables
                                                        +
                                                        109 
                                                        +
                                                        110  implicit none
                                                        +
                                                        111 
                                                        +
                                                        112  integer, intent(in) :: lunit, ntagi
                                                        +
                                                        113  integer, intent(out) :: iret, ntagre
                                                        +
                                                        114  integer my_lunit, my_ntagi, lun, il, im, ni, nre, ltre, ii
                                                        +
                                                        115 
                                                        +
                                                        116  character*(*), intent(in) :: tagi
                                                        +
                                                        117  character*(*), intent(out) :: tagre
                                                        +
                                                        118  character*10 tagtmp
                                                        +
                                                        119 
                                                        +
                                                        120  ! Check for I8 integers.
                                                        +
                                                        121 
                                                        +
                                                        122  if(im8b) then
                                                        +
                                                        123  im8b=.false.
                                                        +
                                                        124  call x84(lunit,my_lunit,1)
                                                        +
                                                        125  call x84(ntagi,my_ntagi,1)
                                                        +
                                                        126  call gettagre(my_lunit,tagi,my_ntagi,tagre,ntagre,iret)
                                                        +
                                                        127  call x48(ntagre,ntagre,1)
                                                        +
                                                        128  call x48(iret,iret,1)
                                                        +
                                                        129  im8b=.true.
                                                        +
                                                        130  return
                                                        +
                                                        131  endif
                                                        +
                                                        132 
                                                        +
                                                        133  iret = -1
                                                        +
                                                        134 
                                                        +
                                                        135  ! Get lun from lunit.
                                                        +
                                                        136 
                                                        +
                                                        137  call status( lunit, lun, il, im )
                                                        +
                                                        138  if ( il == 0 ) return
                                                        +
                                                        139  if ( inode(lun) /= inv(1,lun) ) return
                                                        +
                                                        140 
                                                        +
                                                        141  ! Get tagre and ntagre from the (ntagi)th occurrence of tagi.
                                                        +
                                                        142 
                                                        +
                                                        143  call fstag( lun, tagi, ntagi, 1, ni, iret )
                                                        +
                                                        144  if ( iret /= 0 ) return
                                                        +
                                                        145  nre = nrfelm(ni,lun)
                                                        +
                                                        146  if ( nre > 0 ) then
                                                        +
                                                        147  iret = 0
                                                        +
                                                        148  tagre = tag(inv(nre,lun))
                                                        +
                                                        149  call strsuc( tagre, tagtmp, ltre )
                                                        +
                                                        150  ntagre = 0
                                                        +
                                                        151  do ii = 1, nre
                                                        +
                                                        152  if ( tag(inv(ii,lun))(1:ltre) == tagre(1:ltre) ) then
                                                        +
                                                        153  ntagre = ntagre + 1
                                                        +
                                                        154  end if
                                                        +
                                                        155  end do
                                                        +
                                                        156  end if
                                                        +
                                                        157 
                                                        +
                                                        158  return
                                                        +
                                                        159 end subroutine gettagre
                                                        +
                                                        160 
                                                        +
                                                        175 integer function igetrfel ( n, lun ) result ( iret )
                                                        +
                                                        176 
                                                        +
                                                        177  use moda_msgcwd
                                                        +
                                                        178  use moda_usrint
                                                        +
                                                        179  use moda_tables
                                                        +
                                                        180  use moda_bitmaps
                                                        +
                                                        181  use moda_nrv203
                                                        +
                                                        182 
                                                        +
                                                        183  implicit none
                                                        +
                                                        184 
                                                        +
                                                        185  integer, intent(in) :: n, lun
                                                        +
                                                        186  integer node, ii, jj, nn, idxta, idn, ntc, nodflw, nodl236, nodbmap, nodrfe, nodnn, nodtam, idxbtm, iemrk, iect, &
                                                        +
                                                        187  lstjpb, imrkopr
                                                        +
                                                        188 
                                                        +
                                                        189  character*(*), parameter :: bort_str_mrkopr = &
                                                        +
                                                        190  'BUFRLIB: IGETRFEL - UNABLE TO FIND PREVIOUS ELEMENT REFERENCED BY MARKER OPERATOR '
                                                        +
                                                        191  character*128 bort_str
                                                        +
                                                        192  character*6 cflwopr, adn30, fxy
                                                        +
                                                        193  character*1 tab
                                                        +
                                                        194 
                                                        +
                                                        195  iret = 0
                                                        +
                                                        196 
                                                        +
                                                        197  node = inv( n, lun )
                                                        +
                                                        198 
                                                        +
                                                        199  if ( itp(node) > 1 ) then
                                                        +
                                                        200  if ( node == lstnod ) then
                                                        +
                                                        201  lstnodct = lstnodct + 1
                                                        +
                                                        202  else
                                                        +
                                                        203  lstnod = node
                                                        +
                                                        204  lstnodct = 1
                                                        +
                                                        205  end if
                                                        +
                                                        206  ! Does this subset definition contain any Table C operators with an X value of 21 or greater?
                                                        +
                                                        207  idxta = 0
                                                        +
                                                        208  if ( ntamc > 0 ) then
                                                        +
                                                        209  nodtam = lstjpb( node, lun, 'SUB' )
                                                        +
                                                        210  do ii = 1, ntamc
                                                        +
                                                        211  if ( nodtam == inodtamc(ii) ) then
                                                        +
                                                        212  idxta = ii
                                                        +
                                                        213  ntc = ntco(ii)
                                                        +
                                                        214  end if
                                                        +
                                                        215  end do
                                                        +
                                                        216  end if
                                                        +
                                                        217  if ( ( idxta > 0 ) .and. ( nbtm > 0 ) ) then
                                                        +
                                                        218  ! Check whether this element references a previous element in the same subset via an internal bitmap. To do this,
                                                        +
                                                        219  ! we first need to determine the appropriate "follow" operator (if any) corresponding to this element.
                                                        +
                                                        220  cflwopr = 'XXXXXX'
                                                        +
                                                        221  if ( imrkopr(tag(node)) == 1 ) then
                                                        +
                                                        222  cflwopr = tag(node)(1:3) // '000'
                                                        +
                                                        223  else
                                                        +
                                                        224  call nemtab( lun, tag(node), idn, tab, nn )
                                                        +
                                                        225  if ( tab == 'B' ) then
                                                        +
                                                        226  fxy = adn30(idn,6)
                                                        +
                                                        227  if ( fxy(2:3) == '33' ) cflwopr = '222000'
                                                        +
                                                        228  end if
                                                        +
                                                        229  end if
                                                        +
                                                        230  if ( cflwopr == 'XXXXXX' ) return
                                                        +
                                                        231  ! Now, check whether the appropriate "follow" operator was actually present in the subset. If there are multiple
                                                        +
                                                        232  ! occurrences, we want the one that most recently precedes the element in question.
                                                        +
                                                        233  nodflw = 0
                                                        +
                                                        234  do jj = 1, ntc
                                                        +
                                                        235  if ( ( ctco(idxta,jj) == cflwopr ) .and. ( inodtco(idxta,jj) >= inode(lun) ) .and. &
                                                        +
                                                        236  ( inodtco(idxta,jj) <= isc(inode(lun)) ) .and. ( inodtco(idxta,jj) < node ) ) nodflw = inodtco(idxta,jj)
                                                        +
                                                        237  enddo
                                                        +
                                                        238  if ( nodflw == 0 ) then
                                                        +
                                                        239  if ( imrkopr(tag(node)) == 1 ) then
                                                        +
                                                        240  write(bort_str,'("BUFRLB: IGETRFEL - UNABLE TO FIND FOLLOW OPERATOR ",A," IN SUBSET")') cflwopr
                                                        +
                                                        241  call bort(bort_str)
                                                        +
                                                        242  endif
                                                        +
                                                        243  return
                                                        +
                                                        244  end if
                                                        +
                                                        245  ! We found an appropriate corresponding "follow" operator, so now we need to look for a bitmap corresponding to
                                                        +
                                                        246  ! this operator. First, look for a bitmap indicator.
                                                        +
                                                        247  nodl236 = 0
                                                        +
                                                        248  nodbmap = 0
                                                        +
                                                        249  jj = 1
                                                        +
                                                        250  do while ( ( jj <= ntc ) .and. ( inodtco(idxta,jj) >= inode(lun) ) .and. &
                                                        +
                                                        251  ( inodtco(idxta,jj) <= isc(inode(lun)) ) .and. ( nodbmap == 0 ) )
                                                        +
                                                        252  if ( ctco(idxta,jj) == '236000' ) then
                                                        +
                                                        253  nodl236 = inodtco(idxta,jj)
                                                        +
                                                        254  if ( inodtco(idxta,jj) == nodflw ) nodbmap = nodflw
                                                        +
                                                        255  else if ( ( ctco(idxta,jj) == '235000' ) .or. ( ctco(idxta,jj) == '237255' ) ) then
                                                        +
                                                        256  nodl236 = 0
                                                        +
                                                        257  else if ( ( ctco(idxta,jj) == '237000' ) .and. ( inodtco(idxta,jj) == nodflw ) .and. ( nodl236 /= 0 ) ) then
                                                        +
                                                        258  nodbmap = nodl236
                                                        +
                                                        259  end if
                                                        +
                                                        260  jj = jj + 1
                                                        +
                                                        261  end do
                                                        +
                                                        262  if ( nodbmap == 0 ) then
                                                        +
                                                        263  ! There was no valid bitmap indicator, so we'll just look for a bitmap after the "follow" indicator.
                                                        +
                                                        264  nodbmap = nodflw
                                                        +
                                                        265  end if
                                                        +
                                                        266  ! Find the corresponding bitmap.
                                                        +
                                                        267  nn = 1
                                                        +
                                                        268  idxbtm = 0
                                                        +
                                                        269  do while ( ( idxbtm == 0 ) .and. ( nn <= nval(lun) ) )
                                                        +
                                                        270  if ( inv( nn, lun ) > nodbmap ) then
                                                        +
                                                        271  ii = 1
                                                        +
                                                        272  do while ( ( idxbtm == 0 ) .and. ( ii <= nbtm ) )
                                                        +
                                                        273  if ( nn == istbtm(ii) ) then
                                                        +
                                                        274  idxbtm = ii
                                                        +
                                                        275  else
                                                        +
                                                        276  ii = ii + 1
                                                        +
                                                        277  end if
                                                        +
                                                        278  end do
                                                        +
                                                        279  end if
                                                        +
                                                        280  nn = nn + 1
                                                        +
                                                        281  end do
                                                        +
                                                        282  if ( idxbtm == 0 ) then
                                                        +
                                                        283  if ( imrkopr(tag(node)) == 1 ) then
                                                        +
                                                        284  write(bort_str,'("BUFRLB: IGETRFEL - UNABLE TO FIND BITMAP FOR MARKER OPERATOR ",A)') tag(node)
                                                        +
                                                        285  call bort(bort_str)
                                                        +
                                                        286  endif
                                                        +
                                                        287  return
                                                        +
                                                        288  end if
                                                        +
                                                        289  ! Use the bitmap to find the previous element in the subset that is referenced by the current element.
                                                        +
                                                        290  ! Search backwards from the start of the bitmap, but make sure not to cross a 2-35-000 operator.
                                                        +
                                                        291  if ( lstnodct > nbtmse(idxbtm) ) then
                                                        +
                                                        292  if ( imrkopr(tag(node)) == 1 ) call bort( bort_str_mrkopr // tag(node) )
                                                        +
                                                        293  return
                                                        +
                                                        294  end if
                                                        +
                                                        295  iemrk = iszbtm(idxbtm) - ibtmse(idxbtm,lstnodct) + 1
                                                        +
                                                        296  iect = 0
                                                        +
                                                        297  do while ( ( nn >= 1 ) .and. ( iret == 0 ) )
                                                        +
                                                        298  nodnn = inv( nn, lun )
                                                        +
                                                        299  if ( nodnn <= nodbmap ) then
                                                        +
                                                        300  do jj = 1, ntc
                                                        +
                                                        301  if ( ( nodnn == inodtco(idxta,jj) ) .and. ( ctco(idxta,jj) == '235000' ) ) then
                                                        +
                                                        302  if ( imrkopr(tag(node)) == 1 ) call bort( bort_str_mrkopr // tag(node) )
                                                        +
                                                        303  return
                                                        +
                                                        304  end if
                                                        +
                                                        305  end do
                                                        +
                                                        306  if ( itp(nodnn) > 1 ) then
                                                        +
                                                        307  iect = iect + 1
                                                        +
                                                        308  if ( iect == iemrk ) iret = nn
                                                        +
                                                        309  end if
                                                        +
                                                        310  end if
                                                        +
                                                        311  nn = nn - 1
                                                        +
                                                        312  end do
                                                        +
                                                        313  if ( iret == 0 ) then
                                                        +
                                                        314  if ( imrkopr(tag(node)) == 1 ) call bort( bort_str_mrkopr // tag(node) )
                                                        +
                                                        315  return
                                                        +
                                                        316  end if
                                                        +
                                                        317  if ( imrkopr(tag(node)) == 1 ) then
                                                        +
                                                        318  ! This element is a marker operator, so set the scale, reference value and bit width accordingly based on
                                                        +
                                                        319  ! those of the previous referenced element.
                                                        +
                                                        320  nodrfe = inv( iret, lun )
                                                        +
                                                        321  isc(node) = isc(nodrfe)
                                                        +
                                                        322  if ( tag(node)(1:3) == '225' ) then
                                                        +
                                                        323  ibt(node) = ibt(nodrfe) + 1
                                                        +
                                                        324  irf(node) = -1 * (2 ** ibt(nodrfe))
                                                        +
                                                        325  else
                                                        +
                                                        326  ibt(node) = ibt(nodrfe)
                                                        +
                                                        327  irf(node) = irf(nodrfe)
                                                        +
                                                        328  if ( nnrv > 0 ) then
                                                        +
                                                        329  do ii = 1, nnrv
                                                        +
                                                        330  if ( ( nodrfe /= inodnrv(ii) ) .and. ( tag(nodrfe)(1:8) == tagnrv(ii) ) .and. &
                                                        +
                                                        331  ( nodrfe >= isnrv(ii) ) .and. ( nodrfe <= ienrv(ii) ) ) then
                                                        +
                                                        332  irf(node) = int(nrv(ii))
                                                        +
                                                        333  return
                                                        +
                                                        334  end if
                                                        +
                                                        335  end do
                                                        +
                                                        336  end if
                                                        +
                                                        337  end if
                                                        +
                                                        338  end if
                                                        +
                                                        339  end if
                                                        +
                                                        340  end if
                                                        +
                                                        341 
                                                        +
                                                        342  return
                                                        +
                                                        343 end function igetrfel
                                                        +
                                                        344 
                                                        +
                                                        353 integer function imrkopr(nemo) result(iret)
                                                        +
                                                        354 
                                                        +
                                                        355  implicit none
                                                        +
                                                        356 
                                                        +
                                                        357  character*(*), intent(in) :: nemo
                                                        +
                                                        358 
                                                        +
                                                        359  if (len(nemo)<6) then
                                                        +
                                                        360  iret = 0
                                                        +
                                                        361  else if ( ( nemo(4:6)=='255' ) .and. &
                                                        +
                                                        362  ( ( nemo(1:3)=='223' ) .or. ( nemo(1:3)=='224' ) .or. ( nemo(1:3)=='225' ) .or. ( nemo(1:3)=='232' ) ) ) then
                                                        +
                                                        363  iret = 1
                                                        +
                                                        364  else
                                                        +
                                                        365  iret = 0
                                                        +
                                                        366  endif
                                                        +
                                                        367 
                                                        +
                                                        368  return
                                                        +
                                                        369 end function imrkopr
                                                        +
                                                        integer function igetrfel(n, lun)
                                                        Check whether a subset element refers to a previous element within the same subset via an internal bi...
                                                        Definition: bitmaps.F90:176
                                                        +
                                                        subroutine strbtm(n, lun)
                                                        Store internal information in module moda_bitmaps if the input element is part of a bitmap.
                                                        Definition: bitmaps.F90:13
                                                        +
                                                        recursive subroutine gettagre(lunit, tagi, ntagi, tagre, ntagre, iret)
                                                        Check whether a specified Table B mnemonic references another Table B mnemonic within the same data s...
                                                        Definition: bitmaps.F90:103
                                                        +
                                                        integer function imrkopr(nemo)
                                                        Check whether a specified mnemonic is a Table C marker operator.
                                                        Definition: bitmaps.F90:354
                                                        +
                                                        subroutine bort(str)
                                                        Log an error message, then abort the application program.
                                                        Definition: borts.F90:15
                                                        +
                                                        subroutine nemtab(lun, nemo, idn, tab, iret)
                                                        Get information about a descriptor, based on a mnemonic.
                                                        Definition: fxy.F90:432
                                                        +
                                                        character *(*) function adn30(idn, ldn)
                                                        Convert an FXY value from its WMO bit-wise representation to a character string of length 5 or 6.
                                                        Definition: fxy.F90:18
                                                        + + +
                                                        subroutine strsuc(str1, str2, lens)
                                                        Remove leading and trailing blanks from a character string.
                                                        Definition: misc.F90:220
                                                        +
                                                        Declare arrays and variables used to store bitmaps internally within a data subset definition.
                                                        +
                                                        integer, dimension(:), allocatable iszbtm
                                                        Size of bitmap (total number of entries, whether "set" (set to a value of 0) or not).
                                                        +
                                                        integer lstnod
                                                        Most recent jump/link table entry that was processed by function igetrfel() and whose corresponding v...
                                                        +
                                                        integer, dimension(:,:), allocatable inodtco
                                                        Entries within jump/link table which contain Table C operators.
                                                        +
                                                        integer ntamc
                                                        Number of Table A mnemonics in jump/link table (up to a maximum of mxtamc) which contain at least one...
                                                        +
                                                        integer, dimension(:), allocatable istbtm
                                                        Ordinal position in data subset definition corresponding to the first entry of the bitmap.
                                                        +
                                                        integer nbtm
                                                        Number of stored bitmaps for the current data subset (up to a maximum of mxbtm).
                                                        +
                                                        integer, dimension(:), allocatable inodtamc
                                                        Entries within jump/link table which contain Table A mnemonics.
                                                        +
                                                        integer, dimension(:,:), allocatable ibtmse
                                                        Ordinal positions in bitmap of bits that were "set" (set to a value of 0); these ordinal positions ca...
                                                        +
                                                        integer lstnodct
                                                        Current count of consecutive occurrences of lstnod.
                                                        +
                                                        logical linbtm
                                                        true if a bitmap is in the process of being read for the current data subset; false otherwise.
                                                        +
                                                        integer, dimension(:), allocatable nbtmse
                                                        Number of "set" entries (set to a value of 0) in the bitmap.
                                                        +
                                                        character *6, dimension(:,:), allocatable ctco
                                                        Table C operators corresponding to inodtco.
                                                        +
                                                        integer, dimension(:), allocatable ntco
                                                        Number of Table C operators (with an XX value of 21 or greater) within the data subset definition of ...
                                                        +
                                                        Declare arrays used to store information about the current BUFR message that is in the process of bei...
                                                        +
                                                        integer, dimension(:), allocatable inode
                                                        Table A mnemonic for type of BUFR message.
                                                        +
                                                        Declare arrays and variables for use with any 2-03-YYY (change reference value) operators present wit...
                                                        +
                                                        integer, dimension(:), allocatable ienrv
                                                        End of entry range in jump/link table, within which the corresponding new reference value in nrv will...
                                                        +
                                                        character *8, dimension(:), allocatable tagnrv
                                                        Table B mnemonic to which the corresponding new reference value in nrv applies.
                                                        +
                                                        integer, dimension(:), allocatable isnrv
                                                        Start of entry range in jump/link table, within which the corresponding new reference value in nrv wi...
                                                        +
                                                        integer nnrv
                                                        Number of entries in the jump/link table which contain new reference values (up to a maximum of mxnrv...
                                                        +
                                                        integer *8, dimension(:), allocatable nrv
                                                        New reference values corresponding to inodnrv.
                                                        +
                                                        integer, dimension(:), allocatable inodnrv
                                                        Entries within jump/link table which contain new reference values.
                                                        +
                                                        Declare arrays and variables used to store the internal jump/link table.
                                                        +
                                                        integer, dimension(:), allocatable irf
                                                        Reference values corresponding to tag and typ:
                                                        +
                                                        integer, dimension(:), allocatable isc
                                                        Scale factors corresponding to tag and typ:
                                                        +
                                                        integer, dimension(:), allocatable ibt
                                                        Bit widths corresponding to tag and typ:
                                                        +
                                                        character *10, dimension(:), allocatable tag
                                                        Mnemonics in the jump/link table.
                                                        +
                                                        integer, dimension(:), allocatable itp
                                                        Integer type values corresponding to typ:
                                                        +
                                                        Declare arrays used to store data values and associated metadata for the current BUFR data subset in ...
                                                        +
                                                        integer, dimension(:), allocatable nval
                                                        Number of data values in BUFR data subset.
                                                        +
                                                        real *8, dimension(:,:), allocatable, target val
                                                        Data values.
                                                        +
                                                        integer, dimension(:,:), allocatable, target inv
                                                        Inventory pointer which links each data value to its corresponding node in the internal jump/link tab...
                                                        +
                                                        integer, dimension(:,:), allocatable nrfelm
                                                        Referenced data value, for data values which refer to a previous data value in the BUFR data subset v...
                                                        +
                                                        recursive subroutine status(lunit, lun, il, im)
                                                        Check whether a specified Fortran logical unit number is currently connected to the NCEPLIBS-bufr sof...
                                                        +
                                                        subroutine x48(iin4, iout8, nval)
                                                        Encode one or more 4-byte integer values as 8-byte integer values.
                                                        Definition: x4884.F90:18
                                                        +
                                                        subroutine x84(iin8, iout4, nval)
                                                        Encode one or more 8-byte integer values as 4-byte integer values.
                                                        Definition: x4884.F90:65
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/blocks_8F90.html b/previous_versions/v12.1.0/blocks_8F90.html new file mode 100644 index 000000000..8799b41ac --- /dev/null +++ b/previous_versions/v12.1.0/blocks_8F90.html @@ -0,0 +1,216 @@ + + + + + + + +NCEPLIBS-bufr: blocks.F90 File Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        blocks.F90 File Reference
                                                        +
                                                        +
                                                        + +

                                                        Block BUFR messages with IEEE Fortran control words. +More...

                                                        + +

                                                        Go to the source code of this file.

                                                        + + + + + + + + +

                                                        +Functions/Subroutines

                                                        subroutine blocks (mbay, mwrd)
                                                         Encapsulate a BUFR message with IEEE Fortran control words as specified via the most recent call to subroutine setblock(). More...
                                                         
                                                        recursive subroutine setblock (iblk)
                                                         Specify whether BUFR messages output by future calls to message-writing subroutines should be encapsulated with IEEE Fortran control words when being written to output files. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Block BUFR messages with IEEE Fortran control words.

                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        2012-09-15
                                                        + +

                                                        Definition in file blocks.F90.

                                                        +

                                                        Function/Subroutine Documentation

                                                        + +

                                                        ◆ blocks()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        subroutine blocks (integer, dimension(*), intent(inout) mbay,
                                                        integer, intent(inout) mwrd 
                                                        )
                                                        +
                                                        + +

                                                        Encapsulate a BUFR message with IEEE Fortran control words as specified via the most recent call to subroutine setblock().

                                                        +

                                                        A previous call to subroutine setblock() is required in order to activate encapsulation with control words, and to specify whether the control words should be encoded using big-endian or little-endian byte ordering. In such cases, the input parameter mbay is then modified to add the specified control words to the existing BUFR message whenever this subroutine is called, and mwrd is also modified accordingly.

                                                        +

                                                        Alternatively, if subroutine setblock() was never previously called, or if no encapsulation was specified during the most recent call to subroutine setblock(), then this subroutine simply returns without modifying either of its input parameters.

                                                        +
                                                        Parameters
                                                        + + + +
                                                        mbay- BUFR message, possibly with added control words on output
                                                        mwrd- Size (in integers) of contents of mbay
                                                        +
                                                        +
                                                        +
                                                        Remarks
                                                          +
                                                        • For more information about IEEE Fortran control words, as well as their historical use within the NCEPLIBS-bufr software, see the documentation for subroutine setblock().
                                                        • +
                                                        • Whenever a BUFR message in mbay is to be encapsulated with control words, the user must ensure the availability of sufficient extra space when allocating mbay within the application program.
                                                        • +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        2012-09-15
                                                        + +

                                                        Definition at line 36 of file blocks.F90.

                                                        + +

                                                        Referenced by msgwrt().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ setblock()

                                                        + +
                                                        +
                                                        + + + + + + + + +
                                                        recursive subroutine setblock (integer, intent(in) iblk)
                                                        +
                                                        + +

                                                        Specify whether BUFR messages output by future calls to message-writing subroutines should be encapsulated with IEEE Fortran control words when being written to output files.

                                                        +

                                                        If control words are requested, then one 4-byte control word is written to the output file prior to the start of each BUFR message, and a second 4-byte control word is written to the output file after the end of each BUFR message. Each of these control words contains the byte count for the enclosed BUFR message, and they can be written using either big-endian or little-endian byte ordering, regardless of the native endianness of the local machine.

                                                        +

                                                        This subroutine can be called at any time after the first call to subroutine openbf(), and the specified value for iblk will remain in effect for all future calls to message-writing subroutines for all Fortran logical units that are open for output within the application program, unless a subsequent call is made to this subroutine to reset the value of iblk again. If this subroutine is never called, a default value of 0 is used for iblk, as set within subroutine bfrini().

                                                        +
                                                        Remarks
                                                          +
                                                        • This subroutine can be used to generate BUFR files consistent with historical archives, dating back to older versions of the NCEPLIBS-bufr software which used Fortran to directly read/write BUFR messages from/to files. Standard Fortran historically didn't have a way to read/write binary data streams without control words, so as a result many historical archives contain these by default. However, newer versions of the NCEPLIBS-bufr software use C to directly read/write BUFR messages from/to files (including historical archives), so control words are no longer necessary and are therefore now disabled by default when writing BUFR messages to output files.
                                                        • +
                                                        +
                                                        +
                                                        Parameters
                                                        + + +
                                                        iblk- Flag indicating whether future BUFR output messages should be encapsulated with control words:
                                                          +
                                                        • -1 = Yes, using little-endian control words
                                                        • +
                                                        • 0 = No (the default)
                                                        • +
                                                        • 1 = Yes, using big-endian control words
                                                        • +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        2012-09-15
                                                        + +

                                                        Definition at line 129 of file blocks.F90.

                                                        + +

                                                        References x84().

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/blocks_8F90.js b/previous_versions/v12.1.0/blocks_8F90.js new file mode 100644 index 000000000..4f1ef8bcb --- /dev/null +++ b/previous_versions/v12.1.0/blocks_8F90.js @@ -0,0 +1,5 @@ +var blocks_8F90 = +[ + [ "blocks", "blocks_8F90.html#a540b970b11e7da5147889d566c49b681", null ], + [ "setblock", "blocks_8F90.html#a552eedeacbddeccff86792eb99dad12f", null ] +]; \ No newline at end of file diff --git a/previous_versions/v12.1.0/blocks_8F90_source.html b/previous_versions/v12.1.0/blocks_8F90_source.html new file mode 100644 index 000000000..b3819a982 --- /dev/null +++ b/previous_versions/v12.1.0/blocks_8F90_source.html @@ -0,0 +1,182 @@ + + + + + + + +NCEPLIBS-bufr: blocks.F90 Source File + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        +
                                                        blocks.F90
                                                        +
                                                        +
                                                        +Go to the documentation of this file.
                                                        1 
                                                        +
                                                        4 
                                                        +
                                                        36 subroutine blocks(mbay,mwrd)
                                                        +
                                                        37 
                                                        +
                                                        38  use modv_vars, only: iblock, nbytw, iordle
                                                        +
                                                        39 
                                                        +
                                                        40  implicit none
                                                        +
                                                        41 
                                                        +
                                                        42  integer, intent(inout) :: mbay(*), mwrd
                                                        +
                                                        43 
                                                        +
                                                        44  integer iint, jint, i
                                                        +
                                                        45 
                                                        +
                                                        46  character*1 cint(4),dint(4)
                                                        +
                                                        47 
                                                        +
                                                        48  equivalence(cint,iint)
                                                        +
                                                        49  equivalence(dint,jint)
                                                        +
                                                        50 
                                                        +
                                                        51  if(iblock==0) return
                                                        +
                                                        52 
                                                        +
                                                        53  ! make room in mbay for control words - one at each end of the record
                                                        +
                                                        54 
                                                        +
                                                        55  do i=mwrd,1,-1
                                                        +
                                                        56  mbay(i+1) = mbay(i)
                                                        +
                                                        57  enddo
                                                        +
                                                        58 
                                                        +
                                                        59  ! store the endianized control word in bytes in dint/jint
                                                        +
                                                        60 
                                                        +
                                                        61  iint=mwrd*4
                                                        +
                                                        62 
                                                        +
                                                        63  do i=1,nbytw
                                                        +
                                                        64  if(iblock==-1) then
                                                        +
                                                        65 #ifdef BIG_ENDIAN
                                                        +
                                                        66  dint(i)=cint(iordle(i))
                                                        +
                                                        67 #else
                                                        +
                                                        68  dint(i)=cint(i)
                                                        +
                                                        69 #endif
                                                        +
                                                        70  elseif(iblock==1) then
                                                        +
                                                        71 #ifdef LITTLE_ENDIAN
                                                        +
                                                        72  dint(i)=cint(iordle(i))
                                                        +
                                                        73 #else
                                                        +
                                                        74  dint(i)=cint(i)
                                                        +
                                                        75 #endif
                                                        +
                                                        76  endif
                                                        +
                                                        77  enddo
                                                        +
                                                        78 
                                                        +
                                                        79  ! increment mrwd and install the control words in their proper places
                                                        +
                                                        80 
                                                        +
                                                        81  mwrd = mwrd+2
                                                        +
                                                        82  mbay(1) = jint
                                                        +
                                                        83  mbay(mwrd) = jint
                                                        +
                                                        84 
                                                        +
                                                        85  return
                                                        +
                                                        86 end subroutine blocks
                                                        +
                                                        87 
                                                        +
                                                        129 recursive subroutine setblock(iblk)
                                                        +
                                                        130 
                                                        +
                                                        131  use modv_vars, only: im8b, iblock
                                                        +
                                                        132 
                                                        +
                                                        133  implicit none
                                                        +
                                                        134 
                                                        +
                                                        135  integer, intent(in) :: iblk
                                                        +
                                                        136 
                                                        +
                                                        137  integer my_iblk
                                                        +
                                                        138 
                                                        +
                                                        139  ! Check for I8 integers.
                                                        +
                                                        140 
                                                        +
                                                        141  if(im8b) then
                                                        +
                                                        142  im8b=.false.
                                                        +
                                                        143 
                                                        +
                                                        144  call x84(iblk,my_iblk,1)
                                                        +
                                                        145  call setblock(my_iblk)
                                                        +
                                                        146 
                                                        +
                                                        147  im8b=.true.
                                                        +
                                                        148  return
                                                        +
                                                        149  endif
                                                        +
                                                        150 
                                                        +
                                                        151  iblock=iblk
                                                        +
                                                        152 
                                                        +
                                                        153  return
                                                        +
                                                        154 end subroutine setblock
                                                        +
                                                        subroutine blocks(mbay, mwrd)
                                                        Encapsulate a BUFR message with IEEE Fortran control words as specified via the most recent call to s...
                                                        Definition: blocks.F90:37
                                                        +
                                                        recursive subroutine setblock(iblk)
                                                        Specify whether BUFR messages output by future calls to message-writing subroutines should be encapsu...
                                                        Definition: blocks.F90:130
                                                        +
                                                        subroutine x84(iin8, iout4, nval)
                                                        Encode one or more 8-byte integer values as 4-byte integer values.
                                                        Definition: x4884.F90:65
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/borts_8F90.html b/previous_versions/v12.1.0/borts_8F90.html new file mode 100644 index 000000000..d6665c09b --- /dev/null +++ b/previous_versions/v12.1.0/borts_8F90.html @@ -0,0 +1,204 @@ + + + + + + + +NCEPLIBS-bufr: borts.F90 File Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        borts.F90 File Reference
                                                        +
                                                        +
                                                        + +

                                                        Log one or more error messages and abort application program. +More...

                                                        + +

                                                        Go to the source code of this file.

                                                        + + + + + + + + +

                                                        +Functions/Subroutines

                                                        subroutine bort (str)
                                                         Log an error message, then abort the application program. More...
                                                         
                                                        subroutine bort2 (str1, str2)
                                                         Log two error messages, then abort the application program. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Log one or more error messages and abort application program.

                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2009-04-21
                                                        + +

                                                        Definition in file borts.F90.

                                                        +

                                                        Function/Subroutine Documentation

                                                        + +

                                                        ◆ bort()

                                                        + +
                                                        +
                                                        + + + + + + + + +
                                                        subroutine bort (character*(*), intent(in) str)
                                                        +
                                                        + +

                                                        Log an error message, then abort the application program.

                                                        +

                                                        This subroutine is similar to subroutine bort2(), except that bort2() logs two error messages instead of one.

                                                        +
                                                        Parameters
                                                        + + +
                                                        str- Error message
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1998-07-08
                                                        + +

                                                        Definition at line 14 of file borts.F90.

                                                        + +

                                                        References errwrt().

                                                        + +

                                                        Referenced by adn30(), arallocf(), atrcpt(), binv(), bufr_c2f_interface::bort_c(), bvers(), chekstab(), cktaba(), closmg(), cmpbqm(), cmpmsg(), cmsgini(), cnved4(), codflg(), copybf(), copymg(), copysb(), cpdxmm(), cpymem(), cpyupd(), datebf(), datelen(), dumpbf(), dxdump(), dxmini(), getcfmng(), gettbh(), getwin(), idn30(), ifbget(), igetntbi(), igetrfel(), igetsc(), igettdi(), inctab(), invmrg(), ipkm(), isize(), iupm(), iupvs01(), jstnum(), lcmgdf(), lstjpb(), makestab(), minimg(), msgini(), msgwrt(), nemtba(), nemtbax(), nemtbb(), nemtbd(), nenubd(), nevn(), newwin(), nmsub(), nvnwin(), nxtwin(), openbf(), openmb(), openmg(), pad(), padmsg(), parutg(), pkb(), pkb8(), pkbs1(), pkvs01(), posapx(), rcstpl(), rdbfdx(), rdcmps(), rdmemm(), rdmems(), rdmgsb(), rdmtbb(), rdmtbd(), rdmtbf(), readdx(), readerme(), readlc(), readmg(), readns(), reads3(), readsb(), rewnbf(), rtrcpt(), sinv(), sntbbe(), sntbde(), split_by_subset(), status(), stbfdx(), stdmsg(), stndrd(), stntbia(), strbtm(), strcpt(), tabent(), tabsub(), ufbcnt(), ufbcpy(), ufbcup(), ufbdmp(), ufbevn(), ufbget(), ufbin3(), ufbint(), ufbinx(), ufbmem(), ufbmex(), ufbmms(), ufbmns(), ufbovr(), ufbpos(), ufbqcd(), ufbqcp(), ufbrep(), ufbrms(), ufbseq(), ufbstp(), ufbtab(), ufbtam(), ufdump(), upb8(), upds3(), upftbv(), uptdd(), usrtpl(), wrcmps(), wrdxtb(), writdx(), writlc(), writsa(), writsb(), and wtstat().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ bort2()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        subroutine bort2 (character*(*), intent(in) str1,
                                                        character*(*), intent(in) str2 
                                                        )
                                                        +
                                                        + +

                                                        Log two error messages, then abort the application program.

                                                        +

                                                        This subroutine is similar to subroutine bort(), except that bort() logs one error message instead of two.

                                                        +
                                                        Parameters
                                                        + + + +
                                                        str1- First error message
                                                        str2- Second error message
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        D. Keyser
                                                        +
                                                        Date
                                                        2003-11-04
                                                        + +

                                                        Definition at line 38 of file borts.F90.

                                                        + +

                                                        References errwrt().

                                                        + +

                                                        Referenced by elemdx(), getntbe(), ireadmt(), mtfnam(), parstr(), parusr(), parutg(), rdusdx(), seqsdx(), sntbbe(), sntbde(), sntbfe(), string(), ufbint(), ufbovr(), ufbrep(), and ufbstp().

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/borts_8F90.js b/previous_versions/v12.1.0/borts_8F90.js new file mode 100644 index 000000000..1cd8daed1 --- /dev/null +++ b/previous_versions/v12.1.0/borts_8F90.js @@ -0,0 +1,5 @@ +var borts_8F90 = +[ + [ "bort", "borts_8F90.html#adc4659c5e9171f22248cf61e054ddd17", null ], + [ "bort2", "borts_8F90.html#afef28b5a86909cc8999fad7d98b11f00", null ] +]; \ No newline at end of file diff --git a/previous_versions/v12.1.0/borts_8F90_source.html b/previous_versions/v12.1.0/borts_8F90_source.html new file mode 100644 index 000000000..9ac5449e6 --- /dev/null +++ b/previous_versions/v12.1.0/borts_8F90_source.html @@ -0,0 +1,134 @@ + + + + + + + +NCEPLIBS-bufr: borts.F90 Source File + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        +
                                                        borts.F90
                                                        +
                                                        +
                                                        +Go to the documentation of this file.
                                                        1 
                                                        +
                                                        5 
                                                        +
                                                        14 subroutine bort(str)
                                                        +
                                                        15 
                                                        +
                                                        16  implicit none
                                                        +
                                                        17 
                                                        +
                                                        18  character*(*), intent(in) :: str
                                                        +
                                                        19 
                                                        +
                                                        20  call errwrt(' ')
                                                        +
                                                        21  call errwrt('***********BUFR ARCHIVE LIBRARY ABORT**************')
                                                        +
                                                        22  call errwrt(str)
                                                        +
                                                        23  call errwrt('***********BUFR ARCHIVE LIBRARY ABORT**************')
                                                        +
                                                        24  call errwrt(' ')
                                                        +
                                                        25 
                                                        +
                                                        26  stop 8
                                                        +
                                                        27 end subroutine bort
                                                        +
                                                        28 
                                                        +
                                                        38 subroutine bort2(str1,str2)
                                                        +
                                                        39 
                                                        +
                                                        40  implicit none
                                                        +
                                                        41 
                                                        +
                                                        42  character*(*), intent(in) :: str1, str2
                                                        +
                                                        43 
                                                        +
                                                        44  call errwrt(' ')
                                                        +
                                                        45  call errwrt('***********BUFR ARCHIVE LIBRARY ABORT**************')
                                                        +
                                                        46  call errwrt(str1)
                                                        +
                                                        47  call errwrt(str2)
                                                        +
                                                        48  call errwrt('***********BUFR ARCHIVE LIBRARY ABORT**************')
                                                        +
                                                        49  call errwrt(' ')
                                                        +
                                                        50 
                                                        +
                                                        51  stop 8
                                                        +
                                                        52 end subroutine bort2
                                                        +
                                                        subroutine bort(str)
                                                        Log an error message, then abort the application program.
                                                        Definition: borts.F90:15
                                                        +
                                                        subroutine bort2(str1, str2)
                                                        Log two error messages, then abort the application program.
                                                        Definition: borts.F90:39
                                                        +
                                                        subroutine errwrt(str)
                                                        Specify a custom location for the logging of error and diagnostic messages generated by the NCEPLIBS-...
                                                        Definition: errwrt.F90:32
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/bufr__c2f__interface_8F90.html b/previous_versions/v12.1.0/bufr__c2f__interface_8F90.html new file mode 100644 index 000000000..3b559dd7e --- /dev/null +++ b/previous_versions/v12.1.0/bufr__c2f__interface_8F90.html @@ -0,0 +1,276 @@ + + + + + + + +NCEPLIBS-bufr: bufr_c2f_interface.F90 File Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        bufr_c2f_interface.F90 File Reference
                                                        +
                                                        +
                                                        + +

                                                        Enable a number of Fortran NCEPLIBS-bufr subprograms to be called from within C. +More...

                                                        + +

                                                        Go to the source code of this file.

                                                        + + + + + +

                                                        +Modules

                                                        module  bufr_c2f_interface
                                                         Wrap Fortran NCEPLIBS-bufr subprograms and variables so they can be called from within C.
                                                         
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                                                        +Functions/Subroutines

                                                        subroutine, public bufr_c2f_interface::bort_c (errstr)
                                                         Log one error message and abort application program. More...
                                                         
                                                        subroutine, public bufr_c2f_interface::bvers_c (cverstr, cverstr_len)
                                                         Get the version number of the NCEPLIBS-bufr software. More...
                                                         
                                                        subroutine, public bufr_c2f_interface::cadn30_c (idn, adn, adn_str_len)
                                                         Convert an FXY value from its WMO bit-wise representation to its six-character representation. More...
                                                         
                                                        subroutine, public bufr_c2f_interface::closbf_c (bufr_unit)
                                                         Close a previously opened file and disconnect it from the library. More...
                                                         
                                                        subroutine, public bufr_c2f_interface::close_c (lunit)
                                                         Close a Fortran file from a C program. More...
                                                         
                                                        subroutine, public bufr_c2f_interface::delete_table_data_c ()
                                                         Deletes the copies of the moda_tables arrays. More...
                                                         
                                                        subroutine, public bufr_c2f_interface::elemdx_c (card, lun)
                                                         Decode the scale factor, reference value, bit width, and units from a Table B mnemonic definition. More...
                                                         
                                                        subroutine, public bufr_c2f_interface::exitbufr_c ()
                                                         Reset the library. More...
                                                         
                                                        subroutine, public bufr_c2f_interface::get_inode_c (lun, start_node)
                                                         Get the bufr node idx for the start node of the subset. More...
                                                         
                                                        subroutine, public bufr_c2f_interface::get_inv_c (lun, inv_ptr, inv_size)
                                                         Get pointer to the moda_usrint INV array. More...
                                                         
                                                        subroutine, public bufr_c2f_interface::get_irf_c (irf_ptr, irf_size)
                                                         Get copy of the moda_tables IRF array. More...
                                                         
                                                        subroutine, public bufr_c2f_interface::get_isc_c (isc_ptr, isc_size)
                                                         Get copy of the moda_tables ISC array. More...
                                                         
                                                        subroutine, public bufr_c2f_interface::get_itp_c (itp_ptr, itp_size)
                                                         Get copy of the moda_tables ITP array. More...
                                                         
                                                        subroutine, public bufr_c2f_interface::get_jmpb_c (jmpb_ptr, jmpb_size)
                                                         Get copy of the moda_tables JMPB array. More...
                                                         
                                                        subroutine, public bufr_c2f_interface::get_link_c (link_ptr, link_size)
                                                         Get copy of the moda_tables LINK array. More...
                                                         
                                                        subroutine, public bufr_c2f_interface::get_nval_c (lun, num_nodes)
                                                         Get the number of values in the current subset. More...
                                                         
                                                        subroutine, public bufr_c2f_interface::get_tag_c (tag_ptr, tag_len, mem_size)
                                                         Get copy of the moda_tables TAG array. More...
                                                         
                                                        subroutine, public bufr_c2f_interface::get_typ_c (typ_ptr, typ_len, mem_size)
                                                         Get copy of the moda_tables TYP array. More...
                                                         
                                                        subroutine, public bufr_c2f_interface::get_val_c (lun, val_ptr, val_size)
                                                         Get pointer to the moda_usrint VAL array. More...
                                                         
                                                        integer(c_int) function, public bufr_c2f_interface::ibfms_c (r8val)
                                                         Test whether a data value is "missing". More...
                                                         
                                                        integer(c_int) function, public bufr_c2f_interface::ifxy_c (cfxy)
                                                         Convert an FXY value from its 6 character representation to its WMO bit-wise representation. More...
                                                         
                                                        integer(c_int) function, public bufr_c2f_interface::igetmxby_c ()
                                                         Get the maximum length of a BUFR message that can be written to an output file. More...
                                                         
                                                        integer(c_int) function, public bufr_c2f_interface::igetntbi_c (lun, table_type)
                                                         Get the next index for storing an entry within an internal DX BUFR table. More...
                                                         
                                                        integer(c_int) function, public bufr_c2f_interface::igetprm_c (cprmnm)
                                                         Get the current value of a parameter. More...
                                                         
                                                        integer(c_int) function, public bufr_c2f_interface::igettdi_c (iflag)
                                                         Get the next usable Table D index for the current master table, or reset the index. More...
                                                         
                                                        integer(c_int) function, public bufr_c2f_interface::imrkopr_c (nemo)
                                                         Check whether a specified mnemonic is a Table C marker operator. More...
                                                         
                                                        integer(c_int) function, public bufr_c2f_interface::ireadmg_c (bufr_unit, c_subset, iddate, subset_str_len)
                                                         Read the next message from a BUFR file. More...
                                                         
                                                        integer(c_int) function, public bufr_c2f_interface::ireadns_c (bufr_unit, c_subset, iddate, subset_str_len)
                                                         Read the next data subset from a BUFR file. More...
                                                         
                                                        integer(c_int) function, public bufr_c2f_interface::ireadsb_c (bufr_unit)
                                                         Read the next data subset from a BUFR message. More...
                                                         
                                                        integer(c_int) function, public bufr_c2f_interface::isetprm_c (cprmnm, ipval)
                                                         Define a customized parameter value for dynamic allocation. More...
                                                         
                                                        integer(c_int) function, public bufr_c2f_interface::istdesc_c (idn)
                                                         Check whether a descriptor is WMO-standard. More...
                                                         
                                                        integer(c_int) function, public bufr_c2f_interface::iupbs01_c (bufr, mnemonic)
                                                         Read a data value from Section 0 or Section 1 of a BUFR message. More...
                                                         
                                                        subroutine, public bufr_c2f_interface::maxout_c (max0)
                                                         Define a customized maximum length for output BUFR messages. More...
                                                         
                                                        subroutine, public bufr_c2f_interface::mtinfo_c (path, file_unit_1, file_unit_2)
                                                         Specify location of master BUFR tables on local file system. More...
                                                         
                                                        subroutine, public bufr_c2f_interface::nemdefs_c (file_unit, mnemonic, unit_c, unit_str_len, desc_c, desc_str_len, iret)
                                                         Get the element name and units associated with a Table B mnemonic. More...
                                                         
                                                        subroutine, public bufr_c2f_interface::nemspecs_c (file_unit, mnemonic, mnemonic_idx, scale, reference, bits, iret)
                                                         Get the scale factor, reference value and bit width associated with a specified occurrence of a Table B mnemonic. More...
                                                         
                                                        subroutine, public bufr_c2f_interface::nemtab_c (lun, mnemonic, descriptor, table_type, table_idx)
                                                         Get information about a descriptor. More...
                                                         
                                                        subroutine, public bufr_c2f_interface::nemtbb_c (lun, table_idx, unit_str, unit_str_len, scale, reference, bits)
                                                         Get information about a Table B descriptor. More...
                                                         
                                                        subroutine, public bufr_c2f_interface::numtbd_c (lun, idn, nemo, nemo_str_len, tab, iret)
                                                         Search for a Table B or Table D descriptor within the internal DX BUFR tables. More...
                                                         
                                                        subroutine, public bufr_c2f_interface::open_c (lunit, filepath)
                                                         Open a Fortran file from a C program. More...
                                                         
                                                        subroutine, public bufr_c2f_interface::openbf_c (bufr_unit, cio, table_file_id)
                                                         Connect a new file to the library, or initialize the library, or change verbosity associated with already-connected file. More...
                                                         
                                                        subroutine, public bufr_c2f_interface::openmb_c (bufr_unit, c_subset, iddate)
                                                         Open a new message for output in a BUFR file that was previously opened for writing. More...
                                                         
                                                        subroutine, public bufr_c2f_interface::pktdd_c (id, lun, idn, iret)
                                                         Store information about a child mnemonic within the internal arrays. More...
                                                         
                                                        subroutine, public bufr_c2f_interface::readlc_c (lunit, str_id, output_str, output_str_len)
                                                         Function used to get long strings from the BUFR file. More...
                                                         
                                                        subroutine, public bufr_c2f_interface::status_c (file_unit, lun, il, im)
                                                         Check whether a file is connected to the library. More...
                                                         
                                                        subroutine, public bufr_c2f_interface::stntbi_c (n, lun, numb, nemo, celsq)
                                                         Store a new entry within the internal BUFR Table B or D. More...
                                                         
                                                        subroutine, public bufr_c2f_interface::strnum_c (str, num, iret)
                                                         Decode an integer from a character string. More...
                                                         
                                                        subroutine, public bufr_c2f_interface::ufbint_c (bufr_unit, c_data, dim_1, dim_2, iret, table_b_mnemonic)
                                                         Read/write one or more data values from/to a data subset. More...
                                                         
                                                        subroutine, public bufr_c2f_interface::ufbrep_c (bufr_unit, c_data, dim_1, dim_2, iret, table_b_mnemonic)
                                                         Read/write one or more data values from/to a data subset. More...
                                                         
                                                        subroutine, public bufr_c2f_interface::ufbseq_c (bufr_unit, c_data, dim_1, dim_2, iret, table_d_mnemonic)
                                                         Read/write an entire sequence of data values from/to a data subset. More...
                                                         
                                                        subroutine, public bufr_c2f_interface::uptdd_c (id, lun, ient, iret)
                                                         Get the WMO bit-wise representation of the FXY value corresponding to a child mnemonic of a Table D sequence. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Enable a number of Fortran NCEPLIBS-bufr subprograms to be called from within C.

                                                        +
                                                        Author
                                                        Ronald Mclaren
                                                        +
                                                        Date
                                                        2020-07-29
                                                        + +

                                                        Definition in file bufr_c2f_interface.F90.

                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/bufr__c2f__interface_8F90.js b/previous_versions/v12.1.0/bufr__c2f__interface_8F90.js new file mode 100644 index 000000000..17826b891 --- /dev/null +++ b/previous_versions/v12.1.0/bufr__c2f__interface_8F90.js @@ -0,0 +1,64 @@ +var bufr__c2f__interface_8F90 = +[ + [ "bort_c", "bufr__c2f__interface_8F90.html#a70b99a494d9f5ef152ec115a139b1c1f", null ], + [ "bvers_c", "bufr__c2f__interface_8F90.html#adc050cbf79f756c7db30f7c4c6b129a0", null ], + [ "c_f_string", "bufr__c2f__interface_8F90.html#a7c95d71e3921bb7093e56dbc458de10c", null ], + [ "cadn30_c", "bufr__c2f__interface_8F90.html#a6a463f38336dcbedb5f125a242f69eb5", null ], + [ "closbf_c", "bufr__c2f__interface_8F90.html#a3ac93c0105f2d2e934b5fa1f6581c02d", null ], + [ "close_c", "bufr__c2f__interface_8F90.html#a3c7ddfd5eb36a9904e9886e2d04bfdf3", null ], + [ "cmpmsg_c", "bufr__c2f__interface_8F90.html#acc6413f0b94cba90a23f594d70e11291", null ], + [ "copy_f_c_str", "bufr__c2f__interface_8F90.html#a139959903905b228c3228e3b3a09e025", null ], + [ "delete_table_data_c", "bufr__c2f__interface_8F90.html#ab653ca4701372fddd02deddbd1b8d88e", null ], + [ "elemdx_c", "bufr__c2f__interface_8F90.html#a9f5656efe692227be66cfc8e50e24241", null ], + [ "exitbufr_c", "bufr__c2f__interface_8F90.html#a5fc80078fb40ff91f250dbb9edb247ab", null ], + [ "get_inode_c", "bufr__c2f__interface_8F90.html#ab1ced3757361e769756fee2f722de32f", null ], + [ "get_inv_c", "bufr__c2f__interface_8F90.html#a60f38d89e2da19b4396ca8c3ec8ffff6", null ], + [ "get_irf_c", "bufr__c2f__interface_8F90.html#af73382fa68e368c201131fd89d1be252", null ], + [ "get_isc_c", "bufr__c2f__interface_8F90.html#a020cf7bcf489ecc2ade71dfa4b7db102", null ], + [ "get_itp_c", "bufr__c2f__interface_8F90.html#adffb9acbdd17d4ef3f35baee918c733d", null ], + [ "get_jmpb_c", "bufr__c2f__interface_8F90.html#aa9ab4e0c2b6bc184aa70d7a36ac6114f", null ], + [ "get_link_c", "bufr__c2f__interface_8F90.html#ac9e08232d75383f1f64a36b9834598c9", null ], + [ "get_nval_c", "bufr__c2f__interface_8F90.html#a124b885560b4d31170993c7921f55503", null ], + [ "get_tag_c", "bufr__c2f__interface_8F90.html#a6515df3d0f5fdcccd422fcac3b2f700a", null ], + [ "get_typ_c", "bufr__c2f__interface_8F90.html#a86ce772b48d76dc923f9ae87dfd44102", null ], + [ "get_val_c", "bufr__c2f__interface_8F90.html#af7e6742b654813bd1922947049c42a54", null ], + [ "ibfms_c", "bufr__c2f__interface_8F90.html#a437d60612140092ed5cea7516b5b093c", null ], + [ "ifxy_c", "bufr__c2f__interface_8F90.html#a081831085335c5a2d1a60040bf4a68b6", null ], + [ "igetmxby_c", "bufr__c2f__interface_8F90.html#af1cdfa1f4b3b097464a0bcd4da3ddeeb", null ], + [ "igetntbi_c", "bufr__c2f__interface_8F90.html#a558946e761c0246444bcd3c2fcdcb37e", null ], + [ "igetprm_c", "bufr__c2f__interface_8F90.html#a32a449b5c117d53b4b4374dd0e8bea8b", null ], + [ "igettdi_c", "bufr__c2f__interface_8F90.html#a606519361d6b6db6e153fd809387399d", null ], + [ "imrkopr_c", "bufr__c2f__interface_8F90.html#aa7df2e3f4575affeab5df95d00aad75f", null ], + [ "ireadmg_c", "bufr__c2f__interface_8F90.html#a31bb70cc0fe1b242d4dee68ed843391b", null ], + [ "ireadns_c", "bufr__c2f__interface_8F90.html#a89153453f5db4c56685d3b309a517da7", null ], + [ "ireadsb_c", "bufr__c2f__interface_8F90.html#ac349c058a2cd324d8cfe5a85ebf2acb1", null ], + [ "isetprm_c", "bufr__c2f__interface_8F90.html#ad1dcef9962b409b6448c928d0dfb9490", null ], + [ "istdesc_c", "bufr__c2f__interface_8F90.html#a7968999c9eda822f79eec9178762a2ae", null ], + [ "iupbs01_c", "bufr__c2f__interface_8F90.html#a583019d0b109031d8f8aedb4d48e2afd", null ], + [ "maxout_c", "bufr__c2f__interface_8F90.html#aa7f319cef617f458cbaf40cdeea42d42", null ], + [ "mtinfo_c", "bufr__c2f__interface_8F90.html#a550c1c61605eca9fa6cf04aba7612364", null ], + [ "nemdefs_c", "bufr__c2f__interface_8F90.html#a7ee256962a48d99336f255aad04abf48", null ], + [ "nemspecs_c", "bufr__c2f__interface_8F90.html#a5b9e80deaefcabb2b18ecbf55cbc2c55", null ], + [ "nemtab_c", "bufr__c2f__interface_8F90.html#ac07a6f6ec1555c09041853d4c81081e9", null ], + [ "nemtbb_c", "bufr__c2f__interface_8F90.html#ae352def57bda0cd117486a03a8594cf2", null ], + [ "numtbd_c", "bufr__c2f__interface_8F90.html#ab70a5dfe76eb5f9bce5015c3bce3bf64", null ], + [ "open_c", "bufr__c2f__interface_8F90.html#a05ac8542818be260a3c1dc15d5dc2f53", null ], + [ "openbf_c", "bufr__c2f__interface_8F90.html#a6a97fe37e5caced81c5c6b769644832d", null ], + [ "openmb_c", "bufr__c2f__interface_8F90.html#aad56de517eff0435b805addbf0692f44", null ], + [ "pktdd_c", "bufr__c2f__interface_8F90.html#a9a8d8f66405c9b1679e92e0d908877e0", null ], + [ "readlc_c", "bufr__c2f__interface_8F90.html#acce5eddf8c8e56d5b47d45251ac75abc", null ], + [ "status_c", "bufr__c2f__interface_8F90.html#a233844a8f03de391d28d20a7bd5d8ef0", null ], + [ "stntbi_c", "bufr__c2f__interface_8F90.html#a1c04fd789a555e4a08d798172a07b2e6", null ], + [ "strnum_c", "bufr__c2f__interface_8F90.html#af9137b87796fbc3395e596227515c4f2", null ], + [ "ufbint_c", "bufr__c2f__interface_8F90.html#a4d3f0201945123b06c7d198065cf2f67", null ], + [ "ufbrep_c", "bufr__c2f__interface_8F90.html#a57a1b4956a89ed60a934a02d4140eb93", null ], + [ "ufbseq_c", "bufr__c2f__interface_8F90.html#af0b721af91340e7a261e8014455bd6ca", null ], + [ "uptdd_c", "bufr__c2f__interface_8F90.html#aa3ea9ef5bab8e3ceb1118f0e8cafaeea", null ], + [ "irf_f", "bufr__c2f__interface_8F90.html#a2efc35235defecb306c8324c0599d0b9", null ], + [ "isc_f", "bufr__c2f__interface_8F90.html#a2b81bdfdb8a2380ba294b375c67d343a", null ], + [ "itp_f", "bufr__c2f__interface_8F90.html#a5c0b51f6d15b30a289d69c36e19b1264", null ], + [ "jmpb_f", "bufr__c2f__interface_8F90.html#ad5ac970a71d7050263e85a2e17d11cf6", null ], + [ "link_f", "bufr__c2f__interface_8F90.html#a415acfb9ec053e0ef1a931b0eac2ee4a", null ], + [ "tag_f", "bufr__c2f__interface_8F90.html#ad33aa8215beed2cd017faf769a7a2dc2", null ], + [ "typ_f", "bufr__c2f__interface_8F90.html#aea7e3ac1560fbe3760ff6c4c3f72b78b", null ] +]; \ No newline at end of file diff --git a/previous_versions/v12.1.0/bufr__c2f__interface_8F90_source.html b/previous_versions/v12.1.0/bufr__c2f__interface_8F90_source.html new file mode 100644 index 000000000..896edc8f6 --- /dev/null +++ b/previous_versions/v12.1.0/bufr__c2f__interface_8F90_source.html @@ -0,0 +1,794 @@ + + + + + + + +NCEPLIBS-bufr: bufr_c2f_interface.F90 Source File + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        +
                                                        bufr_c2f_interface.F90
                                                        +
                                                        +
                                                        +Go to the documentation of this file.
                                                        1 
                                                        +
                                                        6 
                                                        + +
                                                        17 
                                                        +
                                                        18  use iso_c_binding
                                                        +
                                                        19 
                                                        +
                                                        20  implicit none
                                                        +
                                                        21 
                                                        +
                                                        22  private
                                                        +
                                                        23  public :: open_c, close_c, openbf_c, closbf_c
                                                        +
                                                        24  public :: exitbufr_c, bort_c
                                                        + +
                                                        26  public :: ufbint_c, ufbrep_c, ufbseq_c
                                                        +
                                                        27  public :: mtinfo_c, bvers_c, status_c, ibfms_c
                                                        + + +
                                                        30  public :: delete_table_data_c
                                                        +
                                                        31  public :: iupbs01_c, imrkopr_c, istdesc_c, ifxy_c
                                                        +
                                                        32  public :: igetntbi_c, igettdi_c, stntbi_c
                                                        + + + +
                                                        36 
                                                        +
                                                        37  integer, allocatable, target, save :: isc_f(:), link_f(:), itp_f(:), jmpb_f(:), irf_f(:)
                                                        +
                                                        38  character(len=10), allocatable, target, save :: tag_f(:)
                                                        +
                                                        39  character(len=3), allocatable, target, save :: typ_f(:)
                                                        +
                                                        40 
                                                        +
                                                        41  contains
                                                        +
                                                        42 
                                                        +
                                                        53  function c_f_string(c_str) result(f_str)
                                                        +
                                                        54  character(kind=c_char,len=1), intent(in) :: c_str(*)
                                                        +
                                                        55  character(len=:), allocatable :: f_str
                                                        +
                                                        56  integer :: nchars
                                                        +
                                                        57 
                                                        +
                                                        58  nchars = 1
                                                        +
                                                        59  do while (c_str(nchars) /= c_null_char)
                                                        +
                                                        60  nchars = nchars + 1
                                                        +
                                                        61  end do
                                                        +
                                                        62  nchars = nchars - 1
                                                        +
                                                        63 
                                                        +
                                                        64  allocate(character(len=nchars) :: f_str)
                                                        +
                                                        65  f_str = transfer(c_str(1:nchars), f_str)
                                                        +
                                                        66  end function c_f_string
                                                        +
                                                        67 
                                                        +
                                                        75  subroutine copy_f_c_str(f_str, c_str, c_str_len)
                                                        +
                                                        76  character(len=*), target, intent(in) :: f_str
                                                        +
                                                        77  character(kind=c_char, len=1), intent(inout) :: c_str(*)
                                                        +
                                                        78  integer, intent(in) :: c_str_len
                                                        +
                                                        79  integer :: max_str_len
                                                        +
                                                        80 
                                                        +
                                                        81  if (c_str_len /= 0) then
                                                        +
                                                        82  max_str_len = c_str_len
                                                        +
                                                        83  c_str(1)(1:max_str_len) = f_str(1:max_str_len)
                                                        +
                                                        84  c_str(1)(max_str_len:max_str_len) = c_null_char
                                                        +
                                                        85  end if
                                                        +
                                                        86  end subroutine copy_f_c_str
                                                        +
                                                        87 
                                                        +
                                                        94  subroutine open_c(lunit, filepath) bind(C, name='open_f')
                                                        +
                                                        95  integer(c_int), value, intent(in) :: lunit
                                                        +
                                                        96  character(kind=c_char, len=1) :: filepath
                                                        +
                                                        97 
                                                        +
                                                        98  open(lunit, file=c_f_string(filepath))
                                                        +
                                                        99  end subroutine open_c
                                                        +
                                                        100 
                                                        +
                                                        106  subroutine close_c(lunit) bind(C, name='close_f')
                                                        +
                                                        107  integer(c_int), value, intent(in) :: lunit
                                                        +
                                                        108 
                                                        +
                                                        109  close(unit=lunit)
                                                        +
                                                        110  end subroutine close_c
                                                        +
                                                        111 
                                                        +
                                                        122  subroutine openbf_c(bufr_unit, cio, table_file_id) bind(C, name='openbf_f')
                                                        +
                                                        123  integer(c_int), value, intent(in) :: bufr_unit
                                                        +
                                                        124  character(kind=c_char, len=1), intent(in) :: cio(*)
                                                        +
                                                        125  integer(c_int), value, intent(in) :: table_file_id
                                                        +
                                                        126 
                                                        +
                                                        127  call openbf(bufr_unit, c_f_string(cio), table_file_id)
                                                        +
                                                        128  end subroutine openbf_c
                                                        +
                                                        129 
                                                        +
                                                        137  subroutine closbf_c(bufr_unit) bind(C, name='closbf_f')
                                                        +
                                                        138  integer(c_int), value, intent(in) :: bufr_unit
                                                        +
                                                        139 
                                                        +
                                                        140  call closbf(bufr_unit)
                                                        +
                                                        141  end subroutine closbf_c
                                                        +
                                                        142 
                                                        +
                                                        148  subroutine exitbufr_c() bind(C, name='exitbufr_f')
                                                        +
                                                        149  call exitbufr()
                                                        +
                                                        150  end subroutine exitbufr_c
                                                        +
                                                        151 
                                                        +
                                                        166  function ireadmg_c(bufr_unit, c_subset, iddate, subset_str_len) result(ires) bind(C, name='ireadmg_f')
                                                        +
                                                        167  integer(c_int), value, intent(in) :: bufr_unit
                                                        +
                                                        168  character(kind=c_char, len=1), intent(out) :: c_subset(*)
                                                        +
                                                        169  integer(c_int), intent(out) :: iddate
                                                        +
                                                        170  integer(c_int), value, intent(in) :: subset_str_len
                                                        +
                                                        171  integer(c_int) :: ires
                                                        +
                                                        172  character(len=25) :: f_subset
                                                        +
                                                        173  integer :: ireadmg
                                                        +
                                                        174 
                                                        +
                                                        175  ires = ireadmg(bufr_unit, f_subset, iddate)
                                                        +
                                                        176 
                                                        +
                                                        177  if (ires == 0) then
                                                        +
                                                        178  call copy_f_c_str(f_subset, c_subset, int(subset_str_len))
                                                        +
                                                        179  end if
                                                        +
                                                        180  end function ireadmg_c
                                                        +
                                                        181 
                                                        +
                                                        192  function ireadsb_c(bufr_unit) result(ires) bind(C, name='ireadsb_f')
                                                        +
                                                        193  integer(c_int), value, intent(in) :: bufr_unit
                                                        +
                                                        194  integer(c_int) :: ires
                                                        +
                                                        195  integer :: ireadsb
                                                        +
                                                        196 
                                                        +
                                                        197  ires = ireadsb(bufr_unit)
                                                        +
                                                        198  end function ireadsb_c
                                                        +
                                                        199 
                                                        +
                                                        211  subroutine ufbint_c(bufr_unit, c_data, dim_1, dim_2, iret, table_b_mnemonic) bind(C, name='ufbint_f')
                                                        +
                                                        212  integer(c_int), value, intent(in) :: bufr_unit
                                                        +
                                                        213  type(c_ptr), intent(inout) :: c_data
                                                        +
                                                        214  integer(c_int), value, intent(in) :: dim_1, dim_2
                                                        +
                                                        215  integer(c_int), intent(out) :: iret
                                                        +
                                                        216  character(kind=c_char, len=1), intent(in) :: table_b_mnemonic(*)
                                                        +
                                                        217  real, pointer :: f_data
                                                        +
                                                        218 
                                                        +
                                                        219  call c_f_pointer(c_data, f_data)
                                                        +
                                                        220  call ufbint(bufr_unit, f_data, dim_1, dim_2, iret, c_f_string(table_b_mnemonic))
                                                        +
                                                        221  end subroutine ufbint_c
                                                        +
                                                        222 
                                                        +
                                                        234  subroutine ufbrep_c(bufr_unit, c_data, dim_1, dim_2, iret, table_b_mnemonic) bind(C, name='ufbrep_f')
                                                        +
                                                        235  integer(c_int), value, intent(in) :: bufr_unit
                                                        +
                                                        236  type(c_ptr), intent(inout) :: c_data
                                                        +
                                                        237  integer(c_int), value, intent(in) :: dim_1, dim_2
                                                        +
                                                        238  integer(c_int), intent(out) :: iret
                                                        +
                                                        239  character(kind=c_char, len=1), intent(in) :: table_b_mnemonic(*)
                                                        +
                                                        240  real, pointer :: f_data
                                                        +
                                                        241 
                                                        +
                                                        242  call c_f_pointer(c_data, f_data)
                                                        +
                                                        243  call ufbrep(bufr_unit, f_data, dim_1, dim_2, iret, c_f_string(table_b_mnemonic))
                                                        +
                                                        244  end subroutine ufbrep_c
                                                        +
                                                        245 
                                                        +
                                                        255  subroutine mtinfo_c(path, file_unit_1, file_unit_2) bind(C, name='mtinfo_f')
                                                        +
                                                        256  character(kind=c_char, len=1), intent(in) :: path(*)
                                                        +
                                                        257  integer(c_int), value, intent(in) :: file_unit_1
                                                        +
                                                        258  integer(c_int), value, intent(in) :: file_unit_2
                                                        +
                                                        259 
                                                        +
                                                        260  call mtinfo(c_f_string(path), file_unit_1, file_unit_2)
                                                        +
                                                        261  end subroutine mtinfo_c
                                                        +
                                                        262 
                                                        +
                                                        273  subroutine status_c(file_unit, lun, il, im) bind(C, name='status_f')
                                                        +
                                                        274  integer(c_int), value, intent(in) :: file_unit
                                                        +
                                                        275  integer(c_int), intent(out) :: lun
                                                        +
                                                        276  integer(c_int), intent(out) :: il
                                                        +
                                                        277  integer(c_int), intent(out) :: im
                                                        +
                                                        278 
                                                        +
                                                        279  call status(file_unit, lun, il, im)
                                                        +
                                                        280  end subroutine status_c
                                                        +
                                                        281 
                                                        +
                                                        295  subroutine nemdefs_c(file_unit, mnemonic, unit_c, unit_str_len, desc_c, desc_str_len, iret) &
                                                        +
                                                        296  bind(c, name='nemdefs_f')
                                                        +
                                                        297  integer(c_int), value, intent(in) :: file_unit
                                                        +
                                                        298  character(kind=c_char,len=1), intent(in) :: mnemonic(*)
                                                        +
                                                        299  character(kind=c_char, len=1), intent(out) :: unit_c(*)
                                                        +
                                                        300  integer(c_int), value, intent(in) :: unit_str_len
                                                        +
                                                        301  character(kind=c_char, len=1), intent(out) :: desc_c(*)
                                                        +
                                                        302  integer(c_int), value, intent(in) :: desc_str_len
                                                        +
                                                        303  integer(c_int), intent(out) :: iret
                                                        +
                                                        304 
                                                        +
                                                        305  character(len=25) :: unit_f
                                                        +
                                                        306  character(len=55) :: desc_f
                                                        +
                                                        307 
                                                        +
                                                        308  ! Get the unit and description strings
                                                        +
                                                        309  call nemdefs ( file_unit, c_f_string(mnemonic), desc_f, unit_f, iret)
                                                        +
                                                        310 
                                                        +
                                                        311  if (iret == 0) then
                                                        +
                                                        312  ! Copy the unit Fortran string into the resulting C-style string.
                                                        +
                                                        313  call copy_f_c_str(unit_f, unit_c, min(len(unit_f), unit_str_len))
                                                        +
                                                        314  ! Copy the descriptor Fortran string into the resulting C-style string.
                                                        +
                                                        315  call copy_f_c_str(desc_f, desc_c, min(len(desc_f), desc_str_len))
                                                        +
                                                        316  end if
                                                        +
                                                        317  end subroutine nemdefs_c
                                                        +
                                                        318 
                                                        +
                                                        333  subroutine nemspecs_c(file_unit, mnemonic, mnemonic_idx, scale, reference, bits, iret) &
                                                        +
                                                        334  bind(c, name='nemspecs_f')
                                                        +
                                                        335  integer(c_int), value, intent(in) :: file_unit
                                                        +
                                                        336  character(kind=c_char,len=1), intent(in) :: mnemonic(*)
                                                        +
                                                        337  integer(c_int), value, intent(in) ::mnemonic_idx
                                                        +
                                                        338  integer(c_int), intent(out) :: scale
                                                        +
                                                        339  integer(c_int), intent(out) :: reference
                                                        +
                                                        340  integer(c_int), intent(out) :: bits
                                                        +
                                                        341  integer(c_int), intent(out) :: iret
                                                        +
                                                        342 
                                                        +
                                                        343  ! Get the scale, reference and bits
                                                        +
                                                        344  call nemspecs(file_unit, c_f_string(mnemonic), mnemonic_idx, scale, reference, bits, iret)
                                                        +
                                                        345  end subroutine nemspecs_c
                                                        +
                                                        346 
                                                        +
                                                        358  subroutine nemtab_c(lun, mnemonic, descriptor, table_type, table_idx) &
                                                        +
                                                        359  bind(c, name='nemtab_f')
                                                        +
                                                        360  integer(c_int), value, intent(in) :: lun
                                                        +
                                                        361  character(kind=c_char,len=1), intent(in) :: mnemonic(*)
                                                        +
                                                        362  integer(c_int), intent(out) :: descriptor
                                                        +
                                                        363  character(kind=c_char,len=1), intent(out) :: table_type(*)
                                                        +
                                                        364  integer(c_int), intent(out) :: table_idx
                                                        +
                                                        365 
                                                        +
                                                        366  character(len=1) :: table_type_f
                                                        +
                                                        367 
                                                        +
                                                        368  call nemtab(lun, c_f_string(mnemonic), descriptor, table_type_f, table_idx)
                                                        +
                                                        369 
                                                        +
                                                        370  table_type(1)(1:1) = table_type_f(1:1)
                                                        +
                                                        371  end subroutine nemtab_c
                                                        +
                                                        372 
                                                        +
                                                        386  subroutine nemtbb_c(lun, table_idx, unit_str, unit_str_len, scale, reference, bits) &
                                                        +
                                                        387  bind(c, name='nemtbb_f')
                                                        +
                                                        388  integer(c_int), intent(in), value :: lun
                                                        +
                                                        389  integer(c_int), intent(in), value :: table_idx
                                                        +
                                                        390  character(kind=c_char,len=1), intent(out) :: unit_str(*)
                                                        +
                                                        391  integer(c_int), intent(in), value :: unit_str_len
                                                        +
                                                        392  integer(c_int), intent(out) :: scale
                                                        +
                                                        393  integer(c_int), intent(out) :: reference
                                                        +
                                                        394  integer(c_int), intent(out) :: bits
                                                        +
                                                        395 
                                                        +
                                                        396  character(len=25) :: unit_str_f
                                                        +
                                                        397 
                                                        +
                                                        398  ! Get the scale, reference and bits
                                                        +
                                                        399  call nemtbb( lun, table_idx, unit_str_f, scale, reference, bits)
                                                        +
                                                        400  call copy_f_c_str(unit_str_f, unit_str, min(len(unit_str_f), unit_str_len))
                                                        +
                                                        401  end subroutine nemtbb_c
                                                        +
                                                        402 
                                                        +
                                                        409  subroutine get_isc_c(isc_ptr, isc_size) bind(C, name='get_isc_f')
                                                        +
                                                        410  use moda_tables
                                                        +
                                                        411  type(c_ptr), intent(inout) :: isc_ptr
                                                        +
                                                        412  integer(c_int), intent(out) :: isc_size
                                                        +
                                                        413 
                                                        +
                                                        414  allocate(isc_f(ntab))
                                                        +
                                                        415  isc_f(1:ntab) = isc(1:ntab)
                                                        +
                                                        416  isc_size = size(isc_f)
                                                        +
                                                        417  isc_ptr = c_loc(isc_f(1))
                                                        +
                                                        418  end subroutine get_isc_c
                                                        +
                                                        419 
                                                        +
                                                        426  subroutine get_link_c(link_ptr, link_size) bind(C, name='get_link_f')
                                                        +
                                                        427  use moda_tables
                                                        +
                                                        428  type(c_ptr), intent(inout) :: link_ptr
                                                        +
                                                        429  integer(c_int), intent(out) :: link_size
                                                        +
                                                        430 
                                                        +
                                                        431  allocate(link_f(ntab))
                                                        +
                                                        432  link_f(1:ntab) = link(1:ntab)
                                                        +
                                                        433  link_size = size(link_f)
                                                        +
                                                        434  link_ptr = c_loc(link_f(1))
                                                        +
                                                        435  end subroutine get_link_c
                                                        +
                                                        436 
                                                        +
                                                        443  subroutine get_itp_c(itp_ptr, itp_size) bind(C, name='get_itp_f')
                                                        +
                                                        444  use moda_tables
                                                        +
                                                        445  type(c_ptr), intent(inout) :: itp_ptr
                                                        +
                                                        446  integer(c_int), intent(out) :: itp_size
                                                        +
                                                        447 
                                                        +
                                                        448  allocate(itp_f(ntab))
                                                        +
                                                        449  itp_f(1:ntab) = itp(1:ntab)
                                                        +
                                                        450  itp_size = size(itp_f)
                                                        +
                                                        451  itp_ptr = c_loc(itp_f(1))
                                                        +
                                                        452  end subroutine get_itp_c
                                                        +
                                                        453 
                                                        +
                                                        461  subroutine get_typ_c(typ_ptr, typ_len, mem_size) bind(C, name='get_typ_f')
                                                        +
                                                        462  use moda_tables
                                                        +
                                                        463  type(c_ptr), intent(inout) :: typ_ptr
                                                        +
                                                        464  integer(c_int), intent(out) :: typ_len
                                                        +
                                                        465  integer(c_int), intent(out) :: mem_size
                                                        +
                                                        466 
                                                        +
                                                        467  allocate(typ_f(ntab))
                                                        +
                                                        468  typ_f(1:ntab) = typ(1:ntab)
                                                        +
                                                        469  typ_len = len(typ(1))
                                                        +
                                                        470  mem_size = size(typ_f)
                                                        +
                                                        471  typ_ptr = c_loc(typ_f(1))
                                                        +
                                                        472  end subroutine get_typ_c
                                                        +
                                                        473 
                                                        +
                                                        481  subroutine get_tag_c(tag_ptr, tag_len, mem_size) bind(C, name='get_tag_f')
                                                        +
                                                        482  use moda_tables
                                                        +
                                                        483  type(c_ptr), intent(inout) :: tag_ptr
                                                        +
                                                        484  integer(c_int), intent(out) :: tag_len
                                                        +
                                                        485  integer(c_int), intent(out) :: mem_size
                                                        +
                                                        486 
                                                        +
                                                        487  allocate(tag_f(ntab))
                                                        +
                                                        488  tag_f(1:ntab) = tag(1:ntab)
                                                        +
                                                        489  tag_len = len(tag(1))
                                                        +
                                                        490  mem_size = size(tag_f)
                                                        +
                                                        491  tag_ptr = c_loc(tag_f(1))
                                                        +
                                                        492  end subroutine get_tag_c
                                                        +
                                                        493 
                                                        +
                                                        500  subroutine get_jmpb_c(jmpb_ptr, jmpb_size) bind(C, name='get_jmpb_f')
                                                        +
                                                        501  use moda_tables
                                                        +
                                                        502  type(c_ptr), intent(inout) :: jmpb_ptr
                                                        +
                                                        503  integer(c_int), intent(out) :: jmpb_size
                                                        +
                                                        504 
                                                        +
                                                        505  allocate(jmpb_f(ntab))
                                                        +
                                                        506  jmpb_f(1:ntab) = jmpb(1:ntab)
                                                        +
                                                        507  jmpb_size = size(jmpb_f)
                                                        +
                                                        508  jmpb_ptr = c_loc(jmpb_f(1))
                                                        +
                                                        509  end subroutine get_jmpb_c
                                                        +
                                                        510 
                                                        +
                                                        517  subroutine get_irf_c(irf_ptr, irf_size) bind(C, name='get_irf_f')
                                                        +
                                                        518  use moda_tables
                                                        +
                                                        519  type(c_ptr), intent(inout) :: irf_ptr
                                                        +
                                                        520  integer(c_int), intent(out) :: irf_size
                                                        +
                                                        521 
                                                        +
                                                        522  allocate(irf_f(ntab))
                                                        +
                                                        523  irf_f(1:ntab) = irf(1:ntab)
                                                        +
                                                        524  irf_size = size(irf_f)
                                                        +
                                                        525  irf_ptr = c_loc(irf_f(1))
                                                        +
                                                        526  end subroutine get_irf_c
                                                        +
                                                        527 
                                                        +
                                                        534  subroutine get_inode_c(lun, start_node) bind(C, name='get_inode_f')
                                                        +
                                                        535  use moda_msgcwd
                                                        +
                                                        536  integer(c_int), value, intent(in) :: lun
                                                        +
                                                        537  integer(c_int), intent(out) :: start_node
                                                        +
                                                        538 
                                                        +
                                                        539  start_node = inode(lun)
                                                        +
                                                        540  end subroutine get_inode_c
                                                        +
                                                        541 
                                                        +
                                                        548  subroutine get_nval_c(lun, num_nodes) bind(C, name='get_nval_f')
                                                        +
                                                        549  use moda_usrint
                                                        +
                                                        550  integer(c_int), value, intent(in) :: lun
                                                        +
                                                        551  integer(c_int), intent(out) :: num_nodes
                                                        +
                                                        552 
                                                        +
                                                        553  num_nodes = nval(lun)
                                                        +
                                                        554  end subroutine get_nval_c
                                                        +
                                                        555 
                                                        +
                                                        563  subroutine get_val_c(lun, val_ptr, val_size) bind(C, name='get_val_f')
                                                        +
                                                        564  use moda_usrint
                                                        +
                                                        565  integer(c_int), value, intent(in) :: lun
                                                        +
                                                        566  type(c_ptr), intent(inout) :: val_ptr
                                                        +
                                                        567  integer(c_int), intent(out) :: val_size
                                                        +
                                                        568 
                                                        +
                                                        569  val_size = size(val(:, lun))
                                                        +
                                                        570  val_ptr = c_loc(val(1, lun))
                                                        +
                                                        571  end subroutine get_val_c
                                                        +
                                                        572 
                                                        +
                                                        580  subroutine get_inv_c(lun, inv_ptr, inv_size) bind(C, name='get_inv_f')
                                                        +
                                                        581  use moda_usrint
                                                        +
                                                        582  integer(c_int), value, intent(in) :: lun
                                                        +
                                                        583  type(c_ptr), intent(inout) :: inv_ptr
                                                        +
                                                        584  integer(c_int), intent(out) :: inv_size
                                                        +
                                                        585 
                                                        +
                                                        586  inv_size = size(inv(:, lun))
                                                        +
                                                        587  inv_ptr = c_loc(inv(1, lun))
                                                        +
                                                        588  end subroutine get_inv_c
                                                        +
                                                        589 
                                                        +
                                                        599  subroutine readlc_c(lunit, str_id, output_str, output_str_len) bind(C, name='readlc_f')
                                                        +
                                                        600  use moda_rlccmn
                                                        +
                                                        601  integer(c_int), value, intent(in) :: lunit
                                                        +
                                                        602  character(kind=c_char, len=1), intent(in) :: str_id(*)
                                                        +
                                                        603  character(kind=c_char, len=1), intent(out) :: output_str(*)
                                                        +
                                                        604  integer(c_int), intent(in), value :: output_str_len
                                                        +
                                                        605 
                                                        +
                                                        606  character(len=120) :: output_str_f
                                                        +
                                                        607  integer :: output_str_len_f
                                                        +
                                                        608 
                                                        +
                                                        609  call readlc(lunit, output_str_f, c_f_string(str_id))
                                                        +
                                                        610  output_str_len_f = len(trim(output_str_f)) + 1 ! add 1 for the null terminator
                                                        +
                                                        611  call copy_f_c_str(output_str_f, output_str, min(output_str_len_f, output_str_len))
                                                        +
                                                        612  end subroutine readlc_c
                                                        +
                                                        613 
                                                        +
                                                        617  subroutine delete_table_data_c() bind(C, name='delete_table_data_f')
                                                        +
                                                        618  if (allocated(isc_f)) deallocate(isc_f)
                                                        +
                                                        619  if (allocated(link_f)) deallocate(link_f)
                                                        +
                                                        620  if (allocated(itp_f)) deallocate(itp_f)
                                                        +
                                                        621  if (allocated(typ_f)) deallocate(typ_f)
                                                        +
                                                        622  if (allocated(tag_f)) deallocate(tag_f)
                                                        +
                                                        623  if (allocated(jmpb_f)) deallocate(jmpb_f)
                                                        +
                                                        624  if (allocated(irf_f)) deallocate(irf_f)
                                                        +
                                                        625  end subroutine delete_table_data_c
                                                        +
                                                        626 
                                                        +
                                                        639  function iupbs01_c(bufr, mnemonic) result(ires) bind(C, name='iupbs01_f')
                                                        +
                                                        640  integer(c_int), intent(in) :: bufr(*)
                                                        +
                                                        641  character(kind=c_char, len=1), intent(in) :: mnemonic(*)
                                                        +
                                                        642  integer(c_int) :: ires
                                                        +
                                                        643  integer :: iupbs01
                                                        +
                                                        644 
                                                        +
                                                        645  ires = iupbs01(bufr,c_f_string(mnemonic))
                                                        +
                                                        646  end function iupbs01_c
                                                        +
                                                        647 
                                                        +
                                                        658  function igetprm_c(cprmnm) result(ires) bind(C, name='igetprm_f')
                                                        +
                                                        659  character(kind=c_char, len=1), intent(in) :: cprmnm(*)
                                                        +
                                                        660  integer(c_int) :: ires
                                                        +
                                                        661  integer :: igetprm
                                                        +
                                                        662 
                                                        +
                                                        663  ires = igetprm(c_f_string(cprmnm))
                                                        +
                                                        664  end function igetprm_c
                                                        +
                                                        665 
                                                        +
                                                        676  function isetprm_c(cprmnm,ipval) result(ires) bind(C, name='isetprm_f')
                                                        +
                                                        677  character(kind=c_char, len=1), intent(in) :: cprmnm(*)
                                                        +
                                                        678  integer(c_int), value, intent(in) :: ipval
                                                        +
                                                        679  integer(c_int) :: ires
                                                        +
                                                        680  integer :: isetprm
                                                        +
                                                        681 
                                                        +
                                                        682  ires = isetprm(c_f_string(cprmnm),ipval)
                                                        +
                                                        683  end function isetprm_c
                                                        +
                                                        684 
                                                        +
                                                        693  subroutine maxout_c(max0) bind(C, name='maxout_f')
                                                        +
                                                        694  integer(c_int), value, intent(in) :: max0
                                                        +
                                                        695 
                                                        +
                                                        696  call maxout(max0)
                                                        +
                                                        697  end subroutine maxout_c
                                                        +
                                                        698 
                                                        +
                                                        708  function igetmxby_c() result(ires) bind(C, name='igetmxby_f')
                                                        +
                                                        709  integer(c_int) :: ires
                                                        +
                                                        710  integer :: igetmxby
                                                        +
                                                        711 
                                                        +
                                                        712  ires = igetmxby()
                                                        +
                                                        713  end function igetmxby_c
                                                        +
                                                        714 
                                                        +
                                                        725  subroutine cadn30_c(idn, adn, adn_str_len) bind(C, name='cadn30_f')
                                                        +
                                                        726  integer(c_int), intent(in), value :: idn, adn_str_len
                                                        +
                                                        727  character(kind=c_char, len=1), intent(out) :: adn(*)
                                                        +
                                                        728  character(len=8) :: adn_f
                                                        +
                                                        729 
                                                        +
                                                        730  call cadn30(idn, adn_f)
                                                        +
                                                        731  call copy_f_c_str(adn_f, adn, adn_str_len)
                                                        +
                                                        732  end subroutine cadn30_c
                                                        +
                                                        733 
                                                        +
                                                        744  function igetntbi_c(lun, table_type) result(ires) bind(C, name='igetntbi_f')
                                                        +
                                                        745  integer(c_int), value, intent(in) :: lun
                                                        +
                                                        746  character(kind=c_char,len=1), intent(in) :: table_type(*)
                                                        +
                                                        747  integer(c_int) :: ires
                                                        +
                                                        748  integer :: igetntbi
                                                        +
                                                        749  character(len=1) :: table_type_f
                                                        +
                                                        750 
                                                        +
                                                        751  table_type_f(1:1) = table_type(1)(1:1)
                                                        +
                                                        752 
                                                        +
                                                        753  ires = igetntbi(lun, table_type_f)
                                                        +
                                                        754  end function igetntbi_c
                                                        +
                                                        755 
                                                        +
                                                        765  subroutine elemdx_c(card,lun) bind(C, name='elemdx_f')
                                                        +
                                                        766  integer(c_int), value, intent(in) :: lun
                                                        +
                                                        767  character(kind=c_char, len=1), intent(in) :: card(*)
                                                        +
                                                        768  character(len=80) :: card_f
                                                        +
                                                        769  integer :: ii
                                                        +
                                                        770 
                                                        +
                                                        771  do ii = 1,80
                                                        +
                                                        772  card_f(ii:ii) = card(1)(ii:ii)
                                                        +
                                                        773  enddo
                                                        +
                                                        774  call elemdx(card_f, lun)
                                                        +
                                                        775  end subroutine elemdx_c
                                                        +
                                                        776 
                                                        +
                                                        789  subroutine numtbd_c(lun,idn,nemo,nemo_str_len,tab,iret) bind(C, name='numtbd_f')
                                                        +
                                                        790  integer(c_int), value, intent(in) :: lun, idn, nemo_str_len
                                                        +
                                                        791  character(kind=c_char,len=1), intent(out) :: nemo(*), tab(*)
                                                        +
                                                        792  integer(c_int), intent(out) :: iret
                                                        +
                                                        793 
                                                        +
                                                        794  character(len=9) :: nemo_f
                                                        +
                                                        795  character(len=1) :: tab_f
                                                        +
                                                        796 
                                                        +
                                                        797  call numtbd(lun, idn, nemo_f, tab_f, iret)
                                                        +
                                                        798 
                                                        +
                                                        799  call copy_f_c_str(nemo_f, nemo, nemo_str_len)
                                                        +
                                                        800  tab(1)(1:1) = tab_f(1:1)
                                                        +
                                                        801  end subroutine numtbd_c
                                                        +
                                                        802 
                                                        +
                                                        813  function ifxy_c(cfxy) result(ires) bind(C, name='ifxy_f')
                                                        +
                                                        814  character(kind=c_char, len=1), intent(in) :: cfxy(*)
                                                        +
                                                        815  integer(c_int) :: ires
                                                        +
                                                        816  integer :: ifxy
                                                        +
                                                        817 
                                                        +
                                                        818  ires = ifxy(c_f_string(cfxy))
                                                        +
                                                        819  end function ifxy_c
                                                        +
                                                        820 
                                                        +
                                                        837  subroutine uptdd_c(id, lun, ient, iret) bind(C, name='uptdd_f')
                                                        +
                                                        838  integer(c_int), intent(in), value :: id, lun, ient
                                                        +
                                                        839  integer(c_int), intent(out) :: iret
                                                        +
                                                        840 
                                                        +
                                                        841  call uptdd(id, lun, ient, iret)
                                                        +
                                                        842  end subroutine uptdd_c
                                                        +
                                                        843 
                                                        +
                                                        853  function imrkopr_c(nemo) result(ires) bind(C, name='imrkopr_f')
                                                        +
                                                        854  character(kind=c_char, len=1), intent(in) :: nemo(*)
                                                        +
                                                        855  integer(c_int) :: ires
                                                        +
                                                        856  integer :: imrkopr
                                                        +
                                                        857 
                                                        +
                                                        858  ires = imrkopr(c_f_string(nemo))
                                                        +
                                                        859  end function imrkopr_c
                                                        +
                                                        860 
                                                        +
                                                        870  function istdesc_c(idn) result(ires) bind(C, name='istdesc_f')
                                                        +
                                                        871  integer(c_int), intent(in), value :: idn
                                                        +
                                                        872  integer(c_int) :: ires
                                                        +
                                                        873  integer :: istdesc
                                                        +
                                                        874 
                                                        +
                                                        875  ires = istdesc(idn)
                                                        +
                                                        876  end function istdesc_c
                                                        +
                                                        877 
                                                        +
                                                        889  subroutine ufbseq_c(bufr_unit, c_data, dim_1, dim_2, iret, table_d_mnemonic) bind(C, name='ufbseq_f')
                                                        +
                                                        890  integer(c_int), value, intent(in) :: bufr_unit
                                                        +
                                                        891  type(c_ptr), intent(inout) :: c_data
                                                        +
                                                        892  integer(c_int), value, intent(in) :: dim_1, dim_2
                                                        +
                                                        893  integer(c_int), intent(out) :: iret
                                                        +
                                                        894  character(kind=c_char, len=1), intent(in) :: table_d_mnemonic(*)
                                                        +
                                                        895  real, pointer :: f_data
                                                        +
                                                        896 
                                                        +
                                                        897  call c_f_pointer(c_data, f_data)
                                                        +
                                                        898  call ufbseq(bufr_unit, f_data, dim_1, dim_2, iret, c_f_string(table_d_mnemonic))
                                                        +
                                                        899  end subroutine ufbseq_c
                                                        +
                                                        900 
                                                        +
                                                        915  function ireadns_c(bufr_unit, c_subset, iddate, subset_str_len) result(ires) bind(C, name='ireadns_f')
                                                        +
                                                        916  integer(c_int), value, intent(in) :: bufr_unit
                                                        +
                                                        917  character(kind=c_char, len=1), intent(out) :: c_subset(*)
                                                        +
                                                        918  integer(c_int), intent(out) :: iddate
                                                        +
                                                        919  integer(c_int), value, intent(in) :: subset_str_len
                                                        +
                                                        920  integer(c_int) :: ires
                                                        +
                                                        921  character(len=25) :: f_subset
                                                        +
                                                        922  integer :: ireadns
                                                        +
                                                        923 
                                                        +
                                                        924  ires = ireadns(bufr_unit, f_subset, iddate)
                                                        +
                                                        925 
                                                        +
                                                        926  if (ires == 0) then
                                                        +
                                                        927  call copy_f_c_str(f_subset, c_subset, subset_str_len)
                                                        +
                                                        928  end if
                                                        +
                                                        929  end function ireadns_c
                                                        +
                                                        930 
                                                        +
                                                        940  function ibfms_c(r8val) result(ires) bind(C, name='ibfms_f')
                                                        +
                                                        941  real(c_double), intent(in), value :: r8val
                                                        +
                                                        942  integer(c_int) :: ires
                                                        +
                                                        943  integer :: ibfms
                                                        +
                                                        944 
                                                        +
                                                        945  ires = ibfms(r8val)
                                                        +
                                                        946  end function ibfms_c
                                                        +
                                                        947 
                                                        +
                                                        957  subroutine strnum_c(str,num,iret) bind(C, name='strnum_f')
                                                        +
                                                        958  character(kind=c_char, len=1), intent(in) :: str(*)
                                                        +
                                                        959  integer(c_int), intent(out) :: num, iret
                                                        +
                                                        960 
                                                        +
                                                        961  call strnum(c_f_string(str), num, iret)
                                                        +
                                                        962  end subroutine strnum_c
                                                        +
                                                        963 
                                                        +
                                                        975  subroutine stntbi_c(n,lun,numb,nemo,celsq) bind(C, name='stntbi_f')
                                                        +
                                                        976  integer(c_int), intent(in), value :: n, lun
                                                        +
                                                        977  character(kind=c_char, len=1), intent(in) :: numb(*), nemo(*), celsq(*)
                                                        +
                                                        978  character(len=6) :: numb_f
                                                        +
                                                        979  character(len=8) :: nemo_f
                                                        +
                                                        980  character(len=55) :: celsq_f
                                                        +
                                                        981  integer :: ii
                                                        +
                                                        982 
                                                        +
                                                        983  do ii = 1,6
                                                        +
                                                        984  numb_f(ii:ii) = numb(1)(ii:ii)
                                                        +
                                                        985  enddo
                                                        +
                                                        986  do ii = 1,8
                                                        +
                                                        987  nemo_f(ii:ii) = nemo(1)(ii:ii)
                                                        +
                                                        988  enddo
                                                        +
                                                        989  do ii = 1,55
                                                        +
                                                        990  celsq_f(ii:ii) = celsq(1)(ii:ii)
                                                        +
                                                        991  enddo
                                                        +
                                                        992  call stntbi(n, lun, numb_f, nemo_f, celsq_f)
                                                        +
                                                        993  end subroutine stntbi_c
                                                        +
                                                        994 
                                                        +
                                                        1005  function igettdi_c(iflag) result(ires) bind(C, name='igettdi_f')
                                                        +
                                                        1006  integer(c_int), intent(in), value :: iflag
                                                        +
                                                        1007  integer(c_int) :: ires
                                                        +
                                                        1008  integer :: igettdi
                                                        +
                                                        1009 
                                                        +
                                                        1010  ires = igettdi(iflag)
                                                        +
                                                        1011  end function igettdi_c
                                                        +
                                                        1012 
                                                        +
                                                        1025  subroutine pktdd_c(id, lun, idn, iret) bind(C, name='pktdd_f')
                                                        +
                                                        1026  integer(c_int), intent(in), value :: id, lun, idn
                                                        +
                                                        1027  integer(c_int), intent(out) :: iret
                                                        +
                                                        1028 
                                                        +
                                                        1029  call pktdd(id, lun, idn, iret)
                                                        +
                                                        1030  end subroutine pktdd_c
                                                        +
                                                        1031 
                                                        +
                                                        1039  subroutine bort_c(errstr) bind(C, name='bort_f')
                                                        +
                                                        1040  character(kind=c_char, len=1), intent(in) :: errstr(*)
                                                        +
                                                        1041 
                                                        +
                                                        1042  call bort(c_f_string(errstr))
                                                        +
                                                        1043  end subroutine bort_c
                                                        +
                                                        1044 
                                                        +
                                                        1055  subroutine openmb_c(bufr_unit, c_subset, iddate) bind(C, name='openmb_f')
                                                        +
                                                        1056  integer(c_int), value, intent(in) :: bufr_unit, iddate
                                                        +
                                                        1057  character(kind=c_char, len=1), intent(in) :: c_subset(*)
                                                        +
                                                        1058 
                                                        +
                                                        1059  call openmb(bufr_unit, c_f_string(c_subset), iddate)
                                                        +
                                                        1060  end subroutine openmb_c
                                                        +
                                                        1061 
                                                        +
                                                        1070  subroutine bvers_c(cverstr, cverstr_len) bind(C, name='bvers_f')
                                                        +
                                                        1071  character(kind=c_char, len=1), intent(out) :: cverstr(*)
                                                        +
                                                        1072  integer(c_int), value, intent(in) :: cverstr_len
                                                        +
                                                        1073  character(len=10) :: f_cverstr
                                                        +
                                                        1074 
                                                        +
                                                        1075  call bvers(f_cverstr)
                                                        +
                                                        1076  call copy_f_c_str(f_cverstr, cverstr, cverstr_len)
                                                        +
                                                        1077  end subroutine bvers_c
                                                        +
                                                        1078 
                                                        +
                                                        1087  subroutine cmpmsg_c(cf) bind(C, name='cmpmsg_f')
                                                        +
                                                        1088  character(kind=c_char, len=1), intent(in) :: cf(*)
                                                        +
                                                        1089 
                                                        +
                                                        1090  call cmpmsg(c_f_string(cf))
                                                        +
                                                        1091  end subroutine cmpmsg_c
                                                        +
                                                        1092 
                                                        +
                                                        1093 end module bufr_c2f_interface
                                                        +
                                                        integer function igetprm(cprmnm)
                                                        Return the current value of a parameter used for allocating one or more internal arrays within the NC...
                                                        Definition: arallocf.F90:1114
                                                        +
                                                        subroutine exitbufr
                                                        Free all dynamically-allocated memory, close all logical units that are open within the NCEPLIBS-bufr...
                                                        Definition: arallocf.F90:901
                                                        +
                                                        recursive integer function isetprm(cprmnm, ipval)
                                                        Set a specified parameter to a specified value for use in dynamically allocating one or more internal...
                                                        Definition: arallocf.F90:980
                                                        +
                                                        integer function imrkopr(nemo)
                                                        Check whether a specified mnemonic is a Table C marker operator.
                                                        Definition: bitmaps.F90:354
                                                        +
                                                        subroutine bort(str)
                                                        Log an error message, then abort the application program.
                                                        Definition: borts.F90:15
                                                        +
                                                        subroutine cmpmsg(cf)
                                                        Specify whether BUFR messages output by future calls to message-writing subroutines and subset-writin...
                                                        Definition: compress.F90:33
                                                        +
                                                        subroutine elemdx(card, lun)
                                                        Decode the scale factor, reference value, bit width and units (i.e., the "elements") from a Table B m...
                                                        Definition: dxtable.F90:516
                                                        +
                                                        subroutine nemtbb(lun, itab, unit, iscl, iref, ibit)
                                                        Get information about a Table B descriptor from the internal DX BUFR tables.
                                                        Definition: dxtable.F90:1278
                                                        +
                                                        subroutine stntbi(n, lun, numb, nemo, celsq)
                                                        Store a new entry within internal BUFR Table B or D.
                                                        Definition: dxtable.F90:1621
                                                        +
                                                        subroutine pktdd(id, lun, idn, iret)
                                                        Store information about a child mnemonic within the internal BUFR Table D.
                                                        Definition: dxtable.F90:1666
                                                        +
                                                        recursive subroutine nemdefs(lunit, nemo, celem, cunit, iret)
                                                        Get the element name and units associated with a Table B descriptor.
                                                        Definition: dxtable.F90:1446
                                                        +
                                                        integer function igetntbi(lun, ctb)
                                                        Get the next available index for storing an entry within a specified internal DX BUFR table.
                                                        Definition: dxtable.F90:1153
                                                        +
                                                        subroutine uptdd(id, lun, ient, iret)
                                                        Get the WMO bit-wise representation of the FXY value corresponding to a child mnemonic in a Table D s...
                                                        Definition: dxtable.F90:1741
                                                        +
                                                        subroutine nemtab(lun, nemo, idn, tab, iret)
                                                        Get information about a descriptor, based on a mnemonic.
                                                        Definition: fxy.F90:432
                                                        +
                                                        subroutine cadn30(idn, adn)
                                                        Convert an FXY value from its WMO bit-wise representation to its 6 character representation.
                                                        Definition: fxy.F90:65
                                                        +
                                                        subroutine numtbd(lun, idn, nemo, tab, iret)
                                                        Get information about a Table B or Table D descriptor, based on the WMO bit-wise representation of an...
                                                        Definition: fxy.F90:290
                                                        +
                                                        integer function ifxy(adsc)
                                                        Convert an FXY value from its 6 character representation to its WMO bit-wise representation.
                                                        Definition: fxy.F90:152
                                                        + +
                                                        integer function igettdi(iflag)
                                                        Depending on the value of the input flag, either return the next usable scratch Table D index for the...
                                                        +
                                                        recursive subroutine mtinfo(cmtdir, lunmt1, lunmt2)
                                                        Specify the directory location and Fortran logical unit numbers to be used when reading master BUFR t...
                                                        Definition: mastertable.F90:35
                                                        +
                                                        subroutine bvers(cverstr)
                                                        Get the version number of the NCEPLIBS-bufr software.
                                                        Definition: misc.F90:384
                                                        +
                                                        recursive subroutine strnum(str, num, iret)
                                                        Decode an integer from a character string.
                                                        Definition: misc.F90:177
                                                        +
                                                        integer function ibfms(r8val)
                                                        Check whether a real*8 data value returned from a previous call to any of the NCEPLIBS-bufr values-re...
                                                        Definition: missing.F90:25
                                                        +
                                                        Wrap Fortran NCEPLIBS-bufr subprograms and variables so they can be called from within C.
                                                        +
                                                        subroutine, public get_isc_c(isc_ptr, isc_size)
                                                        Get copy of the moda_tables ISC array.
                                                        +
                                                        subroutine, public open_c(lunit, filepath)
                                                        Open a Fortran file from a C program.
                                                        +
                                                        integer(c_int) function, public ifxy_c(cfxy)
                                                        Convert an FXY value from its 6 character representation to its WMO bit-wise representation.
                                                        +
                                                        subroutine, public get_nval_c(lun, num_nodes)
                                                        Get the number of values in the current subset.
                                                        +
                                                        subroutine, public stntbi_c(n, lun, numb, nemo, celsq)
                                                        Store a new entry within the internal BUFR Table B or D.
                                                        +
                                                        subroutine, public status_c(file_unit, lun, il, im)
                                                        Check whether a file is connected to the library.
                                                        +
                                                        integer(c_int) function, public ireadmg_c(bufr_unit, c_subset, iddate, subset_str_len)
                                                        Read the next message from a BUFR file.
                                                        +
                                                        integer(c_int) function, public igetprm_c(cprmnm)
                                                        Get the current value of a parameter.
                                                        +
                                                        subroutine, public closbf_c(bufr_unit)
                                                        Close a previously opened file and disconnect it from the library.
                                                        +
                                                        subroutine, public close_c(lunit)
                                                        Close a Fortran file from a C program.
                                                        +
                                                        integer(c_int) function, public ibfms_c(r8val)
                                                        Test whether a data value is "missing".
                                                        +
                                                        subroutine, public ufbint_c(bufr_unit, c_data, dim_1, dim_2, iret, table_b_mnemonic)
                                                        Read/write one or more data values from/to a data subset.
                                                        +
                                                        subroutine, public mtinfo_c(path, file_unit_1, file_unit_2)
                                                        Specify location of master BUFR tables on local file system.
                                                        +
                                                        integer(c_int) function, public igetntbi_c(lun, table_type)
                                                        Get the next index for storing an entry within an internal DX BUFR table.
                                                        +
                                                        subroutine, public ufbrep_c(bufr_unit, c_data, dim_1, dim_2, iret, table_b_mnemonic)
                                                        Read/write one or more data values from/to a data subset.
                                                        +
                                                        integer(c_int) function, public iupbs01_c(bufr, mnemonic)
                                                        Read a data value from Section 0 or Section 1 of a BUFR message.
                                                        +
                                                        subroutine, public nemspecs_c(file_unit, mnemonic, mnemonic_idx, scale, reference, bits, iret)
                                                        Get the scale factor, reference value and bit width associated with a specified occurrence of a Table...
                                                        +
                                                        subroutine, public exitbufr_c()
                                                        Reset the library.
                                                        +
                                                        integer(c_int) function, public igettdi_c(iflag)
                                                        Get the next usable Table D index for the current master table, or reset the index.
                                                        +
                                                        subroutine, public get_inv_c(lun, inv_ptr, inv_size)
                                                        Get pointer to the moda_usrint INV array.
                                                        +
                                                        subroutine, public get_tag_c(tag_ptr, tag_len, mem_size)
                                                        Get copy of the moda_tables TAG array.
                                                        +
                                                        subroutine, public cadn30_c(idn, adn, adn_str_len)
                                                        Convert an FXY value from its WMO bit-wise representation to its six-character representation.
                                                        +
                                                        subroutine, public openbf_c(bufr_unit, cio, table_file_id)
                                                        Connect a new file to the library, or initialize the library, or change verbosity associated with alr...
                                                        +
                                                        subroutine, public bort_c(errstr)
                                                        Log one error message and abort application program.
                                                        +
                                                        integer(c_int) function, public istdesc_c(idn)
                                                        Check whether a descriptor is WMO-standard.
                                                        +
                                                        subroutine, public nemdefs_c(file_unit, mnemonic, unit_c, unit_str_len, desc_c, desc_str_len, iret)
                                                        Get the element name and units associated with a Table B mnemonic.
                                                        +
                                                        subroutine, public get_typ_c(typ_ptr, typ_len, mem_size)
                                                        Get copy of the moda_tables TYP array.
                                                        +
                                                        integer(c_int) function, public ireadns_c(bufr_unit, c_subset, iddate, subset_str_len)
                                                        Read the next data subset from a BUFR file.
                                                        +
                                                        subroutine, public pktdd_c(id, lun, idn, iret)
                                                        Store information about a child mnemonic within the internal arrays.
                                                        +
                                                        subroutine, public elemdx_c(card, lun)
                                                        Decode the scale factor, reference value, bit width, and units from a Table B mnemonic definition.
                                                        +
                                                        subroutine, public uptdd_c(id, lun, ient, iret)
                                                        Get the WMO bit-wise representation of the FXY value corresponding to a child mnemonic of a Table D s...
                                                        +
                                                        integer(c_int) function, public imrkopr_c(nemo)
                                                        Check whether a specified mnemonic is a Table C marker operator.
                                                        +
                                                        subroutine, public maxout_c(max0)
                                                        Define a customized maximum length for output BUFR messages.
                                                        +
                                                        subroutine, public get_jmpb_c(jmpb_ptr, jmpb_size)
                                                        Get copy of the moda_tables JMPB array.
                                                        +
                                                        subroutine, public openmb_c(bufr_unit, c_subset, iddate)
                                                        Open a new message for output in a BUFR file that was previously opened for writing.
                                                        +
                                                        subroutine, public get_inode_c(lun, start_node)
                                                        Get the bufr node idx for the start node of the subset.
                                                        +
                                                        subroutine, public delete_table_data_c()
                                                        Deletes the copies of the moda_tables arrays.
                                                        +
                                                        subroutine, public numtbd_c(lun, idn, nemo, nemo_str_len, tab, iret)
                                                        Search for a Table B or Table D descriptor within the internal DX BUFR tables.
                                                        +
                                                        subroutine, public nemtab_c(lun, mnemonic, descriptor, table_type, table_idx)
                                                        Get information about a descriptor.
                                                        +
                                                        integer(c_int) function, public ireadsb_c(bufr_unit)
                                                        Read the next data subset from a BUFR message.
                                                        +
                                                        subroutine, public get_link_c(link_ptr, link_size)
                                                        Get copy of the moda_tables LINK array.
                                                        +
                                                        subroutine, public readlc_c(lunit, str_id, output_str, output_str_len)
                                                        Function used to get long strings from the BUFR file.
                                                        +
                                                        integer(c_int) function, public isetprm_c(cprmnm, ipval)
                                                        Define a customized parameter value for dynamic allocation.
                                                        +
                                                        subroutine, public bvers_c(cverstr, cverstr_len)
                                                        Get the version number of the NCEPLIBS-bufr software.
                                                        +
                                                        subroutine, public get_itp_c(itp_ptr, itp_size)
                                                        Get copy of the moda_tables ITP array.
                                                        +
                                                        subroutine, public nemtbb_c(lun, table_idx, unit_str, unit_str_len, scale, reference, bits)
                                                        Get information about a Table B descriptor.
                                                        +
                                                        subroutine, public ufbseq_c(bufr_unit, c_data, dim_1, dim_2, iret, table_d_mnemonic)
                                                        Read/write an entire sequence of data values from/to a data subset.
                                                        +
                                                        integer(c_int) function, public igetmxby_c()
                                                        Get the maximum length of a BUFR message that can be written to an output file.
                                                        +
                                                        subroutine, public get_irf_c(irf_ptr, irf_size)
                                                        Get copy of the moda_tables IRF array.
                                                        +
                                                        subroutine, public get_val_c(lun, val_ptr, val_size)
                                                        Get pointer to the moda_usrint VAL array.
                                                        +
                                                        subroutine, public strnum_c(str, num, iret)
                                                        Decode an integer from a character string.
                                                        +
                                                        Declare arrays used to store information about the current BUFR message that is in the process of bei...
                                                        +
                                                        integer, dimension(:), allocatable inode
                                                        Table A mnemonic for type of BUFR message.
                                                        +
                                                        Declare arrays and variables needed to store information about long character strings (greater than 8...
                                                        +
                                                        Declare arrays and variables used to store the internal jump/link table.
                                                        +
                                                        integer, dimension(:), allocatable irf
                                                        Reference values corresponding to tag and typ:
                                                        +
                                                        integer, dimension(:), allocatable isc
                                                        Scale factors corresponding to tag and typ:
                                                        +
                                                        character *3, dimension(:), allocatable typ
                                                        Type indicators corresponding to tag:
                                                        +
                                                        integer, dimension(:), allocatable jmpb
                                                        Jump backward indices corresponding to tag and typ:
                                                        +
                                                        character *10, dimension(:), allocatable tag
                                                        Mnemonics in the jump/link table.
                                                        +
                                                        integer ntab
                                                        Number of entries in the jump/link table.
                                                        +
                                                        integer, dimension(:), allocatable itp
                                                        Integer type values corresponding to typ:
                                                        +
                                                        integer, dimension(:), allocatable link
                                                        Link indices corresponding to tag, typ and jmpb:
                                                        +
                                                        Declare arrays used to store data values and associated metadata for the current BUFR data subset in ...
                                                        +
                                                        integer, dimension(:), allocatable nval
                                                        Number of data values in BUFR data subset.
                                                        +
                                                        real *8, dimension(:,:), allocatable, target val
                                                        Data values.
                                                        +
                                                        integer, dimension(:,:), allocatable, target inv
                                                        Inventory pointer which links each data value to its corresponding node in the internal jump/link tab...
                                                        +
                                                        recursive subroutine closbf(lunit)
                                                        Close the connection between logical unit lunit and the NCEPLIBS-bufr software.
                                                        +
                                                        recursive subroutine openbf(lunit, io, lundx)
                                                        Connect a new file to the NCEPLIBS-bufr software for input or output operations, or initialize the li...
                                                        +
                                                        recursive subroutine status(lunit, lun, il, im)
                                                        Check whether a specified Fortran logical unit number is currently connected to the NCEPLIBS-bufr sof...
                                                        +
                                                        recursive subroutine maxout(maxo)
                                                        Specify the maximum length of a BUFR message that can be written to any output file by the NCEPLIBS-b...
                                                        +
                                                        recursive subroutine openmb(lunit, subset, jdate)
                                                        Open and initialize a new BUFR message within internal arrays, for eventual output to logical unit lu...
                                                        +
                                                        integer function igetmxby()
                                                        Get the maximum length of a BUFR message that can be written to an output file by the NCEPLIBS-bufr s...
                                                        +
                                                        recursive integer function ireadmg(lunit, subset, idate)
                                                        Call subroutine readmg() and pass back its return code as the function value.
                                                        +
                                                        recursive integer function ireadns(lunit, subset, idate)
                                                        Call subroutine readns() and pass back its return code as the function value.
                                                        +
                                                        recursive integer function ireadsb(lunit)
                                                        Call subroutine readsb() and pass back its return code as the function value.
                                                        +
                                                        recursive subroutine ufbseq(lunin, usr, i1, i2, iret, str)
                                                        Read or write an entire sequence of data values from or to a data subset.
                                                        +
                                                        recursive subroutine ufbint(lunin, usr, i1, i2, iret, str)
                                                        Read or write one or more data values from or to a data subset.
                                                        +
                                                        recursive subroutine readlc(lunit, chr, str)
                                                        Read a long character string (greater than 8 bytes) from a data subset.
                                                        +
                                                        recursive subroutine ufbrep(lunin, usr, i1, i2, iret, str)
                                                        Read or write one or more data values from or to a data subset.
                                                        +
                                                        recursive integer function iupbs01(mbay, s01mnem)
                                                        Read a specified value from within Section 0 or Section 1 of a BUFR message.
                                                        Definition: s013vals.F90:247
                                                        +
                                                        integer function istdesc(idn)
                                                        Given the WMO bit-wise representation of an FXY value for a descriptor, check whether the descriptor ...
                                                        Definition: standard.F90:298
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/bufr__interface_8F90.html b/previous_versions/v12.1.0/bufr__interface_8F90.html new file mode 100644 index 000000000..fa40a6c72 --- /dev/null +++ b/previous_versions/v12.1.0/bufr__interface_8F90.html @@ -0,0 +1,133 @@ + + + + + + + +NCEPLIBS-bufr: bufr_interface.F90 File Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        bufr_interface.F90 File Reference
                                                        +
                                                        +
                                                        + +

                                                        Enable a number of C NCEPLIBS-bufr functions to be called from within Fortran application programs. +More...

                                                        + +

                                                        Go to the source code of this file.

                                                        + + + + + + + + + + + + +

                                                        +Data Types

                                                        interface  bufr_interface::ccbfl_c
                                                         
                                                        interface  bufr_interface::cobfl_c
                                                         
                                                        interface  bufr_interface::crbmg_c
                                                         
                                                        interface  bufr_interface::cwbmg_c
                                                         
                                                        interface  bufr_interface::dlloctbf_c
                                                         
                                                        + + + + +

                                                        +Modules

                                                        module  bufr_interface
                                                         Wrap C NCEPLIBS-bufr functions so they can be called from within Fortran application programs.
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Enable a number of C NCEPLIBS-bufr functions to be called from within Fortran application programs.

                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2023-03-22
                                                        + +

                                                        Definition in file bufr_interface.F90.

                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/bufr__interface_8F90_source.html b/previous_versions/v12.1.0/bufr__interface_8F90_source.html new file mode 100644 index 000000000..eebb0b77d --- /dev/null +++ b/previous_versions/v12.1.0/bufr__interface_8F90_source.html @@ -0,0 +1,143 @@ + + + + + + + +NCEPLIBS-bufr: bufr_interface.F90 Source File + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        +
                                                        bufr_interface.F90
                                                        +
                                                        +
                                                        +Go to the documentation of this file.
                                                        1 
                                                        +
                                                        6 
                                                        +
                                                        10 
                                                        + +
                                                        12 
                                                        +
                                                        13  interface
                                                        +
                                                        14 
                                                        +
                                                        24  subroutine cobfl_c( bfl, io ) bind(C, name='cobfl')
                                                        +
                                                        25  use iso_c_binding
                                                        +
                                                        26  character(kind=c_char), intent(in) :: bfl(*)
                                                        +
                                                        27  character(kind=c_char), intent(in), value :: io
                                                        +
                                                        28  end subroutine cobfl_c
                                                        +
                                                        29 
                                                        +
                                                        43  subroutine crbmg_c( bmg, mxmb, nmb, iret ) bind(C, name='crbmg')
                                                        +
                                                        44  use iso_c_binding
                                                        +
                                                        45  character(kind=c_char), intent(out) :: bmg(*)
                                                        +
                                                        46  integer(c_int), intent(in), value :: mxmb
                                                        +
                                                        47  integer(c_int), intent(out) :: nmb, iret
                                                        +
                                                        48  end subroutine crbmg_c
                                                        +
                                                        49 
                                                        +
                                                        61  subroutine cwbmg_c( bmg, nmb, iret ) bind(C, name='cwbmg')
                                                        +
                                                        62  use iso_c_binding
                                                        +
                                                        63  character(kind=c_char), intent(in) :: bmg(*)
                                                        +
                                                        64  integer(c_int), intent(in), value :: nmb
                                                        +
                                                        65  integer(c_int), intent(out) :: iret
                                                        +
                                                        66  end subroutine cwbmg_c
                                                        +
                                                        67 
                                                        +
                                                        74  subroutine ccbfl_c() bind(C, name='ccbfl')
                                                        +
                                                        75  use iso_c_binding
                                                        +
                                                        76  end subroutine ccbfl_c
                                                        +
                                                        77 
                                                        +
                                                        84  subroutine dlloctbf_c() bind(C, name='dlloctbf')
                                                        +
                                                        85  use iso_c_binding
                                                        +
                                                        86  end subroutine dlloctbf_c
                                                        +
                                                        87 
                                                        +
                                                        88  end interface
                                                        +
                                                        89 
                                                        +
                                                        90 end module bufr_interface
                                                        + + + + + +
                                                        Wrap C NCEPLIBS-bufr functions so they can be called from within Fortran application programs.
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/bufr__interface_8h.html b/previous_versions/v12.1.0/bufr__interface_8h.html new file mode 100644 index 000000000..a844c2a7b --- /dev/null +++ b/previous_versions/v12.1.0/bufr__interface_8h.html @@ -0,0 +1,2235 @@ + + + + + + + +NCEPLIBS-bufr: bufr_interface.h File Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        bufr_interface.h File Reference
                                                        +
                                                        +
                                                        + +

                                                        Enable a number of NCEPLIBS-bufr subprograms to be called from within C and C++ application programs. +More...

                                                        + +

                                                        Go to the source code of this file.

                                                        + + + + + +

                                                        +Macros

                                                        #define VERS_STR_LEN   8
                                                         Size of a character string needed to store a library version number. More...
                                                         
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                                                        +Functions

                                                        void bvers_f (char *cverstr, int cverstr_len)
                                                         Get the version number of the NCEPLIBS-bufr software. More...
                                                         
                                                        void ccbfl (void)
                                                         Close all files that were opened via previous calls to function cobfl(). More...
                                                         
                                                        void closbf_f (int bufr_unit)
                                                         Close a previously opened file and disconnect it from the library. More...
                                                         
                                                        void close_f (int unit)
                                                         Close a Fortran file from a C program. More...
                                                         
                                                        void cmpmsg_f (char *cf)
                                                         Specify the use of compression when writing BUFR messages. More...
                                                         
                                                        void cobfl (char *bfl, char io)
                                                         Open a new file for reading or writing BUFR messages via a C language interface. More...
                                                         
                                                        void crbmg (char *bmg, int mxmb, int *nmb, int *iret)
                                                         Read the next BUFR message from the file that was opened via the most recent call to function cobfl() with io = 'r'. More...
                                                         
                                                        void cwbmg (char *bmg, int nmb, int *iret)
                                                         Write a BUFR message to the file that was opened via the most recent call to function cobfl() with io = 'w'. More...
                                                         
                                                        void delete_table_data_f ()
                                                         Deletes the copies of the moda_tables arrays. More...
                                                         
                                                        void exitbufr_f ()
                                                         Reset the library. More...
                                                         
                                                        void get_inode_f (int lun, int *start_node)
                                                         Get the bufr node idx for the start node of the subset. More...
                                                         
                                                        void get_inv_f (int lun, int **inv_ptr, int *inv_size)
                                                         Get pointer to the moda_usrint INV array. More...
                                                         
                                                        void get_irf_f (int **irf_ptr, int *irf_size)
                                                         Get copy of the moda_tables IRF array. More...
                                                         
                                                        void get_isc_f (int **isc_ptr, int *isc_size)
                                                         Get copy of the moda_tables ISC array. More...
                                                         
                                                        void get_itp_f (int **itp_ptr, int *itp_size)
                                                         Get copy of the moda_tables ITP array. More...
                                                         
                                                        void get_jmpb_f (int **jmpb_ptr, int *jmpb_size)
                                                         Get copy of the moda_tables JMPB array. More...
                                                         
                                                        void get_link_f (int **link_ptr, int *link_size)
                                                         Get copy of the moda_tables LINK array. More...
                                                         
                                                        void get_nval_f (int lun, int *num_nodes)
                                                         Get the number of values in the current subset. More...
                                                         
                                                        void get_tag_f (char **tag_ptr, int *tag_len, int *mem_size)
                                                         Get copy of the moda_tables TAG array. More...
                                                         
                                                        void get_typ_f (char **typ_ptr, int *typ_len, int *mem_size)
                                                         Get copy of the moda_tables TYP array. More...
                                                         
                                                        void get_val_f (int lun, double **val_ptr, int *val_size)
                                                         Get pointer to the moda_usrint VAL array. More...
                                                         
                                                        int ibfms_f (double r8val)
                                                         Test whether a data value is "missing". More...
                                                         
                                                        int igetmxby_f (void)
                                                         Get the maximum length of a BUFR message that can be written to an output file. More...
                                                         
                                                        int igetprm_f (char *cprmnm)
                                                         Get the current value of a parameter. More...
                                                         
                                                        int ireadmg_f (int bufr_unit, char *subset, int *iddate, int subset_len)
                                                         Read the next message from a BUFR file. More...
                                                         
                                                        int ireadns_f (int bufr_unit, char *subset, int *iddate, int subset_len)
                                                         Read the next data subset from a BUFR file. More...
                                                         
                                                        int ireadsb_f (int bufr_unit)
                                                         Read the next data subset from a BUFR message. More...
                                                         
                                                        int isetprm_f (char *cprmnm, int ipval)
                                                         Define a customized parameter value for dynamic allocation. More...
                                                         
                                                        int iupbs01_f (int *bufr, char *mnemonic)
                                                         Read a data value from Section 0 or Section 1 of a BUFR message. More...
                                                         
                                                        void maxout_f (int max0)
                                                         Define a customized maximum length for output BUFR messages. More...
                                                         
                                                        void mtinfo_f (const char *path, int file_unit_1, int file_unit_2)
                                                         Specify location of master BUFR tables on local file system. More...
                                                         
                                                        void nemdefs_f (int file_unit, const char *mnemonic, char *unit_c, int unit_str_len, char *desc_c, int desc_str_len, int *iret)
                                                         Get the element name and units associated with a Table B mnemonic. More...
                                                         
                                                        void nemspecs_f (int file_unit, const char *mnemonic, int mnemonic_idx, int *scale, int *reference, int *bits, int *iret)
                                                         Get the scale factor, reference value and bit width associated with a specified occurrence of a Table B mnemonic. More...
                                                         
                                                        void nemtab_f (int lun, const char *mnemonic, int *descriptor, char *table_type, int *table_idx)
                                                         Get information about a descriptor. More...
                                                         
                                                        void nemtbb_f (int lun, int table_idx, char *unit_str, int unit_str_len, int *scale, int *reference, int *bits)
                                                         Get information about a Table B descriptor. More...
                                                         
                                                        void open_f (int unit, const char *filepath)
                                                         Open a Fortran file from a C program. More...
                                                         
                                                        void openbf_f (int bufr_unit, const char *cio, int table_file_id)
                                                         Connect a new file to the library, or initialize the library, or change verbosity associated with already-connected file. More...
                                                         
                                                        void openmb_f (int bufr_unit, char *c_subset, int iddate)
                                                         Open a new message for output in a BUFR file that was previously opened for writing. More...
                                                         
                                                        void readlc_f (int lunit, const char *str_id, char *output_str, int output_str_len)
                                                         Function used to get long strings from the BUFR file. More...
                                                         
                                                        void status_f (int file_unit, int *lun, int *il, int *im)
                                                         Check whether a file is connected to the library. More...
                                                         
                                                        void ufbint_f (int bufr_unit, void **c_data, int dim_1, int dim_2, int *iret, const char *table_b_mnemonic)
                                                         Read/write one or more data values from/to a data subset. More...
                                                         
                                                        void ufbrep_f (int bufr_unit, void **c_data, int dim_1, int dim_2, int *iret, const char *table_b_mnemonic)
                                                         Read/write one or more data values from/to a data subset. More...
                                                         
                                                        void ufbseq_f (int bufr_unit, void **c_data, int dim_1, int dim_2, int *iret, const char *table_d_mnemonic)
                                                         Read/write an entire sequence of data values from/to a data subset. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Enable a number of NCEPLIBS-bufr subprograms to be called from within C and C++ application programs.

                                                        +

                                                        This header file defines the signatures which wrap a number of native Fortran subprograms in the library. It also contains prototypes for native C functions in the library which are expected to be called from C and C++ application programs.

                                                        +
                                                        Author
                                                        Ronald Mclaren
                                                        +
                                                        Date
                                                        2020-07-29
                                                        + +

                                                        Definition in file bufr_interface.h.

                                                        +

                                                        Macro Definition Documentation

                                                        + +

                                                        ◆ VERS_STR_LEN

                                                        + +
                                                        +
                                                        + + + + +
                                                        #define VERS_STR_LEN   8
                                                        +
                                                        + +

                                                        Size of a character string needed to store a library version number.

                                                        + +

                                                        Definition at line 21 of file bufr_interface.h.

                                                        + +
                                                        +
                                                        +

                                                        Function Documentation

                                                        + +

                                                        ◆ bvers_f()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        void bvers_f (char * cverstr,
                                                        int cverstr_len 
                                                        )
                                                        +
                                                        + +

                                                        Get the version number of the NCEPLIBS-bufr software.

                                                        +

                                                        Wraps bvers() subroutine.

                                                        +
                                                        Parameters
                                                        + + + +
                                                        cverstr- Version string.
                                                        cverstr_len- Length of version string.
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2023-04-07
                                                        + +

                                                        Referenced by main().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ ccbfl()

                                                        + +
                                                        +
                                                        + + + + + + + + +
                                                        void ccbfl (void )
                                                        +
                                                        + +

                                                        Close all files that were opened via previous calls to function cobfl().

                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2005-11-29
                                                        + +

                                                        Definition at line 290 of file crwbmg.c.

                                                        + +

                                                        References pbf.

                                                        + +

                                                        Referenced by main().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ closbf_f()

                                                        + +
                                                        +
                                                        + + + + + + + + +
                                                        void closbf_f (int bufr_unit)
                                                        +
                                                        + +

                                                        Close a previously opened file and disconnect it from the library.

                                                        +

                                                        Wraps closbf() subroutine.

                                                        +
                                                        Parameters
                                                        + + +
                                                        bufr_unit- the Fortran logical unit number to close.
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        Ronald Mclaren
                                                        +
                                                        Date
                                                        2020-07-29
                                                        + +
                                                        +
                                                        + +

                                                        ◆ close_f()

                                                        + +
                                                        +
                                                        + + + + + + + + +
                                                        void close_f (int unit)
                                                        +
                                                        + +

                                                        Close a Fortran file from a C program.

                                                        +
                                                        Parameters
                                                        + + +
                                                        unit- the integer to use as the Fortran logical unit.
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        Ronald Mclaren
                                                        +
                                                        Date
                                                        2020-07-29
                                                        + +
                                                        +
                                                        + +

                                                        ◆ cmpmsg_f()

                                                        + +
                                                        +
                                                        + + + + + + + + +
                                                        void cmpmsg_f (char * cf)
                                                        +
                                                        + +

                                                        Specify the use of compression when writing BUFR messages.

                                                        +

                                                        Wraps cmpmsg() subroutine.

                                                        +
                                                        Parameters
                                                        + + +
                                                        cf- Flag indicating whether future BUFR output messages are to be compressed ('Y' = Yes, 'N' = No).
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2023-04-07
                                                        + +
                                                        +
                                                        + +

                                                        ◆ cobfl()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        void cobfl (char * bfl,
                                                        char io 
                                                        )
                                                        +
                                                        + +

                                                        Open a new file for reading or writing BUFR messages via a C language interface.

                                                        +

                                                        This function is designed to be easily callable from application program written in either C or Fortran. It is functionally equivalent to subroutine openbf(); however, there are some important differences:

                                                        +
                                                          +
                                                        • When using openbf(), the underlying file must already be associated with a Fortran logical unit number on the local system, typicially via a prior Fortran "OPEN" statement. This is not required when using this function.
                                                        • +
                                                        • When using this function, it is only possible to have at most one input (io = 'r') file and one output (io = 'w') file open at a time. If a successive call to this function is made in either case where a file of that type is already open, then the function will automatically close the previous file of that type before opening the new one.
                                                        • +
                                                        • When opening a file for input/reading using openbf(), the user can make subsequent calls to any of the NCEPLIBS-bufr message-reading subroutines to read individual BUFR messages from that file into internal arrays, followed by subsequent calls to any of the NCEPLIBS-bufr subset-reading subroutines") to read individual data subsets from each such message. However, when opening a file for input/reading using this function, the user must instead make subsequent calls to crbmg() to read individual BUFR messages from that file, and each such message will be returned directly to the user within an allocated memory array. The user may then, if desired, make subsequent calls to readerme() to store each such message into the same internal arrays, followed by subsequent calls to any of the NCEPLIBS-bufr subset-reading subroutines" to read individual data subsets from each such message.
                                                        • +
                                                        • When opening a file for output/writing using openbf(), the user can make subsequent successive calls to writsb() to pack each completed data subset into the BUFR message that is currently open within the internal arrays, for eventual output to that file. However, when opening a file for output/writing using this function, the user can instead, if desired, make subsequent successive calls to writsa() to pack each completed data subset into the BUFR message that is currently open within the internal arrays. The use of writsa() will cause each completed BUFR message to be returned directly to the user within an allocated memory array, which in turn can then be written directly to the file via a subsequent call to cwbmg().
                                                        • +
                                                        +

                                                        Any errors encountered when using this function are automatically logged to standard output, or to an alternate location previously specified via a call to subroutine errwrt().

                                                        +
                                                        Parameters
                                                        + + + +
                                                        bfl- System file to be opened. Inclusion of directory prefixes or other local filesystem notation is allowed, up to 200 total characters.
                                                        io- Flag indicating how bfl is to be opened:
                                                          +
                                                        • 'r' input (for reading BUFR messages)
                                                        • +
                                                        • 'w' output (for writing BUFR messages)
                                                        • +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2005-11-29
                                                        + +

                                                        Definition at line 120 of file crwbmg.c.

                                                        + +

                                                        References bort_f(), MXFNLEN, and pbf.

                                                        + +

                                                        Referenced by main().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ crbmg()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        void crbmg (char * bmg,
                                                        int mxmb,
                                                        int * nmb,
                                                        int * iret 
                                                        )
                                                        +
                                                        + +

                                                        Read the next BUFR message from the file that was opened via the most recent call to function cobfl() with io = 'r'.

                                                        +

                                                        This function is designed to be easily callable from application program written in either C or Fortran.

                                                        +
                                                        Parameters
                                                        + + + + + +
                                                        bmg- BUFR message
                                                        mxmb- Number of elements in bmg array;; used by the function to ensure that it doesn't overflow the array.
                                                        nmb- Size (in bytes) of BUFR message in bmg.
                                                        iret- return code:
                                                          +
                                                        • 0 normal return.
                                                        • +
                                                        • 1 overflow of bmg array.
                                                        • +
                                                        • 2 "7777" indicator not found in expected location.
                                                        • +
                                                        • -1 end-of-file encountered while reading.
                                                        • +
                                                        • -2 I/O error encountered while reading.
                                                        • +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2005-11-29
                                                        + +

                                                        Definition at line 195 of file crwbmg.c.

                                                        + +

                                                        References bort_f(), iupbs01_f(), pbf, and rbytes().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ cwbmg()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        void cwbmg (char * bmg,
                                                        int nmb,
                                                        int * iret 
                                                        )
                                                        +
                                                        + +

                                                        Write a BUFR message to the file that was opened via the most recent call to function cobfl() with io = 'w'.

                                                        +

                                                        This function is designed to be easily callable from application program written in either C or Fortran.

                                                        +
                                                        Parameters
                                                        + + + + +
                                                        bmg- BUFR message
                                                        nmb- Size (in bytes) of BUFR message in bmg
                                                        iret- return code:
                                                          +
                                                        • 0 normal return.
                                                        • +
                                                        • -1 I/O error encountered while writing.
                                                        • +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2005-11-29
                                                        + +

                                                        Definition at line 263 of file crwbmg.c.

                                                        + +

                                                        References bort_f(), and pbf.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ delete_table_data_f()

                                                        + +
                                                        +
                                                        + + + + + + + +
                                                        void delete_table_data_f ()
                                                        +
                                                        + +

                                                        Deletes the copies of the moda_tables arrays.

                                                        +
                                                        Author
                                                        Ronald McLaren
                                                        +
                                                        Date
                                                        2022-03-23
                                                        + +
                                                        +
                                                        + +

                                                        ◆ exitbufr_f()

                                                        + +
                                                        +
                                                        + + + + + + + +
                                                        void exitbufr_f ()
                                                        +
                                                        + +

                                                        Reset the library.

                                                        +

                                                        Wraps exitbufr() subroutine.

                                                        +
                                                        Author
                                                        Ronald Mclaren
                                                        +
                                                        Date
                                                        2020-07-29
                                                        + +
                                                        +
                                                        + +

                                                        ◆ get_inode_f()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        void get_inode_f (int lun,
                                                        int * start_node 
                                                        )
                                                        +
                                                        + +

                                                        Get the bufr node idx for the start node of the subset.

                                                        +
                                                        Parameters
                                                        + + + +
                                                        lun- File ID.
                                                        start_node- the start node of the subset.
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        Ronald McLaren
                                                        +
                                                        Date
                                                        2022-03-23
                                                        + +
                                                        +
                                                        + +

                                                        ◆ get_inv_f()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        void get_inv_f (int lun,
                                                        int ** inv_ptr,
                                                        int * inv_size 
                                                        )
                                                        +
                                                        + +

                                                        Get pointer to the moda_usrint INV array.

                                                        +
                                                        Parameters
                                                        + + + + +
                                                        lun- File ID.
                                                        inv_ptr- pointer to a pointer to the INV array.
                                                        inv_size- size of the INV array.
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        Ronald McLaren
                                                        +
                                                        Date
                                                        2022-03-23
                                                        + +
                                                        +
                                                        + +

                                                        ◆ get_irf_f()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        void get_irf_f (int ** irf_ptr,
                                                        int * irf_size 
                                                        )
                                                        +
                                                        + +

                                                        Get copy of the moda_tables IRF array.

                                                        +
                                                        Parameters
                                                        + + + +
                                                        irf_ptr- pointer to a pointer to the IRF array.
                                                        irf_size- size of the IRF array.
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        Ronald McLaren
                                                        +
                                                        Date
                                                        2023-04-05
                                                        + +
                                                        +
                                                        + +

                                                        ◆ get_isc_f()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        void get_isc_f (int ** isc_ptr,
                                                        int * isc_size 
                                                        )
                                                        +
                                                        + +

                                                        Get copy of the moda_tables ISC array.

                                                        +
                                                        Parameters
                                                        + + + +
                                                        isc_ptr- pointer to a pointer to the ISC array.
                                                        isc_size- size of the ISC array.
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        Ronald McLaren
                                                        +
                                                        Date
                                                        2022-03-23
                                                        + +
                                                        +
                                                        + +

                                                        ◆ get_itp_f()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        void get_itp_f (int ** itp_ptr,
                                                        int * itp_size 
                                                        )
                                                        +
                                                        + +

                                                        Get copy of the moda_tables ITP array.

                                                        +
                                                        Parameters
                                                        + + + +
                                                        itp_ptr- pointer to a pointer to the ITP array.
                                                        itp_size- size of the ITP array.
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        Ronald McLaren
                                                        +
                                                        Date
                                                        2022-03-23
                                                        + +
                                                        +
                                                        + +

                                                        ◆ get_jmpb_f()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        void get_jmpb_f (int ** jmpb_ptr,
                                                        int * jmpb_size 
                                                        )
                                                        +
                                                        + +

                                                        Get copy of the moda_tables JMPB array.

                                                        +
                                                        Parameters
                                                        + + + +
                                                        jmpb_ptr- pointer to a pointer to the JMPB array.
                                                        jmpb_size- size of the JMPB array.
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        Ronald McLaren
                                                        +
                                                        Date
                                                        2022-03-23
                                                        + +
                                                        +
                                                        + +

                                                        ◆ get_link_f()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        void get_link_f (int ** link_ptr,
                                                        int * link_size 
                                                        )
                                                        +
                                                        + +

                                                        Get copy of the moda_tables LINK array.

                                                        +
                                                        Parameters
                                                        + + + +
                                                        link_ptr- pointer to a pointer to the LINK array.
                                                        link_size- size of the LINK array.
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        Ronald McLaren
                                                        +
                                                        Date
                                                        2022-03-23
                                                        + +
                                                        +
                                                        + +

                                                        ◆ get_nval_f()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        void get_nval_f (int lun,
                                                        int * num_nodes 
                                                        )
                                                        +
                                                        + +

                                                        Get the number of values in the current subset.

                                                        +
                                                        Parameters
                                                        + + + +
                                                        lun- File ID.
                                                        num_nodes- number of values in the subset.
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        Ronald McLaren
                                                        +
                                                        Date
                                                        2022-03-23
                                                        + +
                                                        +
                                                        + +

                                                        ◆ get_tag_f()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        void get_tag_f (char ** tag_ptr,
                                                        int * tag_len,
                                                        int * mem_size 
                                                        )
                                                        +
                                                        + +

                                                        Get copy of the moda_tables TAG array.

                                                        +
                                                        Parameters
                                                        + + + + +
                                                        tag_ptr- pointer to a pointer to the TAG array.
                                                        tag_len- size of each string within the TAG array.
                                                        mem_size- size of the TAG array.
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        Ronald McLaren
                                                        +
                                                        Date
                                                        2022-03-23
                                                        + +
                                                        +
                                                        + +

                                                        ◆ get_typ_f()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        void get_typ_f (char ** typ_ptr,
                                                        int * typ_len,
                                                        int * mem_size 
                                                        )
                                                        +
                                                        + +

                                                        Get copy of the moda_tables TYP array.

                                                        +
                                                        Parameters
                                                        + + + + +
                                                        typ_ptr- pointer to a pointer to the TYP array.
                                                        typ_len- size of each string within the TYP array.
                                                        mem_size- size of the TYP array.
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        Ronald McLaren
                                                        +
                                                        Date
                                                        2022-03-23
                                                        + +
                                                        +
                                                        + +

                                                        ◆ get_val_f()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        void get_val_f (int lun,
                                                        double ** val_ptr,
                                                        int * val_size 
                                                        )
                                                        +
                                                        + +

                                                        Get pointer to the moda_usrint VAL array.

                                                        +
                                                        Parameters
                                                        + + + + +
                                                        lun- File ID.
                                                        val_ptr- pointer to a pointer to the VAL array.
                                                        val_size- size of the VAL array.
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        Ronald McLaren
                                                        +
                                                        Date
                                                        2022-03-23
                                                        + +
                                                        +
                                                        + +

                                                        ◆ ibfms_f()

                                                        + +
                                                        +
                                                        + + + + + + + + +
                                                        int ibfms_f (double r8val)
                                                        +
                                                        + +

                                                        Test whether a data value is "missing".

                                                        +

                                                        Wraps ibfms() function.

                                                        +
                                                        Parameters
                                                        + + +
                                                        r8val- Data value.
                                                        +
                                                        +
                                                        +
                                                        Returns
                                                        - 1 if r8val is "missing", or 0 otherwise.
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2023-04-07
                                                        + +
                                                        +
                                                        + +

                                                        ◆ igetmxby_f()

                                                        + +
                                                        +
                                                        + + + + + + + + +
                                                        int igetmxby_f (void )
                                                        +
                                                        + +

                                                        Get the maximum length of a BUFR message that can be written to an output file.

                                                        +
                                                        Returns
                                                        Maximum length of a BUFR message that can be written to an output file.
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2023-04-07
                                                        + +
                                                        +
                                                        + +

                                                        ◆ igetprm_f()

                                                        + +
                                                        +
                                                        + + + + + + + + +
                                                        int igetprm_f (char * cprmnm)
                                                        +
                                                        + +

                                                        Get the current value of a parameter.

                                                        +
                                                        Parameters
                                                        + + +
                                                        cprmnm- Parameter.
                                                        +
                                                        +
                                                        +
                                                        Returns
                                                        Value of cprmnm.
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2023-04-07
                                                        + +

                                                        Referenced by arallocc(), inittbf(), restd(), and stseq().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ ireadmg_f()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        int ireadmg_f (int bufr_unit,
                                                        char * subset,
                                                        int * iddate,
                                                        int subset_len 
                                                        )
                                                        +
                                                        + +

                                                        Read the next message from a BUFR file.

                                                        +

                                                        Wraps ireadmg() function.

                                                        +
                                                        Parameters
                                                        + + + + + +
                                                        bufr_unit- the Fortran logical unit number to read from.
                                                        subset- the subset string.
                                                        iddate- datetime of message.
                                                        subset_len- length of the subset string.
                                                        +
                                                        +
                                                        +
                                                        Returns
                                                          +
                                                        • 0 new BUFR message was successfully read into internal arrays.
                                                        • +
                                                        • -1 there are no more BUFR messages in bufr_unit.
                                                        • +
                                                        +
                                                        +
                                                        Author
                                                        Ronald Mclaren
                                                        +
                                                        Date
                                                        2020-07-29
                                                        + +
                                                        +
                                                        + +

                                                        ◆ ireadns_f()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        int ireadns_f (int bufr_unit,
                                                        char * subset,
                                                        int * iddate,
                                                        int subset_len 
                                                        )
                                                        +
                                                        + +

                                                        Read the next data subset from a BUFR file.

                                                        +

                                                        Wraps ireadns() function.

                                                        +
                                                        Parameters
                                                        + + + + + +
                                                        bufr_unit- the Fortran logical unit number to read from.
                                                        subset- the subset string.
                                                        iddate- datetime of message.
                                                        subset_len- length of the subset string.
                                                        +
                                                        +
                                                        +
                                                        Returns
                                                          +
                                                        • 0 new BUFR data subset was successfully read into internal arrays.
                                                        • +
                                                        • -1 there are no more BUFR data subsets in bufr_unit.
                                                        • +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2023-04-07
                                                        + +
                                                        +
                                                        + +

                                                        ◆ ireadsb_f()

                                                        + +
                                                        +
                                                        + + + + + + + + +
                                                        int ireadsb_f (int bufr_unit)
                                                        +
                                                        + +

                                                        Read the next data subset from a BUFR message.

                                                        +

                                                        Wraps ireadsb() function.

                                                        +
                                                        Parameters
                                                        + + +
                                                        bufr_unit- the Fortran logical unit number to read from.
                                                        +
                                                        +
                                                        +
                                                        Returns
                                                          +
                                                        • 0 new BUFR data subset was successfully read into internal arrays.
                                                        • +
                                                        • -1 there are no more BUFR data subsets in the BUFR message associated with bufr_unit
                                                        • +
                                                        +
                                                        +
                                                        Author
                                                        Ronald Mclaren
                                                        +
                                                        Date
                                                        2020-07-29
                                                        + +
                                                        +
                                                        + +

                                                        ◆ isetprm_f()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        int isetprm_f (char * cprmnm,
                                                        int ipval 
                                                        )
                                                        +
                                                        + +

                                                        Define a customized parameter value for dynamic allocation.

                                                        +
                                                        Parameters
                                                        + + + +
                                                        cprmnm- Parameter.
                                                        ipval- Value to be set for cprmnm.
                                                        +
                                                        +
                                                        +
                                                        Returns
                                                        0 if successful, or -1 if cprmnm unknown.
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2023-04-07
                                                        + +
                                                        +
                                                        + +

                                                        ◆ iupbs01_f()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        int iupbs01_f (int * bufr,
                                                        char * mnemonic 
                                                        )
                                                        +
                                                        + +

                                                        Read a data value from Section 0 or Section 1 of a BUFR message.

                                                        +

                                                        Wraps iupbs01() function.

                                                        +
                                                        Parameters
                                                        + + + +
                                                        bufr- BUFR message.
                                                        mnemonic- Value to be read from Section 0 or Section 1.
                                                        +
                                                        +
                                                        +
                                                        Returns
                                                        - Value corresponding to mnemonic, or -1 if not found or error occurred.
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2023-04-07
                                                        + +

                                                        Referenced by crbmg(), crdbufr(), and main().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ maxout_f()

                                                        + +
                                                        +
                                                        + + + + + + + + +
                                                        void maxout_f (int max0)
                                                        +
                                                        + +

                                                        Define a customized maximum length for output BUFR messages.

                                                        +

                                                        Wraps maxout() subroutine.

                                                        +
                                                        Parameters
                                                        + + +
                                                        max0- New maximum length (in bytes) for all BUFR messages written to all output files.
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2023-04-07
                                                        + +
                                                        +
                                                        + +

                                                        ◆ mtinfo_f()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        void mtinfo_f (const char * path,
                                                        int file_unit_1,
                                                        int file_unit_2 
                                                        )
                                                        +
                                                        + +

                                                        Specify location of master BUFR tables on local file system.

                                                        +

                                                        Wraps mtinfo() subroutine.

                                                        +
                                                        Parameters
                                                        + + + + +
                                                        path- the path where the WMO tables are stored.
                                                        file_unit_1- number to use for first logical unit.
                                                        file_unit_2- number to use for second logical unit.
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        Ronald Mclaren
                                                        +
                                                        Date
                                                        2020-07-29
                                                        + +
                                                        +
                                                        + +

                                                        ◆ nemdefs_f()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        void nemdefs_f (int file_unit,
                                                        const char * mnemonic,
                                                        char * unit_c,
                                                        int unit_str_len,
                                                        char * desc_c,
                                                        int desc_str_len,
                                                        int * iret 
                                                        )
                                                        +
                                                        + +

                                                        Get the element name and units associated with a Table B mnemonic.

                                                        +

                                                        Wraps nemdefs() subroutine.

                                                        +
                                                        Parameters
                                                        + + + + + + + + +
                                                        file_unit- Fortran logical unit for the open file.
                                                        mnemonic- Mnemonic.
                                                        unit_c- Unit string.
                                                        unit_str_len- Unit string length.
                                                        desc_c- Description string.
                                                        desc_str_len- Description string length.
                                                        iret- 0 indicates success -1 indicates failure.
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        Ronald Mclaren
                                                        +
                                                        Date
                                                        2020-07-29
                                                        + +
                                                        +
                                                        + +

                                                        ◆ nemspecs_f()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        void nemspecs_f (int file_unit,
                                                        const char * mnemonic,
                                                        int mnemonic_idx,
                                                        int * scale,
                                                        int * reference,
                                                        int * bits,
                                                        int * iret 
                                                        )
                                                        +
                                                        + +

                                                        Get the scale factor, reference value and bit width associated with a specified occurrence of a Table B mnemonic.

                                                        +

                                                        Wraps nemspecs() subroutine.

                                                        +
                                                        Parameters
                                                        + + + + + + + + +
                                                        file_unit- Fortran logical unit for the open file.
                                                        mnemonic- Mnemonic.
                                                        mnemonic_idx- Ordinal indicator of specific mnemonic element (if repeated).
                                                        scale- Scale of element.
                                                        reference- Reference of element.
                                                        bits- Number of bits representing the element.
                                                        iret- 0 indicates success -1 indicates failure.
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        Ronald Mclaren
                                                        +
                                                        Date
                                                        2022-08-08
                                                        + +
                                                        +
                                                        + +

                                                        ◆ nemtab_f()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        void nemtab_f (int lun,
                                                        const char * mnemonic,
                                                        int * descriptor,
                                                        char * table_type,
                                                        int * table_idx 
                                                        )
                                                        +
                                                        + +

                                                        Get information about a descriptor.

                                                        +

                                                        Wraps nemtab() subroutine.

                                                        +
                                                        Parameters
                                                        + + + + + + +
                                                        lun- File ID.
                                                        mnemonic- Mnemonic.
                                                        descriptor- The binary descriptor for the mnemonic.
                                                        table_type- Type of internal DX BUFR table ('B', 'C', or 'D').
                                                        table_idx- The table index, or 0 if not found.
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        Ronald Mclaren
                                                        +
                                                        Date
                                                        2022-08-16
                                                        + +

                                                        Referenced by stseq().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ nemtbb_f()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        void nemtbb_f (int lun,
                                                        int table_idx,
                                                        char * unit_str,
                                                        int unit_str_len,
                                                        int * scale,
                                                        int * reference,
                                                        int * bits 
                                                        )
                                                        +
                                                        + +

                                                        Get information about a Table B descriptor.

                                                        +

                                                        Wraps nemtbb() subroutine.

                                                        +
                                                        Parameters
                                                        + + + + + + + + +
                                                        lun- File ID.
                                                        table_idx- Table B index.
                                                        unit_str- Unit string.
                                                        unit_str_len- Unit string length.
                                                        scale- Scale of element.
                                                        reference- Reference value of element.
                                                        bits- Number of bits representing theelement.
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        Ronald McLaren
                                                        +
                                                        Date
                                                        2022-08-16
                                                        + +

                                                        Referenced by restd().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ open_f()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        void open_f (int unit,
                                                        const char * filepath 
                                                        )
                                                        +
                                                        + +

                                                        Open a Fortran file from a C program.

                                                        +
                                                        Parameters
                                                        + + + +
                                                        unit- the integer to use as the Fortran logical unit.
                                                        filepath- path to the file we want to open.
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        Ronald Mclaren
                                                        +
                                                        Date
                                                        2020-07-29
                                                        + +
                                                        +
                                                        + +

                                                        ◆ openbf_f()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        void openbf_f (int bufr_unit,
                                                        const char * cio,
                                                        int table_file_id 
                                                        )
                                                        +
                                                        + +

                                                        Connect a new file to the library, or initialize the library, or change verbosity associated with already-connected file.

                                                        +

                                                        Wraps openbf() subroutine.

                                                        +
                                                        Parameters
                                                        + + + + +
                                                        bufr_unit- the Fortran logical unit number.
                                                        cio- cio string (ex "IN", "SEC3", and "OUT").
                                                        table_file_id- table_file unit number.
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        Ronald Mclaren
                                                        +
                                                        Date
                                                        2020-07-29
                                                        + +
                                                        +
                                                        + +

                                                        ◆ openmb_f()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        void openmb_f (int bufr_unit,
                                                        char * c_subset,
                                                        int iddate 
                                                        )
                                                        +
                                                        + +

                                                        Open a new message for output in a BUFR file that was previously opened for writing.

                                                        +

                                                        Wraps openmb() subroutine.

                                                        +
                                                        Parameters
                                                        + + + + +
                                                        bufr_unit- Fortran logical unit number to write to.
                                                        c_subset- Table A mnemonic of message.
                                                        iddate- Date-time to be stored within Section 1 of message.
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2023-04-07
                                                        + +
                                                        +
                                                        + +

                                                        ◆ readlc_f()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        void readlc_f (int lunit,
                                                        const char * str_id,
                                                        char * output_str,
                                                        int output_str_len 
                                                        )
                                                        +
                                                        + +

                                                        Function used to get long strings from the BUFR file.

                                                        +
                                                        Parameters
                                                        + + + + + +
                                                        lunit- Fortran logical unit.
                                                        str_id- Mnemonic for the string for the source field plus the index number (ex: 'IDMN#2')
                                                        output_str- The pre-allocated result string
                                                        output_str_len- Size of the result string buffer
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        Ronald McLaren
                                                        +
                                                        Date
                                                        2023-07-03
                                                        + +
                                                        +
                                                        + +

                                                        ◆ status_f()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        void status_f (int file_unit,
                                                        int * lun,
                                                        int * il,
                                                        int * im 
                                                        )
                                                        +
                                                        + +

                                                        Check whether a file is connected to the library.

                                                        +

                                                        Wraps status() subroutine.

                                                        +
                                                        Parameters
                                                        + + + + + +
                                                        file_unit- Fortran logical unit number of file.
                                                        lun- File ID.
                                                        il- File status.
                                                        im- Message status.
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        Ronald Mclaren
                                                        +
                                                        Date
                                                        2020-07-29
                                                        + +
                                                        +
                                                        + +

                                                        ◆ ufbint_f()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        void ufbint_f (int bufr_unit,
                                                        void ** c_data,
                                                        int dim_1,
                                                        int dim_2,
                                                        int * iret,
                                                        const char * table_b_mnemonic 
                                                        )
                                                        +
                                                        + +

                                                        Read/write one or more data values from/to a data subset.

                                                        +

                                                        Wraps ufbint() subroutine.

                                                        +
                                                        Parameters
                                                        + + + + + + + +
                                                        bufr_unit- the Fortran logical unit number to read from.
                                                        c_data- pointer to a pointer to a pre-allocated buffer.
                                                        dim_1- dimensionality of data to read or write.
                                                        dim_2- dimensionality of data to read or write.
                                                        iret- return value, length of data read.
                                                        table_b_mnemonic- string of mnemonics.
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        Ronald Mclaren
                                                        +
                                                        Date
                                                        2020-07-29
                                                        + +
                                                        +
                                                        + +

                                                        ◆ ufbrep_f()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        void ufbrep_f (int bufr_unit,
                                                        void ** c_data,
                                                        int dim_1,
                                                        int dim_2,
                                                        int * iret,
                                                        const char * table_b_mnemonic 
                                                        )
                                                        +
                                                        + +

                                                        Read/write one or more data values from/to a data subset.

                                                        +

                                                        Wraps ufbrep() subroutine.

                                                        +
                                                        Parameters
                                                        + + + + + + + +
                                                        bufr_unit- the Fortran logical unit number to read from.
                                                        c_data- pointer to a pointer to a pre-allocated buffer.
                                                        dim_1- dimensionality of data to read or write.
                                                        dim_2- dimensionality of data to read or write.
                                                        iret- length of data read.
                                                        table_b_mnemonic- string of mnemonics.
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        Ronald Mclaren
                                                        +
                                                        Date
                                                        2020-07-29
                                                        + +
                                                        +
                                                        + +

                                                        ◆ ufbseq_f()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        void ufbseq_f (int bufr_unit,
                                                        void ** c_data,
                                                        int dim_1,
                                                        int dim_2,
                                                        int * iret,
                                                        const char * table_d_mnemonic 
                                                        )
                                                        +
                                                        + +

                                                        Read/write an entire sequence of data values from/to a data subset.

                                                        +

                                                        Wraps ufbseq() subroutine.

                                                        +
                                                        Parameters
                                                        + + + + + + + +
                                                        bufr_unit- the Fortran logical unit number to read from.
                                                        c_data- pointer to a pointer to a pre-allocated buffer.
                                                        dim_1- dimensionality of data to read or write.
                                                        dim_2- dimensionality of data to read or write.
                                                        iret- return value, length of data read.
                                                        table_d_mnemonic- Table A or Table D mnemonic.
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2023-04-07
                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/bufr__interface_8h.js b/previous_versions/v12.1.0/bufr__interface_8h.js new file mode 100644 index 000000000..98cb7fee3 --- /dev/null +++ b/previous_versions/v12.1.0/bufr__interface_8h.js @@ -0,0 +1,47 @@ +var bufr__interface_8h = +[ + [ "VERS_STR_LEN", "bufr__interface_8h.html#a016503c090a3f1ecdac526a2e8f696b0", null ], + [ "bvers_f", "bufr__interface_8h.html#ada9f732c49c87976c31f215c9c040d2b", null ], + [ "ccbfl", "bufr__interface_8h.html#ab66668ab9633ce3b475416f6a9899802", null ], + [ "closbf_f", "bufr__interface_8h.html#a019047beca19815d95ea0a78993b7e2a", null ], + [ "close_f", "bufr__interface_8h.html#ab0f41346d672e0fb0311bd658b867249", null ], + [ "cmpmsg_f", "bufr__interface_8h.html#afcec73b988e42cfd8d10f734f6606128", null ], + [ "cobfl", "bufr__interface_8h.html#a1a79689096002f6f3c125abc59c2143d", null ], + [ "crbmg", "bufr__interface_8h.html#a8e937daaf4fe2e1c74c3f8754bcce048", null ], + [ "cwbmg", "bufr__interface_8h.html#a3ccf1d9c69d9b23a3906d3f7b5ab743d", null ], + [ "delete_table_data_f", "bufr__interface_8h.html#ad6cb83d29d8f619e380f8a098b2c6426", null ], + [ "exitbufr_f", "bufr__interface_8h.html#ac29807d9e7404a4602d03a04a9d4f2a6", null ], + [ "get_inode_f", "bufr__interface_8h.html#a199803bddb330f484dd49b72c75dc32d", null ], + [ "get_inv_f", "bufr__interface_8h.html#a8346d95d25b2f8c7437ee96419020992", null ], + [ "get_irf_f", "bufr__interface_8h.html#aec42e6ee4877ea5fc031677127869ec5", null ], + [ "get_isc_f", "bufr__interface_8h.html#aa13a0b52198dfc0dad84648ef917a68e", null ], + [ "get_itp_f", "bufr__interface_8h.html#aef4319ad66d2549ac7b1dd8e1bfad1e3", null ], + [ "get_jmpb_f", "bufr__interface_8h.html#a0770faf842091c86b98ebb982d307e3e", null ], + [ "get_link_f", "bufr__interface_8h.html#a8ccb25b1780ea712c9842f31eeb8ac88", null ], + [ "get_nval_f", "bufr__interface_8h.html#a16e731ede9b1aa2a2bf7c1c3c86825e2", null ], + [ "get_tag_f", "bufr__interface_8h.html#a82130f6d92d0df75a5cbc7f834a11cca", null ], + [ "get_typ_f", "bufr__interface_8h.html#a8bb1e631318d1ae291e22ba3df7989b3", null ], + [ "get_val_f", "bufr__interface_8h.html#a420c47e8f063dcea1d5dd909567d65e1", null ], + [ "ibfms_f", "bufr__interface_8h.html#a94577bfb670f48d514886ffa9476277c", null ], + [ "igetmxby_f", "bufr__interface_8h.html#a6d0a0985ac16769f70756c7a741184d4", null ], + [ "igetprm_f", "bufr__interface_8h.html#a0b06d7dc9ae1ba6147ad0f1ea3d359bb", null ], + [ "ireadmg_f", "bufr__interface_8h.html#a9217e24780915325fb8fdea549015c96", null ], + [ "ireadns_f", "bufr__interface_8h.html#ac23fc2c4b19fcc7f617e17d93c59eb7f", null ], + [ "ireadsb_f", "bufr__interface_8h.html#a707ed94f1807e145055b97b19f5b3fcb", null ], + [ "isetprm_f", "bufr__interface_8h.html#a0795b7713ffc4ca11e692932d807038c", null ], + [ "iupbs01_f", "bufr__interface_8h.html#a45c55e3a4c3b8179f7e3a89714a05d7f", null ], + [ "maxout_f", "bufr__interface_8h.html#a6e947358c5c4833a4c2b30a68d0fdfa3", null ], + [ "mtinfo_f", "bufr__interface_8h.html#aa865d9e85dab5e85a1816ec02f94cb6e", null ], + [ "nemdefs_f", "bufr__interface_8h.html#aa913369b92645e3d69658c0ef902f29c", null ], + [ "nemspecs_f", "bufr__interface_8h.html#a85a42b5881da22246e5bb302c883777f", null ], + [ "nemtab_f", "bufr__interface_8h.html#ad75bcdd935567fd79e3385c94b78284c", null ], + [ "nemtbb_f", "bufr__interface_8h.html#ac9a3eafcb7e3802e5c8a39de95b1726b", null ], + [ "open_f", "bufr__interface_8h.html#accefcb852f45e506cac79e92a52b93a0", null ], + [ "openbf_f", "bufr__interface_8h.html#a750d83d2c9745f46cccb75dc9fec3788", null ], + [ "openmb_f", "bufr__interface_8h.html#ab062d9a7aad917f9937c577bab7f86fe", null ], + [ "readlc_f", "bufr__interface_8h.html#ab9a086f1cd4cb622107c96608279eb97", null ], + [ "status_f", "bufr__interface_8h.html#a8864263871383e72d19ac4a57031be7d", null ], + [ "ufbint_f", "bufr__interface_8h.html#ab6cd4669f077cf7c939d9241614bc075", null ], + [ "ufbrep_f", "bufr__interface_8h.html#a14f7b7994cfecdfa6481cbfd39aed3ce", null ], + [ "ufbseq_f", "bufr__interface_8h.html#a6415176e3b48b1de4e98f12ea1baec16", null ] +]; \ No newline at end of file diff --git a/previous_versions/v12.1.0/bufr__interface_8h_source.html b/previous_versions/v12.1.0/bufr__interface_8h_source.html new file mode 100644 index 000000000..cbdd5ca82 --- /dev/null +++ b/previous_versions/v12.1.0/bufr__interface_8h_source.html @@ -0,0 +1,263 @@ + + + + + + + +NCEPLIBS-bufr: bufr_interface.h Source File + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        +
                                                        bufr_interface.h
                                                        +
                                                        +
                                                        +Go to the documentation of this file.
                                                        1 
                                                        +
                                                        13 #pragma once
                                                        +
                                                        14 
                                                        +
                                                        15 void cobfl(char *bfl, char io);
                                                        +
                                                        16 void crbmg(char *bmg, int mxmb, int *nmb, int *iret);
                                                        +
                                                        17 void cwbmg(char *bmg, int nmb, int *iret);
                                                        +
                                                        18 void ccbfl(void);
                                                        +
                                                        19 
                                                        +
                                                        21 #define VERS_STR_LEN 8
                                                        +
                                                        22 
                                                        +
                                                        23 #ifdef __cplusplus
                                                        +
                                                        24 extern "C" {
                                                        +
                                                        25 #endif
                                                        +
                                                        26 
                                                        +
                                                        35  void open_f(int unit, const char* filepath);
                                                        +
                                                        36 
                                                        +
                                                        44  void close_f(int unit);
                                                        +
                                                        45 
                                                        +
                                                        58  void openbf_f(int bufr_unit, const char* cio, int table_file_id);
                                                        +
                                                        59 
                                                        +
                                                        69  void closbf_f(int bufr_unit);
                                                        +
                                                        70 
                                                        +
                                                        78  void exitbufr_f();
                                                        +
                                                        79 
                                                        +
                                                        96  int ireadmg_f(int bufr_unit, char* subset, int* iddate, int subset_len);
                                                        +
                                                        97 
                                                        +
                                                        111  int ireadsb_f(int bufr_unit);
                                                        +
                                                        112 
                                                        +
                                                        127  void ufbint_f(int bufr_unit, void** c_data, int dim_1, int dim_2,
                                                        +
                                                        128  int* iret, const char* table_b_mnemonic);
                                                        +
                                                        129 
                                                        +
                                                        144  void ufbrep_f(int bufr_unit, void** c_data, int dim_1, int dim_2,
                                                        +
                                                        145  int* iret, const char* table_b_mnemonic);
                                                        +
                                                        146 
                                                        +
                                                        158  void mtinfo_f(const char* path, int file_unit_1, int file_unit_2);
                                                        +
                                                        159 
                                                        +
                                                        172  void status_f(int file_unit, int* lun, int* il, int* im);
                                                        +
                                                        173 
                                                        +
                                                        189  void nemdefs_f(int file_unit,
                                                        +
                                                        190  const char* mnemonic,
                                                        +
                                                        191  char* unit_c,
                                                        +
                                                        192  int unit_str_len,
                                                        +
                                                        193  char* desc_c,
                                                        +
                                                        194  int desc_str_len,
                                                        +
                                                        195  int* iret);
                                                        +
                                                        196 
                                                        +
                                                        213  void nemspecs_f(int file_unit,
                                                        +
                                                        214  const char* mnemonic,
                                                        +
                                                        215  int mnemonic_idx,
                                                        +
                                                        216  int* scale,
                                                        +
                                                        217  int* reference,
                                                        +
                                                        218  int* bits,
                                                        +
                                                        219  int* iret);
                                                        +
                                                        220 
                                                        +
                                                        234  void nemtab_f(int lun,
                                                        +
                                                        235  const char* mnemonic,
                                                        +
                                                        236  int* descriptor,
                                                        +
                                                        237  char* table_type,
                                                        +
                                                        238  int* table_idx);
                                                        +
                                                        239 
                                                        +
                                                        255  void nemtbb_f(int lun,
                                                        +
                                                        256  int table_idx,
                                                        +
                                                        257  char* unit_str,
                                                        +
                                                        258  int unit_str_len,
                                                        +
                                                        259  int* scale,
                                                        +
                                                        260  int* reference,
                                                        +
                                                        261  int* bits);
                                                        +
                                                        262 
                                                        +
                                                        271  void get_isc_f(int** isc_ptr, int* isc_size);
                                                        +
                                                        272 
                                                        +
                                                        281  void get_link_f(int** link_ptr, int* link_size);
                                                        +
                                                        282 
                                                        +
                                                        291  void get_itp_f(int** itp_ptr, int* itp_size);
                                                        +
                                                        292 
                                                        +
                                                        302  void get_typ_f(char** typ_ptr, int* typ_len, int* mem_size);
                                                        +
                                                        303 
                                                        +
                                                        313  void get_tag_f(char** tag_ptr, int* tag_len, int* mem_size);
                                                        +
                                                        314 
                                                        +
                                                        323  void get_jmpb_f(int** jmpb_ptr, int* jmpb_size);
                                                        +
                                                        324 
                                                        +
                                                        325 
                                                        +
                                                        334  void get_irf_f(int** irf_ptr, int* irf_size);
                                                        +
                                                        335 
                                                        +
                                                        344  void get_inode_f(int lun, int* start_node);
                                                        +
                                                        345 
                                                        +
                                                        354  void get_nval_f(int lun, int* num_nodes);
                                                        +
                                                        355 
                                                        +
                                                        365  void get_val_f(int lun, double** val_ptr, int* val_size);
                                                        +
                                                        366 
                                                        +
                                                        376  void get_inv_f(int lun, int** inv_ptr, int* inv_size);
                                                        +
                                                        377 
                                                        +
                                                        390  void readlc_f(int lunit, const char* str_id, char* output_str, int output_str_len);
                                                        +
                                                        391 
                                                        + +
                                                        398 
                                                        +
                                                        411  int iupbs01_f(int *bufr, char* mnemonic);
                                                        +
                                                        412 
                                                        +
                                                        422  int igetprm_f(char *cprmnm);
                                                        +
                                                        423 
                                                        +
                                                        434  int isetprm_f(char *cprmnm, int ipval);
                                                        +
                                                        435 
                                                        +
                                                        446  void maxout_f(int max0);
                                                        +
                                                        447 
                                                        +
                                                        457  int igetmxby_f(void);
                                                        +
                                                        458 
                                                        +
                                                        473  void ufbseq_f(int bufr_unit, void** c_data, int dim_1, int dim_2,
                                                        +
                                                        474  int* iret, const char* table_d_mnemonic);
                                                        +
                                                        475 
                                                        +
                                                        492  int ireadns_f(int bufr_unit, char* subset, int* iddate, int subset_len);
                                                        +
                                                        493 
                                                        +
                                                        505  int ibfms_f(double r8val);
                                                        +
                                                        506 
                                                        +
                                                        519  void openmb_f(int bufr_unit, char *c_subset, int iddate);
                                                        +
                                                        520 
                                                        +
                                                        531  void bvers_f(char *cverstr, int cverstr_len);
                                                        +
                                                        532 
                                                        +
                                                        543  void cmpmsg_f(char *cf);
                                                        +
                                                        544 
                                                        +
                                                        545 #ifdef __cplusplus
                                                        +
                                                        546 }
                                                        +
                                                        547 #endif
                                                        +
                                                        void closbf_f(int bufr_unit)
                                                        Close a previously opened file and disconnect it from the library.
                                                        +
                                                        void get_jmpb_f(int **jmpb_ptr, int *jmpb_size)
                                                        Get copy of the moda_tables JMPB array.
                                                        +
                                                        int isetprm_f(char *cprmnm, int ipval)
                                                        Define a customized parameter value for dynamic allocation.
                                                        +
                                                        int igetprm_f(char *cprmnm)
                                                        Get the current value of a parameter.
                                                        +
                                                        void ufbrep_f(int bufr_unit, void **c_data, int dim_1, int dim_2, int *iret, const char *table_b_mnemonic)
                                                        Read/write one or more data values from/to a data subset.
                                                        +
                                                        void get_nval_f(int lun, int *num_nodes)
                                                        Get the number of values in the current subset.
                                                        +
                                                        void get_inode_f(int lun, int *start_node)
                                                        Get the bufr node idx for the start node of the subset.
                                                        +
                                                        void cobfl(char *bfl, char io)
                                                        Open a new file for reading or writing BUFR messages via a C language interface.
                                                        Definition: crwbmg.c:120
                                                        +
                                                        void cwbmg(char *bmg, int nmb, int *iret)
                                                        Write a BUFR message to the file that was opened via the most recent call to function cobfl() with io...
                                                        Definition: crwbmg.c:263
                                                        +
                                                        void get_val_f(int lun, double **val_ptr, int *val_size)
                                                        Get pointer to the moda_usrint VAL array.
                                                        +
                                                        int iupbs01_f(int *bufr, char *mnemonic)
                                                        Read a data value from Section 0 or Section 1 of a BUFR message.
                                                        +
                                                        void ufbseq_f(int bufr_unit, void **c_data, int dim_1, int dim_2, int *iret, const char *table_d_mnemonic)
                                                        Read/write an entire sequence of data values from/to a data subset.
                                                        +
                                                        int igetmxby_f(void)
                                                        Get the maximum length of a BUFR message that can be written to an output file.
                                                        +
                                                        void maxout_f(int max0)
                                                        Define a customized maximum length for output BUFR messages.
                                                        +
                                                        int ireadsb_f(int bufr_unit)
                                                        Read the next data subset from a BUFR message.
                                                        +
                                                        void openbf_f(int bufr_unit, const char *cio, int table_file_id)
                                                        Connect a new file to the library, or initialize the library, or change verbosity associated with alr...
                                                        +
                                                        void get_tag_f(char **tag_ptr, int *tag_len, int *mem_size)
                                                        Get copy of the moda_tables TAG array.
                                                        +
                                                        void get_inv_f(int lun, int **inv_ptr, int *inv_size)
                                                        Get pointer to the moda_usrint INV array.
                                                        +
                                                        void nemspecs_f(int file_unit, const char *mnemonic, int mnemonic_idx, int *scale, int *reference, int *bits, int *iret)
                                                        Get the scale factor, reference value and bit width associated with a specified occurrence of a Table...
                                                        +
                                                        void status_f(int file_unit, int *lun, int *il, int *im)
                                                        Check whether a file is connected to the library.
                                                        +
                                                        void get_typ_f(char **typ_ptr, int *typ_len, int *mem_size)
                                                        Get copy of the moda_tables TYP array.
                                                        +
                                                        void get_link_f(int **link_ptr, int *link_size)
                                                        Get copy of the moda_tables LINK array.
                                                        +
                                                        void crbmg(char *bmg, int mxmb, int *nmb, int *iret)
                                                        Read the next BUFR message from the file that was opened via the most recent call to function cobfl()...
                                                        Definition: crwbmg.c:195
                                                        +
                                                        int ireadmg_f(int bufr_unit, char *subset, int *iddate, int subset_len)
                                                        Read the next message from a BUFR file.
                                                        +
                                                        int ibfms_f(double r8val)
                                                        Test whether a data value is "missing".
                                                        +
                                                        void get_isc_f(int **isc_ptr, int *isc_size)
                                                        Get copy of the moda_tables ISC array.
                                                        +
                                                        void mtinfo_f(const char *path, int file_unit_1, int file_unit_2)
                                                        Specify location of master BUFR tables on local file system.
                                                        +
                                                        void nemdefs_f(int file_unit, const char *mnemonic, char *unit_c, int unit_str_len, char *desc_c, int desc_str_len, int *iret)
                                                        Get the element name and units associated with a Table B mnemonic.
                                                        +
                                                        void openmb_f(int bufr_unit, char *c_subset, int iddate)
                                                        Open a new message for output in a BUFR file that was previously opened for writing.
                                                        +
                                                        void close_f(int unit)
                                                        Close a Fortran file from a C program.
                                                        +
                                                        void ccbfl(void)
                                                        Close all files that were opened via previous calls to function cobfl().
                                                        Definition: crwbmg.c:290
                                                        +
                                                        void ufbint_f(int bufr_unit, void **c_data, int dim_1, int dim_2, int *iret, const char *table_b_mnemonic)
                                                        Read/write one or more data values from/to a data subset.
                                                        +
                                                        void readlc_f(int lunit, const char *str_id, char *output_str, int output_str_len)
                                                        Function used to get long strings from the BUFR file.
                                                        +
                                                        int ireadns_f(int bufr_unit, char *subset, int *iddate, int subset_len)
                                                        Read the next data subset from a BUFR file.
                                                        +
                                                        void exitbufr_f()
                                                        Reset the library.
                                                        +
                                                        void nemtbb_f(int lun, int table_idx, char *unit_str, int unit_str_len, int *scale, int *reference, int *bits)
                                                        Get information about a Table B descriptor.
                                                        +
                                                        void open_f(int unit, const char *filepath)
                                                        Open a Fortran file from a C program.
                                                        +
                                                        void delete_table_data_f()
                                                        Deletes the copies of the moda_tables arrays.
                                                        +
                                                        void nemtab_f(int lun, const char *mnemonic, int *descriptor, char *table_type, int *table_idx)
                                                        Get information about a descriptor.
                                                        +
                                                        void bvers_f(char *cverstr, int cverstr_len)
                                                        Get the version number of the NCEPLIBS-bufr software.
                                                        +
                                                        void get_irf_f(int **irf_ptr, int *irf_size)
                                                        Get copy of the moda_tables IRF array.
                                                        +
                                                        void get_itp_f(int **itp_ptr, int *itp_size)
                                                        Get copy of the moda_tables ITP array.
                                                        +
                                                        void cmpmsg_f(char *cf)
                                                        Specify the use of compression when writing BUFR messages.
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/bufrlib_8F90.html b/previous_versions/v12.1.0/bufrlib_8F90.html new file mode 100644 index 000000000..7298b1606 --- /dev/null +++ b/previous_versions/v12.1.0/bufrlib_8F90.html @@ -0,0 +1,159 @@ + + + + + + + +NCEPLIBS-bufr: bufrlib.F90 File Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        bufrlib.F90 File Reference
                                                        +
                                                        +
                                                        + +

                                                        Enable a number of C NCEPLIBS-bufr functions to be called from within the Fortran part of the library. +More...

                                                        + +

                                                        Go to the source code of this file.

                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                                                        +Data Types

                                                        interface  bufrlib::arallocc_c
                                                         
                                                        interface  bufrlib::ardllocc_c
                                                         
                                                        interface  bufrlib::backbufr_c
                                                         
                                                        interface  bufrlib::cewind_c
                                                         
                                                        interface  bufrlib::closfb_c
                                                         
                                                        interface  bufrlib::cpmstabs_c
                                                         
                                                        interface  bufrlib::crdbufr_c
                                                         
                                                        interface  bufrlib::cwrbufr_c
                                                         
                                                        interface  bufrlib::icvidx_c
                                                         
                                                        interface  bufrlib::inittbf_c
                                                         
                                                        interface  bufrlib::openab_c
                                                         
                                                        interface  bufrlib::openrb_c
                                                         
                                                        interface  bufrlib::openwb_c
                                                         
                                                        interface  bufrlib::restd_c
                                                         
                                                        interface  bufrlib::sorttbf_c
                                                         
                                                        interface  bufrlib::srchtbf_c
                                                         
                                                        interface  bufrlib::strtbfe_c
                                                         
                                                        interface  bufrlib::stseq_c
                                                         
                                                        + + + + +

                                                        +Modules

                                                        module  bufrlib
                                                         Wrap C NCEPLIBS-bufr functions so they can be called from within the Fortran part of the library.
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Enable a number of C NCEPLIBS-bufr functions to be called from within the Fortran part of the library.

                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2023-03-22
                                                        + +

                                                        Definition in file bufrlib.F90.

                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/bufrlib_8F90_source.html b/previous_versions/v12.1.0/bufrlib_8F90_source.html new file mode 100644 index 000000000..bf1f122a3 --- /dev/null +++ b/previous_versions/v12.1.0/bufrlib_8F90_source.html @@ -0,0 +1,233 @@ + + + + + + + +NCEPLIBS-bufr: bufrlib.F90 Source File + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        +
                                                        bufrlib.F90
                                                        +
                                                        +
                                                        +Go to the documentation of this file.
                                                        1 
                                                        +
                                                        6 
                                                        +
                                                        10 
                                                        +
                                                        11 module bufrlib
                                                        +
                                                        12  use bufr_interface
                                                        +
                                                        13 
                                                        +
                                                        14  interface
                                                        +
                                                        15 
                                                        +
                                                        25  subroutine openrb_c( nfile, ufile ) bind(C, name='openrb')
                                                        +
                                                        26  use iso_c_binding
                                                        +
                                                        27  character(kind=c_char), intent(in) :: ufile(*)
                                                        +
                                                        28  integer(c_int), intent(in), value :: nfile
                                                        +
                                                        29  end subroutine openrb_c
                                                        +
                                                        30 
                                                        +
                                                        40  subroutine openwb_c( nfile, ufile ) bind(C, name='openwb')
                                                        +
                                                        41  use iso_c_binding
                                                        +
                                                        42  character(kind=c_char), intent(in) :: ufile(*)
                                                        +
                                                        43  integer(c_int), intent(in), value :: nfile
                                                        +
                                                        44  end subroutine openwb_c
                                                        +
                                                        45 
                                                        +
                                                        55  subroutine openab_c( nfile, ufile ) bind(C, name='openab')
                                                        +
                                                        56  use iso_c_binding
                                                        +
                                                        57  character(kind=c_char), intent(in) :: ufile(*)
                                                        +
                                                        58  integer(c_int), intent(in), value :: nfile
                                                        +
                                                        59  end subroutine openab_c
                                                        +
                                                        60 
                                                        +
                                                        69  subroutine backbufr_c( nfile ) bind(C, name='backbufr')
                                                        +
                                                        70  use iso_c_binding
                                                        +
                                                        71  integer(c_int), intent(in), value :: nfile
                                                        +
                                                        72  end subroutine backbufr_c
                                                        +
                                                        73 
                                                        +
                                                        82  subroutine cewind_c( nfile ) bind(C, name='cewind')
                                                        +
                                                        83  use iso_c_binding
                                                        +
                                                        84  integer(c_int), intent(in), value :: nfile
                                                        +
                                                        85  end subroutine cewind_c
                                                        +
                                                        86 
                                                        +
                                                        95  subroutine closfb_c( nfile ) bind(C, name='closfb')
                                                        +
                                                        96  use iso_c_binding
                                                        +
                                                        97  integer(c_int), intent(in), value :: nfile
                                                        +
                                                        98  end subroutine closfb_c
                                                        +
                                                        99 
                                                        +
                                                        117  integer(c_int) function crdbufr_c( nfile, bufr, mxwrd ) bind(C, name='crdbufr')
                                                        +
                                                        118  use iso_c_binding
                                                        +
                                                        119  integer(c_int), intent(out) :: bufr(*)
                                                        +
                                                        120  integer(c_int), intent(in), value :: nfile, mxwrd
                                                        +
                                                        121  end function crdbufr_c
                                                        +
                                                        122 
                                                        +
                                                        133  subroutine cwrbufr_c( nfile, bufr, nwrd ) bind(C, name='cwrbufr')
                                                        +
                                                        134  use iso_c_binding
                                                        +
                                                        135  integer(c_int), intent(in) :: bufr(*)
                                                        +
                                                        136  integer(c_int), intent(in), value :: nfile, nwrd
                                                        +
                                                        137  end subroutine cwrbufr_c
                                                        +
                                                        138 
                                                        +
                                                        153  integer(c_int) function icvidx_c( ii, jj, numjj ) bind(C, name='icvidx')
                                                        +
                                                        154  use iso_c_binding
                                                        +
                                                        155  integer(c_int), intent(in), value :: ii, jj, numjj
                                                        +
                                                        156  end function icvidx_c
                                                        +
                                                        157 
                                                        +
                                                        164  subroutine arallocc_c() bind(C, name='arallocc')
                                                        +
                                                        165  use iso_c_binding
                                                        +
                                                        166  end subroutine arallocc_c
                                                        +
                                                        167 
                                                        +
                                                        174  subroutine ardllocc_c() bind(C, name='ardllocc')
                                                        +
                                                        175  use iso_c_binding
                                                        +
                                                        176  end subroutine ardllocc_c
                                                        +
                                                        177 
                                                        +
                                                        201  subroutine cpmstabs_c( nmtb, ibfxyn, cbscl, cbsref, cbbw, cbunit, cbmnem, cbelem, &
                                                        +
                                                        202  nmtd, idfxyn, cdseq, cdmnem, ndelem, idefxy, maxcd ) bind(C, name='cpmstabs')
                                                        +
                                                        203  use iso_c_binding
                                                        +
                                                        204  integer(c_int), intent(in) :: ibfxyn(*), idfxyn(*), ndelem(*), idefxy(*)
                                                        +
                                                        205  integer(c_int), intent(in), value :: nmtb, nmtd, maxcd
                                                        +
                                                        206  character(kind=c_char), intent(in) :: cbscl(4,*), cbsref(12,*), cbbw(4,*), cbunit(24,*), &
                                                        +
                                                        207  cbmnem(8,*), cbelem(120,*), cdseq(120,*), cdmnem(8,*)
                                                        +
                                                        208  end subroutine cpmstabs_c
                                                        +
                                                        209 
                                                        +
                                                        216  subroutine inittbf_c() bind(C, name='inittbf')
                                                        +
                                                        217  use iso_c_binding
                                                        +
                                                        218  end subroutine inittbf_c
                                                        +
                                                        219 
                                                        +
                                                        236  subroutine strtbfe_c(ifxyn,ival,meaning,lmeaning,idfxy,idval) bind(C, name='strtbfe')
                                                        +
                                                        237  use iso_c_binding
                                                        +
                                                        238  integer(c_int), intent(in), value :: ifxyn, ival, lmeaning, idfxy, idval
                                                        +
                                                        239  character(kind=c_char), intent(in) :: meaning(*)
                                                        +
                                                        240  end subroutine strtbfe_c
                                                        +
                                                        241 
                                                        +
                                                        248  subroutine sorttbf_c() bind(C, name='sorttbf')
                                                        +
                                                        249  use iso_c_binding
                                                        +
                                                        250  end subroutine sorttbf_c
                                                        +
                                                        251 
                                                        +
                                                        287  subroutine srchtbf_c(ifxyi,ivali,ifxyd,mxfxyd,ivald,meaning,mxmng,lnmng,iret) bind(C, name='srchtbf')
                                                        +
                                                        288  use iso_c_binding
                                                        +
                                                        289  integer(c_int), intent(in), value :: ifxyi, ivali, mxfxyd, ivald, mxmng
                                                        +
                                                        290  integer(c_int), intent(inout) :: ifxyd
                                                        +
                                                        291  integer(c_int), intent(out) :: lnmng, iret
                                                        +
                                                        292  character(kind=c_char), intent(out) :: meaning(*)
                                                        +
                                                        293  end subroutine srchtbf_c
                                                        +
                                                        294 
                                                        +
                                                        306  subroutine restd_c(lun, tddesc, nctddesc, ctddesc) bind(C, name='restd')
                                                        +
                                                        307  use iso_c_binding
                                                        +
                                                        308  integer(c_int), intent(in), value :: lun, tddesc
                                                        +
                                                        309  integer(c_int), intent(out) :: nctddesc, ctddesc(*)
                                                        +
                                                        310  end subroutine restd_c
                                                        +
                                                        311 
                                                        +
                                                        326  subroutine stseq_c(lun,irepct,idn,nemo,cseq,cdesc,ncdesc) bind(C, name='stseq')
                                                        +
                                                        327  use iso_c_binding
                                                        +
                                                        328  integer(c_int), intent(in), value :: lun, idn, ncdesc
                                                        +
                                                        329  character(kind=c_char), intent(in) :: nemo(*), cseq(*)
                                                        +
                                                        330  integer(c_int), intent(inout) :: irepct
                                                        +
                                                        331  integer(c_int), intent(out) :: cdesc(*)
                                                        +
                                                        332  end subroutine stseq_c
                                                        +
                                                        333 
                                                        +
                                                        334  end interface
                                                        +
                                                        335 
                                                        +
                                                        336 end module bufrlib
                                                        + + + + + + + + + + + + + + + + + + +
                                                        Wrap C NCEPLIBS-bufr functions so they can be called from within Fortran application programs.
                                                        +
                                                        Wrap C NCEPLIBS-bufr functions so they can be called from within the Fortran part of the library.
                                                        Definition: bufrlib.F90:11
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/bufrlib_8h.html b/previous_versions/v12.1.0/bufrlib_8h.html new file mode 100644 index 000000000..691d57180 --- /dev/null +++ b/previous_versions/v12.1.0/bufrlib_8h.html @@ -0,0 +1,1511 @@ + + + + + + + +NCEPLIBS-bufr: bufrlib.h File Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        bufrlib.h File Reference
                                                        +
                                                        +
                                                        + +

                                                        Enable a number of NCEPLIBS-bufr subprograms to be called from within the C part of the library. +More...

                                                        +
                                                        #include <stdio.h>
                                                        +#include <stdlib.h>
                                                        +#include <string.h>
                                                        +#include <ctype.h>
                                                        +#include "bufr_interface.h"
                                                        +
                                                        +

                                                        Go to the source code of this file.

                                                        + + + + + + + + + + + + + + + + + + + + +

                                                        +Macros

                                                        #define FXY_STR_LEN   6
                                                         Size of a character string needed to store an FXY value. More...
                                                         
                                                        #define MAX_FXY_TABLEB   "063255"
                                                         Character string containing maximum FXY value for a Table B descriptor. More...
                                                         
                                                        #define MIN_FXY_REPL   "101000"
                                                         Character string containing minimum FXY value for a replication descriptor. More...
                                                         
                                                        #define MIN_FXY_TABLED   "300000"
                                                         Character string containing minimum FXY value for a Table D descriptor. More...
                                                         
                                                        #define NEMO_STR_LEN   8
                                                         Size of a character string needed to store a mnemonic. More...
                                                         
                                                        #define UNIT_STR_LEN   24
                                                         Size of a character string needed to store the units of a Table B descriptor. More...
                                                         
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                                                        +Functions

                                                        void arallocc (void)
                                                         Dynamically allocate C language arrays. More...
                                                         
                                                        void ardllocc (void)
                                                         Free all memory that was dynamically allocated during a previous call to subroutine arallocc(). More...
                                                         
                                                        void backbufr (int nfile)
                                                         Backspace a BUFR file by one BUFR message. More...
                                                         
                                                        void bort_f (char *errstr)
                                                         Log one error message and abort application program. More...
                                                         
                                                        void cadn30_f (int idn, char *adn, int adn_str_len)
                                                         Convert an FXY value from its WMO bit-wise representation to its six-character representation. More...
                                                         
                                                        void cewind (int nfile)
                                                         Rewind a BUFR file back to its beginning. More...
                                                         
                                                        void closfb (int nfile)
                                                         Close a previously opened BUFR file. More...
                                                         
                                                        int crdbufr (int nfile, int *bufr, int mxwrd)
                                                         Read the next message from a BUFR file that was previously opened for reading. More...
                                                         
                                                        void cwrbufr (int nfile, int *bufr, int nwrd)
                                                         Write a BUFR message into a file that was previously opened for writing. More...
                                                         
                                                        void elemdx_f (char *card, int lun)
                                                         Decode the scale factor, reference value, bit width, and units from a Table B mnemonic definition. More...
                                                         
                                                        int icvidx (int ii, int jj, int numjj)
                                                         Computes a unique 1-dimensional array index from 2-dimensional indices. More...
                                                         
                                                        int ifxy_f (char *cfxy)
                                                         Convert an FXY value from its 6 character representation to its WMO bit-wise representation. More...
                                                         
                                                        int igetntbi_f (int lun, char *table_type)
                                                         Get the next index for storing an entry within an internal DX BUFR table. More...
                                                         
                                                        int igettdi_f (int iflag)
                                                         Get the next usable Table D index for the current master table, or reset the index. More...
                                                         
                                                        int imrkopr_f (char *nemo)
                                                         Check whether a specified mnemonic is a Table C marker operator. More...
                                                         
                                                        int istdesc_f (int idn)
                                                         Check whether a descriptor is WMO-standard. More...
                                                         
                                                        void numtbd_f (int lun, int idn, char *nemo, int nemo_str_len, char *tab, int *iret)
                                                         Search for a Table B or Table D descriptor within the internal DX BUFR tables. More...
                                                         
                                                        void openab (int nfile, char *ufile)
                                                         Open a new file for appending BUFR messages. More...
                                                         
                                                        void openrb (int nfile, char *ufile)
                                                         Open a new file for reading BUFR messages. More...
                                                         
                                                        void openwb (int nfile, char *ufile)
                                                         Open a new file for writing BUFR messages. More...
                                                         
                                                        void pktdd_f (int id, int lun, int idn, int *iret)
                                                         Store information about a child mnemonic within the internal arrays. More...
                                                         
                                                        void restd (int lunb, int tddesc, int *nctddesc, int *ctddesc)
                                                         Standardize a local Table D descriptor. More...
                                                         
                                                        void stntbi_f (int n, int lun, char *numb, char *nemo, char *celsq)
                                                         Store a new entry within the internal BUFR Table B or D. More...
                                                         
                                                        void strnum_f (char *str, int *num, int *iret)
                                                         Decode an integer from a character string. More...
                                                         
                                                        void stseq (int lun, int *irepct, int idn, char *nemo, char *cseq, int *cdesc, int ncdesc)
                                                         Store information about a standard Table D descriptor within internal DX BUFR tables. More...
                                                         
                                                        void uptdd_f (int id, int lun, int ient, int *iret)
                                                         Get the WMO bit-wise representation of the FXY value corresponding to a child mnemonic of a Table D sequence. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Enable a number of NCEPLIBS-bufr subprograms to be called from within the C part of the library.

                                                        +

                                                        This header file defines signatures which wrap a number of native Fortran subprograms in the library. It also contains prototypes for native C functions in the library as well as macros used throughout the C part of the library.

                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2003-11-04
                                                        + +

                                                        Definition in file bufrlib.h.

                                                        +

                                                        Macro Definition Documentation

                                                        + +

                                                        ◆ FXY_STR_LEN

                                                        + +
                                                        +
                                                        + + + + +
                                                        #define FXY_STR_LEN   6
                                                        +
                                                        + +

                                                        Size of a character string needed to store an FXY value.

                                                        + +

                                                        Definition at line 34 of file bufrlib.h.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ MAX_FXY_TABLEB

                                                        + +
                                                        +
                                                        + + + + +
                                                        #define MAX_FXY_TABLEB   "063255"
                                                        +
                                                        + +

                                                        Character string containing maximum FXY value for a Table B descriptor.

                                                        + +

                                                        Definition at line 43 of file bufrlib.h.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ MIN_FXY_REPL

                                                        + +
                                                        +
                                                        + + + + +
                                                        #define MIN_FXY_REPL   "101000"
                                                        +
                                                        + +

                                                        Character string containing minimum FXY value for a replication descriptor.

                                                        + +

                                                        Definition at line 37 of file bufrlib.h.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ MIN_FXY_TABLED

                                                        + +
                                                        +
                                                        + + + + +
                                                        #define MIN_FXY_TABLED   "300000"
                                                        +
                                                        + +

                                                        Character string containing minimum FXY value for a Table D descriptor.

                                                        + +

                                                        Definition at line 40 of file bufrlib.h.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ NEMO_STR_LEN

                                                        + +
                                                        +
                                                        + + + + +
                                                        #define NEMO_STR_LEN   8
                                                        +
                                                        + +

                                                        Size of a character string needed to store a mnemonic.

                                                        + +

                                                        Definition at line 46 of file bufrlib.h.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ UNIT_STR_LEN

                                                        + +
                                                        +
                                                        + + + + +
                                                        #define UNIT_STR_LEN   24
                                                        +
                                                        + +

                                                        Size of a character string needed to store the units of a Table B descriptor.

                                                        + +

                                                        Definition at line 49 of file bufrlib.h.

                                                        + +
                                                        +
                                                        +

                                                        Function Documentation

                                                        + +

                                                        ◆ arallocc()

                                                        + +
                                                        +
                                                        + + + + + + + + +
                                                        void arallocc (void )
                                                        +
                                                        + +

                                                        Dynamically allocate C language arrays.

                                                        +

                                                        This subroutine is called internally during the first call to subroutine openbf() from an application program, in order to dynamically allocate internal C language arrays based on parameter values set during one or more previous calls to function isetprm().

                                                        +

                                                        All memory allocated within this subroutine can be freed via a subsequent call to subroutine exitbufr().

                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2014-12-04
                                                        + +

                                                        Definition at line 29 of file arallocc.c.

                                                        + +

                                                        References bort_f(), cbbw_c, cbelem_c, cbmnem_c, cbscl_c, cbsref_c, cbunit_c, cdmnem_c, cdseq_c, iafpk, ibfxyn_c, idefxy_c, idfxyn_c, igetprm_f(), lstpos, ndelem_c, and pb.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ ardllocc()

                                                        + +
                                                        +
                                                        + + + + + + + + +
                                                        void ardllocc (void )
                                                        +
                                                        + +

                                                        Free all memory that was dynamically allocated during a previous call to subroutine arallocc().

                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2014-12-04
                                                        + +

                                                        Definition at line 90 of file arallocc.c.

                                                        + +

                                                        References cbbw_c, cbelem_c, cbmnem_c, cbscl_c, cbsref_c, cbunit_c, cdmnem_c, cdseq_c, iafpk, ibfxyn_c, idefxy_c, idfxyn_c, lstpos, ndelem_c, and pb.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ backbufr()

                                                        + +
                                                        +
                                                        + + + + + + + + +
                                                        void backbufr (int nfile)
                                                        +
                                                        + +

                                                        Backspace a BUFR file by one BUFR message.

                                                        +
                                                        Parameters
                                                        + + +
                                                        nfile- File ID.
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        2012-09-15
                                                        + +

                                                        Definition at line 68 of file cread.c.

                                                        + +

                                                        References lstpos, and pb.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ bort_f()

                                                        + +
                                                        +
                                                        + + + + + + + + +
                                                        void bort_f (char * errstr)
                                                        +
                                                        + +

                                                        Log one error message and abort application program.

                                                        +

                                                        Wraps bort() subroutine.

                                                        +
                                                        Parameters
                                                        + + +
                                                        errstr- Error message.
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2023-04-07
                                                        + +

                                                        Referenced by arallocc(), cobfl(), crbmg(), cwbmg(), inittbf(), nummtb(), restd(), strtbfe(), stseq(), and wrdesc().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ cadn30_f()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        void cadn30_f (int idn,
                                                        char * adn,
                                                        int adn_str_len 
                                                        )
                                                        +
                                                        + +

                                                        Convert an FXY value from its WMO bit-wise representation to its six-character representation.

                                                        +

                                                        Wraps cadn30() subroutine.

                                                        +
                                                        Parameters
                                                        + + + + +
                                                        idn- WMO bit-wise representation of FXY value.
                                                        adn- FXY value.
                                                        adn_str_len- Length of adn string.
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2004-08-18
                                                        + +

                                                        Referenced by nummtb(), restd(), and stseq().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ cewind()

                                                        + +
                                                        +
                                                        + + + + + + + + +
                                                        void cewind (int nfile)
                                                        +
                                                        + +

                                                        Rewind a BUFR file back to its beginning.

                                                        +
                                                        Parameters
                                                        + + +
                                                        nfile- File ID.
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        2012-09-15
                                                        + +

                                                        Definition at line 80 of file cread.c.

                                                        + +

                                                        References pb.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ closfb()

                                                        + +
                                                        +
                                                        + + + + + + + + +
                                                        void closfb (int nfile)
                                                        +
                                                        + +

                                                        Close a previously opened BUFR file.

                                                        +
                                                        Parameters
                                                        + + +
                                                        nfile- File ID.
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        2012-09-15
                                                        + +

                                                        Definition at line 92 of file cread.c.

                                                        + +

                                                        References pb.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ crdbufr()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        int crdbufr (int nfile,
                                                        int * bufr,
                                                        int mxwrd 
                                                        )
                                                        +
                                                        + +

                                                        Read the next message from a BUFR file that was previously opened for reading.

                                                        +
                                                        Parameters
                                                        + + + + +
                                                        nfile- File ID.
                                                        bufr- BUFR message.
                                                        mxwrd- Number of elements in bufr array; used by the function to ensure that it doesn't overflow the array.
                                                        +
                                                        +
                                                        +
                                                        Returns
                                                          +
                                                        • 0 normal return.
                                                        • +
                                                        • -1 end-of-file encountered while reading.
                                                        • +
                                                        • -2 I/O error encountered while reading.
                                                        • +
                                                        • -3 overflow of bufr array.
                                                        • +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        2012-09-15
                                                        + +

                                                        Definition at line 114 of file cread.c.

                                                        + +

                                                        References iupbs01_f(), lstpos, and pb.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ cwrbufr()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        void cwrbufr (int nfile,
                                                        int * bufr,
                                                        int nwrd 
                                                        )
                                                        +
                                                        + +

                                                        Write a BUFR message into a file that was previously opened for writing.

                                                        +
                                                        Parameters
                                                        + + + + +
                                                        nfile- File ID.
                                                        bufr- BUFR message.
                                                        nwrd- Size (in integers) of bufr.
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        2012-09-15
                                                        + +

                                                        Definition at line 199 of file cread.c.

                                                        + +

                                                        References pb.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ elemdx_f()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        void elemdx_f (char * card,
                                                        int lun 
                                                        )
                                                        +
                                                        + +

                                                        Decode the scale factor, reference value, bit width, and units from a Table B mnemonic definition.

                                                        +

                                                        Wraps elemdx() subroutine.

                                                        +
                                                        Parameters
                                                        + + + +
                                                        card- mnemonic definition card.
                                                        lun- File ID.
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2003-11-04
                                                        + +

                                                        Referenced by stseq().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ icvidx()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        int icvidx (int ii,
                                                        int jj,
                                                        int numjj 
                                                        )
                                                        +
                                                        + +

                                                        Computes a unique 1-dimensional array index from 2-dimensional indices.

                                                        +

                                                        This allows a 2-dimensional (row-by-column) array to be stored and accessed as a 1-dimensional array.

                                                        +
                                                        Parameters
                                                        + + + + +
                                                        ii- first (row) index
                                                        jj- second (column) index
                                                        numjj- maximum number of column indices
                                                        +
                                                        +
                                                        +
                                                        Returns
                                                        1-dimensional index.
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2009-03-23
                                                        + +

                                                        Definition at line 22 of file icvidx.c.

                                                        + +

                                                        Referenced by cpmstabs(), and stseq().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ ifxy_f()

                                                        + +
                                                        +
                                                        + + + + + + + + +
                                                        int ifxy_f (char * cfxy)
                                                        +
                                                        + +

                                                        Convert an FXY value from its 6 character representation to its WMO bit-wise representation.

                                                        +

                                                        Wraps ifxy() function.

                                                        +
                                                        Parameters
                                                        + + +
                                                        cfxy- FXY value.
                                                        +
                                                        +
                                                        +
                                                        Returns
                                                        WMO bit-wise representation of FXY value.
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2023-04-07
                                                        + +

                                                        Referenced by nummtb(), restd(), and stseq().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ igetntbi_f()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        int igetntbi_f (int lun,
                                                        char * table_type 
                                                        )
                                                        +
                                                        + +

                                                        Get the next index for storing an entry within an internal DX BUFR table.

                                                        +

                                                        Wraps igetntbi() function.

                                                        +
                                                        Parameters
                                                        + + + +
                                                        lun- File ID.
                                                        table_type- Type of internal DX BUFR table ('A', 'B', or 'D').
                                                        +
                                                        +
                                                        +
                                                        Returns
                                                        Next available index within table_type.
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2009-03-23
                                                        + +

                                                        Referenced by stseq().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ igettdi_f()

                                                        + +
                                                        +
                                                        + + + + + + + + +
                                                        int igettdi_f (int iflag)
                                                        +
                                                        + +

                                                        Get the next usable Table D index for the current master table, or reset the index.

                                                        +

                                                        Wraps igettdi() function.

                                                        +
                                                        Parameters
                                                        + + +
                                                        iflag- Processing flag; if 0 will reset the index.
                                                        +
                                                        +
                                                        +
                                                        Returns
                                                          +
                                                        • -1, if iflag was input as 0.
                                                        • +
                                                        • next usable scratch Table D index, otherwise.
                                                        • +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2009-03-23
                                                        + +

                                                        Referenced by stseq().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ imrkopr_f()

                                                        + +
                                                        +
                                                        + + + + + + + + +
                                                        int imrkopr_f (char * nemo)
                                                        +
                                                        + +

                                                        Check whether a specified mnemonic is a Table C marker operator.

                                                        +

                                                        Wraps imrkopr() function.

                                                        +
                                                        Parameters
                                                        + + +
                                                        nemo- Mnemonic.
                                                        +
                                                        +
                                                        +
                                                        Returns
                                                          +
                                                        • 0 nemo is not a Table C marker operator.
                                                        • +
                                                        • 1 nemo is a Table C marker operator.
                                                        • +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2016-05-04
                                                        + +

                                                        Referenced by stseq().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ istdesc_f()

                                                        + +
                                                        +
                                                        + + + + + + + + +
                                                        int istdesc_f (int idn)
                                                        +
                                                        + +

                                                        Check whether a descriptor is WMO-standard.

                                                        +

                                                        Wraps istdesc() function.

                                                        +
                                                        Parameters
                                                        + + +
                                                        idn- WMO bit-wise representation of FXY value for descriptor.
                                                        +
                                                        +
                                                        +
                                                        Returns
                                                          +
                                                        • 0 idn is not a WMO-standard descriptor.
                                                        • +
                                                        • 1 idn is a WMO-standard descriptor.
                                                        • +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2004-08-18
                                                        + +

                                                        Referenced by restd().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ numtbd_f()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        void numtbd_f (int lun,
                                                        int idn,
                                                        char * nemo,
                                                        int nemo_str_len,
                                                        char * tab,
                                                        int * iret 
                                                        )
                                                        +
                                                        + +

                                                        Search for a Table B or Table D descriptor within the internal DX BUFR tables.

                                                        +

                                                        Wraps numtbd() subroutine.

                                                        +
                                                        Parameters
                                                        + + + + + + + +
                                                        lun- File ID.
                                                        idn- WMO bit-wise representation of FXY value.
                                                        nemo- Mnemonic.
                                                        nemo_str_len- Length of nemo string.
                                                        tab- Type of internal DX BUFR table ('B', or 'D').
                                                        iret- Positional index of idn within Table B or D, or 0 if not found.
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2003-11-04
                                                        + +

                                                        Referenced by restd(), and stseq().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ openab()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        void openab (int nfile,
                                                        char * ufile 
                                                        )
                                                        +
                                                        + +

                                                        Open a new file for appending BUFR messages.

                                                        +
                                                        Parameters
                                                        + + + +
                                                        nfile- File ID.
                                                        ufile- [path/]name of file to be opened.
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        2012-09-15
                                                        + +

                                                        Definition at line 56 of file cread.c.

                                                        + +

                                                        References pb.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ openrb()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        void openrb (int nfile,
                                                        char * ufile 
                                                        )
                                                        +
                                                        + +

                                                        Open a new file for reading BUFR messages.

                                                        +
                                                        Parameters
                                                        + + + +
                                                        nfile- File ID.
                                                        ufile- [path/]name of file to be opened.
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        2012-09-15
                                                        + +

                                                        Definition at line 30 of file cread.c.

                                                        + +

                                                        References pb.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ openwb()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        void openwb (int nfile,
                                                        char * ufile 
                                                        )
                                                        +
                                                        + +

                                                        Open a new file for writing BUFR messages.

                                                        +
                                                        Parameters
                                                        + + + +
                                                        nfile- File ID.
                                                        ufile- [path/]name of file to be opened.
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        2012-09-15
                                                        + +

                                                        Definition at line 43 of file cread.c.

                                                        + +

                                                        References pb.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ pktdd_f()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        void pktdd_f (int id,
                                                        int lun,
                                                        int idn,
                                                        int * iret 
                                                        )
                                                        +
                                                        + +

                                                        Store information about a child mnemonic within the internal arrays.

                                                        +

                                                        Wraps pktdd() subroutine.

                                                        +
                                                        Parameters
                                                        + + + + + +
                                                        id- Index of parent mnemonic within internal arrays.
                                                        lun- File ID.
                                                        idn- WMO bit-wise representation of FXY value for child mnemonic, or 0 to delete all child mnemonic information for parent mnemonic id.
                                                        iret- 0 if idn=0; -1 if error occurred; otherwise, the total number of child mnemonics stored so far for parent mnemonic id.
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2003-11-04
                                                        + +

                                                        Referenced by stseq().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ restd()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        void restd (int lun,
                                                        int tddesc,
                                                        int * nctddesc,
                                                        int * ctddesc 
                                                        )
                                                        +
                                                        + +

                                                        Standardize a local Table D descriptor.

                                                        +

                                                        Given the bit-wise (integer) representation of a local (not WMO-standard) Table D descriptor, this subroutine returns an equivalent array of WMO-standard child descriptors.

                                                        +

                                                        Any child descriptors which are themselves local Table D descriptors are automatically resolved via a recursive call to this same subroutine. This recursive process continues until all child descriptors are either WMO-standard descriptors (from Table B, Table C, Table D, or replication descriptors) or else are local Table B descriptors, in which case they are preceded with an appropriate 2-06-YYY Table C operator in the output array. The output array is then useable by any standard BUFR decoder program in order to interpret the same data values as were represented by the input local Table D descriptor.

                                                        +
                                                        Parameters
                                                        + + + + + +
                                                        lun- File ID
                                                        tddesc- WMO bit-wise representation of FXY value for local Table D descriptor
                                                        nctddesc- Number of WMO-standard child descriptors returned in ctddesc
                                                        ctddesc- Array of WMO-standard child descriptors equivalent to tddesc
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2004-08-18
                                                        + +

                                                        Definition at line 73 of file restd.c.

                                                        + +

                                                        References bort_f(), cadn30_f(), FXY_STR_LEN, moda_bitbuf::ibit, ifxy_f(), igetprm_f(), istdesc_f(), MIN_FXY_REPL, NEMO_STR_LEN, nemtbb_f(), numtbd_f(), restd(), UNIT_STR_LEN, uptdd_f(), and wrdesc().

                                                        + +

                                                        Referenced by restd().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ stntbi_f()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        void stntbi_f (int n,
                                                        int lun,
                                                        char * numb,
                                                        char * nemo,
                                                        char * celsq 
                                                        )
                                                        +
                                                        + +

                                                        Store a new entry within the internal BUFR Table B or D.

                                                        +

                                                        Wraps stntbi() subroutine.

                                                        +
                                                        Parameters
                                                        + + + + + + +
                                                        n- Storage index into internal Table B or D.
                                                        lun- File ID.
                                                        numb- FXY number for new entry.
                                                        nemo- mnemonic corresponding to numb.
                                                        celsq- Element or sequence definition corresponding to numb.
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2009-03-23
                                                        + +

                                                        Referenced by stseq().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ strnum_f()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        void strnum_f (char * str,
                                                        int * num,
                                                        int * iret 
                                                        )
                                                        +
                                                        + +

                                                        Decode an integer from a character string.

                                                        +

                                                        Wraps strnum() subroutine.

                                                        +
                                                        Parameters
                                                        + + + + +
                                                        str- String.
                                                        num- Value decoded from str.
                                                        iret- Return code: 0 if successful, -1 otherwise.
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2003-11-04
                                                        + +

                                                        Referenced by stseq().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ stseq()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        void stseq (int lun,
                                                        int * irepct,
                                                        int idn,
                                                        char * nemo,
                                                        char * cseq,
                                                        int * cdesc,
                                                        int ncdesc 
                                                        )
                                                        +
                                                        + +

                                                        Store information about a standard Table D descriptor within internal DX BUFR tables.

                                                        +

                                                        Given the WMO bit-wise (integer) representation of a standard Table D descriptor, this subroutine uses the master BUFR tables to store all of the necessary information for that descriptor within the internal DX BUFR tables. Any child descriptors which are themselves Table D descriptors are automatically resolved via a recursive call to this same subroutine.

                                                        +
                                                        Parameters
                                                        + + + + + + + + +
                                                        lun- File ID
                                                        irepct- Replication sequence counter for the current master table; used internally to keep track of which sequence names have already been defined, and thereby avoid contention within the internal DX BUFR Table D
                                                        idn- WMO bit-wise representation of FXY value for standard Table D descriptor
                                                        nemo- Mnemonic corresponding to idn
                                                        cseq- Description corresponding to idn
                                                        cdesc- Array of WMO-standard child descriptors equivalent to idn
                                                        ncdesc- Number of WMO-standard child descriptors in cdesc
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2009-03-23
                                                        + +

                                                        Definition at line 107 of file stseq.c.

                                                        + +

                                                        References bort_f(), cadn30_f(), cbbw_c, cbelem_c, cbmnem_c, cbscl_c, cbsref_c, cbunit_c, cdmnem_c, cdseq_c, elemdx_f(), FXY_STR_LEN, iafpk, icvidx(), idefxy_c, ifxy_f(), igetntbi_f(), igetprm_f(), igettdi_f(), imrkopr_f(), MAX_FXY_TABLEB, MIN_FXY_REPL, MIN_FXY_TABLED, ndelem_c, NEMO_STR_LEN, nemtab_f(), nummtb(), numtbd_f(), pktdd_f(), stntbi_f(), strnum_f(), and stseq().

                                                        + +

                                                        Referenced by stseq().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ uptdd_f()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        void uptdd_f (int id,
                                                        int lun,
                                                        int ient,
                                                        int * iret 
                                                        )
                                                        +
                                                        + +

                                                        Get the WMO bit-wise representation of the FXY value corresponding to a child mnemonic of a Table D sequence.

                                                        +

                                                        Wraps uptdd() subroutine.

                                                        +
                                                        Parameters
                                                        + + + + + +
                                                        id- Positional index of parent mnemonic within internal Table D.
                                                        lun- File ID.
                                                        ient- Ordinal indicator of child mnemonic to be returned, or 0 to request a count of the total number of child mnemonics.
                                                        iret- Total number of child mnemonics if ient = 0; otherwise the WMO bit-wise representation of the FXY value corresponding to the ient'th mnemonic.
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2003-11-04
                                                        + +

                                                        Referenced by restd().

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/bufrlib_8h.js b/previous_versions/v12.1.0/bufrlib_8h.js new file mode 100644 index 000000000..a79c45ad9 --- /dev/null +++ b/previous_versions/v12.1.0/bufrlib_8h.js @@ -0,0 +1,35 @@ +var bufrlib_8h = +[ + [ "FXY_STR_LEN", "bufrlib_8h.html#a320fb202c17784943f8223593c9123dd", null ], + [ "MAX_FXY_TABLEB", "bufrlib_8h.html#ab25c8c36df6eb956d84010bc74002858", null ], + [ "MIN_FXY_REPL", "bufrlib_8h.html#a6fa6d930bc1885cd5cf30d57dfcc6a4b", null ], + [ "MIN_FXY_TABLED", "bufrlib_8h.html#a87f18b149395d0c626a9ba310c959e3c", null ], + [ "NEMO_STR_LEN", "bufrlib_8h.html#aaf134edc1efd697331c03effd4d056e0", null ], + [ "UNIT_STR_LEN", "bufrlib_8h.html#a9043f4f41d0f9e6a276f936a03416f69", null ], + [ "arallocc", "bufrlib_8h.html#a98efd59b32b1d2ed2c060d2564824e28", null ], + [ "ardllocc", "bufrlib_8h.html#ac283516a1391fee0635b01beffdad7cb", null ], + [ "backbufr", "bufrlib_8h.html#ad5429d7ed327f515c880227bb795162b", null ], + [ "bort_f", "bufrlib_8h.html#a4bd8daccf2564da21968a531b87bf447", null ], + [ "cadn30_f", "bufrlib_8h.html#a039293342a5ca4fe52a09992db5e42c9", null ], + [ "cewind", "bufrlib_8h.html#afffb1b48f2c7d82abebcf2564d47438a", null ], + [ "closfb", "bufrlib_8h.html#a7b13da152c5a09e0fc1c92d8eb41154b", null ], + [ "crdbufr", "bufrlib_8h.html#a8b09f32462059d646e44ea6098a08edc", null ], + [ "cwrbufr", "bufrlib_8h.html#a95bc32869561911e9ca020628802edc5", null ], + [ "elemdx_f", "bufrlib_8h.html#a39fc8b2494bb5f754c2d800c4b5a2f1c", null ], + [ "icvidx", "bufrlib_8h.html#ab3b665adb5a53a4c82d3c5caadbb2c38", null ], + [ "ifxy_f", "bufrlib_8h.html#a9941f6596dafba1e4361eb2f5e173f24", null ], + [ "igetntbi_f", "bufrlib_8h.html#ad32acb7e25a0763d1ecfa201884bc131", null ], + [ "igettdi_f", "bufrlib_8h.html#a0320e66350174c1e05f30babd13d52c2", null ], + [ "imrkopr_f", "bufrlib_8h.html#a3e533930a6aa9c6fc76c89d14e54cf47", null ], + [ "istdesc_f", "bufrlib_8h.html#af98949e6ee91a0b77a8f24509401ed2d", null ], + [ "numtbd_f", "bufrlib_8h.html#a45c023844f35d35ee3c5e77e60fdb18a", null ], + [ "openab", "bufrlib_8h.html#a8eb759a820f7f12a3b75e92473db3c78", null ], + [ "openrb", "bufrlib_8h.html#ab18be8cbb2bdbdb682adce89dd1a9c69", null ], + [ "openwb", "bufrlib_8h.html#aa7b36dfb6c0fe0f9a1104d34c5acfa5e", null ], + [ "pktdd_f", "bufrlib_8h.html#ac68117670f91ed84a5edf1bf074bc187", null ], + [ "restd", "bufrlib_8h.html#a9fab66c5a028abf354d075040dde317c", null ], + [ "stntbi_f", "bufrlib_8h.html#a6d361bdabcb605e7677b9c29cf7ba10f", null ], + [ "strnum_f", "bufrlib_8h.html#aac0f5146bfdbf7042ac39e515475ba11", null ], + [ "stseq", "bufrlib_8h.html#a4f4c37daea8a69385e280d60265f9d40", null ], + [ "uptdd_f", "bufrlib_8h.html#af730245754e061e8dd5f7d77f0310f8b", null ] +]; \ No newline at end of file diff --git a/previous_versions/v12.1.0/bufrlib_8h_source.html b/previous_versions/v12.1.0/bufrlib_8h_source.html new file mode 100644 index 000000000..5dc9532b2 --- /dev/null +++ b/previous_versions/v12.1.0/bufrlib_8h_source.html @@ -0,0 +1,185 @@ + + + + + + + +NCEPLIBS-bufr: bufrlib.h Source File + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        +
                                                        bufrlib.h
                                                        +
                                                        +
                                                        +Go to the documentation of this file.
                                                        1 
                                                        +
                                                        12 #include <stdio.h>
                                                        +
                                                        13 #include <stdlib.h>
                                                        +
                                                        14 #include <string.h>
                                                        +
                                                        15 #include <ctype.h>
                                                        +
                                                        16 
                                                        +
                                                        17 #include "bufr_interface.h"
                                                        +
                                                        18 
                                                        +
                                                        19 void arallocc(void);
                                                        +
                                                        20 void ardllocc(void);
                                                        +
                                                        21 void openrb(int nfile, char *ufile);
                                                        +
                                                        22 void openwb(int nfile, char *ufile);
                                                        +
                                                        23 void openab(int nfile, char *ufile);
                                                        +
                                                        24 void backbufr(int nfile);
                                                        +
                                                        25 void cewind(int nfile);
                                                        +
                                                        26 void closfb(int nfile);
                                                        +
                                                        27 int crdbufr(int nfile, int *bufr, int mxwrd);
                                                        +
                                                        28 void cwrbufr(int nfile, int *bufr, int nwrd);
                                                        +
                                                        29 int icvidx(int ii, int jj, int numjj);
                                                        +
                                                        30 void restd(int lunb, int tddesc, int *nctddesc, int *ctddesc);
                                                        +
                                                        31 void stseq(int lun, int *irepct, int idn, char *nemo, char *cseq, int *cdesc, int ncdesc);
                                                        +
                                                        32 
                                                        +
                                                        34 #define FXY_STR_LEN 6
                                                        +
                                                        35 
                                                        +
                                                        37 #define MIN_FXY_REPL "101000"
                                                        +
                                                        38 
                                                        +
                                                        40 #define MIN_FXY_TABLED "300000"
                                                        +
                                                        41 
                                                        +
                                                        43 #define MAX_FXY_TABLEB "063255"
                                                        +
                                                        44 
                                                        +
                                                        46 #define NEMO_STR_LEN 8
                                                        +
                                                        47 
                                                        +
                                                        49 #define UNIT_STR_LEN 24
                                                        +
                                                        50 
                                                        +
                                                        63 void cadn30_f(int idn, char *adn, int adn_str_len);
                                                        +
                                                        64 
                                                        +
                                                        77 int igetntbi_f(int lun, char *table_type);
                                                        +
                                                        78 
                                                        +
                                                        90 void elemdx_f(char *card, int lun);
                                                        +
                                                        91 
                                                        +
                                                        106 void numtbd_f(int lun, int idn, char *nemo, int nemo_str_len, char *tab, int *iret);
                                                        +
                                                        107 
                                                        +
                                                        120 int ifxy_f(char *cfxy);
                                                        +
                                                        121 
                                                        +
                                                        138 void uptdd_f(int id, int lun, int ient, int *iret);
                                                        +
                                                        139 
                                                        +
                                                        153 int imrkopr_f(char *nemo);
                                                        +
                                                        154 
                                                        +
                                                        168 int istdesc_f(int idn);
                                                        +
                                                        169 
                                                        +
                                                        181 void strnum_f(char *str, int *num, int *iret);
                                                        +
                                                        182 
                                                        +
                                                        196 void stntbi_f(int n, int lun, char *numb, char *nemo, char *celsq);
                                                        +
                                                        197 
                                                        +
                                                        212 int igettdi_f(int iflag);
                                                        +
                                                        213 
                                                        +
                                                        228 void pktdd_f(int id, int lun, int idn, int *iret);
                                                        +
                                                        229 
                                                        +
                                                        239 void bort_f(char *errstr);
                                                        +
                                                        Enable a number of NCEPLIBS-bufr subprograms to be called from within C and C++ application programs.
                                                        +
                                                        int igettdi_f(int iflag)
                                                        Get the next usable Table D index for the current master table, or reset the index.
                                                        +
                                                        void cadn30_f(int idn, char *adn, int adn_str_len)
                                                        Convert an FXY value from its WMO bit-wise representation to its six-character representation.
                                                        +
                                                        void elemdx_f(char *card, int lun)
                                                        Decode the scale factor, reference value, bit width, and units from a Table B mnemonic definition.
                                                        +
                                                        int imrkopr_f(char *nemo)
                                                        Check whether a specified mnemonic is a Table C marker operator.
                                                        +
                                                        void numtbd_f(int lun, int idn, char *nemo, int nemo_str_len, char *tab, int *iret)
                                                        Search for a Table B or Table D descriptor within the internal DX BUFR tables.
                                                        +
                                                        void bort_f(char *errstr)
                                                        Log one error message and abort application program.
                                                        +
                                                        void stseq(int lun, int *irepct, int idn, char *nemo, char *cseq, int *cdesc, int ncdesc)
                                                        Store information about a standard Table D descriptor within internal DX BUFR tables.
                                                        Definition: stseq.c:107
                                                        +
                                                        void stntbi_f(int n, int lun, char *numb, char *nemo, char *celsq)
                                                        Store a new entry within the internal BUFR Table B or D.
                                                        +
                                                        void closfb(int nfile)
                                                        Close a previously opened BUFR file.
                                                        Definition: cread.c:92
                                                        +
                                                        int crdbufr(int nfile, int *bufr, int mxwrd)
                                                        Read the next message from a BUFR file that was previously opened for reading.
                                                        Definition: cread.c:114
                                                        +
                                                        void openab(int nfile, char *ufile)
                                                        Open a new file for appending BUFR messages.
                                                        Definition: cread.c:56
                                                        +
                                                        void cwrbufr(int nfile, int *bufr, int nwrd)
                                                        Write a BUFR message into a file that was previously opened for writing.
                                                        Definition: cread.c:199
                                                        +
                                                        void arallocc(void)
                                                        Dynamically allocate C language arrays.
                                                        Definition: arallocc.c:29
                                                        +
                                                        int ifxy_f(char *cfxy)
                                                        Convert an FXY value from its 6 character representation to its WMO bit-wise representation.
                                                        +
                                                        void restd(int lunb, int tddesc, int *nctddesc, int *ctddesc)
                                                        Standardize a local Table D descriptor.
                                                        Definition: restd.c:73
                                                        +
                                                        void openwb(int nfile, char *ufile)
                                                        Open a new file for writing BUFR messages.
                                                        Definition: cread.c:43
                                                        +
                                                        void strnum_f(char *str, int *num, int *iret)
                                                        Decode an integer from a character string.
                                                        +
                                                        void openrb(int nfile, char *ufile)
                                                        Open a new file for reading BUFR messages.
                                                        Definition: cread.c:30
                                                        +
                                                        int icvidx(int ii, int jj, int numjj)
                                                        Computes a unique 1-dimensional array index from 2-dimensional indices.
                                                        Definition: icvidx.c:22
                                                        +
                                                        void ardllocc(void)
                                                        Free all memory that was dynamically allocated during a previous call to subroutine arallocc().
                                                        Definition: arallocc.c:90
                                                        +
                                                        void pktdd_f(int id, int lun, int idn, int *iret)
                                                        Store information about a child mnemonic within the internal arrays.
                                                        +
                                                        int igetntbi_f(int lun, char *table_type)
                                                        Get the next index for storing an entry within an internal DX BUFR table.
                                                        +
                                                        void backbufr(int nfile)
                                                        Backspace a BUFR file by one BUFR message.
                                                        Definition: cread.c:68
                                                        +
                                                        void uptdd_f(int id, int lun, int ient, int *iret)
                                                        Get the WMO bit-wise representation of the FXY value corresponding to a child mnemonic of a Table D s...
                                                        +
                                                        int istdesc_f(int idn)
                                                        Check whether a descriptor is WMO-standard.
                                                        +
                                                        void cewind(int nfile)
                                                        Rewind a BUFR file back to its beginning.
                                                        Definition: cread.c:80
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/cfe_8c.html b/previous_versions/v12.1.0/cfe_8c.html new file mode 100644 index 000000000..080262875 --- /dev/null +++ b/previous_versions/v12.1.0/cfe_8c.html @@ -0,0 +1,592 @@ + + + + + + + +NCEPLIBS-bufr: cfe.c File Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        cfe.c File Reference
                                                        +
                                                        +
                                                        + +

                                                        C language interface for processing master Code/Flag table entries. +More...

                                                        +
                                                        #include "bufrlib.h"
                                                        +
                                                        +

                                                        Go to the source code of this file.

                                                        + + + + + +

                                                        +Macros

                                                        #define MAX_MEANING_LEN   150
                                                         Maximum length of a meaning string for a Code/Flag table entry. More...
                                                         
                                                        + + + + + + + + + + + + + + + + + + + + + + +

                                                        +Functions

                                                        int cmpstia1 (const void *pe1, const void *pe2)
                                                         Define a comparison between two master Code/Flag table entries. More...
                                                         
                                                        int cmpstia2 (const void *pe1, const void *pe2)
                                                         Define a comparison between two master Code/Flag table entries. More...
                                                         
                                                        void dlloctbf (void)
                                                         Free all dynamically-allocated memory for internal storage of master Code/Flag table entries. More...
                                                         
                                                        void inittbf (void)
                                                         Initialize memory for internal storage of master Code/Flag table entries, including dynamically allocating memory space if needed. More...
                                                         
                                                        void sorttbf (void)
                                                         Sort entries within the master Code/Flag table, in preparation for future searches using function srchtbf(). More...
                                                         
                                                        void srchtbf (int ifxyi, int ivali, int *ifxyd, int mxfxyd, int ivald, char *meaning, int mxmng, int *lnmng, int *iret)
                                                         Search for a specified master Code/Flag table entry. More...
                                                         
                                                        void strtbfe (int ifxyn, int ival, char *meaning, int lmeaning, int idfxy, int idval)
                                                         Store a new master Code/Flag table entry. More...
                                                         
                                                        + + + + + + + + + + +

                                                        +Variables

                                                        struct code_flag_entry * cfe
                                                         Master Code/Flag table entries. More...
                                                         
                                                        int mxmtbf
                                                         Maximum number of master Code/Flag table entries, counting across all individual Code/Flag tables, and counting each defined code figure (within each individual Code table) or defined bit number (within each individual Flag table) as a separate entry. More...
                                                         
                                                        int nmtf
                                                         Number of stored master Code/Flag table entries in cfe, up to a maximum of MXMTBF. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        C language interface for processing master Code/Flag table entries.

                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2017-11-16
                                                        + +

                                                        Definition in file cfe.c.

                                                        +

                                                        Macro Definition Documentation

                                                        + +

                                                        ◆ MAX_MEANING_LEN

                                                        + +
                                                        +
                                                        + + + + +
                                                        #define MAX_MEANING_LEN   150
                                                        +
                                                        + +

                                                        Maximum length of a meaning string for a Code/Flag table entry.

                                                        + +

                                                        Definition at line 11 of file cfe.c.

                                                        + +
                                                        +
                                                        +

                                                        Function Documentation

                                                        + +

                                                        ◆ cmpstia1()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        int cmpstia1 (const void * pe1,
                                                        const void * pe2 
                                                        )
                                                        +
                                                        + +

                                                        Define a comparison between two master Code/Flag table entries.

                                                        +

                                                        The comparison is used by the intrinsic C functions qsort and bsearch, and it differs from the the comparison in function cmpstia2() because it compares all of the iffxyn, ifval, iffxynd and ifvald components of the structure, whereas cmpstia2() only compares the iffxyn and ifval components.

                                                        +
                                                        Parameters
                                                        + + + +
                                                        pe1- First master Code/Flag table entry.
                                                        pe2- Second master Code/Flag table entry.
                                                        +
                                                        +
                                                        +
                                                        Returns
                                                        cmpstia1:
                                                          +
                                                        • -1 = pe1 is less than pe2
                                                        • +
                                                        • 0 = pe1 is equal to pe2
                                                        • +
                                                        • 1 = pe1 is greater than pe2
                                                        • +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2017-11-13
                                                        + +

                                                        Definition at line 107 of file cfe.c.

                                                        + +

                                                        Referenced by sorttbf(), and srchtbf().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ cmpstia2()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        int cmpstia2 (const void * pe1,
                                                        const void * pe2 
                                                        )
                                                        +
                                                        + +

                                                        Define a comparison between two master Code/Flag table entries.

                                                        +

                                                        The comparison is used by the intrinsic C function bsearch, and it differs from the the comparison in function cmpstia1() because it only compares the iffxyn and ifval components of the structure, whereas cmpstia1() compares all of the iffxyn, ifval, iffxynd and ifvald components of the structure.

                                                        +
                                                        Parameters
                                                        + + + +
                                                        pe1- First master Code/Flag table entry.
                                                        pe2- Second master Code/Flag table entry.
                                                        +
                                                        +
                                                        +
                                                        Returns
                                                        cmpstia2:
                                                          +
                                                        • -1 = pe1 is less than pe2
                                                        • +
                                                        • 0 = pe1 is equal to pe2
                                                        • +
                                                        • 1 = pe1 is greater than pe2
                                                        • +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2017-11-13
                                                        + +

                                                        Definition at line 150 of file cfe.c.

                                                        + +

                                                        Referenced by srchtbf().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ dlloctbf()

                                                        + +
                                                        +
                                                        + + + + + + + + +
                                                        void dlloctbf (void )
                                                        +
                                                        + +

                                                        Free all dynamically-allocated memory for internal storage of master Code/Flag table entries.

                                                        +

                                                        This memory would have been dynamically allocated during a previous call to function inittbf().

                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2017-11-03
                                                        + +

                                                        Definition at line 81 of file cfe.c.

                                                        + +

                                                        References cfe.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ inittbf()

                                                        + +
                                                        +
                                                        + + + + + + + + +
                                                        void inittbf (void )
                                                        +
                                                        + +

                                                        Initialize memory for internal storage of master Code/Flag table entries, including dynamically allocating memory space if needed.

                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2017-11-03
                                                        + +

                                                        Definition at line 53 of file cfe.c.

                                                        + +

                                                        References bort_f(), cfe, igetprm_f(), mxmtbf, and nmtf.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ sorttbf()

                                                        + +
                                                        +
                                                        + + + + + + + + +
                                                        void sorttbf (void )
                                                        +
                                                        + +

                                                        Sort entries within the master Code/Flag table, in preparation for future searches using function srchtbf().

                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2017-11-16
                                                        + +

                                                        Definition at line 211 of file cfe.c.

                                                        + +

                                                        References cfe, cmpstia1(), and nmtf.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ srchtbf()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        void srchtbf (int ifxyi,
                                                        int ivali,
                                                        int * ifxyd,
                                                        int mxfxyd,
                                                        int ivald,
                                                        char * meaning,
                                                        int mxmng,
                                                        int * lnmng,
                                                        int * iret 
                                                        )
                                                        +
                                                        + +

                                                        Search for a specified master Code/Flag table entry.

                                                        +

                                                        The search is based on a specified FXY number and associated value (code figure or bit number) within the internal memory structure for storage of master Code/Flag table entries. If found, the associated meaning is returned as a character string.

                                                        +

                                                        The search may optionally include a specified second FXY number and associated value upon which the first FXY number and its associated value depend, for example when the meaning of an originating sub-center value depends on the identity of the originating center for which the sub-center in question is a member.

                                                        +
                                                        Parameters
                                                        + + + + + + + + + + +
                                                        ifxyi- WMO bit-wise representation of FXY number to search for.
                                                        ivali- Value (code figure or bit number) associated with ifxyi.
                                                        ifxyd- Dependence indicator:
                                                          +
                                                        • On input, ifxyd[0] is set to the WMO bit-wise representation of the FXY number upon which ifxyi and ivali depend, or else set to (-1) if ifxyi and ivali do not depend on the value associated with any other FXY number.
                                                        • +
                                                        • On output, if the initial search of the master Code/Flag table was unsuccessful, and if ifxyd[0] and ivald were both set to (-1) on input, and if a second search of the table determines that the meaning of ifxyi and ivali indeed depends on one or more other FXY numbers, then the WMO bit-wise representations of those FXY numbers are returned within the first iret elements of ifxyd.
                                                        • +
                                                        +
                                                        ivald- Value (code figure or bit number) associated with the FXY number in ifxyd[0]; set to (-1) whenever ifxyd[0] is also set to (-1).
                                                        mxfxyd- Number of elements in ifxyd array; used by the function to ensure that it doesn't overflow the array.
                                                        mxmng- Number of elements in meaning array; used by the function to ensure that it doesn't overflow the string.
                                                        meaning- Meaning corresponding to ifxyi and ivali (and to ifxyd[0] and ivald, if specified on input).
                                                        lnmng- Length (in bytes) of string returned in CMEANG.
                                                        iret- Return code:
                                                          +
                                                        • 0 = Meaning found and stored in meaning string.
                                                        • +
                                                        • -1 = Meaning not found.
                                                        • +
                                                        • >0 = Meaning not found, and ifxyd[0] and ivald were both set to (-1) on input, and the meaning of ifxyi and ivali depends on the the value associated with one of the FXY numbers whose WMO bit-wise representation is stored in the first iret elements of ifxyd.
                                                        • +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2018-01-11
                                                        + +

                                                        Definition at line 264 of file cfe.c.

                                                        + +

                                                        References cfe, cmpstia1(), cmpstia2(), and nmtf.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ strtbfe()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        void strtbfe (int ifxyn,
                                                        int ival,
                                                        char * meaning,
                                                        int lmeaning,
                                                        int idfxy,
                                                        int idval 
                                                        )
                                                        +
                                                        + +

                                                        Store a new master Code/Flag table entry.

                                                        +
                                                        Parameters
                                                        + + + + + + + +
                                                        ifxyn- WMO bit-wise representation of FXY number for which ival is a defined code or flag table entry.
                                                        ival- Code figure or bit number.
                                                        meaning- Meaning associated with ifxyn and ival.
                                                        lmeaning- Length (in bytes) of meaning.
                                                        idfxy- WMO bit-wise representation of FXY number upon which ifxyn and ival depend (if any), or else set to a value of (-1).
                                                        idval- Code figure or bit number associated with idfxy and upon which ifxyn and ival depend (if any), or else set to (-1) whenever idfxy is also set to (-1).
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2017-11-13
                                                        + +

                                                        Definition at line 180 of file cfe.c.

                                                        + +

                                                        References bort_f(), cfe, moda_ival::ival, MAX_MEANING_LEN, mxmtbf, and nmtf.

                                                        + +
                                                        +
                                                        +

                                                        Variable Documentation

                                                        + +

                                                        ◆ cfe

                                                        + +
                                                        +
                                                        + + + + +
                                                        struct code_flag_entry* cfe
                                                        +
                                                        + +

                                                        Master Code/Flag table entries.

                                                        + +

                                                        Definition at line 34 of file cfe.c.

                                                        + +

                                                        Referenced by dlloctbf(), inittbf(), sorttbf(), srchtbf(), and strtbfe().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ mxmtbf

                                                        + +
                                                        +
                                                        + + + + +
                                                        int mxmtbf
                                                        +
                                                        + +

                                                        Maximum number of master Code/Flag table entries, counting across all individual Code/Flag tables, and counting each defined code figure (within each individual Code table) or defined bit number (within each individual Flag table) as a separate entry.

                                                        + +

                                                        Definition at line 41 of file cfe.c.

                                                        + +

                                                        Referenced by inittbf(), and strtbfe().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ nmtf

                                                        + +
                                                        +
                                                        + + + + +
                                                        int nmtf
                                                        +
                                                        + +

                                                        Number of stored master Code/Flag table entries in cfe, up to a maximum of MXMTBF.

                                                        + +

                                                        Definition at line 44 of file cfe.c.

                                                        + +

                                                        Referenced by inittbf(), sorttbf(), srchtbf(), and strtbfe().

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/cfe_8c.js b/previous_versions/v12.1.0/cfe_8c.js new file mode 100644 index 000000000..3d585e3c6 --- /dev/null +++ b/previous_versions/v12.1.0/cfe_8c.js @@ -0,0 +1,14 @@ +var cfe_8c = +[ + [ "MAX_MEANING_LEN", "cfe_8c.html#a655e9465dd48c1e8a068b4689748e509", null ], + [ "cmpstia1", "cfe_8c.html#a7211d196317c36365a40a128875d5041", null ], + [ "cmpstia2", "cfe_8c.html#a54e09962aa43b61717212a2702be33c8", null ], + [ "dlloctbf", "cfe_8c.html#a1242c4d43753a37cdb9abfb3f01e5583", null ], + [ "inittbf", "cfe_8c.html#aa06057bdd5b8456df9b33ec96a5cc57e", null ], + [ "sorttbf", "cfe_8c.html#af9bdd990bf256341aa36e1f0611132de", null ], + [ "srchtbf", "cfe_8c.html#aba549e6acf16abcbe89193cb72d94287", null ], + [ "strtbfe", "cfe_8c.html#adae7e8dfb5a605b8e8be2c96f3e2be76", null ], + [ "cfe", "cfe_8c.html#ac86272345dff43f22ed1365dbc9f1e16", null ], + [ "mxmtbf", "cfe_8c.html#ada229859d4369f2b51b268c2a3bf4ea2", null ], + [ "nmtf", "cfe_8c.html#aeade079cc5207ec44fe26e6a90c38d3b", null ] +]; \ No newline at end of file diff --git a/previous_versions/v12.1.0/cfe_8c_source.html b/previous_versions/v12.1.0/cfe_8c_source.html new file mode 100644 index 000000000..c09950a56 --- /dev/null +++ b/previous_versions/v12.1.0/cfe_8c_source.html @@ -0,0 +1,336 @@ + + + + + + + +NCEPLIBS-bufr: cfe.c Source File + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        +
                                                        cfe.c
                                                        +
                                                        +
                                                        +Go to the documentation of this file.
                                                        1 
                                                        +
                                                        8 #include "bufrlib.h"
                                                        +
                                                        9 
                                                        +
                                                        11 #define MAX_MEANING_LEN 150
                                                        +
                                                        12 
                                                        +
                                                        16 struct code_flag_entry {
                                                        +
                                                        18  int iffxyn;
                                                        +
                                                        20  int ifval;
                                                        +
                                                        22  char ifmeaning[MAX_MEANING_LEN+1];
                                                        +
                                                        26  int iffxynd;
                                                        +
                                                        30  int ifvald;
                                                        +
                                                        31 };
                                                        +
                                                        32 
                                                        +
                                                        34 struct code_flag_entry *cfe; /* will automatically initialize to NULL */
                                                        +
                                                        35 
                                                        +
                                                        41 int mxmtbf;
                                                        +
                                                        42 
                                                        +
                                                        44 int nmtf;
                                                        +
                                                        45 
                                                        +
                                                        52 void
                                                        +
                                                        53 inittbf(void)
                                                        +
                                                        54 {
                                                        +
                                                        55  char brtstr[50] = "BUFRLIB: INITTBF FAILED ALLOCATING CFE";
                                                        +
                                                        56 
                                                        +
                                                        57  /*
                                                        +
                                                        58  ** Has array space for the internal memory structure been
                                                        +
                                                        59  ** allocated yet?
                                                        +
                                                        60  */
                                                        +
                                                        61  if ( cfe == NULL ) {
                                                        +
                                                        62 
                                                        +
                                                        63  mxmtbf = igetprm_f("MXMTBF");
                                                        +
                                                        64 
                                                        +
                                                        65  if ( ( cfe = malloc(mxmtbf * sizeof(struct code_flag_entry)) ) == NULL ) {
                                                        +
                                                        66  bort_f(brtstr);
                                                        +
                                                        67  }
                                                        +
                                                        68  }
                                                        +
                                                        69 
                                                        +
                                                        70  nmtf = 0;
                                                        +
                                                        71 }
                                                        +
                                                        72 
                                                        +
                                                        80 void
                                                        +
                                                        81 dlloctbf(void)
                                                        +
                                                        82 {
                                                        +
                                                        83  free(cfe);
                                                        +
                                                        84 
                                                        +
                                                        85  cfe = NULL;
                                                        +
                                                        86 }
                                                        +
                                                        87 
                                                        +
                                                        106 int
                                                        +
                                                        107 cmpstia1(const void *pe1, const void *pe2)
                                                        +
                                                        108 {
                                                        +
                                                        109  struct code_flag_entry *mype1 = ( struct code_flag_entry * ) pe1;
                                                        +
                                                        110  struct code_flag_entry *mype2 = ( struct code_flag_entry * ) pe2;
                                                        +
                                                        111 
                                                        +
                                                        112  if ( mype1->iffxyn == mype2->iffxyn ) {
                                                        +
                                                        113  if ( mype1->ifval == mype2->ifval ) {
                                                        +
                                                        114  if ( mype1->iffxynd == mype2->iffxynd ) {
                                                        +
                                                        115  if ( mype1->ifvald == mype2->ifvald ) return 0;
                                                        +
                                                        116  return ( mype1->ifvald < mype2->ifvald ? -1 : 1 );
                                                        +
                                                        117  }
                                                        +
                                                        118  else {
                                                        +
                                                        119  return ( mype1->iffxynd < mype2->iffxynd ? -1 : 1 );
                                                        +
                                                        120  }
                                                        +
                                                        121  }
                                                        +
                                                        122  else {
                                                        +
                                                        123  return ( mype1->ifval < mype2->ifval ? -1 : 1 );
                                                        +
                                                        124  }
                                                        +
                                                        125  }
                                                        +
                                                        126  else {
                                                        +
                                                        127  return ( mype1->iffxyn < mype2->iffxyn ? -1 : 1 );
                                                        +
                                                        128  }
                                                        +
                                                        129 }
                                                        +
                                                        130 
                                                        +
                                                        149 int
                                                        +
                                                        150 cmpstia2(const void *pe1, const void *pe2)
                                                        +
                                                        151 {
                                                        +
                                                        152  struct code_flag_entry *mype1 = ( struct code_flag_entry * ) pe1;
                                                        +
                                                        153  struct code_flag_entry *mype2 = ( struct code_flag_entry * ) pe2;
                                                        +
                                                        154 
                                                        +
                                                        155  if ( mype1->iffxyn == mype2->iffxyn ) {
                                                        +
                                                        156  if ( mype1->ifval == mype2->ifval ) return 0;
                                                        +
                                                        157  return ( mype1->ifval < mype2->ifval ? -1 : 1 );
                                                        +
                                                        158  }
                                                        +
                                                        159  else {
                                                        +
                                                        160  return ( mype1->iffxyn < mype2->iffxyn ? -1 : 1 );
                                                        +
                                                        161  }
                                                        +
                                                        162 }
                                                        +
                                                        163 
                                                        +
                                                        179 void
                                                        +
                                                        180 strtbfe(int ifxyn, int ival, char *meaning, int lmeaning, int idfxy, int idval)
                                                        +
                                                        181 {
                                                        +
                                                        182  unsigned int mnlen;
                                                        +
                                                        183 
                                                        +
                                                        184  static char brtstr[50] = "BUFRLIB: STRTBFE - MXMTBF OVERFLOW";
                                                        +
                                                        185 
                                                        +
                                                        186  /*
                                                        +
                                                        187  ** Confirm that there's room for another entry in the structure.
                                                        +
                                                        188  */
                                                        +
                                                        189  if ( nmtf >= mxmtbf ) bort_f(brtstr);
                                                        +
                                                        190 
                                                        +
                                                        191  /*
                                                        +
                                                        192  ** Store the new entry.
                                                        +
                                                        193  */
                                                        +
                                                        194  cfe[nmtf].iffxyn = ifxyn;
                                                        +
                                                        195  cfe[nmtf].ifval = ival;
                                                        +
                                                        196  mnlen = ( lmeaning > MAX_MEANING_LEN ? MAX_MEANING_LEN : lmeaning );
                                                        +
                                                        197  strncpy(&cfe[nmtf].ifmeaning[0], meaning, mnlen);
                                                        +
                                                        198  cfe[nmtf].ifmeaning[mnlen] = '\0';
                                                        +
                                                        199  cfe[nmtf].iffxynd = idfxy;
                                                        +
                                                        200  cfe[nmtf].ifvald = idval;
                                                        +
                                                        201  nmtf++;
                                                        +
                                                        202 }
                                                        +
                                                        203 
                                                        +
                                                        210 void
                                                        +
                                                        211 sorttbf(void)
                                                        +
                                                        212 {
                                                        +
                                                        213  qsort(&cfe[0], (size_t) nmtf, sizeof(struct code_flag_entry),
                                                        +
                                                        214  (int (*) (const void *, const void *)) cmpstia1);
                                                        +
                                                        215 }
                                                        +
                                                        216 
                                                        +
                                                        263 void
                                                        +
                                                        264 srchtbf(int ifxyi, int ivali, int *ifxyd, int mxfxyd, int ivald,
                                                        +
                                                        265  char *meaning, int mxmng, int *lnmng, int *iret)
                                                        +
                                                        266 {
                                                        +
                                                        267  struct code_flag_entry key, *pkey, *pcfe, *pbs;
                                                        +
                                                        268 
                                                        +
                                                        269  int ipt, ii, slmng;
                                                        +
                                                        270 
                                                        +
                                                        271  *iret = -1;
                                                        +
                                                        272 
                                                        +
                                                        273  /*
                                                        +
                                                        274  ** Initialize some values for searching the internal table.
                                                        +
                                                        275  */
                                                        +
                                                        276  key.iffxyn = ifxyi;
                                                        +
                                                        277  key.ifval = ivali;
                                                        +
                                                        278  key.iffxynd = ifxyd[0];
                                                        +
                                                        279  key.ifvald = ivald;
                                                        +
                                                        280 
                                                        +
                                                        281  pkey = &key;
                                                        +
                                                        282  pcfe = &cfe[0];
                                                        +
                                                        283 
                                                        +
                                                        284  /*
                                                        +
                                                        285  ** Search for a matching entry.
                                                        +
                                                        286  */
                                                        +
                                                        287  pbs = (struct code_flag_entry *) bsearch(pkey, pcfe, (size_t) nmtf,
                                                        +
                                                        288  sizeof(struct code_flag_entry),
                                                        +
                                                        289  (int (*) (const void *, const void *)) cmpstia1);
                                                        +
                                                        290  if ( pbs != NULL ) {
                                                        +
                                                        291  /*
                                                        +
                                                        292  ** A matching entry was found, so set the appropriate output
                                                        +
                                                        293  ** values and return.
                                                        +
                                                        294  */
                                                        +
                                                        295  ipt = pbs - pcfe;
                                                        +
                                                        296  slmng = strlen(cfe[ipt].ifmeaning);
                                                        +
                                                        297  *lnmng = ( mxmng > slmng ? slmng : mxmng );
                                                        +
                                                        298  strncpy(meaning, &cfe[ipt].ifmeaning[0], *lnmng);
                                                        +
                                                        299  *iret = 0;
                                                        +
                                                        300  return;
                                                        +
                                                        301  }
                                                        +
                                                        302 
                                                        +
                                                        303  /*
                                                        +
                                                        304  ** Was a particular dependency specified in the input?
                                                        +
                                                        305  */
                                                        +
                                                        306  if ( key.iffxynd != -1 ) {
                                                        +
                                                        307  /*
                                                        +
                                                        308  ** YES, so there's nothing else to do.
                                                        +
                                                        309  */
                                                        +
                                                        310  return;
                                                        +
                                                        311  }
                                                        +
                                                        312 
                                                        +
                                                        313  /*
                                                        +
                                                        314  ** NO, so check whether the given Table B descriptor and value have any
                                                        +
                                                        315  ** dependencies, and if so then return a list of those dependencies.
                                                        +
                                                        316  */
                                                        +
                                                        317  pbs = (struct code_flag_entry *) bsearch(pkey, pcfe, (size_t) nmtf,
                                                        +
                                                        318  sizeof(struct code_flag_entry),
                                                        +
                                                        319  (int (*) (const void *, const void *)) cmpstia2);
                                                        +
                                                        320  if ( pbs == NULL ) {
                                                        +
                                                        321  /*
                                                        +
                                                        322  ** There are no dependencies.
                                                        +
                                                        323  */
                                                        +
                                                        324  return;
                                                        +
                                                        325  }
                                                        +
                                                        326 
                                                        +
                                                        327  /*
                                                        +
                                                        328  ** Store the dependency that was returned by the secondary search.
                                                        +
                                                        329  ** However, there may be others within the internal table, so we'll
                                                        +
                                                        330  ** also need to check for those.
                                                        +
                                                        331  */
                                                        +
                                                        332  ipt = pbs - pcfe;
                                                        +
                                                        333  *iret = 0;
                                                        +
                                                        334  ifxyd[(*iret)++] = cfe[ipt].iffxynd;
                                                        +
                                                        335 
                                                        +
                                                        336  /*
                                                        +
                                                        337  ** Since the internal table is sorted, check immediately before and
                                                        +
                                                        338  ** after the returned dependency for any additional table entries which
                                                        +
                                                        339  ** correspond to the same Table B descriptor and value, but for which the
                                                        +
                                                        340  ** dependency is different. If any such additional dependencies are
                                                        +
                                                        341  ** found, return those as well.
                                                        +
                                                        342  */
                                                        +
                                                        343  ii = ipt - 1;
                                                        +
                                                        344  while ( ( ii >= 0 ) &&
                                                        +
                                                        345  ( *iret < mxfxyd ) &&
                                                        +
                                                        346  ( cfe[ii].iffxyn == key.iffxyn ) &&
                                                        +
                                                        347  ( cfe[ii].ifval == key.ifval ) ) {
                                                        +
                                                        348  if ( cfe[ii].iffxynd < ifxyd[(*iret)-1] )
                                                        +
                                                        349  ifxyd[(*iret)++] = cfe[ii].iffxynd;
                                                        +
                                                        350  ii--;
                                                        +
                                                        351  }
                                                        +
                                                        352  ii = ipt + 1;
                                                        +
                                                        353  while ( ( ii < nmtf ) &&
                                                        +
                                                        354  ( *iret < mxfxyd ) &&
                                                        +
                                                        355  ( cfe[ii].iffxyn == key.iffxyn ) &&
                                                        +
                                                        356  ( cfe[ii].ifval == key.ifval ) ) {
                                                        +
                                                        357  if ( ( cfe[ii].iffxynd > ifxyd[(*iret)-1] ) &&
                                                        +
                                                        358  ( cfe[ii].iffxynd > cfe[ipt].iffxynd ) )
                                                        +
                                                        359  ifxyd[(*iret)++] = cfe[ii].iffxynd;
                                                        +
                                                        360  ii++;
                                                        +
                                                        361  }
                                                        +
                                                        362 
                                                        +
                                                        363  return;
                                                        +
                                                        364 }
                                                        +
                                                        int igetprm_f(char *cprmnm)
                                                        Get the current value of a parameter.
                                                        +
                                                        Enable a number of NCEPLIBS-bufr subprograms to be called from within the C part of the library.
                                                        +
                                                        void bort_f(char *errstr)
                                                        Log one error message and abort application program.
                                                        +
                                                        void dlloctbf(void)
                                                        Free all dynamically-allocated memory for internal storage of master Code/Flag table entries.
                                                        Definition: cfe.c:81
                                                        +
                                                        int cmpstia2(const void *pe1, const void *pe2)
                                                        Define a comparison between two master Code/Flag table entries.
                                                        Definition: cfe.c:150
                                                        +
                                                        #define MAX_MEANING_LEN
                                                        Maximum length of a meaning string for a Code/Flag table entry.
                                                        Definition: cfe.c:11
                                                        +
                                                        int cmpstia1(const void *pe1, const void *pe2)
                                                        Define a comparison between two master Code/Flag table entries.
                                                        Definition: cfe.c:107
                                                        +
                                                        void inittbf(void)
                                                        Initialize memory for internal storage of master Code/Flag table entries, including dynamically alloc...
                                                        Definition: cfe.c:53
                                                        +
                                                        void srchtbf(int ifxyi, int ivali, int *ifxyd, int mxfxyd, int ivald, char *meaning, int mxmng, int *lnmng, int *iret)
                                                        Search for a specified master Code/Flag table entry.
                                                        Definition: cfe.c:264
                                                        +
                                                        struct code_flag_entry * cfe
                                                        Master Code/Flag table entries.
                                                        Definition: cfe.c:34
                                                        +
                                                        int mxmtbf
                                                        Maximum number of master Code/Flag table entries, counting across all individual Code/Flag tables,...
                                                        Definition: cfe.c:41
                                                        +
                                                        void strtbfe(int ifxyn, int ival, char *meaning, int lmeaning, int idfxy, int idval)
                                                        Store a new master Code/Flag table entry.
                                                        Definition: cfe.c:180
                                                        +
                                                        int nmtf
                                                        Number of stored master Code/Flag table entries in cfe, up to a maximum of MXMTBF.
                                                        Definition: cfe.c:44
                                                        +
                                                        void sorttbf(void)
                                                        Sort entries within the master Code/Flag table, in preparation for future searches using function src...
                                                        Definition: cfe.c:211
                                                        +
                                                        integer *8, dimension(:), allocatable ival
                                                        BUFR data subset values.
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/cftbvs_8F90.html b/previous_versions/v12.1.0/cftbvs_8F90.html new file mode 100644 index 000000000..75e7f01de --- /dev/null +++ b/previous_versions/v12.1.0/cftbvs_8F90.html @@ -0,0 +1,463 @@ + + + + + + + +NCEPLIBS-bufr: cftbvs.F90 File Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        cftbvs.F90 File Reference
                                                        +
                                                        +
                                                        + +

                                                        Convert between code or flag table values and actual data values. +More...

                                                        + +

                                                        Go to the source code of this file.

                                                        + + + + + + + + + + + + + + + + + +

                                                        +Functions/Subroutines

                                                        recursive subroutine getcfmng (lunit, nemoi, ivali, nemod, ivald, cmeang, lnmng, iret)
                                                         Decode the meaning of a numerical value from a code or flag table. More...
                                                         
                                                        recursive real *8 function pkftbv (nbits, ibit)
                                                         Compute the numerical value equivalent to the setting of bit #(ibit) within a flag table of nbits bits. More...
                                                         
                                                        recursive subroutine ufbqcd (lunit, nemo, iqcd)
                                                         Given a mnemonic associated with a category 63 Table D descriptor from an NCEP prepbufr file, return the corresponding event program code. More...
                                                         
                                                        recursive subroutine ufbqcp (lunit, iqcp, nemo)
                                                         Given an event program code, which is equivalent to the Y value of a category 63 Table D descriptor from an NCEP prepbufr file, return the corresponding mnemonic. More...
                                                         
                                                        recursive subroutine upftbv (lunit, nemo, val, mxib, ibit, nib)
                                                         Given a Table B mnemonic with flag table units and a corresponding numerical data value, this subroutine determines the bit settings equivalent to that numerical value. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Convert between code or flag table values and actual data values.

                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2005-11-29
                                                        + +

                                                        Definition in file cftbvs.F90.

                                                        +

                                                        Function/Subroutine Documentation

                                                        + +

                                                        ◆ getcfmng()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        recursive subroutine getcfmng (integer, intent(in) lunit,
                                                        character*(*), intent(in) nemoi,
                                                        integer, intent(in) ivali,
                                                        character*(*), intent(in) nemod,
                                                        integer, intent(in) ivald,
                                                        character*(*), intent(out) cmeang,
                                                        integer, intent(out) lnmng,
                                                        integer, intent(out) iret 
                                                        )
                                                        +
                                                        + +

                                                        Decode the meaning of a numerical value from a code or flag table.

                                                        +

                                                        Search for a specified Table B mnemonic and associated value (code figure or bit number) within the master Code/Flag tables, and if found return the associated meaning as a character string.

                                                        +
                                                        Parameters
                                                        + + + + + + + + + +
                                                        lunit- Fortran logical unit number for BUFR file
                                                        nemoi- Mnemonic to search for
                                                        ivali- Value (code figure or bit number) associated with nemoi
                                                        nemod- Optional second mnemonic upon which the values nemoi and ivali depend; set to all blank characters if the meanings of nemoi and ivali do not depend on the value of any other mnemonic
                                                        ivald- Value (code figure or bit number) associated with nemod; set to (-1) whenever nemod is set to all blank characters
                                                        cmeang- If the initial search of the master Code/Flag tables was successful, then this string contains the meaning corresponding to nemoi and ivali (and to nemod and ivald, if specified). However, if the initial search was unsuccessful, and if no optional second mnemonic and associated value were specified on input, and if a second search of the table determines that the meaning of nemoi and ivali indeed depends on one or more other possible second mnemonics, then those possible second mnemonics are returned within this string, as a series of iret successive 8-byte substrings. An example of this scenario is included below within the Remarks.
                                                        lnmng- Length (in bytes) of string returned in cmeang
                                                        iret- Return code
                                                          +
                                                        • 0 = meaning found and stored in cmeang string
                                                        • +
                                                        • -1 = meaning not found
                                                        • +
                                                        • >0 = meaning not found, and nemod and ivald were not specified on input, and the meaning of nemoi and ivali depends on the value of one of the mnemonics stored in the first iret 8-byte substrings of cmeang
                                                        • +
                                                        +
                                                        +
                                                        +
                                                        +

                                                        As noted above, this subroutine first does an initial search of the master Code/Flag tables based on the mnemonics and values provided. The input parameters nemoi and ivali specify the mnemonic and corresponding numerical code or flag table value for which the meaning is sought, and the optional secondary parameters nemod and ivald are specified when needed to differentiate between multiple possible results. An example of this particular scenario is included below within the Remarks. Otherwise, if the meaning of nemod and ivald does not depend on the value associated with any other mnemonic, then nemod should be set to a field of all blank characters, and ivald should be set to a value of (-1).

                                                        +

                                                        Subroutine codflg() must be called with a cf value of 'Y' prior to calling this subroutine, in order to ensure that master Code/Flag tables have been read into internal memory.

                                                        +

                                                        This subroutine can be called at any time after a BUFR message has been read into internal arrays by one of the NCEPLIBS-bufr message-reading subroutines, and it can be called for any code or flag table mnemonic defined within that particular message. In most cases, this means that the mnemonic must be contained within the subset definition (Section 3) of that message. The only exceptions to this rule are for originating centers, originating subcenters, data types and data subtypes, since those can also be contained within the identification section (Section 1) of a BUFR message.

                                                        +

                                                        It is the user's responsibility to provide sufficient allocated space in cmeang for the returned meaning string; otherwise, the returned string will be truncated.

                                                        +
                                                        Remarks
                                                          +
                                                        • An example of when secondary mnemonics nemod and ivald would be required is when a user is searching for the meaning of a numerical code table value for an originating sub-center (i.e. mnemonic GSES). The meaning of any originating sub-center value depends on the identity of the originating center for which the sub-center in question is a member, so in order for the subroutine to locate and return the proper one, information about the originating center must also be provided. So in this case the user would input GSES and the associated numerical value as nemoi and ivali, respectively, but the user would also need to specify an appropriate originating center mnemonic (e.g. GCLONG, OGCE or ORIGC) and associated value from the same BUFR message as input parameters nemod and ivald, respectively, and then the subroutine will be able to locate and return the appropriate meaning string. Otherwise, if this information was not provided, the subroutine would return with an iret value of 3, and with each of the mnemonics GCLONG, OGCE and ORIGC contained in successive 8-byte substrings of cmeang (and with a corresponding value of 24 returned for lnmng), as a hint to the user that more information needs to be input to the subroutine in order to achieve the desired result.
                                                        • +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2018-01-11
                                                        + +

                                                        Definition at line 219 of file cftbvs.F90.

                                                        + +

                                                        References bort(), moda_tablef::cdmf, ifxy(), ireadmt(), nemtab(), numtbd(), parstr(), status(), moda_tababd::tabb, x48(), and x84().

                                                        + +

                                                        Referenced by fdebufr_c(), and satcode().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ pkftbv()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        recursive real*8 function pkftbv (integer, intent(in) nbits,
                                                        integer, intent(in) ibit 
                                                        )
                                                        +
                                                        + +

                                                        Compute the numerical value equivalent to the setting of bit #(ibit) within a flag table of nbits bits.

                                                        +

                                                        If the computation fails for any reason, then the function returns the current placeholder value for "missing" data.

                                                        +
                                                        Parameters
                                                        + + + +
                                                        nbits- Total number of bits in flag table
                                                        ibit- Number of bit to be set
                                                        +
                                                        +
                                                        +
                                                        Returns
                                                        pkftbv - real*8: Value equivalent to the setting of bit #(ibit) within a flag table of nbits bits
                                                        +
                                                        Remarks
                                                          +
                                                        • This function is the logical inverse of subroutine upftbv().
                                                        • +
                                                        • According to the WMO standard, bits within a bit field are numbered from left to right, so bit #1 is always the high-order (i.e. most significant) bit in any bit field.
                                                        • +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2005-11-29
                                                        + +

                                                        Definition at line 21 of file cftbvs.F90.

                                                        + +

                                                        References x84().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ ufbqcd()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        recursive subroutine ufbqcd (integer, intent(in) lunit,
                                                        character*(*), intent(in) nemo,
                                                        integer, intent(out) iqcd 
                                                        )
                                                        +
                                                        + +

                                                        Given a mnemonic associated with a category 63 Table D descriptor from an NCEP prepbufr file, return the corresponding event program code.

                                                        +

                                                        The event program code is equivalent to the Y value of the category 63 (i.e. X=63) Table D descriptor. Knowledge of this value is especially useful for application programs which are writing data events to NCEP prepbufr files.

                                                        +

                                                        Logical unit lunit should have already been opened via a previous call to subroutine openbf().

                                                        +

                                                        This subroutine is the logical inverse of subroutine ufbqcp().

                                                        +
                                                        Parameters
                                                        + + + + +
                                                        lunit- Fortran logical unit number for NCEP prepbufr file
                                                        nemo- Mnemonic associated with a category 63 (i.e. X=63) Table D descriptor
                                                        iqcd- Y value of descriptor associated with nemo
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 395 of file cftbvs.F90.

                                                        + +

                                                        References adn30(), bort(), nemtab(), status(), x48(), and x84().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ ufbqcp()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        recursive subroutine ufbqcp (integer, intent(in) lunit,
                                                        integer, intent(in) iqcp,
                                                        character*(*), intent(out) nemo 
                                                        )
                                                        +
                                                        + +

                                                        Given an event program code, which is equivalent to the Y value of a category 63 Table D descriptor from an NCEP prepbufr file, return the corresponding mnemonic.

                                                        +

                                                        Logical unit lunit should have already been opened via a previous call to subroutine openbf().

                                                        +

                                                        This subroutine is the logical inverse of subroutine ufbqcd().

                                                        +
                                                        Parameters
                                                        + + + + +
                                                        lunit- Fortran logical unit number for NCEP prepbufr file
                                                        iqcp- Y value of a category 63 (i.e. X=63) Table D descriptor
                                                        nemo- Mnemonic associated with iqcp
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 455 of file cftbvs.F90.

                                                        + +

                                                        References bort(), ifxy(), numtab(), status(), and x84().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ upftbv()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        recursive subroutine upftbv (integer, intent(in) lunit,
                                                        character*(*), intent(in) nemo,
                                                        real*8, intent(in) val,
                                                        integer, intent(in) mxib,
                                                        integer, dimension(*), intent(out) ibit,
                                                        integer, intent(out) nib 
                                                        )
                                                        +
                                                        + +

                                                        Given a Table B mnemonic with flag table units and a corresponding numerical data value, this subroutine determines the bit settings equivalent to that numerical value.

                                                        +

                                                        This subroutine is the logical inverse of function pkftbv().

                                                        +

                                                        According to the WMO standard, bits within a bit field are numbered from left to right, so bit #1 is always the high-order i.e. most significant) bit in any bit field.

                                                        +
                                                        Parameters
                                                        + + + + + + + +
                                                        lunit- Fortran logical unit number for BUFR file
                                                        nemo- Table B mnemonic with flag table units
                                                        val- Value corresponding to nemo
                                                        mxib- Dimensioned size (in integers) of ibit in the calling program; used by the subroutine to ensure that it doesn't overflow the ibit array
                                                        ibit- Bit numbers which were set to "On" (i.e. set to "1") in val
                                                        nib- Number of bit numbers returned in ibit
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2005-11-29
                                                        + +

                                                        Definition at line 69 of file cftbvs.F90.

                                                        + +

                                                        References bort(), nemtab(), status(), strnum(), moda_tababd::tabb, x48(), and x84().

                                                        + +

                                                        Referenced by ufbdmp(), and ufdump().

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/cftbvs_8F90.js b/previous_versions/v12.1.0/cftbvs_8F90.js new file mode 100644 index 000000000..055fa4889 --- /dev/null +++ b/previous_versions/v12.1.0/cftbvs_8F90.js @@ -0,0 +1,8 @@ +var cftbvs_8F90 = +[ + [ "getcfmng", "cftbvs_8F90.html#af113e7ee7e2023cd466c2b28616cd64a", null ], + [ "pkftbv", "cftbvs_8F90.html#a46efecc01f463c64fe193b800fff9a35", null ], + [ "ufbqcd", "cftbvs_8F90.html#aa1388284ca8a4e435989e8a6eb551935", null ], + [ "ufbqcp", "cftbvs_8F90.html#abf6e01afd6c876d1319e25f9d591315b", null ], + [ "upftbv", "cftbvs_8F90.html#ac7a8caa03ed8a2ac40a541762ca7e917", null ] +]; \ No newline at end of file diff --git a/previous_versions/v12.1.0/cftbvs_8F90_source.html b/previous_versions/v12.1.0/cftbvs_8F90_source.html new file mode 100644 index 000000000..84ab2e522 --- /dev/null +++ b/previous_versions/v12.1.0/cftbvs_8F90_source.html @@ -0,0 +1,461 @@ + + + + + + + +NCEPLIBS-bufr: cftbvs.F90 Source File + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        +
                                                        cftbvs.F90
                                                        +
                                                        +
                                                        +Go to the documentation of this file.
                                                        1 
                                                        +
                                                        5 
                                                        +
                                                        21 recursive real*8 function pkftbv(nbits,ibit) result(r8val)
                                                        +
                                                        22 
                                                        +
                                                        23  use modv_vars, only: im8b, bmiss
                                                        +
                                                        24 
                                                        +
                                                        25  implicit none
                                                        +
                                                        26 
                                                        +
                                                        27  integer, intent(in) :: nbits, ibit
                                                        +
                                                        28  integer my_nbits, my_ibit
                                                        +
                                                        29 
                                                        +
                                                        30  ! Check for I8 integers.
                                                        +
                                                        31 
                                                        +
                                                        32  if(im8b) then
                                                        +
                                                        33  im8b=.false.
                                                        +
                                                        34 
                                                        +
                                                        35  call x84(nbits,my_nbits,1)
                                                        +
                                                        36  call x84(ibit,my_ibit,1)
                                                        +
                                                        37  r8val=pkftbv(my_nbits,my_ibit)
                                                        +
                                                        38 
                                                        +
                                                        39  im8b=.true.
                                                        +
                                                        40  return
                                                        +
                                                        41  endif
                                                        +
                                                        42 
                                                        +
                                                        43  if((nbits<=0).or.(ibit<=0).or.(ibit>nbits)) then
                                                        +
                                                        44  r8val = bmiss
                                                        +
                                                        45  else
                                                        +
                                                        46  r8val = (2.)**(nbits-ibit)
                                                        +
                                                        47  endif
                                                        +
                                                        48 
                                                        +
                                                        49  return
                                                        +
                                                        50 end function pkftbv
                                                        +
                                                        51 
                                                        +
                                                        69 recursive subroutine upftbv(lunit,nemo,val,mxib,ibit,nib)
                                                        +
                                                        70 
                                                        +
                                                        71  use modv_vars, only: im8b
                                                        +
                                                        72 
                                                        +
                                                        73  use moda_tababd
                                                        +
                                                        74 
                                                        +
                                                        75  implicit none
                                                        +
                                                        76 
                                                        +
                                                        77  integer, intent(in) :: lunit, mxib
                                                        +
                                                        78  integer, intent(out) :: ibit(*), nib
                                                        +
                                                        79  integer my_lunit, my_mxib, lun, il, im, idn, i, n, nbits, iersn
                                                        +
                                                        80 
                                                        +
                                                        81  character*(*), intent(in) :: nemo
                                                        +
                                                        82  character*128 bort_str
                                                        +
                                                        83  character tab
                                                        +
                                                        84 
                                                        +
                                                        85  real*8, intent(in) :: val
                                                        +
                                                        86  real*8 r8val, r82i
                                                        +
                                                        87 
                                                        +
                                                        88  ! Check for I8 integers.
                                                        +
                                                        89 
                                                        +
                                                        90  if(im8b) then
                                                        +
                                                        91  im8b=.false.
                                                        +
                                                        92 
                                                        +
                                                        93  call x84(lunit,my_lunit,1)
                                                        +
                                                        94  call x84(mxib,my_mxib,1)
                                                        +
                                                        95  call upftbv( my_lunit, nemo, val, my_mxib*2, ibit, nib )
                                                        +
                                                        96  call x48(ibit(1),ibit(1),nib)
                                                        +
                                                        97  call x48(nib,nib,1)
                                                        +
                                                        98 
                                                        +
                                                        99  im8b=.true.
                                                        +
                                                        100  return
                                                        +
                                                        101  endif
                                                        +
                                                        102 
                                                        +
                                                        103  ! Perform some sanity checks.
                                                        +
                                                        104 
                                                        +
                                                        105  call status(lunit,lun,il,im)
                                                        +
                                                        106  if(il==0) call bort('BUFRLIB: UPFTBV - INPUT BUFR FILE IS CLOSED, IT MUST BE OPEN FOR INPUT')
                                                        +
                                                        107 
                                                        +
                                                        108  call nemtab(lun,nemo,idn,tab,n)
                                                        +
                                                        109  if(n==0) then
                                                        +
                                                        110  write(bort_str,'("BUFRLIB: UPFTBV - MNEMONIC ",A," NOT FOUND IN TABLE B")') nemo
                                                        +
                                                        111  call bort(bort_str)
                                                        +
                                                        112  endif
                                                        +
                                                        113  if(tabb(n,lun)(71:74)/='FLAG') then
                                                        +
                                                        114  write(bort_str,'("BUFRLIB: UPFTBV - MNEMONIC ",A," IS NOT A FLAG TABLE")') nemo
                                                        +
                                                        115  call bort(bort_str)
                                                        +
                                                        116  endif
                                                        +
                                                        117 
                                                        +
                                                        118  ! Figure out which bits are set.
                                                        +
                                                        119 
                                                        +
                                                        120  nib = 0
                                                        +
                                                        121  r8val = val
                                                        +
                                                        122  call strnum(tabb(n,lun)(110:112),nbits,iersn)
                                                        +
                                                        123  do i=(nbits-1),0,-1
                                                        +
                                                        124  r82i = (2.)**i
                                                        +
                                                        125  if(abs(r8val-r82i)<(0.005)) then
                                                        +
                                                        126  nib = nib + 1
                                                        +
                                                        127  if(nib>mxib) call bort('BUFRLIB: UPFTBV - IBIT ARRAY OVERFLOW')
                                                        +
                                                        128  ibit(nib) = nbits-i
                                                        +
                                                        129  return
                                                        +
                                                        130  elseif(r82i<r8val) then
                                                        +
                                                        131  nib = nib + 1
                                                        +
                                                        132  if(nib>mxib) call bort('BUFRLIB: UPFTBV - IBIT ARRAY OVERFLOW')
                                                        +
                                                        133  ibit(nib) = nbits-i
                                                        +
                                                        134  r8val = r8val - r82i
                                                        +
                                                        135  endif
                                                        +
                                                        136  enddo
                                                        +
                                                        137 
                                                        +
                                                        138  return
                                                        +
                                                        139 end subroutine upftbv
                                                        +
                                                        140 
                                                        +
                                                        219 recursive subroutine getcfmng ( lunit, nemoi, ivali, nemod, ivald, cmeang, lnmng, iret )
                                                        +
                                                        220 
                                                        +
                                                        221  use bufrlib
                                                        +
                                                        222 
                                                        +
                                                        223  use modv_vars, only: im8b
                                                        +
                                                        224 
                                                        +
                                                        225  use moda_tababd
                                                        +
                                                        226  use moda_tablef
                                                        +
                                                        227 
                                                        +
                                                        228  implicit none
                                                        +
                                                        229 
                                                        +
                                                        230  integer, intent(in) :: lunit, ivali, ivald
                                                        +
                                                        231  integer, intent(out) :: lnmng, iret
                                                        +
                                                        232  integer ifxyd(10), my_lunit, my_ivali, my_ivald, lun, il, im, itmp, ii, ifxyi, lcmg, n, ntg, iret2, ierbd, ifxy, ireadmt
                                                        +
                                                        233 
                                                        +
                                                        234  character*(*), intent(in) :: nemoi, nemod
                                                        +
                                                        235  character*(*), intent(out) :: cmeang
                                                        +
                                                        236  character*128 bort_str
                                                        +
                                                        237  character*8 nemo, my_nemoi, my_nemod
                                                        +
                                                        238  character tab
                                                        +
                                                        239 
                                                        +
                                                        240  ! Check for I8 integers
                                                        +
                                                        241 
                                                        +
                                                        242  if(im8b) then
                                                        +
                                                        243  im8b=.false.
                                                        +
                                                        244 
                                                        +
                                                        245  call x84(lunit,my_lunit,1)
                                                        +
                                                        246  call x84(ivali,my_ivali,1)
                                                        +
                                                        247  call x84(ivald,my_ivald,1)
                                                        +
                                                        248  call getcfmng(my_lunit,nemoi,my_ivali,nemod,my_ivald,cmeang,lnmng,iret)
                                                        +
                                                        249  call x48(lnmng,lnmng,1)
                                                        +
                                                        250  call x48(iret,iret,1)
                                                        +
                                                        251 
                                                        +
                                                        252  im8b=.true.
                                                        +
                                                        253  return
                                                        +
                                                        254  endif
                                                        +
                                                        255 
                                                        +
                                                        256  call status ( lunit, lun, il, im )
                                                        +
                                                        257  if ( il == 0 ) call bort('BUFRLIB: GETCFMNG - INPUT BUFR FILE IS CLOSED, IT MUST BE OPEN FOR INPUT')
                                                        +
                                                        258  if ( il > 0 ) call bort('BUFRLIB: GETCFMNG - INPUT BUFR FILE IS OPEN FOR OUTPUT, IT MUST BE OPEN FOR INPUT')
                                                        +
                                                        259  if ( im == 0 ) call bort('BUFRLIB: GETCFMNG - A MESSAGE MUST BE OPEN IN INPUT BUFR FILE, NONE ARE')
                                                        +
                                                        260 
                                                        +
                                                        261  ! Make sure the appropriate code/flag information has already been read into internal memory.
                                                        +
                                                        262 
                                                        +
                                                        263  if ( cdmf /= 'Y' ) call bort('BUFRLIB: GETCFMNG - TO USE THIS SUBROUTINE, MUST '// &
                                                        +
                                                        264  'FIRST CALL SUBROUTINE CODFLG WITH INPUT ARGUMENT SET TO Y')
                                                        +
                                                        265 
                                                        +
                                                        266  itmp = ireadmt( lun )
                                                        +
                                                        267 
                                                        +
                                                        268  ! Check the validity of the input mnemonic(s). Include special handling for originating centers, originating subcenters, data
                                                        +
                                                        269  ! types and data subtypes, since those can be reported in Section 1 of a BUFR message as well as in Section 3, so if a user
                                                        +
                                                        270  ! requests those mnemonics we can't necessarily assume they came from within Section 3.
                                                        +
                                                        271 
                                                        +
                                                        272  lcmg = len( cmeang )
                                                        +
                                                        273 
                                                        +
                                                        274  my_nemoi = ' '
                                                        +
                                                        275  do ii = 1, min( 8, len( nemoi ) )
                                                        +
                                                        276  my_nemoi(ii:ii) = nemoi(ii:ii)
                                                        +
                                                        277  end do
                                                        +
                                                        278  my_nemod = ' '
                                                        +
                                                        279  do ii = 1, min( 8, len( nemod ) )
                                                        +
                                                        280  my_nemod(ii:ii) = nemod(ii:ii)
                                                        +
                                                        281  end do
                                                        +
                                                        282  if ( my_nemoi(1:4) == 'GSES' ) then
                                                        +
                                                        283  if ( ( my_nemod(1:6) == 'GCLONG' ) .or. ( my_nemod(1:4) == 'OGCE' ) .or. ( my_nemod(1:5) == 'ORIGC' ) ) then
                                                        +
                                                        284  ifxyi = ifxy( '001034' )
                                                        +
                                                        285  ifxyd(1) = ifxy( '001035' )
                                                        +
                                                        286  else
                                                        +
                                                        287  lnmng = min( 24, lcmg )
                                                        +
                                                        288  if ( lnmng == 24 ) then
                                                        +
                                                        289  iret = 3
                                                        +
                                                        290  cmeang(1:24) = 'GCLONG OGCE ORIGC '
                                                        +
                                                        291  else
                                                        +
                                                        292  iret = -1
                                                        +
                                                        293  end if
                                                        +
                                                        294  return
                                                        +
                                                        295  end if
                                                        +
                                                        296  else if ( my_nemoi(1:6) == 'GCLONG' ) then
                                                        +
                                                        297  ifxyi = ifxy( '001031' )
                                                        +
                                                        298  ifxyd(1) = (-1)
                                                        +
                                                        299  else if ( my_nemoi(1:4) == 'OGCE' ) then
                                                        +
                                                        300  ifxyi = ifxy( '001033' )
                                                        +
                                                        301  ifxyd(1) = (-1)
                                                        +
                                                        302  else if ( my_nemoi(1:5) == 'ORIGC' ) then
                                                        +
                                                        303  ifxyi = ifxy( '001035' )
                                                        +
                                                        304  ifxyd(1) = (-1)
                                                        +
                                                        305  else if ( ( my_nemoi(1:7) == 'TABLASS' ) .or. ( my_nemoi(1:7) == 'TABLASL' ) ) then
                                                        +
                                                        306  if ( ( my_nemod(1:6) == 'TABLAT' ) ) then
                                                        +
                                                        307  if ( my_nemoi(1:7) == 'TABLASS' ) then
                                                        +
                                                        308  ifxyi = ifxy( '055021' )
                                                        +
                                                        309  else
                                                        +
                                                        310  ifxyi = ifxy( '055022' )
                                                        +
                                                        311  endif
                                                        +
                                                        312  ifxyd(1) = ifxy( '055020' )
                                                        +
                                                        313  else
                                                        +
                                                        314  lnmng = min( 8, lcmg )
                                                        +
                                                        315  if ( lnmng == 8 ) then
                                                        +
                                                        316  iret = 1
                                                        +
                                                        317  cmeang(1:8) = 'TABLAT '
                                                        +
                                                        318  else
                                                        +
                                                        319  iret = -1
                                                        +
                                                        320  end if
                                                        +
                                                        321  return
                                                        +
                                                        322  end if
                                                        +
                                                        323  else if ( my_nemoi(1:6) == 'TABLAT' ) then
                                                        +
                                                        324  ifxyi = ifxy( '055020' )
                                                        +
                                                        325  ifxyd(1) = (-1)
                                                        +
                                                        326  else
                                                        +
                                                        327  call parstr ( my_nemoi, nemo, 1, ntg, ' ', .true. )
                                                        +
                                                        328  call nemtab ( lun, nemo, ifxyi, tab, n )
                                                        +
                                                        329  if ( ( n == 0 ) .or. ( tab /= 'B' ) ) then
                                                        +
                                                        330  write(bort_str,'("BUFRLIB: GETCFMNG - MNEMONIC ",A," NOT FOUND IN TABLE B")') nemo
                                                        +
                                                        331  call bort(bort_str)
                                                        +
                                                        332  endif
                                                        +
                                                        333  if ( ( tabb( n, lun )(71:74) /= 'CODE' ) .and. ( tabb( n, lun )(71:74) /= 'FLAG' ) ) then
                                                        +
                                                        334  write(bort_str,'("BUFRLIB: GETCFMNG - MNEMONIC ",A," IS NOT A CODE OR FLAG TABLE")') nemo
                                                        +
                                                        335  call bort(bort_str)
                                                        +
                                                        336  endif
                                                        +
                                                        337  if ( my_nemod(1:1) /= ' ' ) then
                                                        +
                                                        338  call parstr ( my_nemod, nemo, 1, ntg, ' ', .true. )
                                                        +
                                                        339  call nemtab ( lun, nemo, ifxyd(1), tab, n )
                                                        +
                                                        340  if ( ( n == 0 ) .or. ( tab /= 'B' ) ) then
                                                        +
                                                        341  write(bort_str,'("BUFRLIB: GETCFMNG - MNEMONIC ",A," NOT FOUND IN TABLE B")') nemo
                                                        +
                                                        342  call bort(bort_str)
                                                        +
                                                        343  endif
                                                        +
                                                        344  if ( ( tabb( n, lun )(71:74) /= 'CODE' ) .and. ( tabb( n, lun )(71:74) /= 'FLAG' ) ) then
                                                        +
                                                        345  write(bort_str,'("BUFRLIB: GETCFMNG - MNEMONIC ",A," IS NOT A CODE OR FLAG TABLE")') nemo
                                                        +
                                                        346  call bort(bort_str)
                                                        +
                                                        347  endif
                                                        +
                                                        348  else
                                                        +
                                                        349  ifxyd(1) = (-1)
                                                        +
                                                        350  end if
                                                        +
                                                        351  end if
                                                        +
                                                        352 
                                                        +
                                                        353  ! Search the internal table for the requested meaning.
                                                        +
                                                        354 
                                                        +
                                                        355  call srchtbf_c ( ifxyi, ivali, ifxyd(1), 10, ivald, cmeang, lcmg, lnmng, iret )
                                                        +
                                                        356  if ( iret <= 0 ) return
                                                        +
                                                        357 
                                                        +
                                                        358  ! The meaning of this value is dependent on the value of another mnemonic in the report.
                                                        +
                                                        359 
                                                        +
                                                        360  iret2 = iret
                                                        +
                                                        361  lnmng = 0
                                                        +
                                                        362  iret = 0
                                                        +
                                                        363  do ii = 1, iret2
                                                        +
                                                        364  call numtbd ( lun, ifxyd(ii), nemo, tab, ierbd )
                                                        +
                                                        365  if ( ( ierbd > 0 ) .and. ( tab == 'B' ) .and. ( lcmg >= ( lnmng + 8 ) ) ) then
                                                        +
                                                        366  iret = iret + 1
                                                        +
                                                        367  cmeang(lnmng+1:lnmng+8) = nemo
                                                        +
                                                        368  lnmng = lnmng + 8
                                                        +
                                                        369  end if
                                                        +
                                                        370  end do
                                                        +
                                                        371  if ( iret == 0 ) iret = -1
                                                        +
                                                        372 
                                                        +
                                                        373  return
                                                        +
                                                        374 end subroutine getcfmng
                                                        +
                                                        375 
                                                        +
                                                        395 recursive subroutine ufbqcd(lunit,nemo,iqcd)
                                                        +
                                                        396 
                                                        +
                                                        397  use modv_vars, only: im8b
                                                        +
                                                        398 
                                                        +
                                                        399  implicit none
                                                        +
                                                        400 
                                                        +
                                                        401  integer, intent(in) :: lunit
                                                        +
                                                        402  integer, intent(out) :: iqcd
                                                        +
                                                        403  integer my_lunit, lun, il, im, idn, iret
                                                        +
                                                        404 
                                                        +
                                                        405  character*(*), intent(in) :: nemo
                                                        +
                                                        406  character*128 bort_str
                                                        +
                                                        407  character*6 fxy, adn30
                                                        +
                                                        408  character tab
                                                        +
                                                        409 
                                                        +
                                                        410  ! Check for I8 integers
                                                        +
                                                        411 
                                                        +
                                                        412  if(im8b) then
                                                        +
                                                        413  im8b=.false.
                                                        +
                                                        414  call x84(lunit,my_lunit,1)
                                                        +
                                                        415  call ufbqcd(my_lunit,nemo,iqcd)
                                                        +
                                                        416  call x48(iqcd,iqcd,1)
                                                        +
                                                        417  im8b=.true.
                                                        +
                                                        418  return
                                                        +
                                                        419  endif
                                                        +
                                                        420 
                                                        +
                                                        421  call status(lunit,lun,il,im)
                                                        +
                                                        422  if(il==0) call bort('BUFRLIB: UFBQCD - BUFR FILE IS CLOSED, IT MUST BE OPEN')
                                                        +
                                                        423 
                                                        +
                                                        424  call nemtab(lun,nemo,idn,tab,iret)
                                                        +
                                                        425  if(tab/='D') then
                                                        +
                                                        426  write(bort_str,'("BUFRLIB: UFBQCD - INPUT MNEMONIC ",A," NOT DEFINED AS A SEQUENCE DESCRIPTOR IN BUFR TABLE")') nemo
                                                        +
                                                        427  call bort(bort_str)
                                                        +
                                                        428  endif
                                                        +
                                                        429 
                                                        +
                                                        430  fxy = adn30(idn,6)
                                                        +
                                                        431  if(fxy(2:3)/='63') then
                                                        +
                                                        432  write(bort_str,'("BUFRLIB: UFBQCD - BUFR TABLE SEQ. DESCRIPTOR '// &
                                                        +
                                                        433  'ASSOC. WITH INPUT MNEMONIC ",A," HAS INVALID CATEGORY ",A," - CATEGORY MUST BE 63")') nemo, fxy(2:3)
                                                        +
                                                        434  call bort(bort_str)
                                                        +
                                                        435  endif
                                                        +
                                                        436  read(fxy(4:6),'(I3)') iqcd
                                                        +
                                                        437 
                                                        +
                                                        438  return
                                                        +
                                                        439 end subroutine ufbqcd
                                                        +
                                                        440 
                                                        +
                                                        455 recursive subroutine ufbqcp(lunit,iqcp,nemo)
                                                        +
                                                        456 
                                                        +
                                                        457  use modv_vars, only: im8b
                                                        +
                                                        458 
                                                        +
                                                        459  implicit none
                                                        +
                                                        460 
                                                        +
                                                        461  integer, intent(in) :: lunit, iqcp
                                                        +
                                                        462  integer my_lunit, my_iqcp, lun, il, im, idn, iret, ifxy
                                                        +
                                                        463 
                                                        +
                                                        464  character*(*), intent(out) :: nemo
                                                        +
                                                        465  character tab
                                                        +
                                                        466 
                                                        +
                                                        467  ! Check for I8 integers
                                                        +
                                                        468 
                                                        +
                                                        469  if(im8b) then
                                                        +
                                                        470  im8b=.false.
                                                        +
                                                        471  call x84(lunit,my_lunit,1)
                                                        +
                                                        472  call x84(iqcp,my_iqcp,1)
                                                        +
                                                        473  call ufbqcp(my_lunit,my_iqcp,nemo)
                                                        +
                                                        474  im8b=.true.
                                                        +
                                                        475  return
                                                        +
                                                        476  endif
                                                        +
                                                        477 
                                                        +
                                                        478  call status(lunit,lun,il,im)
                                                        +
                                                        479  if(il==0) call bort('BUFRLIB: UFBQCP - BUFR FILE IS CLOSED, IT MUST BE OPEN')
                                                        +
                                                        480 
                                                        +
                                                        481  idn = ifxy('363000')+iqcp
                                                        +
                                                        482  call numtab(lun,idn,nemo,tab,iret)
                                                        +
                                                        483 
                                                        +
                                                        484  return
                                                        +
                                                        485 end subroutine ufbqcp
                                                        +
                                                        subroutine bort(str)
                                                        Log an error message, then abort the application program.
                                                        Definition: borts.F90:15
                                                        +
                                                        recursive real *8 function pkftbv(nbits, ibit)
                                                        Compute the numerical value equivalent to the setting of bit #(ibit) within a flag table of nbits bit...
                                                        Definition: cftbvs.F90:22
                                                        +
                                                        recursive subroutine ufbqcd(lunit, nemo, iqcd)
                                                        Given a mnemonic associated with a category 63 Table D descriptor from an NCEP prepbufr file,...
                                                        Definition: cftbvs.F90:396
                                                        +
                                                        recursive subroutine ufbqcp(lunit, iqcp, nemo)
                                                        Given an event program code, which is equivalent to the Y value of a category 63 Table D descriptor f...
                                                        Definition: cftbvs.F90:456
                                                        +
                                                        recursive subroutine upftbv(lunit, nemo, val, mxib, ibit, nib)
                                                        Given a Table B mnemonic with flag table units and a corresponding numerical data value,...
                                                        Definition: cftbvs.F90:70
                                                        +
                                                        recursive subroutine getcfmng(lunit, nemoi, ivali, nemod, ivald, cmeang, lnmng, iret)
                                                        Decode the meaning of a numerical value from a code or flag table.
                                                        Definition: cftbvs.F90:220
                                                        +
                                                        subroutine nemtab(lun, nemo, idn, tab, iret)
                                                        Get information about a descriptor, based on a mnemonic.
                                                        Definition: fxy.F90:432
                                                        +
                                                        subroutine numtab(lun, idn, nemo, tab, iret)
                                                        Get information about a descriptor, based on the WMO bit-wise representation of an FXY value.
                                                        Definition: fxy.F90:357
                                                        +
                                                        subroutine numtbd(lun, idn, nemo, tab, iret)
                                                        Get information about a Table B or Table D descriptor, based on the WMO bit-wise representation of an...
                                                        Definition: fxy.F90:290
                                                        +
                                                        integer function ifxy(adsc)
                                                        Convert an FXY value from its 6 character representation to its WMO bit-wise representation.
                                                        Definition: fxy.F90:152
                                                        +
                                                        character *(*) function adn30(idn, ldn)
                                                        Convert an FXY value from its WMO bit-wise representation to a character string of length 5 or 6.
                                                        Definition: fxy.F90:18
                                                        + +
                                                        integer function ireadmt(lun)
                                                        Check the most recent BUFR message that was read via a call to one of the message-reading subroutines...
                                                        +
                                                        recursive subroutine strnum(str, num, iret)
                                                        Decode an integer from a character string.
                                                        Definition: misc.F90:177
                                                        +
                                                        Wrap C NCEPLIBS-bufr functions so they can be called from within the Fortran part of the library.
                                                        Definition: bufrlib.F90:11
                                                        +
                                                        Declare arrays and variables used to store DX BUFR tables internally for multiple file IDs.
                                                        +
                                                        character *128, dimension(:,:), allocatable tabb
                                                        Table B entries for each file ID.
                                                        +
                                                        Declare a variable used to indicate whether master code and flag tables should be read.
                                                        +
                                                        character cdmf
                                                        Flag indicating whether to include code and flag table information during reads of master BUFR tables...
                                                        +
                                                        recursive subroutine status(lunit, lun, il, im)
                                                        Check whether a specified Fortran logical unit number is currently connected to the NCEPLIBS-bufr sof...
                                                        +
                                                        subroutine parstr(str, tags, mtag, ntag, sep, limit80)
                                                        Parse a string containing one or more substrings into an array of substrings.
                                                        Definition: strings.F90:473
                                                        +
                                                        subroutine x48(iin4, iout8, nval)
                                                        Encode one or more 4-byte integer values as 8-byte integer values.
                                                        Definition: x4884.F90:18
                                                        +
                                                        subroutine x84(iin8, iout4, nval)
                                                        Encode one or more 8-byte integer values as 4-byte integer values.
                                                        Definition: x4884.F90:65
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/cidecode_8F90.html b/previous_versions/v12.1.0/cidecode_8F90.html new file mode 100644 index 000000000..4b307d055 --- /dev/null +++ b/previous_versions/v12.1.0/cidecode_8F90.html @@ -0,0 +1,616 @@ + + + + + + + +NCEPLIBS-bufr: cidecode.F90 File Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        cidecode.F90 File Reference
                                                        +
                                                        +
                                                        + +

                                                        Decode character strings and integer values. +More...

                                                        + +

                                                        Go to the source code of this file.

                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + +

                                                        +Functions/Subroutines

                                                        recursive integer function iupb (mbay, nbyt, nbit)
                                                         Decode an integer value from within a specified number of bits of an integer array, starting with the first bit of a specified byte of the array. More...
                                                         
                                                        recursive integer function iupm (cbay, nbits)
                                                         Decode an integer value from within a specified number of bits of a character string, starting with the first bit of the first byte of the string. More...
                                                         
                                                        subroutine up8 (nval, nbits, ibay, ibit)
                                                         Decode an 8-byte integer value from within a specified number of bits of an integer array, starting at the bit immediately after a specified bit within the array. More...
                                                         
                                                        subroutine upb (nval, nbits, ibay, ibit)
                                                         Decode an integer value from within a specified number of bits of an integer array, starting at the bit immediately after a specified bit within the array. More...
                                                         
                                                        subroutine upb8 (nval, nbits, ibit, ibay)
                                                         Decode an 8-byte integer value from within a specified number of bits of an integer array, starting at the bit immediately after a specified bit within the array. More...
                                                         
                                                        subroutine upbb (nval, nbits, ibit, ibay)
                                                         Decode an integer value from within a specified number of bits of an integer array, starting at the bit immediately after a specified bit within the array. More...
                                                         
                                                        subroutine upc (chr, nchr, ibay, ibit, cnvnull)
                                                         Decode a character string from within a specified number of bytes of an integer array, starting at the bit immediately after a specified bit within the array. More...
                                                         
                                                        real *8 function ups (ival, node)
                                                         Unpack a real*8 value from an integer by applying the proper scale and reference values. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Decode character strings and integer values.

                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition in file cidecode.F90.

                                                        +

                                                        Function/Subroutine Documentation

                                                        + +

                                                        ◆ iupb()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        recursive integer function iupb (integer, dimension(*), intent(in) mbay,
                                                        integer, intent(in) nbyt,
                                                        integer, intent(in) nbit 
                                                        )
                                                        +
                                                        + +

                                                        Decode an integer value from within a specified number of bits of an integer array, starting with the first bit of a specified byte of the array.

                                                        +
                                                        Parameters
                                                        + + + + +
                                                        mbay- Array containing encoded value
                                                        nbyt- Byte within mbay at whose first bit to begin decoding
                                                        nbit- Number of bits to be decoded, up to a maximum of 32
                                                        +
                                                        +
                                                        +
                                                        Returns
                                                        iupb - Decoded value
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 225 of file cidecode.F90.

                                                        + +

                                                        References upb(), and x84().

                                                        + +

                                                        Referenced by getlens(), iupbs01(), iupbs3(), rdmems(), rtrcptb(), stndrd(), upds3(), and wrdxtb().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ iupm()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        recursive integer function iupm (character*4, intent(in) cbay,
                                                        integer, intent(in) nbits 
                                                        )
                                                        +
                                                        + +

                                                        Decode an integer value from within a specified number of bits of a character string, starting with the first bit of the first byte of the string.

                                                        +

                                                        This function is the logical inverse of subroutine ipkm().

                                                        +
                                                        Parameters
                                                        + + + +
                                                        cbay- String
                                                        nbits- Number of bits from cbay to be decoded, up to a maximum of 32
                                                        +
                                                        +
                                                        +
                                                        Returns
                                                        iupm - Decoded value
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 264 of file cidecode.F90.

                                                        + +

                                                        References bort(), irev(), and x84().

                                                        + +

                                                        Referenced by icbfms(), and wrdxtb().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ up8()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        subroutine up8 (integer*8, intent(out) nval,
                                                        integer, intent(in) nbits,
                                                        integer, dimension(*), intent(in) ibay,
                                                        integer, intent(inout) ibit 
                                                        )
                                                        +
                                                        + +

                                                        Decode an 8-byte integer value from within a specified number of bits of an integer array, starting at the bit immediately after a specified bit within the array.

                                                        +

                                                        This subroutine is similar to subroutine upb8(), except that here ibit is both an input and an output argument, and the overall order of the arguments is different.

                                                        +

                                                        This subroutine is the logical inverse of subroutine pkb8().

                                                        +
                                                        Parameters
                                                        + + + + + +
                                                        ibay- Array containing encoded value
                                                        ibit- Bit pointer within ibay
                                                          +
                                                        • On input, ibit points to the bit within ibay after which to begin decoding nval
                                                        • +
                                                        • On output, ibit points to the last bit of ibay which contained the decoded nval
                                                        • +
                                                        +
                                                        nbits- Number of bits to be decoded
                                                        nval- Decoded value
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        2022-05-06
                                                        + +

                                                        Definition at line 127 of file cidecode.F90.

                                                        + +

                                                        References upb8().

                                                        + +

                                                        Referenced by rdcmps(), ufbtab(), and wrcmps().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ upb()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        subroutine upb (integer, intent(out) nval,
                                                        integer, intent(in) nbits,
                                                        integer, dimension(*), intent(in) ibay,
                                                        integer, intent(inout) ibit 
                                                        )
                                                        +
                                                        + +

                                                        Decode an integer value from within a specified number of bits of an integer array, starting at the bit immediately after a specified bit within the array.

                                                        +

                                                        This subroutine is similar to subroutine upbb(), except that here ibit is both an input and an output argument, and the overall order of the arguments is different.

                                                        +
                                                        Parameters
                                                        + + + + + +
                                                        ibay- Array containing encoded value
                                                        ibit- Bit pointer within ibay
                                                          +
                                                        • On input, ibit points to the bit within ibay after which to begin decoding nval
                                                        • +
                                                        • On output, ibit points to the last bit of ibay which contained the decoded nval
                                                        • +
                                                        +
                                                        nbits- Number of bits to be decoded
                                                        nval- Decoded value
                                                        +
                                                        +
                                                        +
                                                        Remarks
                                                          +
                                                        • This subroutine is the logical inverse of subroutine pkb().
                                                        • +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 201 of file cidecode.F90.

                                                        + +

                                                        References upbb().

                                                        + +

                                                        Referenced by copysb(), iupb(), mvb(), rdcmps(), readsb(), stndrd(), ufbtab(), ufbtam(), upb8(), upc(), and writlc().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ upb8()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        subroutine upb8 (integer*8, intent(out) nval,
                                                        integer, intent(in) nbits,
                                                        integer, intent(in) ibit,
                                                        integer, dimension(*), intent(in) ibay 
                                                        )
                                                        +
                                                        + +

                                                        Decode an 8-byte integer value from within a specified number of bits of an integer array, starting at the bit immediately after a specified bit within the array.

                                                        +

                                                        This subroutine is similar to subroutine up8(), except that here ibit is only an input argument, and the overall order of the arguments is different.

                                                        +

                                                        This subroutine will not work properly if nbits is greater than 64.

                                                        +
                                                        Parameters
                                                        + + + + + +
                                                        ibay- Array containing encoded value
                                                        ibit- Bit within ibay after which to begin decoding nval
                                                        nbits- Number of bits to be decoded
                                                        nval- Decoded value
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        2022-05-06
                                                        + +

                                                        Definition at line 79 of file cidecode.F90.

                                                        + +

                                                        References bort(), and upb().

                                                        + +

                                                        Referenced by rdtree(), ufbget(), ufbtab(), ufbtam(), and up8().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ upbb()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        subroutine upbb (integer, intent(out) nval,
                                                        integer, intent(in) nbits,
                                                        integer, intent(in) ibit,
                                                        integer, dimension(*), intent(in) ibay 
                                                        )
                                                        +
                                                        + +

                                                        Decode an integer value from within a specified number of bits of an integer array, starting at the bit immediately after a specified bit within the array.

                                                        +

                                                        This subroutine is similar to subroutine upb(), except that here ibit is only an input argument, and the overall order of the arguments is different.

                                                        +
                                                        Parameters
                                                        + + + + + +
                                                        ibay- Array containing encoded value
                                                        ibit- Bit within ibay after which to begin decoding nval
                                                        nbits- Number of bits to be decoded
                                                        nval- Decoded value
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 153 of file cidecode.F90.

                                                        + +

                                                        Referenced by rcstpl(), upb(), and writlc().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ upc()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        subroutine upc (character*(*), intent(out) chr,
                                                        integer, intent(in) nchr,
                                                        integer, dimension(*), intent(in) ibay,
                                                        integer, intent(inout) ibit,
                                                        logical, intent(in) cnvnull 
                                                        )
                                                        +
                                                        + +

                                                        Decode a character string from within a specified number of bytes of an integer array, starting at the bit immediately after a specified bit within the array.

                                                        +
                                                        Remarks
                                                          +
                                                        • This subroutine is the logical inverse of subroutine pkc().
                                                        • +
                                                        • On input, there is no requirement that ibit must point to the first bit of a byte within ibay. In other words, the nchr characters to be decoded do not necessarily need to be aligned on byte boundaries within ibay.
                                                        • +
                                                        +
                                                        +
                                                        Parameters
                                                        + + + + + + +
                                                        chr- Decoded string
                                                        nchr- Number of bytes of ibay from within which to decode chr (i.e. the number of characters in chr)
                                                        ibay- Array from which to decode chr
                                                        ibit- Bit pointer within ibay
                                                          +
                                                        • On input, ibit points to the bit within ibay after which to begin decoding chr
                                                        • +
                                                        • On output, ibit points to the last bit of ibay which was decoded
                                                        • +
                                                        +
                                                        cnvnull- .true. if null characters in ibay should be converted to blanks within chr; .false. otherwise
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 25 of file cidecode.F90.

                                                        + +

                                                        References upb().

                                                        + +

                                                        Referenced by rdcmps(), rdtree(), readlc(), stbfdx(), stndrd(), ufbget(), ufbtab(), ufbtam(), and wrcmps().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ ups()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        real*8 function ups (integer*8, intent(in) ival,
                                                        integer, intent(in) node 
                                                        )
                                                        +
                                                        + +

                                                        Unpack a real*8 value from an integer by applying the proper scale and reference values.

                                                        +

                                                        Normally the scale and reference values are obtained from index node of the internal jump/link table arrays isc(*) and irf(*); however, the reference value in irf(*) will be overridden if a 2-03 operator is in effect for this node.

                                                        +

                                                        This function is the logical inverse of function ipks().

                                                        +
                                                        Parameters
                                                        + + + +
                                                        ival- Packed BUFR integer
                                                        node- Index into internal jump/link tables
                                                        +
                                                        +
                                                        +
                                                        Returns
                                                        ups - User value
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2012-03-02
                                                        + +

                                                        Definition at line 318 of file cidecode.F90.

                                                        + +

                                                        References moda_tables::ibt, moda_nrv203::ienrv, moda_nrv203::inodnrv, moda_tables::irf, moda_tables::isc, moda_nrv203::isnrv, moda_nrv203::nnrv, moda_nrv203::nrv, moda_tables::tag, and moda_nrv203::tagnrv.

                                                        + +

                                                        Referenced by rdcmps(), rdtree(), ufbget(), ufbtab(), and ufbtam().

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/cidecode_8F90.js b/previous_versions/v12.1.0/cidecode_8F90.js new file mode 100644 index 000000000..67edb43fe --- /dev/null +++ b/previous_versions/v12.1.0/cidecode_8F90.js @@ -0,0 +1,11 @@ +var cidecode_8F90 = +[ + [ "iupb", "cidecode_8F90.html#a73f371d0af1f65ff546e0484ee97238f", null ], + [ "iupm", "cidecode_8F90.html#a79f34b3a9df0eedb64115bca8c65ebaa", null ], + [ "up8", "cidecode_8F90.html#a9934a3d9c66ea78c7c132066798583f9", null ], + [ "upb", "cidecode_8F90.html#a07dda20577f7480095dff261d11241f8", null ], + [ "upb8", "cidecode_8F90.html#a25ce428c1ae2bcb567fc2762fabf4317", null ], + [ "upbb", "cidecode_8F90.html#a243e1ab84f5a36179c0ac05056574257", null ], + [ "upc", "cidecode_8F90.html#afef1c199ce8e69b085435b74d68cd337", null ], + [ "ups", "cidecode_8F90.html#a414b81ace5368c9bb43fdd19442ebaa5", null ] +]; \ No newline at end of file diff --git a/previous_versions/v12.1.0/cidecode_8F90_source.html b/previous_versions/v12.1.0/cidecode_8F90_source.html new file mode 100644 index 000000000..64e33da6e --- /dev/null +++ b/previous_versions/v12.1.0/cidecode_8F90_source.html @@ -0,0 +1,363 @@ + + + + + + + +NCEPLIBS-bufr: cidecode.F90 Source File + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        +
                                                        cidecode.F90
                                                        +
                                                        +
                                                        +Go to the documentation of this file.
                                                        1 
                                                        +
                                                        5 
                                                        +
                                                        25 subroutine upc(chr,nchr,ibay,ibit,cnvnull)
                                                        +
                                                        26 
                                                        +
                                                        27  use modv_vars, only: nbytw, iordle, iordbe
                                                        +
                                                        28 
                                                        +
                                                        29  implicit none
                                                        +
                                                        30 
                                                        +
                                                        31  character*(*), intent(out) :: chr
                                                        +
                                                        32  character*1 cval(8)
                                                        +
                                                        33 
                                                        +
                                                        34  integer, intent(in) :: nchr, ibay(*)
                                                        +
                                                        35  integer, intent(inout) :: ibit
                                                        +
                                                        36  integer ival(2), lb, i, numchr
                                                        +
                                                        37 
                                                        +
                                                        38  logical, intent(in) :: cnvnull
                                                        +
                                                        39 
                                                        +
                                                        40  equivalence(cval,ival)
                                                        +
                                                        41 
                                                        +
                                                        42  ! Set lb to point to the "low-order" (i.e. least significant) byte within a machine word.
                                                        +
                                                        43 
                                                        +
                                                        44 #ifdef BIG_ENDIAN
                                                        +
                                                        45  lb = iordbe(nbytw)
                                                        +
                                                        46 #else
                                                        +
                                                        47  lb = iordle(nbytw)
                                                        +
                                                        48 #endif
                                                        +
                                                        49 
                                                        +
                                                        50  cval = ' '
                                                        +
                                                        51 
                                                        +
                                                        52  numchr = min(nchr,len(chr))
                                                        +
                                                        53  do i=1,numchr
                                                        +
                                                        54  call upb(ival(1),8,ibay,ibit)
                                                        +
                                                        55  if((ival(1)==0).and.(cnvnull)) then
                                                        +
                                                        56  chr(i:i) = ' '
                                                        +
                                                        57  else
                                                        +
                                                        58  chr(i:i) = cval(lb)
                                                        +
                                                        59  endif
                                                        +
                                                        60  enddo
                                                        +
                                                        61 
                                                        +
                                                        62  return
                                                        +
                                                        63 end subroutine upc
                                                        +
                                                        64 
                                                        +
                                                        79 subroutine upb8(nval,nbits,ibit,ibay)
                                                        +
                                                        80 
                                                        +
                                                        81  use modv_vars, only: nbitw
                                                        +
                                                        82 
                                                        +
                                                        83  implicit none
                                                        +
                                                        84 
                                                        +
                                                        85  integer, intent(in) :: nbits,ibit,ibay(*)
                                                        +
                                                        86  integer*8, intent(out) :: nval
                                                        +
                                                        87 
                                                        +
                                                        88  integer :: nvals(2), jbit, ival
                                                        +
                                                        89  integer*8 :: nval8
                                                        +
                                                        90 
                                                        +
                                                        91  equivalence(nval8,nvals)
                                                        +
                                                        92 
                                                        +
                                                        93  if(nbits<0) then
                                                        +
                                                        94  call bort('BUFRLIB: UPB8 - nbits < zero !!!!!')
                                                        +
                                                        95  elseif(nbits<=32) then
                                                        +
                                                        96  jbit=ibit; ival=0
                                                        +
                                                        97  call upb(ival,nbits,ibay,jbit)
                                                        +
                                                        98  nval=ival
                                                        +
                                                        99  elseif(nbits<=64) then
                                                        +
                                                        100  jbit=ibit; nvals=0
                                                        +
                                                        101  call upb(nvals(2),max(nbits-nbitw,0),ibay,jbit)
                                                        +
                                                        102  call upb(nvals(1),min(nbitw,nbits ),ibay,jbit)
                                                        +
                                                        103  nval=nval8
                                                        +
                                                        104  else
                                                        +
                                                        105  nval=0
                                                        +
                                                        106  endif
                                                        +
                                                        107 
                                                        +
                                                        108  return
                                                        +
                                                        109 end subroutine upb8
                                                        +
                                                        110 
                                                        +
                                                        127 subroutine up8(nval,nbits,ibay,ibit)
                                                        +
                                                        128 
                                                        +
                                                        129  implicit none
                                                        +
                                                        130 
                                                        +
                                                        131  integer, intent(in) :: nbits, ibay(*)
                                                        +
                                                        132  integer, intent(inout) :: ibit
                                                        +
                                                        133  integer*8, intent(out) :: nval
                                                        +
                                                        134 
                                                        +
                                                        135  call upb8(nval,nbits,ibit,ibay)
                                                        +
                                                        136  ibit = ibit+nbits
                                                        +
                                                        137 
                                                        +
                                                        138  return
                                                        +
                                                        139 end subroutine up8
                                                        +
                                                        140 
                                                        +
                                                        153 subroutine upbb(nval,nbits,ibit,ibay)
                                                        +
                                                        154 
                                                        +
                                                        155  use modv_vars, only: nbitw
                                                        +
                                                        156 
                                                        +
                                                        157  implicit none
                                                        +
                                                        158 
                                                        +
                                                        159  integer, intent(in) :: ibay(*), ibit, nbits
                                                        +
                                                        160  integer, intent(out) :: nval
                                                        +
                                                        161  integer nwd, nbt, int, jnt, irev, lbt
                                                        +
                                                        162 
                                                        +
                                                        163  ! If nbits=0, then just set nval=0 and return
                                                        +
                                                        164 
                                                        +
                                                        165  if(nbits==0) then
                                                        +
                                                        166  nval=0
                                                        +
                                                        167  return
                                                        +
                                                        168  endif
                                                        +
                                                        169 
                                                        +
                                                        170  nwd = ibit/nbitw + 1
                                                        +
                                                        171  nbt = mod(ibit,nbitw)
                                                        +
                                                        172  int = ishft(irev(ibay(nwd)),nbt)
                                                        +
                                                        173  int = ishft(int,nbits-nbitw)
                                                        +
                                                        174  lbt = nbt+nbits
                                                        +
                                                        175  if(lbt>nbitw) then
                                                        +
                                                        176  jnt = irev(ibay(nwd+1))
                                                        +
                                                        177  int = ior(int,ishft(jnt,lbt-2*nbitw))
                                                        +
                                                        178  endif
                                                        +
                                                        179  nval = int
                                                        +
                                                        180 
                                                        +
                                                        181  return
                                                        +
                                                        182 end subroutine upbb
                                                        +
                                                        183 
                                                        +
                                                        201 subroutine upb(nval,nbits,ibay,ibit)
                                                        +
                                                        202 
                                                        +
                                                        203  implicit none
                                                        +
                                                        204 
                                                        +
                                                        205  integer, intent(in) :: ibay(*), nbits
                                                        +
                                                        206  integer, intent(out) :: nval
                                                        +
                                                        207  integer, intent(inout) :: ibit
                                                        +
                                                        208 
                                                        +
                                                        209  call upbb(nval,nbits,ibit,ibay)
                                                        +
                                                        210  ibit = ibit+nbits
                                                        +
                                                        211 
                                                        +
                                                        212  return
                                                        +
                                                        213 end subroutine upb
                                                        +
                                                        214 
                                                        +
                                                        225 recursive integer function iupb(mbay,nbyt,nbit) result(iret)
                                                        +
                                                        226 
                                                        +
                                                        227  use modv_vars, only: im8b
                                                        +
                                                        228 
                                                        +
                                                        229  implicit none
                                                        +
                                                        230 
                                                        +
                                                        231  integer, intent(in) :: mbay(*), nbit, nbyt
                                                        +
                                                        232  integer my_nbit, my_nbyt, mbit
                                                        +
                                                        233 
                                                        +
                                                        234  ! Check for I8 integers.
                                                        +
                                                        235 
                                                        +
                                                        236  if(im8b) then
                                                        +
                                                        237  im8b=.false.
                                                        +
                                                        238 
                                                        +
                                                        239  call x84(nbyt,my_nbyt,1)
                                                        +
                                                        240  call x84(nbit,my_nbit,1)
                                                        +
                                                        241  iret = iupb(mbay,my_nbyt,my_nbit)
                                                        +
                                                        242 
                                                        +
                                                        243  im8b=.true.
                                                        +
                                                        244  return
                                                        +
                                                        245  endif
                                                        +
                                                        246 
                                                        +
                                                        247  mbit = (nbyt-1)*8
                                                        +
                                                        248  call upb(iret,nbit,mbay,mbit)
                                                        +
                                                        249 
                                                        +
                                                        250  return
                                                        +
                                                        251 end function iupb
                                                        +
                                                        252 
                                                        +
                                                        264 recursive integer function iupm(cbay,nbits) result(iret)
                                                        +
                                                        265 
                                                        +
                                                        266  use modv_vars, only: im8b, nbitw
                                                        +
                                                        267 
                                                        +
                                                        268  implicit none
                                                        +
                                                        269 
                                                        +
                                                        270  character*4, intent(in) :: cbay
                                                        +
                                                        271  character*4 cint
                                                        +
                                                        272  character*128 bort_str
                                                        +
                                                        273 
                                                        +
                                                        274  integer, intent(in) :: nbits
                                                        +
                                                        275  integer my_nbits, int, irev
                                                        +
                                                        276 
                                                        +
                                                        277  equivalence(cint,int)
                                                        +
                                                        278 
                                                        +
                                                        279  ! Check for I8 integers.
                                                        +
                                                        280 
                                                        +
                                                        281  if(im8b) then
                                                        +
                                                        282  im8b=.false.
                                                        +
                                                        283 
                                                        +
                                                        284  call x84(nbits,my_nbits,1)
                                                        +
                                                        285  iret = iupm(cbay,my_nbits)
                                                        +
                                                        286 
                                                        +
                                                        287  im8b=.true.
                                                        +
                                                        288  return
                                                        +
                                                        289  endif
                                                        +
                                                        290 
                                                        +
                                                        291  iret = 0
                                                        +
                                                        292  if(nbits>nbitw) then
                                                        +
                                                        293  write(bort_str,'("BUFRLIB: IUPM - NUMBER OF BITS BEING UNPACKED'// &
                                                        +
                                                        294  ', NBITS (",I4,"), IS > THE INTEGER WORD LENGTH ON THIS MACHINE, NBITW (",I3,")")') nbits,nbitw
                                                        +
                                                        295  call bort(bort_str)
                                                        +
                                                        296  endif
                                                        +
                                                        297  cint = cbay
                                                        +
                                                        298  int = irev(int)
                                                        +
                                                        299  iret = ishft(int,nbits-nbitw)
                                                        +
                                                        300 
                                                        +
                                                        301  return
                                                        +
                                                        302 end function iupm
                                                        +
                                                        303 
                                                        +
                                                        318 real*8 function ups(ival,node) result(r8ret)
                                                        +
                                                        319 
                                                        +
                                                        320  use moda_tables
                                                        +
                                                        321  use moda_nrv203
                                                        +
                                                        322 
                                                        +
                                                        323  implicit none
                                                        +
                                                        324 
                                                        +
                                                        325  integer*8, intent(in) :: ival
                                                        +
                                                        326  integer*8 imask
                                                        +
                                                        327  integer, intent(in) :: node
                                                        +
                                                        328  integer jj
                                                        +
                                                        329 
                                                        +
                                                        330  real*8, parameter :: ten = 10.
                                                        +
                                                        331 
                                                        +
                                                        332  r8ret = ( ival + irf(node) ) * ten**(-isc(node))
                                                        +
                                                        333 
                                                        +
                                                        334  if ( nnrv > 0 ) then
                                                        +
                                                        335  ! There are redefined reference values in the jump/link table, so we need to check if this node is affected by any of them.
                                                        +
                                                        336  do jj = 1, nnrv
                                                        +
                                                        337  if ( node == inodnrv(jj) ) then
                                                        +
                                                        338  ! This node contains a redefined reference value. Per the rules of BUFR, negative values may be encoded as positive
                                                        +
                                                        339  ! integers with the left-most bit set to 1.
                                                        +
                                                        340  imask = 2_8**(ibt(node)-1)
                                                        +
                                                        341  if ( iand(ival,imask) > 0 ) then
                                                        +
                                                        342  nrv(jj) = (-1) * ( ival - imask )
                                                        +
                                                        343  else
                                                        +
                                                        344  nrv(jj) = ival
                                                        +
                                                        345  end if
                                                        +
                                                        346  r8ret = nrv(jj)
                                                        +
                                                        347  return
                                                        +
                                                        348  else if ( ( tag(node)(1:8) == tagnrv(jj) ) .and. ( node >= isnrv(jj) ) .and. ( node <= ienrv(jj) ) ) then
                                                        +
                                                        349  ! The corresponding redefinded reference value needs to be used when decoding this value.
                                                        +
                                                        350  r8ret = ( ival + nrv(jj) ) * ten**(-isc(node))
                                                        +
                                                        351  return
                                                        +
                                                        352  end if
                                                        +
                                                        353  end do
                                                        +
                                                        354  end if
                                                        +
                                                        355 
                                                        +
                                                        356  return
                                                        +
                                                        357 end function ups
                                                        +
                                                        subroutine bort(str)
                                                        Log an error message, then abort the application program.
                                                        Definition: borts.F90:15
                                                        +
                                                        subroutine upb(nval, nbits, ibay, ibit)
                                                        Decode an integer value from within a specified number of bits of an integer array,...
                                                        Definition: cidecode.F90:202
                                                        +
                                                        subroutine upbb(nval, nbits, ibit, ibay)
                                                        Decode an integer value from within a specified number of bits of an integer array,...
                                                        Definition: cidecode.F90:154
                                                        +
                                                        subroutine upb8(nval, nbits, ibit, ibay)
                                                        Decode an 8-byte integer value from within a specified number of bits of an integer array,...
                                                        Definition: cidecode.F90:80
                                                        +
                                                        real *8 function ups(ival, node)
                                                        Unpack a real*8 value from an integer by applying the proper scale and reference values.
                                                        Definition: cidecode.F90:319
                                                        +
                                                        recursive integer function iupb(mbay, nbyt, nbit)
                                                        Decode an integer value from within a specified number of bits of an integer array,...
                                                        Definition: cidecode.F90:226
                                                        +
                                                        recursive integer function iupm(cbay, nbits)
                                                        Decode an integer value from within a specified number of bits of a character string,...
                                                        Definition: cidecode.F90:265
                                                        +
                                                        subroutine up8(nval, nbits, ibay, ibit)
                                                        Decode an 8-byte integer value from within a specified number of bits of an integer array,...
                                                        Definition: cidecode.F90:128
                                                        +
                                                        subroutine upc(chr, nchr, ibay, ibit, cnvnull)
                                                        Decode a character string from within a specified number of bytes of an integer array,...
                                                        Definition: cidecode.F90:26
                                                        +
                                                        integer function irev(n)
                                                        Return a copy of an integer value with the bytes possibly reversed.
                                                        Definition: misc.F90:257
                                                        +
                                                        Declare arrays and variables for use with any 2-03-YYY (change reference value) operators present wit...
                                                        +
                                                        integer, dimension(:), allocatable ienrv
                                                        End of entry range in jump/link table, within which the corresponding new reference value in nrv will...
                                                        +
                                                        character *8, dimension(:), allocatable tagnrv
                                                        Table B mnemonic to which the corresponding new reference value in nrv applies.
                                                        +
                                                        integer, dimension(:), allocatable isnrv
                                                        Start of entry range in jump/link table, within which the corresponding new reference value in nrv wi...
                                                        +
                                                        integer nnrv
                                                        Number of entries in the jump/link table which contain new reference values (up to a maximum of mxnrv...
                                                        +
                                                        integer *8, dimension(:), allocatable nrv
                                                        New reference values corresponding to inodnrv.
                                                        +
                                                        integer, dimension(:), allocatable inodnrv
                                                        Entries within jump/link table which contain new reference values.
                                                        +
                                                        Declare arrays and variables used to store the internal jump/link table.
                                                        +
                                                        integer, dimension(:), allocatable irf
                                                        Reference values corresponding to tag and typ:
                                                        +
                                                        integer, dimension(:), allocatable isc
                                                        Scale factors corresponding to tag and typ:
                                                        +
                                                        integer, dimension(:), allocatable ibt
                                                        Bit widths corresponding to tag and typ:
                                                        +
                                                        character *10, dimension(:), allocatable tag
                                                        Mnemonics in the jump/link table.
                                                        +
                                                        subroutine x84(iin8, iout4, nval)
                                                        Encode one or more 8-byte integer values as 4-byte integer values.
                                                        Definition: x4884.F90:65
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/ciencode_8F90.html b/previous_versions/v12.1.0/ciencode_8F90.html new file mode 100644 index 000000000..a2d6d9b01 --- /dev/null +++ b/previous_versions/v12.1.0/ciencode_8F90.html @@ -0,0 +1,433 @@ + + + + + + + +NCEPLIBS-bufr: ciencode.F90 File Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        ciencode.F90 File Reference
                                                        +
                                                        +
                                                        + +

                                                        Encode character strings and integer values. +More...

                                                        + +

                                                        Go to the source code of this file.

                                                        + + + + + + + + + + + + + + + + + +

                                                        +Functions/Subroutines

                                                        recursive subroutine ipkm (cbay, nbyt, n)
                                                         Encode an integer value within a specified number of bytes of a character string, up to a maximum of 4 bytes. More...
                                                         
                                                        integer *8 function ipks (val, node)
                                                         Pack a real*8 value into an integer by applying the proper scale and reference values. More...
                                                         
                                                        subroutine pkb (nval, nbits, ibay, ibit)
                                                         Encode an integer value within a specified number of bits of an integer array, starting at the bit immediately after a specified bit within the array. More...
                                                         
                                                        subroutine pkb8 (nval, nbits, ibay, ibit)
                                                         Encode an 8-byte integer value within a specified number of bits of an integer array, starting at the bit immediately after a specified bit within the array. More...
                                                         
                                                        subroutine pkc (chr, nchr, ibay, ibit)
                                                         Encode a character string within a specified number of bytes of an integer array, starting at the bit immediately after a specified bit within the array. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Encode character strings and integer values.

                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition in file ciencode.F90.

                                                        +

                                                        Function/Subroutine Documentation

                                                        + +

                                                        ◆ ipkm()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        recursive subroutine ipkm (character*(*), intent(out) cbay,
                                                        integer, intent(in) nbyt,
                                                        integer, intent(in) n 
                                                        )
                                                        +
                                                        + +

                                                        Encode an integer value within a specified number of bytes of a character string, up to a maximum of 4 bytes.

                                                        +

                                                        This subroutine is the logical inverse of subroutine iupm().

                                                        +
                                                        Parameters
                                                        + + + + +
                                                        n- Value to be encoded
                                                        nbyt- Number of bytes of cbay (up to a maximum of 4) within which to encode n
                                                        cbay- String of length nbyt bytes containing encoded integer n
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 193 of file ciencode.F90.

                                                        + +

                                                        References bort(), irev(), and x84().

                                                        + +

                                                        Referenced by bfrini(), pktdd(), readlc(), wrcmps(), and wrtree().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ ipks()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        integer*8 function ipks (real*8, intent(in) val,
                                                        integer, intent(in) node 
                                                        )
                                                        +
                                                        + +

                                                        Pack a real*8 value into an integer by applying the proper scale and reference values.

                                                        +

                                                        Normally the scale and reference values are obtained from index node of the internal jump/link table arrays isc(*) and irf(*); however, the reference value in irf(*) will be overridden if a 2-03 operator is in effect for this node.

                                                        +
                                                        Parameters
                                                        + + + +
                                                        val- User value
                                                        node- Index into internal jump/link tables
                                                        +
                                                        +
                                                        +
                                                        Returns
                                                        ipks - Packed BUFR integer
                                                        +
                                                        Remarks
                                                          +
                                                        • This function is the logical inverse of function ups().
                                                        • +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2012-03-02
                                                        + +

                                                        Definition at line 251 of file ciencode.F90.

                                                        + +

                                                        References moda_tables::ibt, moda_nrv203::ienrv, moda_nrv203::inodnrv, moda_tables::irf, moda_tables::isc, moda_nrv203::isnrv, moda_nrv203::nnrv, moda_nrv203::nrv, moda_tables::tag, and moda_nrv203::tagnrv.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ pkb()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        subroutine pkb (integer, intent(in) nval,
                                                        integer, intent(in) nbits,
                                                        integer, dimension(*), intent(out) ibay,
                                                        integer, intent(inout) ibit 
                                                        )
                                                        +
                                                        + +

                                                        Encode an integer value within a specified number of bits of an integer array, starting at the bit immediately after a specified bit within the array.

                                                        +
                                                        Parameters
                                                        + + + + + +
                                                        nval- Value to be encoded
                                                        nbits- Number of bits of ibay within which to encode nval
                                                        ibay- Array containing encoded nval
                                                        ibit- Bit pointer within ibay
                                                          +
                                                        • On input, ibit points to the bit within ibay after which to begin encoding nval
                                                        • +
                                                        • On output, ibit points to the last bit of ibay which contains the encoded nval
                                                        • +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        Remarks
                                                          +
                                                        • This subroutine is the logical inverse of subroutine upb().
                                                        • +
                                                        • This subroutine will not work properly if nbits is greater than 32.
                                                        • +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 139 of file ciencode.F90.

                                                        + +

                                                        References bort().

                                                        + +

                                                        Referenced by atrcpt(), cmsgini(), cnved4(), cpyupd(), dxmini(), msgini(), msgupd(), msgwrt(), mvb(), pad(), padmsg(), pkb8(), pkbs1(), stndrd(), wrcmps(), and wrdxtb().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ pkb8()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        subroutine pkb8 (integer*8, intent(in) nval,
                                                        integer, intent(in) nbits,
                                                        integer, dimension(*), intent(out) ibay,
                                                        integer, intent(inout) ibit 
                                                        )
                                                        +
                                                        + +

                                                        Encode an 8-byte integer value within a specified number of bits of an integer array, starting at the bit immediately after a specified bit within the array.

                                                        +

                                                        This subroutine will not work properly if nbits is greater than 64.

                                                        +

                                                        This subroutine is the logical inverse of subroutine up8().

                                                        +
                                                        Parameters
                                                        + + + + + +
                                                        nval- Value to be encoded
                                                        nbits- Number of bits of ibay (up to a maximum of 64) within which to encode nval
                                                        ibay- Array containing encoded nval
                                                        ibit- Bit pointer within ibay
                                                          +
                                                        • On input, ibit points to the bit within ibay after which to begin encoding nval
                                                        • +
                                                        • On output, ibit points to the last bit of ibay which contains the encoded nval
                                                        • +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        2022-05-06
                                                        + +

                                                        Definition at line 96 of file ciencode.F90.

                                                        + +

                                                        References bort(), and pkb().

                                                        + +

                                                        Referenced by wrcmps(), and wrtree().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ pkc()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        subroutine pkc (character*(*), intent(in) chr,
                                                        integer, intent(in) nchr,
                                                        integer, dimension(*), intent(out) ibay,
                                                        integer, intent(inout) ibit 
                                                        )
                                                        +
                                                        + +

                                                        Encode a character string within a specified number of bytes of an integer array, starting at the bit immediately after a specified bit within the array.

                                                        +
                                                        Remarks
                                                          +
                                                        • This subroutine is the logical inverse of subroutine upc().
                                                        • +
                                                        • On input, there is no requirement that ibit must point to the first bit of a byte within ibay. Correspondingly, on output there is no guarantee that the nchr characters of chr will be aligned on byte boundaries when encoded within ibay.
                                                        • +
                                                        +
                                                        +
                                                        Parameters
                                                        + + + + + +
                                                        chr- String to be encoded
                                                        nchr- Number of bytes of ibay within which to encode chr (i.e. the number of characters in chr)
                                                        ibay- Array containing encoded chr
                                                        ibit- Bit pointer within ibay
                                                          +
                                                        • On input, ibit points to the bit within ibay after which to begin encoding chr
                                                        • +
                                                        • On output, ibit points to the last bit of ibay which contains the encoded chr
                                                        • +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 24 of file ciencode.F90.

                                                        + +

                                                        Referenced by cmsgini(), dxmini(), msgini(), msgwrt(), stndrd(), wrcmps(), wrdxtb(), writlc(), and wrtree().

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/ciencode_8F90.js b/previous_versions/v12.1.0/ciencode_8F90.js new file mode 100644 index 000000000..256bbc153 --- /dev/null +++ b/previous_versions/v12.1.0/ciencode_8F90.js @@ -0,0 +1,8 @@ +var ciencode_8F90 = +[ + [ "ipkm", "ciencode_8F90.html#a8e976b63f679f03590d7c3cb5b5dee59", null ], + [ "ipks", "ciencode_8F90.html#a7501045242bc6174585e20be99d3d269", null ], + [ "pkb", "ciencode_8F90.html#a8f795cd39c8f939b486407c65d8959c0", null ], + [ "pkb8", "ciencode_8F90.html#ad41a6d2e1a35c122af15bbc6dffe8eaa", null ], + [ "pkc", "ciencode_8F90.html#a52ae4b28f79718d9b6631d2f7a5a7160", null ] +]; \ No newline at end of file diff --git a/previous_versions/v12.1.0/ciencode_8F90_source.html b/previous_versions/v12.1.0/ciencode_8F90_source.html new file mode 100644 index 000000000..6d3fd1408 --- /dev/null +++ b/previous_versions/v12.1.0/ciencode_8F90_source.html @@ -0,0 +1,332 @@ + + + + + + + +NCEPLIBS-bufr: ciencode.F90 Source File + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        +
                                                        ciencode.F90
                                                        +
                                                        +
                                                        +Go to the documentation of this file.
                                                        1 
                                                        +
                                                        5 
                                                        +
                                                        24 subroutine pkc(chr,nchr,ibay,ibit)
                                                        +
                                                        25 
                                                        +
                                                        26  use modv_vars, only: nbitw, nbytw, iordle, iordbe
                                                        +
                                                        27 
                                                        +
                                                        28  implicit none
                                                        +
                                                        29 
                                                        +
                                                        30  character*(*), intent(in) :: chr
                                                        +
                                                        31  character*1 cval(8)
                                                        +
                                                        32 
                                                        +
                                                        33  integer, intent(in) :: nchr
                                                        +
                                                        34  integer, intent(out) :: ibay(*)
                                                        +
                                                        35  integer, intent(inout) :: ibit
                                                        +
                                                        36  integer ival(2), lb, i, nwd, nbt, nbit, int, msk, irev
                                                        +
                                                        37 
                                                        +
                                                        38  equivalence(cval,ival)
                                                        +
                                                        39 
                                                        +
                                                        40  ! Set lb to point to the "low-order" (i.e. least significant) byte within a machine word.
                                                        +
                                                        41 
                                                        +
                                                        42 #ifdef BIG_ENDIAN
                                                        +
                                                        43  lb = iordbe(nbytw)
                                                        +
                                                        44 #else
                                                        +
                                                        45  lb = iordle(nbytw)
                                                        +
                                                        46 #endif
                                                        +
                                                        47 
                                                        +
                                                        48  ival(1) = 0
                                                        +
                                                        49  nbit = 8
                                                        +
                                                        50 
                                                        +
                                                        51  do i=1,nchr
                                                        +
                                                        52  if(i<=len(chr)) then
                                                        +
                                                        53  cval(lb) = chr(i:i)
                                                        +
                                                        54  else
                                                        +
                                                        55  cval(lb) = ' '
                                                        +
                                                        56  endif
                                                        +
                                                        57 
                                                        +
                                                        58  nwd = ibit/nbitw + 1
                                                        +
                                                        59  nbt = mod(ibit,nbitw)
                                                        +
                                                        60  int = ishft(ival(1),nbitw-nbit)
                                                        +
                                                        61  int = ishft(int,-nbt)
                                                        +
                                                        62  msk = ishft( -1,nbitw-nbit)
                                                        +
                                                        63  msk = ishft(msk,-nbt)
                                                        +
                                                        64  ibay(nwd) = irev(ior(iand(irev(ibay(nwd)),not(msk)),int))
                                                        +
                                                        65  if(nbt+nbit>nbitw) then
                                                        +
                                                        66 
                                                        +
                                                        67  ! This character will not fit within the current word (i.e. array member) of ibay, because there
                                                        +
                                                        68  ! are less than 8 bits of space left. Store as many bits as will fit within the current
                                                        +
                                                        69  ! word and then store the remaining bits within the next word.
                                                        +
                                                        70 
                                                        +
                                                        71  int = ishft(ival(1),2*nbitw-(nbt+nbit))
                                                        +
                                                        72  msk = ishft( -1,2*nbitw-(nbt+nbit))
                                                        +
                                                        73  ibay(nwd+1) = irev(ior(iand(irev(ibay(nwd+1)),not(msk)),int))
                                                        +
                                                        74  endif
                                                        +
                                                        75  ibit = ibit + nbit
                                                        +
                                                        76  enddo
                                                        +
                                                        77 
                                                        +
                                                        78  return
                                                        +
                                                        79 end subroutine pkc
                                                        +
                                                        80 
                                                        +
                                                        96 subroutine pkb8(nval,nbits,ibay,ibit)
                                                        +
                                                        97 
                                                        +
                                                        98  use modv_vars, only: nbitw
                                                        +
                                                        99 
                                                        +
                                                        100  implicit none
                                                        +
                                                        101 
                                                        +
                                                        102  integer*8, intent(in) :: nval
                                                        +
                                                        103  integer, intent(in) :: nbits
                                                        +
                                                        104  integer, intent(out) :: ibay(*)
                                                        +
                                                        105  integer, intent(inout) :: ibit
                                                        +
                                                        106 
                                                        +
                                                        107  integer*8 :: nval8
                                                        +
                                                        108  integer :: nval4, nvals(2)
                                                        +
                                                        109 
                                                        +
                                                        110  equivalence(nval8,nvals)
                                                        +
                                                        111 
                                                        +
                                                        112  if(nbits<0) call bort('bufrlib: pkb8 - nbits < zero !!!!!')
                                                        +
                                                        113  if(nbits>64) call bort('bufrlib: pkb8 - nbits > 64 !!!!!')
                                                        +
                                                        114 
                                                        +
                                                        115  nval8=nval
                                                        +
                                                        116  nval4=nvals(2)
                                                        +
                                                        117  call pkb(nval4,max(nbits-nbitw,0),ibay,ibit)
                                                        +
                                                        118  nval4=nvals(1)
                                                        +
                                                        119  call pkb(nval4,min(nbits,nbitw ),ibay,ibit)
                                                        +
                                                        120 
                                                        +
                                                        121  return
                                                        +
                                                        122 end subroutine pkb8
                                                        +
                                                        123 
                                                        +
                                                        139 subroutine pkb(nval,nbits,ibay,ibit)
                                                        +
                                                        140 
                                                        +
                                                        141  use modv_vars, only: nbitw
                                                        +
                                                        142 
                                                        +
                                                        143  implicit none
                                                        +
                                                        144 
                                                        +
                                                        145  integer, intent(in) :: nval, nbits
                                                        +
                                                        146  integer, intent(out) :: ibay(*)
                                                        +
                                                        147  integer, intent(inout) :: ibit
                                                        +
                                                        148  integer nwd, nbt, ival, int, msk, irev
                                                        +
                                                        149 
                                                        +
                                                        150  character*156 bort_str
                                                        +
                                                        151 
                                                        +
                                                        152  if(nbits>nbitw) then
                                                        +
                                                        153  write(bort_str,'("BUFRLIB: PKB - NUMBER OF BITS BEING PACKED '// &
                                                        +
                                                        154  ', NBITS (",I4,"), IS > THE INTEGER WORD LENGTH ON THIS MACHINE, NBITW (",I3,")")') nbits,nbitw
                                                        +
                                                        155  call bort(bort_str)
                                                        +
                                                        156  endif
                                                        +
                                                        157 
                                                        +
                                                        158  nwd = ibit/nbitw + 1
                                                        +
                                                        159  nbt = mod(ibit,nbitw)
                                                        +
                                                        160  ival = nval
                                                        +
                                                        161  if(ishft(ival,-nbits)>0) ival = -1
                                                        +
                                                        162  int = ishft(ival,nbitw-nbits)
                                                        +
                                                        163  int = ishft(int,-nbt)
                                                        +
                                                        164  msk = ishft(-1,nbitw-nbits)
                                                        +
                                                        165  msk = ishft(msk,-nbt)
                                                        +
                                                        166  ibay(nwd) = irev(ior(iand(irev(ibay(nwd)),not(msk)),int))
                                                        +
                                                        167  if(nbt+nbits>nbitw) then
                                                        +
                                                        168 
                                                        +
                                                        169  ! There are less than nbits bits remaining within the current word (i.e. array member) of ibay,
                                                        +
                                                        170  ! so store as many bits as will fit within the current word and then store the remaining bits
                                                        +
                                                        171  ! within the next word.
                                                        +
                                                        172 
                                                        +
                                                        173  int = ishft(ival,2*nbitw-(nbt+nbits))
                                                        +
                                                        174  msk = ishft( -1,2*nbitw-(nbt+nbits))
                                                        +
                                                        175  ibay(nwd+1) = irev(ior(iand(irev(ibay(nwd+1)),not(msk)),int))
                                                        +
                                                        176  endif
                                                        +
                                                        177 
                                                        +
                                                        178  ibit = ibit + nbits
                                                        +
                                                        179 
                                                        +
                                                        180  return
                                                        +
                                                        181 end subroutine pkb
                                                        +
                                                        182 
                                                        +
                                                        193 recursive subroutine ipkm(cbay,nbyt,n)
                                                        +
                                                        194 
                                                        +
                                                        195  use modv_vars, only: im8b, nbytw
                                                        +
                                                        196 
                                                        +
                                                        197  implicit none
                                                        +
                                                        198 
                                                        +
                                                        199  integer, intent(in) :: n, nbyt
                                                        +
                                                        200  integer my_n, my_nbyt, int, irev, i
                                                        +
                                                        201 
                                                        +
                                                        202  character*(*), intent(out) :: cbay
                                                        +
                                                        203  character*128 bort_str
                                                        +
                                                        204  character*4 cint
                                                        +
                                                        205 
                                                        +
                                                        206  equivalence(cint,int)
                                                        +
                                                        207 
                                                        +
                                                        208  ! Check for I8 integers.
                                                        +
                                                        209 
                                                        +
                                                        210  if(im8b) then
                                                        +
                                                        211  im8b=.false.
                                                        +
                                                        212 
                                                        +
                                                        213  call x84(n,my_n,1)
                                                        +
                                                        214  call x84(nbyt,my_nbyt,1)
                                                        +
                                                        215  call ipkm(cbay,my_nbyt,my_n)
                                                        +
                                                        216 
                                                        +
                                                        217  im8b=.true.
                                                        +
                                                        218  return
                                                        +
                                                        219  endif
                                                        +
                                                        220 
                                                        +
                                                        221  if(nbyt>nbytw) then
                                                        +
                                                        222  write(bort_str,'("BUFRLIB: IPKM - NUMBER OF BYTES BEING PACKED '// &
                                                        +
                                                        223  ', NBYT (",I4,"), IS > THE INTEGER WORD LENGTH ON THIS MACHINE, NBYTW (",I3,")")') nbyt,nbytw
                                                        +
                                                        224  call bort(bort_str)
                                                        +
                                                        225  endif
                                                        +
                                                        226 
                                                        +
                                                        227  int = irev(ishft(n,(nbytw-nbyt)*8))
                                                        +
                                                        228  do i=1,nbyt
                                                        +
                                                        229  cbay(i:i) = cint(i:i)
                                                        +
                                                        230  enddo
                                                        +
                                                        231 
                                                        +
                                                        232  return
                                                        +
                                                        233 end subroutine ipkm
                                                        +
                                                        234 
                                                        +
                                                        251 integer*8 function ipks(val,node) result(i8ret)
                                                        +
                                                        252 
                                                        +
                                                        253  use moda_tables
                                                        +
                                                        254  use moda_nrv203
                                                        +
                                                        255 
                                                        +
                                                        256  implicit none
                                                        +
                                                        257 
                                                        +
                                                        258  integer*8 imask
                                                        +
                                                        259  integer, intent(in) :: node
                                                        +
                                                        260  integer jj
                                                        +
                                                        261 
                                                        +
                                                        262  real*8, parameter :: ten = 10.
                                                        +
                                                        263  real*8, intent(in) :: val
                                                        +
                                                        264 
                                                        +
                                                        265  i8ret = nint(val * ten**isc(node),8) - irf(node)
                                                        +
                                                        266 
                                                        +
                                                        267  if ( nnrv > 0 ) then
                                                        +
                                                        268  ! There are redefined reference values in the jump/link table, so we need to check if this node is affected by any of them.
                                                        +
                                                        269  do jj = 1, nnrv
                                                        +
                                                        270  if ( node == inodnrv(jj) ) then
                                                        +
                                                        271  ! This node contains a redefined reference value. Per the rules of BUFR, negative values should be encoded as positive
                                                        +
                                                        272  ! integers with the left-most bit set to 1.
                                                        +
                                                        273  nrv(jj) = nint(val)
                                                        +
                                                        274  if ( nrv(jj) < 0 ) then
                                                        +
                                                        275  imask = 2_8**(ibt(node)-1)
                                                        +
                                                        276  i8ret = ior(abs(nrv(jj)),imask)
                                                        +
                                                        277  else
                                                        +
                                                        278  i8ret = nrv(jj)
                                                        +
                                                        279  end if
                                                        +
                                                        280  return
                                                        +
                                                        281  else if ( ( tag(node)(1:8) == tagnrv(jj) ) .and. ( node >= isnrv(jj) ) .and. ( node <= ienrv(jj) ) ) then
                                                        +
                                                        282  ! The corresponding redefinded reference value needs to be used when encoding this value.
                                                        +
                                                        283  i8ret = nint(val * ten**isc(node),8) - nrv(jj)
                                                        +
                                                        284  return
                                                        +
                                                        285  end if
                                                        +
                                                        286  end do
                                                        +
                                                        287  end if
                                                        +
                                                        288 
                                                        +
                                                        289  return
                                                        +
                                                        290 end function ipks
                                                        +
                                                        subroutine bort(str)
                                                        Log an error message, then abort the application program.
                                                        Definition: borts.F90:15
                                                        +
                                                        subroutine pkc(chr, nchr, ibay, ibit)
                                                        Encode a character string within a specified number of bytes of an integer array, starting at the bit...
                                                        Definition: ciencode.F90:25
                                                        +
                                                        integer *8 function ipks(val, node)
                                                        Pack a real*8 value into an integer by applying the proper scale and reference values.
                                                        Definition: ciencode.F90:252
                                                        +
                                                        recursive subroutine ipkm(cbay, nbyt, n)
                                                        Encode an integer value within a specified number of bytes of a character string, up to a maximum of ...
                                                        Definition: ciencode.F90:194
                                                        +
                                                        subroutine pkb(nval, nbits, ibay, ibit)
                                                        Encode an integer value within a specified number of bits of an integer array, starting at the bit im...
                                                        Definition: ciencode.F90:140
                                                        +
                                                        subroutine pkb8(nval, nbits, ibay, ibit)
                                                        Encode an 8-byte integer value within a specified number of bits of an integer array,...
                                                        Definition: ciencode.F90:97
                                                        +
                                                        integer function irev(n)
                                                        Return a copy of an integer value with the bytes possibly reversed.
                                                        Definition: misc.F90:257
                                                        +
                                                        Declare arrays and variables for use with any 2-03-YYY (change reference value) operators present wit...
                                                        +
                                                        integer, dimension(:), allocatable ienrv
                                                        End of entry range in jump/link table, within which the corresponding new reference value in nrv will...
                                                        +
                                                        character *8, dimension(:), allocatable tagnrv
                                                        Table B mnemonic to which the corresponding new reference value in nrv applies.
                                                        +
                                                        integer, dimension(:), allocatable isnrv
                                                        Start of entry range in jump/link table, within which the corresponding new reference value in nrv wi...
                                                        +
                                                        integer nnrv
                                                        Number of entries in the jump/link table which contain new reference values (up to a maximum of mxnrv...
                                                        +
                                                        integer *8, dimension(:), allocatable nrv
                                                        New reference values corresponding to inodnrv.
                                                        +
                                                        integer, dimension(:), allocatable inodnrv
                                                        Entries within jump/link table which contain new reference values.
                                                        +
                                                        Declare arrays and variables used to store the internal jump/link table.
                                                        +
                                                        integer, dimension(:), allocatable irf
                                                        Reference values corresponding to tag and typ:
                                                        +
                                                        integer, dimension(:), allocatable isc
                                                        Scale factors corresponding to tag and typ:
                                                        +
                                                        integer, dimension(:), allocatable ibt
                                                        Bit widths corresponding to tag and typ:
                                                        +
                                                        character *10, dimension(:), allocatable tag
                                                        Mnemonics in the jump/link table.
                                                        +
                                                        subroutine x84(iin8, iout4, nval)
                                                        Encode one or more 8-byte integer values as 4-byte integer values.
                                                        Definition: x4884.F90:65
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/classes.html b/previous_versions/v12.1.0/classes.html new file mode 100644 index 000000000..aa40964d9 --- /dev/null +++ b/previous_versions/v12.1.0/classes.html @@ -0,0 +1,125 @@ + + + + + + + +NCEPLIBS-bufr: Data Types + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + + + + + + diff --git a/previous_versions/v12.1.0/closed.png b/previous_versions/v12.1.0/closed.png new file mode 100644 index 0000000000000000000000000000000000000000..98cc2c909da37a6df914fbf67780eebd99c597f5 GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{V-kvUwAr*{o@8{^CZMh(5KoB^r_<4^zF@3)Cp&&t3hdujKf f*?bjBoY!V+E))@{xMcbjXe@)LtDnm{r-UW|*e5JT literal 0 HcmV?d00001 diff --git a/previous_versions/v12.1.0/cmpbqm_8F90.html b/previous_versions/v12.1.0/cmpbqm_8F90.html new file mode 100644 index 000000000..53303130a --- /dev/null +++ b/previous_versions/v12.1.0/cmpbqm_8F90.html @@ -0,0 +1,143 @@ + + + + + + + +NCEPLIBS-bufr: cmpbqm.F90 File Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        cmpbqm.F90 File Reference
                                                        +
                                                        +
                                                        + +

                                                        Print inventory of observations from prepbufr file by variable, report type and quality mark. +More...

                                                        + +

                                                        Go to the source code of this file.

                                                        + + + + + +

                                                        +Functions/Subroutines

                                                        program cmpbqm
                                                         Usage: cmpbqm <prepbufrfile> will print prep inventory by variable, report type, and qc mark. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Print inventory of observations from prepbufr file by variable, report type and quality mark.

                                                        +
                                                        Author
                                                        J Woollen
                                                        +
                                                        Date
                                                        1997
                                                        + +

                                                        Definition in file cmpbqm.F90.

                                                        +

                                                        Function/Subroutine Documentation

                                                        + +

                                                        ◆ cmpbqm()

                                                        + +
                                                        +
                                                        + + + + +
                                                        program cmpbqm
                                                        +
                                                        + +

                                                        Usage: cmpbqm <prepbufrfile> will print prep inventory by variable, report type, and qc mark.

                                                        +
                                                        Returns
                                                        0 for success, error message otherwise.
                                                        +
                                                        Author
                                                        J Woollen
                                                        +
                                                        Date
                                                        1997
                                                        + +

                                                        Definition at line 11 of file cmpbqm.F90.

                                                        + +

                                                        References bort(), openbf(), readmg(), readsb(), ufbcnt(), and ufbint().

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/cmpbqm_8F90.js b/previous_versions/v12.1.0/cmpbqm_8F90.js new file mode 100644 index 000000000..78ba6d08e --- /dev/null +++ b/previous_versions/v12.1.0/cmpbqm_8F90.js @@ -0,0 +1,4 @@ +var cmpbqm_8F90 = +[ + [ "cmpbqm", "cmpbqm_8F90.html#a757321e44a7c476abf5e5fb85384b7da", null ] +]; \ No newline at end of file diff --git a/previous_versions/v12.1.0/cmpbqm_8F90_source.html b/previous_versions/v12.1.0/cmpbqm_8F90_source.html new file mode 100644 index 000000000..718812251 --- /dev/null +++ b/previous_versions/v12.1.0/cmpbqm_8F90_source.html @@ -0,0 +1,226 @@ + + + + + + + +NCEPLIBS-bufr: cmpbqm.F90 Source File + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        +
                                                        cmpbqm.F90
                                                        +
                                                        +
                                                        +Go to the documentation of this file.
                                                        1 
                                                        +
                                                        5 
                                                        +
                                                        11 PROGRAM cmpbqm
                                                        +
                                                        12 
                                                        +
                                                        13  CHARACTER*255 file
                                                        +
                                                        14  CHARACTER*50 headr,obstr,qmstr
                                                        +
                                                        15  CHARACTER*20 vars(7)
                                                        +
                                                        16  CHARACTER*8 subset,date
                                                        +
                                                        17  dimension knt(300,7,0:17),hdr(5),obs(8,255),qms(8,255)
                                                        +
                                                        18  LOGICAL exist
                                                        +
                                                        19  real*8 hdr,obs,qms
                                                        +
                                                        20 
                                                        +
                                                        21  DATA headr /'SID XOB YOB DHR TYP '/
                                                        +
                                                        22  DATA obstr /'POB QOB TOB ZOB UOB PWO RHO VOB '/
                                                        +
                                                        23  DATA qmstr /'PQM QQM TQM ZQM WQM PWQ RHQ '/
                                                        +
                                                        24 
                                                        +
                                                        25  DATA vars /'PRESSURE ',&
                                                        +
                                                        26  'SPECIFIC HUMIDTY',&
                                                        +
                                                        27  'TEMPERATURE ',&
                                                        +
                                                        28  'HEIGHT ',&
                                                        +
                                                        29  'WIND COMPONENTS ',&
                                                        +
                                                        30  'PRECIPITABLE H2O',&
                                                        +
                                                        31  'RELATIVE HUMIDTY'/
                                                        +
                                                        32 
                                                        +
                                                        33  DATA lubfr /8 /
                                                        +
                                                        34  DATA vmax /10e10/
                                                        +
                                                        35 
                                                        +
                                                        36  !-----------------------------------------------------------------------
                                                        +
                                                        37  !-----------------------------------------------------------------------
                                                        +
                                                        38 
                                                        +
                                                        39  irec = 0
                                                        +
                                                        40  knt = 0
                                                        +
                                                        41 
                                                        +
                                                        42  ! OPEN A FILE - GET A DATE
                                                        +
                                                        43  ! ------------------------
                                                        +
                                                        44 
                                                        +
                                                        45  call get_command_argument(1,file); file=trim(adjustl(file))
                                                        +
                                                        46  if (file == '') then
                                                        +
                                                        47  print *, 'Usage: Usage: cmpbqm <prepbufrfile> will print prep inventory by variable, report type, and qc mark'
                                                        +
                                                        48  call exit(2)
                                                        +
                                                        49  endif
                                                        +
                                                        50  inquire(file=file,exist=exist)
                                                        +
                                                        51  if (.not.exist) then
                                                        +
                                                        52  print *, trim(file)//' does not exist'
                                                        +
                                                        53  call exit(3)
                                                        +
                                                        54  endif
                                                        +
                                                        55 
                                                        +
                                                        56  open(lubfr,file=file,form='unformatted')
                                                        +
                                                        57  CALL openbf(lubfr,'IN',lubfr)
                                                        +
                                                        58  CALL readmg(lubfr,subset,idate,iret)
                                                        +
                                                        59  IF(iret/=0) GOTO 900
                                                        +
                                                        60  WRITE(date,'(I8)') idate
                                                        +
                                                        61  DO i=1,8
                                                        +
                                                        62  IF(date(i:i)==' ') date(i:i) = '0'
                                                        +
                                                        63  ENDDO
                                                        +
                                                        64  print'(''DATA VALID AT '',A8)',date
                                                        +
                                                        65 
                                                        +
                                                        66  ! READ THRU THE PREPDA RECORDS
                                                        +
                                                        67  ! ----------------------------
                                                        +
                                                        68 
                                                        +
                                                        69 10 CALL readsb(lubfr,iret)
                                                        +
                                                        70  IF(iret/=0) THEN
                                                        +
                                                        71  CALL readmg(lubfr,subset,idate,iret)
                                                        +
                                                        72  IF(iret/=0) GOTO 100
                                                        +
                                                        73  CALL ufbcnt(lubfr,irec,isub)
                                                        +
                                                        74  GOTO 10
                                                        +
                                                        75  ENDIF
                                                        +
                                                        76  qms = 10e10
                                                        +
                                                        77  CALL ufbint(lubfr,hdr,5,1,iret,headr)
                                                        +
                                                        78  CALL ufbint(lubfr,obs,8,255,nlev,obstr)
                                                        +
                                                        79  CALL ufbint(lubfr,qms,8,255,nlev,qmstr)
                                                        +
                                                        80 
                                                        +
                                                        81  kx = nint(hdr(5))
                                                        +
                                                        82 
                                                        +
                                                        83  DO l=1,nlev
                                                        +
                                                        84  DO k=1,7
                                                        +
                                                        85  iq = -1
                                                        +
                                                        86  IF(k==5) obs(5,l) = max(obs(5,l),obs(8,l))
                                                        +
                                                        87  IF(obs(k,l)<vmax .AND. qms(k,l)<vmax) THEN
                                                        +
                                                        88  iq = nint(qms(k,l))
                                                        +
                                                        89  ELSEIF(obs(k,l)<vmax .AND. qms(k,l)>=vmax) THEN
                                                        +
                                                        90  iq = 16
                                                        +
                                                        91  ELSEIF(obs(k,l)>=vmax .AND. qms(k,l)<vmax) THEN
                                                        +
                                                        92  iq = 17
                                                        +
                                                        93  ENDIF
                                                        +
                                                        94  IF(iq>=0) knt(kx,k,iq) = knt(kx,k,iq)+1
                                                        +
                                                        95  ENDDO
                                                        +
                                                        96  ENDDO
                                                        +
                                                        97 
                                                        +
                                                        98  GOTO 10
                                                        +
                                                        99 
                                                        +
                                                        100  ! FINISH UP
                                                        +
                                                        101  ! ---------
                                                        +
                                                        102 
                                                        +
                                                        103 100 DO k=1,7
                                                        +
                                                        104  print*,vars(k)
                                                        +
                                                        105  print*
                                                        +
                                                        106  DO kx=1,300
                                                        +
                                                        107  itot = 0; igood=0; ifail=0
                                                        +
                                                        108  DO iq=0,17
                                                        +
                                                        109  itot = itot+knt(kx,k,iq)
                                                        +
                                                        110  if(iq<=3) then
                                                        +
                                                        111  igood=igood+knt(kx,k,iq)
                                                        +
                                                        112  elseif(iq<=7) then
                                                        +
                                                        113  ifail=ifail+knt(kx,k,iq)
                                                        +
                                                        114  endif
                                                        +
                                                        115  ENDDO
                                                        +
                                                        116  IF(itot>0) print 101,kx,itot,igood,ifail,(knt(kx,k,iq),iq=8,17)
                                                        +
                                                        117 101 FORMAT(i3,i6,2('|', i6),&
                                                        +
                                                        118  2('|', i6),&
                                                        +
                                                        119  1('|',6i6),&
                                                        +
                                                        120  2('|', i6))
                                                        +
                                                        121  ENDDO
                                                        +
                                                        122  print*
                                                        +
                                                        123  ENDDO
                                                        +
                                                        124 
                                                        +
                                                        125  print*,'******CMPBQM PROCESSED ',irec,' BUFR RECORDS******'
                                                        +
                                                        126  stop
                                                        +
                                                        127 900 CALL bort('CMPBQM - ERROR READING BUFR FILE ')
                                                        +
                                                        128 END PROGRAM cmpbqm
                                                        +
                                                        subroutine bort(str)
                                                        Log an error message, then abort the application program.
                                                        Definition: borts.F90:15
                                                        +
                                                        program cmpbqm
                                                        Usage: cmpbqm <prepbufrfile> will print prep inventory by variable, report type, and qc mark.
                                                        Definition: cmpbqm.F90:11
                                                        +
                                                        recursive subroutine openbf(lunit, io, lundx)
                                                        Connect a new file to the NCEPLIBS-bufr software for input or output operations, or initialize the li...
                                                        +
                                                        recursive subroutine ufbcnt(lunit, kmsg, ksub)
                                                        Get the current location of the file pointer within a BUFR file, in terms of a message number countin...
                                                        +
                                                        recursive subroutine readmg(lunxx, subset, jdate, iret)
                                                        Read the next BUFR message from logical unit abs(lunxx) into internal arrays.
                                                        Definition: readwritemg.F90:44
                                                        +
                                                        recursive subroutine readsb(lunit, iret)
                                                        Read the next data subset from a BUFR message.
                                                        Definition: readwritesb.F90:32
                                                        +
                                                        recursive subroutine ufbint(lunin, usr, i1, i2, iret, str)
                                                        Read or write one or more data values from or to a data subset.
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/compress_8F90.html b/previous_versions/v12.1.0/compress_8F90.html new file mode 100644 index 000000000..27c6eaba7 --- /dev/null +++ b/previous_versions/v12.1.0/compress_8F90.html @@ -0,0 +1,357 @@ + + + + + + + +NCEPLIBS-bufr: compress.F90 File Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        compress.F90 File Reference
                                                        +
                                                        +
                                                        + +

                                                        Read or write compressed BUFR messages. +More...

                                                        + +

                                                        Go to the source code of this file.

                                                        + + + + + + + + + + + + + + + + + +

                                                        +Functions/Subroutines

                                                        subroutine cmpmsg (cf)
                                                         Specify whether BUFR messages output by future calls to message-writing subroutines and subset-writing subroutines are to be compressed. More...
                                                         
                                                        subroutine cmsgini (lun, mesg, subset, idate, nsub, nbyt)
                                                         Initialize a new BUFR message for output in compressed format. More...
                                                         
                                                        subroutine rdcmps (lun)
                                                         Read the next compressed BUFR data subset into internal arrays. More...
                                                         
                                                        subroutine wrcmps (lunix)
                                                         Write a compressed BUFR data subset. More...
                                                         
                                                        recursive subroutine writcp (lunit)
                                                         Write a data subset into a BUFR message using compression. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Read or write compressed BUFR messages.

                                                        +
                                                        Author
                                                        J. Ator J. Woollen
                                                        +
                                                        Date
                                                        2005-03-09
                                                        + +

                                                        Definition in file compress.F90.

                                                        +

                                                        Function/Subroutine Documentation

                                                        + +

                                                        ◆ cmpmsg()

                                                        + +
                                                        +
                                                        + + + + + + + + +
                                                        subroutine cmpmsg (character, intent(in) cf)
                                                        +
                                                        + +

                                                        Specify whether BUFR messages output by future calls to message-writing subroutines and subset-writing subroutines are to be compressed.

                                                        +

                                                        The specified value for cf will remain in effect for all future calls to message-writing subroutines and subset-writing subroutines for all Fortran logical units that are open for output within the application program, unless a subsequent call is made to this subroutine to reset the value of cf again. If this subroutine is never called, a default value of 'N' is used for cf.

                                                        +

                                                        When compression is activated, it is implemented using the algorithm for data subset compression prescribed within the official WMO BUFR regulations. Compression is most useful when the data subsets to be compressed are devoid of any delayed replication, and when there is minimal variation of corresponding data values among different data subsets within the same BUFR message. Otherwise, compression may provide little to no benefit, and which is why it is not activated by default.

                                                        +
                                                        Parameters
                                                        + + +
                                                        cf- Flag indicating whether future BUFR output messages are to be compressed:
                                                          +
                                                        • 'N' = No (the default)
                                                        • +
                                                        • 'Y' = Yes
                                                        • +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2005-03-09
                                                        + +

                                                        Definition at line 32 of file compress.F90.

                                                        + +

                                                        References bort(), capit(), and moda_msgcmp::ccmf.

                                                        + +

                                                        Referenced by bufr_c2f_interface::bvers_c(), copysb(), and writcp().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ cmsgini()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        subroutine cmsgini (integer, intent(in) lun,
                                                        integer, dimension(*), intent(out) mesg,
                                                        character*8, intent(in) subset,
                                                        integer, intent(in) idate,
                                                        integer, intent(in) nsub,
                                                        integer, intent(inout) nbyt 
                                                        )
                                                        +
                                                        + +

                                                        Initialize a new BUFR message for output in compressed format.

                                                        +
                                                        Parameters
                                                        + + + + + + + +
                                                        lun- File ID
                                                        mesg- BUFR message
                                                        subset- Table A mnemonic for type of BUFR message being written
                                                        idate- Date-time stored within Section 1 of BUFR message being written, in format of either YYMMDDHH or YYYYMMDDHH, depending on datelen() value
                                                        nsub- Number of subsets in mesg
                                                        nbyt- Message length:
                                                          +
                                                        • On input, contains the length (in bytes) of Section 4, except for the first 4 bytes
                                                        • +
                                                        • On output, contains the length (in bytes) of the entire BUFR message, up to the point in Section 4 where compressed data are to be written
                                                        • +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        Woollen
                                                        +
                                                        Date
                                                        2002-05-14
                                                        + +

                                                        Definition at line 258 of file compress.F90.

                                                        + +

                                                        References bort(), nemtab(), nemtba(), pkb(), and pkc().

                                                        + +

                                                        Referenced by wrcmps().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ rdcmps()

                                                        + +
                                                        +
                                                        + + + + + + + + +
                                                        subroutine rdcmps (integer, intent(in) lun)
                                                        +
                                                        + +

                                                        Read the next compressed BUFR data subset into internal arrays.

                                                        +

                                                        Uncompress and unpack the next subset from the internal compressed message buffer (array mbay in module moda_bitbuf) and store the result within the internal array val(*,lun) in module moda_usrint.

                                                        +
                                                        Parameters
                                                        + + +
                                                        lun- File ID
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        Woollen
                                                        +
                                                        Date
                                                        2000-09-19
                                                        + +

                                                        Definition at line 109 of file compress.F90.

                                                        + +

                                                        References bort(), moda_rlccmn::crtag, moda_bitbuf::ibit, moda_tables::ibt, moda_usrint::inv, moda_rlccmn::irbit, moda_rlccmn::irnch, moda_stcode::iscodes, moda_tables::itp, moda_bitbuf::mbay, moda_bitbuf::mbyt, moda_msgcwd::msub, moda_usrint::nrfelm, moda_rlccmn::nrst, moda_msgcwd::nsub, moda_usrint::nval, strbtm(), moda_tables::tag, up8(), upb(), upc(), ups(), usrtpl(), and moda_usrint::val.

                                                        + +

                                                        Referenced by readsb().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ wrcmps()

                                                        + +
                                                        +
                                                        + + + + + + + + +
                                                        subroutine wrcmps (integer, intent(in) lunix)
                                                        +
                                                        + +

                                                        Write a compressed BUFR data subset.

                                                        +

                                                        Pack up the current subset within memory (array ibay in module moda_bitbuf), storing it for compression. Then, try to add it to the compressed BUFR message that is currently open within memory for abs(lunix). If the subset will not fit into the currently open message, then that compressed message is flushed to lunix and a new one is created in order to hold the current subset (still stored for compression).

                                                        +

                                                        This subroutine performs functions similar to NCEPLIBS-bufr subroutine msgupd() except that it acts on compressed bufr messages.

                                                        +
                                                        Parameters
                                                        + + +
                                                        lunix- Absolute value is Fortran logical unit number for BUFR file
                                                          +
                                                        • if lunix is less than zero, then this is a "flush" call and the buffer must be cleared out
                                                        • +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        Woollen
                                                        +
                                                        Date
                                                        2002-05-14
                                                        + +

                                                        Definition at line 386 of file compress.F90.

                                                        + +

                                                        References bort(), moda_comprs::catx, moda_s01cm::cmnem, cmsgini(), moda_comprx::cstr, moda_comprx::flush, moda_bitbuf::ibay, moda_bitbuf::ibit, moda_tables::ibt, moda_msgcwd::idate, moda_comprx::imiss, moda_comprs::incr, moda_msgcwd::inode, moda_usrint::inv, ipkm(), moda_tables::itp, moda_comprx::ityp, moda_s01cm::ivmnem, moda_comprx::iwid, moda_comprx::jlnode, moda_comprx::kbit, moda_comprx::kbyt, moda_comprx::kmax, moda_comprx::kmin, moda_comprx::kmis, moda_comprx::lunc, moda_comprs::matx, moda_bitbuf::maxbyt, moda_bitbuf::mbay, moda_mgwa::mgwa, msgwrt(), moda_comprs::ncol, moda_comprx::nrow, moda_s01cm::ns01v, moda_msgcwd::nsub, moda_usrint::nval, pkb(), pkb8(), pkc(), status(), moda_tables::tag, up8(), upc(), usrtpl(), and moda_comprx::writ1.

                                                        + +

                                                        Referenced by closmg(), writsa(), and writsb().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ writcp()

                                                        + +
                                                        +
                                                        + + + + + + + + +
                                                        recursive subroutine writcp (integer, intent(in) lunit)
                                                        +
                                                        + +

                                                        Write a data subset into a BUFR message using compression.

                                                        +

                                                        This subroutine is similar to subroutine writsb(), except that when the subset is encoded and packed into the current message for the BUFR file associated with logical unit lunit, it is packed using compression as prescribed within the official WMO BUFR regulations.

                                                        +

                                                        This subroutine activates compression via an internal call to subroutine cmpmsg(), followed by an internal call to subroutine writsb(), followed by a second internal call to subroutine cmpmsg() to deactivate compression. For this reason, most application programs which write compressed BUFR messages now call subroutines cmpmsg() and writsb() directly; however, this subroutine is still supported within the NCEPLIBS-bufr software for backwards-compatibility with certain legacy application programs.

                                                        +
                                                        Parameters
                                                        + + +
                                                        lunit- Fortran logical unit number for BUFR file
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        2002-05-14
                                                        + +

                                                        Definition at line 71 of file compress.F90.

                                                        + +

                                                        References cmpmsg(), writsb(), and x84().

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/compress_8F90.js b/previous_versions/v12.1.0/compress_8F90.js new file mode 100644 index 000000000..16f2811c3 --- /dev/null +++ b/previous_versions/v12.1.0/compress_8F90.js @@ -0,0 +1,8 @@ +var compress_8F90 = +[ + [ "cmpmsg", "compress_8F90.html#a8d1905b269c7cd75ff1a451a0550a84e", null ], + [ "cmsgini", "compress_8F90.html#a3475e3a5a5079d96f47d2e49db98a1a6", null ], + [ "rdcmps", "compress_8F90.html#a1cb1b8bdef41e7ff3420a543e590fde8", null ], + [ "wrcmps", "compress_8F90.html#a6936aeb7f52ecaaa76047564005946d9", null ], + [ "writcp", "compress_8F90.html#a52810a80e6afe9d44c454fe1c81a7f81", null ] +]; \ No newline at end of file diff --git a/previous_versions/v12.1.0/compress_8F90_source.html b/previous_versions/v12.1.0/compress_8F90_source.html new file mode 100644 index 000000000..100297167 --- /dev/null +++ b/previous_versions/v12.1.0/compress_8F90_source.html @@ -0,0 +1,759 @@ + + + + + + + +NCEPLIBS-bufr: compress.F90 Source File + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        +
                                                        compress.F90
                                                        +
                                                        +
                                                        +Go to the documentation of this file.
                                                        1 
                                                        +
                                                        5 
                                                        +
                                                        32 subroutine cmpmsg(cf)
                                                        +
                                                        33 
                                                        +
                                                        34  use moda_msgcmp
                                                        +
                                                        35 
                                                        +
                                                        36  implicit none
                                                        +
                                                        37 
                                                        +
                                                        38  character, intent(in) :: cf
                                                        +
                                                        39  character*128 bort_str
                                                        +
                                                        40 
                                                        +
                                                        41  call capit(cf)
                                                        +
                                                        42  if(cf/='Y'.and. cf/='N') then
                                                        +
                                                        43  write(bort_str,'("BUFRLIB: CMPMSG - INPUT ARGUMENT IS ",A1,", IT MUST BE EITHER Y OR N")') cf
                                                        +
                                                        44  call bort(bort_str)
                                                        +
                                                        45  endif
                                                        +
                                                        46  ccmf = cf
                                                        +
                                                        47 
                                                        +
                                                        48  return
                                                        +
                                                        49 end subroutine cmpmsg
                                                        +
                                                        50 
                                                        +
                                                        71 recursive subroutine writcp(lunit)
                                                        +
                                                        72 
                                                        +
                                                        73  use modv_vars, only: im8b
                                                        +
                                                        74 
                                                        +
                                                        75  implicit none
                                                        +
                                                        76 
                                                        +
                                                        77  integer, intent(in) :: lunit
                                                        +
                                                        78  integer my_lunit
                                                        +
                                                        79 
                                                        +
                                                        80  ! Check for I8 integers.
                                                        +
                                                        81 
                                                        +
                                                        82  if(im8b) then
                                                        +
                                                        83  im8b=.false.
                                                        +
                                                        84 
                                                        +
                                                        85  call x84(lunit,my_lunit,1)
                                                        +
                                                        86  call writcp(my_lunit)
                                                        +
                                                        87 
                                                        +
                                                        88  im8b=.true.
                                                        +
                                                        89  return
                                                        +
                                                        90  endif
                                                        +
                                                        91 
                                                        +
                                                        92  call cmpmsg('Y')
                                                        +
                                                        93  call writsb(lunit)
                                                        +
                                                        94  call cmpmsg('N')
                                                        +
                                                        95 
                                                        +
                                                        96  return
                                                        +
                                                        97 end subroutine writcp
                                                        +
                                                        98 
                                                        +
                                                        109 subroutine rdcmps(lun)
                                                        +
                                                        110 
                                                        +
                                                        111  use modv_vars, only: bmiss, mxrst
                                                        +
                                                        112 
                                                        +
                                                        113  use moda_usrint
                                                        +
                                                        114  use moda_msgcwd
                                                        +
                                                        115  use moda_bitbuf
                                                        +
                                                        116  use moda_tables
                                                        +
                                                        117  use moda_rlccmn
                                                        +
                                                        118  use moda_stcode
                                                        +
                                                        119 
                                                        +
                                                        120  implicit none
                                                        +
                                                        121 
                                                        +
                                                        122  integer, intent(in) :: lun
                                                        +
                                                        123  integer*8 :: ival, lref, ninc, lps
                                                        +
                                                        124  integer nsbs, jbit, lbit, nbit, n, node, ityp, linc, lre4, nin4, nbmp, nchr, lelm, ibsv, igetrfel, icbfms
                                                        +
                                                        125 
                                                        +
                                                        126  real*8 rval, ups
                                                        +
                                                        127 
                                                        +
                                                        128  character*128 bort_str
                                                        +
                                                        129  character*8 cref, cval
                                                        +
                                                        130 
                                                        +
                                                        131  equivalence(cval,rval)
                                                        +
                                                        132 
                                                        +
                                                        133  ! Statement function to compute BUFR "missing value" for field of length lbit bits (all bits "on")
                                                        +
                                                        134  lps(lbit) = max(2_8**(lbit)-1,1)
                                                        +
                                                        135 
                                                        +
                                                        136  ! Setup the subset template
                                                        +
                                                        137 
                                                        +
                                                        138  call usrtpl(lun,1,1)
                                                        +
                                                        139 
                                                        +
                                                        140  ! Uncompress a subset into the val array according to Table B
                                                        +
                                                        141 
                                                        +
                                                        142  nsbs = nsub(lun)
                                                        +
                                                        143 
                                                        +
                                                        144  ! Note that we are going to unpack the (nsbs)th subset from within the current BUFR message.
                                                        +
                                                        145 
                                                        +
                                                        146  ibit = mbyt(lun)
                                                        +
                                                        147  nrst = 0
                                                        +
                                                        148 
                                                        +
                                                        149  ! Loop through each element of the subset, including immediately resolving any replication sequences by emulating recursion
                                                        +
                                                        150  ! via an explicit goto statement.
                                                        +
                                                        151 
                                                        +
                                                        152  n = 0
                                                        +
                                                        153  11 do n=n+1,nval(lun)
                                                        +
                                                        154  node = inv(n,lun)
                                                        +
                                                        155  nrfelm(n,lun) = igetrfel(n,lun)
                                                        +
                                                        156  nbit = ibt(node)
                                                        +
                                                        157  ityp = itp(node)
                                                        +
                                                        158 
                                                        +
                                                        159  ! In each of the following code blocks, the "local reference value" for the element is determined first, followed by the
                                                        +
                                                        160  ! 6-bit value which indicates how many bits are used to store the increment (i.e. offset) from this "local reference value".
                                                        +
                                                        161  ! Then, we jump ahead to where this increment is stored for this particular subset, unpack it, and add it to the
                                                        +
                                                        162  ! "local reference value" to determine the final uncompressed value for this element from this subset. Note that, if an
                                                        +
                                                        163  ! element has the same final uncompressed value for each subset in the message, then the encoding rules for BUFR compression
                                                        +
                                                        164  ! dictate that the "local reference value" will be equal to this value, the 6-bit increment length indicator will have a
                                                        +
                                                        165  ! value of zero, and the actual increments themselves will be omitted from the message.
                                                        +
                                                        166 
                                                        +
                                                        167  if(ityp==1.or.ityp==2) then
                                                        +
                                                        168  ! This is a numeric element.
                                                        +
                                                        169  if(nbit<=32) then
                                                        +
                                                        170  call upb(lre4,nbit,mbay(1,lun),ibit)
                                                        +
                                                        171  call upb(linc,6,mbay(1,lun),ibit)
                                                        +
                                                        172  jbit = ibit + linc*(nsbs-1)
                                                        +
                                                        173  call upb(nin4,linc,mbay(1,lun),jbit)
                                                        +
                                                        174  lref = lre4
                                                        +
                                                        175  ninc = nin4
                                                        +
                                                        176  elseif(nbit<=64) then
                                                        +
                                                        177  call up8(lref,nbit,mbay(1,lun),ibit)
                                                        +
                                                        178  call upb(linc,6,mbay(1,lun),ibit)
                                                        +
                                                        179  jbit = ibit + linc*(nsbs-1)
                                                        +
                                                        180  call up8(ninc,linc,mbay(1,lun),jbit)
                                                        +
                                                        181  endif
                                                        +
                                                        182  if(ninc==lps(linc)) then
                                                        +
                                                        183  ival = lps(nbit)
                                                        +
                                                        184  else
                                                        +
                                                        185  ival = lref + ninc
                                                        +
                                                        186  endif
                                                        +
                                                        187  if(ityp==1) then
                                                        +
                                                        188  nbmp = int(ival)
                                                        +
                                                        189  call usrtpl(lun,n,nbmp)
                                                        +
                                                        190  if (iscodes(lun) /= 0) return
                                                        +
                                                        191  goto 11
                                                        +
                                                        192  endif
                                                        +
                                                        193  if(ival<lps(nbit)) val(n,lun) = ups(ival,node)
                                                        +
                                                        194  call strbtm(n,lun)
                                                        +
                                                        195  ibit = ibit + linc*msub(lun)
                                                        +
                                                        196  elseif(ityp==3) then
                                                        +
                                                        197  ! This is a character element. If there are more than 8 characters, then only the first 8 will be unpacked by this
                                                        +
                                                        198  ! routine, and a separate subsequent call to subroutine readlc() will be required to unpack the remainder of the string.
                                                        +
                                                        199  ! In this case, pointers will be saved within common /rlccmn/ for later use within readlc().
                                                        +
                                                        200  lelm = nbit/8
                                                        +
                                                        201  nchr = min(8,lelm)
                                                        +
                                                        202  ibsv = ibit
                                                        +
                                                        203  cref = ' '
                                                        +
                                                        204  call upc(cref,nchr,mbay(1,lun),ibit,.true.)
                                                        +
                                                        205  if(lelm>8) then
                                                        +
                                                        206  ibit = ibit + (lelm-8)*8
                                                        +
                                                        207  nrst = nrst + 1
                                                        +
                                                        208  if(nrst>mxrst) then
                                                        +
                                                        209  write(bort_str,'("BUFRLIB: RDCMPS - NUMBER OF LONG CHARACTER STRINGS EXCEEDS THE LIMIT (",I4,")")') mxrst
                                                        +
                                                        210  call bort(bort_str)
                                                        +
                                                        211  endif
                                                        +
                                                        212  crtag(nrst) = tag(node)
                                                        +
                                                        213  endif
                                                        +
                                                        214  ! Unpack the increment length indicator. For character elements, this length is in bytes rather than bits.
                                                        +
                                                        215  call upb(linc,6,mbay(1,lun),ibit)
                                                        +
                                                        216  if(linc==0) then
                                                        +
                                                        217  if(lelm>8) then
                                                        +
                                                        218  irnch(nrst) = lelm
                                                        +
                                                        219  irbit(nrst) = ibsv
                                                        +
                                                        220  endif
                                                        +
                                                        221  cval = cref
                                                        +
                                                        222  else
                                                        +
                                                        223  jbit = ibit + linc*(nsbs-1)*8
                                                        +
                                                        224  if(lelm>8) then
                                                        +
                                                        225  irnch(nrst) = linc
                                                        +
                                                        226  irbit(nrst) = jbit
                                                        +
                                                        227  endif
                                                        +
                                                        228  nchr = min(8,linc)
                                                        +
                                                        229  cval = ' '
                                                        +
                                                        230  call upc(cval,nchr,mbay(1,lun),jbit,.true.)
                                                        +
                                                        231  endif
                                                        +
                                                        232  if (lelm<=8 .and. icbfms(cval,nchr)/=0) then
                                                        +
                                                        233  val(n,lun) = bmiss
                                                        +
                                                        234  else
                                                        +
                                                        235  val(n,lun) = rval
                                                        +
                                                        236  endif
                                                        +
                                                        237  ibit = ibit + 8*linc*msub(lun)
                                                        +
                                                        238  endif
                                                        +
                                                        239  enddo
                                                        +
                                                        240 
                                                        +
                                                        241  return
                                                        +
                                                        242 end subroutine rdcmps
                                                        +
                                                        243 
                                                        +
                                                        258 subroutine cmsgini(lun,mesg,subset,idate,nsub,nbyt)
                                                        +
                                                        259 
                                                        +
                                                        260  implicit none
                                                        +
                                                        261 
                                                        +
                                                        262  integer, intent(in) :: lun, idate, nsub
                                                        +
                                                        263  integer, intent(inout) :: nbyt
                                                        +
                                                        264  integer, intent(out) :: mesg(*)
                                                        +
                                                        265  integer mtyp, msbt, inod, isub, iret, jdate, mcen, mear, mmon, mday, mour, mmin, mbit, mbyt, len1, len3, i4dy
                                                        +
                                                        266 
                                                        +
                                                        267  character*128 bort_str
                                                        +
                                                        268  character*8, intent(in) :: subset
                                                        +
                                                        269  character*4 bufr
                                                        +
                                                        270  character tab
                                                        +
                                                        271 
                                                        +
                                                        272  data bufr/'BUFR'/
                                                        +
                                                        273 
                                                        +
                                                        274  ! Get the message tag and type, and break up the date which can be either YYMMDDHH or YYYYMMDDHH
                                                        +
                                                        275 
                                                        +
                                                        276  call nemtba(lun,subset,mtyp,msbt,inod)
                                                        +
                                                        277  call nemtab(lun,subset,isub,tab,iret)
                                                        +
                                                        278  if(iret==0) then
                                                        +
                                                        279  write(bort_str,'("BUFRLIB: CMSGINI - TABLE A MESSAGE TYPE MNEMONIC ",A," NOT FOUND IN INTERNAL TABLE D ARRAYS")') subset
                                                        +
                                                        280  call bort(bort_str)
                                                        +
                                                        281  endif
                                                        +
                                                        282 
                                                        +
                                                        283  jdate = i4dy(idate)
                                                        +
                                                        284  mcen = mod(jdate/10**8,100)+1
                                                        +
                                                        285  mear = mod(jdate/10**6,100)
                                                        +
                                                        286  mmon = mod(jdate/10**4,100)
                                                        +
                                                        287  mday = mod(jdate/10**2,100)
                                                        +
                                                        288  mour = mod(jdate ,100)
                                                        +
                                                        289  mmin = 0
                                                        +
                                                        290 
                                                        +
                                                        291  if(mear==0) then
                                                        +
                                                        292  mcen = mcen-1
                                                        +
                                                        293  mear = 100
                                                        +
                                                        294  endif
                                                        +
                                                        295 
                                                        +
                                                        296  ! Initialize the message
                                                        +
                                                        297 
                                                        +
                                                        298  mbit = 0
                                                        +
                                                        299 
                                                        +
                                                        300  ! Section 0
                                                        +
                                                        301 
                                                        +
                                                        302  call pkc(bufr , 4 , mesg,mbit)
                                                        +
                                                        303  ! Note that the actual Section 0 length will be computed and stored below; for now, we're really only interested in
                                                        +
                                                        304  ! advancing mbit by the correct amount, so we'll just store a default value of 0.
                                                        +
                                                        305  call pkb( 0 , 24 , mesg,mbit)
                                                        +
                                                        306  call pkb( 3 , 8 , mesg,mbit)
                                                        +
                                                        307 
                                                        +
                                                        308  ! Section 1
                                                        +
                                                        309 
                                                        +
                                                        310  len1 = 18
                                                        +
                                                        311 
                                                        +
                                                        312  call pkb(len1 , 24 , mesg,mbit)
                                                        +
                                                        313  call pkb( 0 , 8 , mesg,mbit)
                                                        +
                                                        314  call pkb( 3 , 8 , mesg,mbit)
                                                        +
                                                        315  call pkb( 7 , 8 , mesg,mbit)
                                                        +
                                                        316  call pkb( 0 , 8 , mesg,mbit)
                                                        +
                                                        317  call pkb( 0 , 8 , mesg,mbit)
                                                        +
                                                        318  call pkb(mtyp , 8 , mesg,mbit)
                                                        +
                                                        319  call pkb(msbt , 8 , mesg,mbit)
                                                        +
                                                        320  call pkb( 36 , 8 , mesg,mbit)
                                                        +
                                                        321  call pkb( 0 , 8 , mesg,mbit)
                                                        +
                                                        322  call pkb(mear , 8 , mesg,mbit)
                                                        +
                                                        323  call pkb(mmon , 8 , mesg,mbit)
                                                        +
                                                        324  call pkb(mday , 8 , mesg,mbit)
                                                        +
                                                        325  call pkb(mour , 8 , mesg,mbit)
                                                        +
                                                        326  call pkb(mmin , 8 , mesg,mbit)
                                                        +
                                                        327  call pkb(mcen , 8 , mesg,mbit)
                                                        +
                                                        328 
                                                        +
                                                        329  ! Section 3
                                                        +
                                                        330 
                                                        +
                                                        331  len3 = 10
                                                        +
                                                        332 
                                                        +
                                                        333  call pkb(len3 , 24 , mesg,mbit)
                                                        +
                                                        334  call pkb( 0 , 8 , mesg,mbit)
                                                        +
                                                        335  call pkb(nsub , 16 , mesg,mbit)
                                                        +
                                                        336  call pkb( 192 , 8 , mesg,mbit)
                                                        +
                                                        337  call pkb(isub , 16 , mesg,mbit)
                                                        +
                                                        338  call pkb( 0 , 8 , mesg,mbit)
                                                        +
                                                        339 
                                                        +
                                                        340  ! Section 4
                                                        +
                                                        341 
                                                        +
                                                        342  ! Store the total length of Section 4. Remember that the input value of nbyt only contains the length of the compressed
                                                        +
                                                        343  ! data portion of Section 4, so we need to add four bytes to this number in order to account for the total length of
                                                        +
                                                        344  ! Section 4. The actual compressed data portion will be filled in later by subroutine wrcmps().
                                                        +
                                                        345  call pkb((nbyt+4) , 24 , mesg,mbit)
                                                        +
                                                        346  call pkb( 0 , 8 , mesg,mbit)
                                                        +
                                                        347 
                                                        +
                                                        348  ! Section 5
                                                        +
                                                        349 
                                                        +
                                                        350  ! This section will be filled in later by subroutine wrcmps(). However, for now, and noting that mbit currently points
                                                        +
                                                        351  ! to the last bit of the fourth byte of Section 4, then we have:
                                                        +
                                                        352  ! (total length of BUFR message (in Section 0)) =
                                                        +
                                                        353  ! (length of message up through fourth byte of Section 4)
                                                        +
                                                        354  ! + (length of compressed data portion of Section 4)
                                                        +
                                                        355  ! + (length of Section 5)
                                                        +
                                                        356  mbyt = mbit/8 + nbyt + 4
                                                        +
                                                        357 
                                                        +
                                                        358  ! For output, make nbyt point to the current location of mbit, which is the byte after which to actually begin writing the
                                                        +
                                                        359  ! compressed data into Section 4.
                                                        +
                                                        360  nbyt = mbit/8
                                                        +
                                                        361 
                                                        +
                                                        362  ! Now, store the total length of the BUFR message in Section 0.
                                                        +
                                                        363  mbit = 32
                                                        +
                                                        364  call pkb(mbyt,24,mesg,mbit)
                                                        +
                                                        365 
                                                        +
                                                        366  return
                                                        +
                                                        367 end subroutine cmsgini
                                                        +
                                                        368 
                                                        +
                                                        386 subroutine wrcmps(lunix)
                                                        +
                                                        387 
                                                        +
                                                        388  use modv_vars, only: mxcdv, mxcsb
                                                        +
                                                        389 
                                                        +
                                                        390  use moda_usrint
                                                        +
                                                        391  use moda_msgcwd
                                                        +
                                                        392  use moda_bitbuf
                                                        +
                                                        393  use moda_mgwa
                                                        +
                                                        394  use moda_tables
                                                        +
                                                        395  use moda_comprx
                                                        +
                                                        396  use moda_comprs
                                                        +
                                                        397  use moda_s01cm
                                                        +
                                                        398 
                                                        +
                                                        399  implicit none
                                                        +
                                                        400 
                                                        +
                                                        401  integer, intent(in) :: lunix
                                                        +
                                                        402  integer ibyt, jbit, lunit, lun, il, im, icol, i, j, node, lbyt, nbyt, nchr, ldata, iupbs01
                                                        +
                                                        403 
                                                        +
                                                        404  character*128 bort_str
                                                        +
                                                        405  character*8 subset
                                                        +
                                                        406  character czero
                                                        +
                                                        407 
                                                        +
                                                        408  logical first, kmiss, edge4, msgfull, cmpres
                                                        +
                                                        409 
                                                        +
                                                        410  real, parameter :: rln2 = 1./log(2.)
                                                        +
                                                        411  real range
                                                        +
                                                        412 
                                                        +
                                                        413  data first /.true./
                                                        +
                                                        414 
                                                        +
                                                        415  save first, ibyt, jbit, subset, edge4
                                                        +
                                                        416 
                                                        +
                                                        417  ! Get the unit and subset tag
                                                        +
                                                        418 
                                                        +
                                                        419  lunit = abs(lunix)
                                                        +
                                                        420  call status(lunit,lun,il,im)
                                                        +
                                                        421 
                                                        +
                                                        422  do while (.true.)
                                                        +
                                                        423 
                                                        +
                                                        424  if(first) then
                                                        +
                                                        425  ! Initialize some values in order to prepare for the creation of a new compressed BUFR message for output.
                                                        +
                                                        426  kbyt = 0
                                                        +
                                                        427  ncol = 0
                                                        +
                                                        428  lunc = lun
                                                        +
                                                        429  nrow = nval(lun)
                                                        +
                                                        430  subset = tag(inode(lun))(1:8)
                                                        +
                                                        431  first = .false.
                                                        +
                                                        432  flush = .false.
                                                        +
                                                        433  writ1 = .false.
                                                        +
                                                        434  ! The following call to cmsgini() is just being done to determine how many bytes (kbyt) will be taken up in a message
                                                        +
                                                        435  ! by the information in Sections 0, 1, 2 and 3. This in turn will allow us to determine how many compressed data subsets
                                                        +
                                                        436  ! will fit into Section 4 without overflowing maxbyt. Then, later on, another separate call to cmsgini() will be done to
                                                        +
                                                        437  ! actually initialize Sections 0, 1, 2 and 3 of the final compressed BUFR message that will be written out.
                                                        +
                                                        438  call cmsgini(lun,mbay(1,lun),subset,idate(lun),ncol,kbyt)
                                                        +
                                                        439  ! Check the edition number of the BUFR message to be created
                                                        +
                                                        440  edge4 = .false.
                                                        +
                                                        441  if(ns01v>0) then
                                                        +
                                                        442  i = 1
                                                        +
                                                        443  do while ( (.not.edge4) .and. (i<=ns01v) )
                                                        +
                                                        444  if( (cmnem(i)=='BEN') .and. (ivmnem(i)>=4) ) then
                                                        +
                                                        445  edge4 = .true.
                                                        +
                                                        446  else
                                                        +
                                                        447  i = i+1
                                                        +
                                                        448  endif
                                                        +
                                                        449  enddo
                                                        +
                                                        450  endif
                                                        +
                                                        451  endif
                                                        +
                                                        452 
                                                        +
                                                        453  if(lun/=lunc) then
                                                        +
                                                        454  write(bort_str,.NE.'("BUFRLIB: WRCMPS - FILE ID FOR THIS CALL (",I3,") FILE ID FOR INITIAL CALL (",I3,")'// &
                                                        +
                                                        455  ' - UNIT NUMBER NOW IS",I4)') lun,lunc,lunix
                                                        +
                                                        456  call bort(bort_str)
                                                        +
                                                        457  endif
                                                        +
                                                        458 
                                                        +
                                                        459  cmpres = .true.
                                                        +
                                                        460  if(lunix<0) then
                                                        +
                                                        461  ! This is a "flush" call, so clear out the buffer (note that there is no current subset to be stored!) and prepare
                                                        +
                                                        462  ! to write the final compressed BUFR message.
                                                        +
                                                        463  if(ncol<=0) return
                                                        +
                                                        464  flush = .true.
                                                        +
                                                        465  writ1 = .true.
                                                        +
                                                        466  icol = 1
                                                        +
                                                        467  elseif(ncol+1>mxcsb) then
                                                        +
                                                        468  ! There's no more room in the internal compression arrays for another subset, so we'll need to write out a message
                                                        +
                                                        469  ! containing all of the data in those arrays, then initialize a new message to hold the current subset.
                                                        +
                                                        470  cmpres = .false.
                                                        +
                                                        471  else
                                                        +
                                                        472  ! Check on some other possibly problematic situations
                                                        +
                                                        473  if(nval(lun)/=nrow) then
                                                        +
                                                        474  writ1 = .true.
                                                        +
                                                        475  icol = 1
                                                        +
                                                        476  elseif(nval(lun)>mxcdv) then
                                                        +
                                                        477  write(bort_str,'("BUFRLIB: WRCMPS - NO. OF ELEMENTS IN THE '// &
                                                        +
                                                        478  .GT.'SUBSET (",I6,") THE NO. OF ROWS ALLOCATED FOR THE COMPRESSION MATRIX (",I6,")")') nval(lun),mxcdv
                                                        +
                                                        479  call bort(bort_str)
                                                        +
                                                        480  elseif(ncol>0) then
                                                        +
                                                        481  ! Confirm that all of the nodes are the same as in the previous subset for this same BUFR message. If not, then
                                                        +
                                                        482  ! there may be different nested replication sequences activated in the current subset vs. in the previous subset,
                                                        +
                                                        483  ! even though the total number of nodes is the same.
                                                        +
                                                        484  do i = 1, nval(lun)
                                                        +
                                                        485  if ( inv(i,lun) /= jlnode(i) ) then
                                                        +
                                                        486  writ1 = .true.
                                                        +
                                                        487  icol = 1
                                                        +
                                                        488  exit
                                                        +
                                                        489  endif
                                                        +
                                                        490  enddo
                                                        +
                                                        491  endif
                                                        +
                                                        492  if(.not.writ1) then
                                                        +
                                                        493  ! Store the next subset for compression
                                                        +
                                                        494  ncol = ncol+1
                                                        +
                                                        495  icol = ncol
                                                        +
                                                        496  ibit = 16
                                                        +
                                                        497  do i=1,nval(lun)
                                                        +
                                                        498  node = inv(i,lun)
                                                        +
                                                        499  jlnode(i) = node
                                                        +
                                                        500  ityp(i) = itp(node)
                                                        +
                                                        501  iwid(i) = ibt(node)
                                                        +
                                                        502  if(ityp(i)==1.or.ityp(i)==2) then
                                                        +
                                                        503  call up8(matx(i,ncol),ibt(node),ibay,ibit)
                                                        +
                                                        504  elseif(ityp(i)==3) then
                                                        +
                                                        505  catx(i,ncol) = ' '
                                                        +
                                                        506  call upc(catx(i,ncol),ibt(node)/8,ibay,ibit,.true.)
                                                        +
                                                        507  endif
                                                        +
                                                        508  enddo
                                                        +
                                                        509  endif
                                                        +
                                                        510  endif
                                                        +
                                                        511 
                                                        +
                                                        512  ! Will the next subset fit into the current message? The only way to find out is to actually re-do the compression
                                                        +
                                                        513  ! by re-computing all of the local reference values, increments, etc. to determine the new Section 4 length.
                                                        +
                                                        514 
                                                        +
                                                        515  do while (cmpres)
                                                        +
                                                        516  if(ncol<=0) then
                                                        +
                                                        517  write(bort_str,'("BUFRLIB: WRCMPS - NO. OF COLUMNS CALCULATED '// &
                                                        +
                                                        518  .LE.'FOR COMPRESSION MAXRIX IS 0 (=",I6,")")') ncol
                                                        +
                                                        519  call bort(bort_str)
                                                        +
                                                        520  endif
                                                        +
                                                        521  ! ldata will hold the length (in bits) of the compressed data, i.e. the sum total for all data values for all data
                                                        +
                                                        522  ! subsets in the message
                                                        +
                                                        523  ldata = 0
                                                        +
                                                        524  do i=1,nrow
                                                        +
                                                        525  if(ityp(i)==1 .or. ityp(i)==2) then
                                                        +
                                                        526  ! Row i of the compression matrix contains numeric values, so kmis(i) will store .true. if any such values are
                                                        +
                                                        527  ! "missing", or .false. otherwise
                                                        +
                                                        528  imiss = 2_8**iwid(i)-1
                                                        +
                                                        529  if(icol==1) then
                                                        +
                                                        530  kmin(i) = imiss
                                                        +
                                                        531  kmax(i) = 0
                                                        +
                                                        532  kmis(i) = .false.
                                                        +
                                                        533  endif
                                                        +
                                                        534  do j=icol,ncol
                                                        +
                                                        535  if(matx(i,j)<imiss) then
                                                        +
                                                        536  kmin(i) = min(kmin(i),matx(i,j))
                                                        +
                                                        537  kmax(i) = max(kmax(i),matx(i,j))
                                                        +
                                                        538  else
                                                        +
                                                        539  kmis(i) = .true.
                                                        +
                                                        540  endif
                                                        +
                                                        541  enddo
                                                        +
                                                        542  kmiss = kmis(i) .and. kmin(i)<imiss
                                                        +
                                                        543  range = real(max(1,kmax(i)-kmin(i)+1))
                                                        +
                                                        544  if(ityp(i)==2 .and. (range>1. .or. kmiss)) then
                                                        +
                                                        545  ! The data values in row i of the compression matrix are numeric values that aren't all identical. Compute the
                                                        +
                                                        546  ! number of bits needed to hold the largest of the increments.
                                                        +
                                                        547  kbit(i) = nint(log(range)*rln2)
                                                        +
                                                        548  if(2**kbit(i)-1<=range) kbit(i) = kbit(i)+1
                                                        +
                                                        549  ! However, under no circumstances should this number ever exceed the width of the original underlying descriptor!
                                                        +
                                                        550  if(kbit(i)>iwid(i)) kbit(i) = iwid(i)
                                                        +
                                                        551  else
                                                        +
                                                        552  ! The data values in row i of the compression matrix are numeric values that are all identical, so the increments
                                                        +
                                                        553  ! will be omitted from the message.
                                                        +
                                                        554  kbit(i) = 0
                                                        +
                                                        555  endif
                                                        +
                                                        556  ldata = ldata + iwid(i) + 6 + ncol*kbit(i)
                                                        +
                                                        557  elseif(ityp(i)==3) then
                                                        +
                                                        558  ! Row i of the compression matrix contains character values, so kmis(i) will store .false. if all such values are
                                                        +
                                                        559  ! identical, OR .true. otherwise
                                                        +
                                                        560  if(icol==1) then
                                                        +
                                                        561  cstr(i) = catx(i,1)
                                                        +
                                                        562  kmis(i) = .false.
                                                        +
                                                        563  endif
                                                        +
                                                        564  do j=icol,ncol
                                                        +
                                                        565  if ( (.not.kmis(i)) .and. (cstr(i)/=catx(i,j)) ) then
                                                        +
                                                        566  kmis(i) = .true.
                                                        +
                                                        567  endif
                                                        +
                                                        568  enddo
                                                        +
                                                        569  if (kmis(i)) then
                                                        +
                                                        570  ! The data values in row i of the compression matrix are character values that are not all identical
                                                        +
                                                        571  kbit(i) = iwid(i)
                                                        +
                                                        572  else
                                                        +
                                                        573  ! The data values in row i of the compression matrix are character values that are all identical, so the
                                                        +
                                                        574  ! increments will be omitted from the message
                                                        +
                                                        575  kbit(i) = 0
                                                        +
                                                        576  endif
                                                        +
                                                        577  ldata = ldata + iwid(i) + 6 + ncol*kbit(i)
                                                        +
                                                        578  endif
                                                        +
                                                        579  enddo
                                                        +
                                                        580  ! Round data length up to a whole byte count
                                                        +
                                                        581  ibyt = (ldata+8-mod(ldata,8))/8
                                                        +
                                                        582  ! Depending on the edition number of the message, we need to ensure that we round to an even byte count
                                                        +
                                                        583  if( (.not.edge4) .and. (mod(ibyt,2)/=0) ) ibyt = ibyt+1
                                                        +
                                                        584  jbit = ibyt*8-ldata
                                                        +
                                                        585  if(msgfull(ibyt,kbyt,maxbyt)) then
                                                        +
                                                        586  ! The current subset will not fit into the current message. Set the flag to indicate that a message write is needed,
                                                        +
                                                        587  ! then go back and re-compress the Section 4 data for this message while excluding the data for the current subset,
                                                        +
                                                        588  ! which will be held and stored as the first subset of a new message after writing the current message.
                                                        +
                                                        589  writ1 = .true.
                                                        +
                                                        590  ncol = ncol-1
                                                        +
                                                        591  icol = 1
                                                        +
                                                        592  elseif(.not.writ1) then
                                                        +
                                                        593  ! Add the current subset to the current message and return
                                                        +
                                                        594  call usrtpl(lun,1,1)
                                                        +
                                                        595  nsub(lun) = -ncol
                                                        +
                                                        596  return
                                                        +
                                                        597  else
                                                        +
                                                        598  ! Exit the loop and proceed to write out the current message
                                                        +
                                                        599  cmpres = .false.
                                                        +
                                                        600  endif
                                                        +
                                                        601  enddo
                                                        +
                                                        602 
                                                        +
                                                        603  ! Write the complete compressed message. First, we need to do another call to cmsgini() to initialize Sections 0, 1, 2,
                                                        +
                                                        604  ! and 3 of the final compressed BUFR message that will be written out.
                                                        +
                                                        605 
                                                        +
                                                        606  call cmsgini(lun,mgwa,subset,idate(lun),ncol,ibyt)
                                                        +
                                                        607 
                                                        +
                                                        608  ! Now add the Section 4 data
                                                        +
                                                        609 
                                                        +
                                                        610  ibit = ibyt*8
                                                        +
                                                        611  do i=1,nrow
                                                        +
                                                        612  if(ityp(i)==1.or.ityp(i)==2) then
                                                        +
                                                        613  call pkb8(kmin(i),iwid(i),mgwa,ibit)
                                                        +
                                                        614  call pkb(kbit(i),6,mgwa,ibit)
                                                        +
                                                        615  if(kbit(i)>0) then
                                                        +
                                                        616  do j=1,ncol
                                                        +
                                                        617  if(matx(i,j)<2_8**iwid(i)-1) then
                                                        +
                                                        618  incr = matx(i,j)-kmin(i)
                                                        +
                                                        619  else
                                                        +
                                                        620  incr = 2_8**kbit(i)-1
                                                        +
                                                        621  endif
                                                        +
                                                        622  call pkb8(incr,kbit(i),mgwa,ibit)
                                                        +
                                                        623  enddo
                                                        +
                                                        624  endif
                                                        +
                                                        625  elseif(ityp(i)==3) then
                                                        +
                                                        626  nchr = iwid(i)/8
                                                        +
                                                        627  if(kbit(i)>0) then
                                                        +
                                                        628  call ipkm(czero,1,0)
                                                        +
                                                        629  do j=1,nchr
                                                        +
                                                        630  call pkc(czero,1,mgwa,ibit)
                                                        +
                                                        631  enddo
                                                        +
                                                        632  call pkb(nchr,6,mgwa,ibit)
                                                        +
                                                        633  do j=1,ncol
                                                        +
                                                        634  call pkc(catx(i,j),nchr,mgwa,ibit)
                                                        +
                                                        635  enddo
                                                        +
                                                        636  else
                                                        +
                                                        637  call pkc(cstr(i),nchr,mgwa,ibit)
                                                        +
                                                        638  call pkb(0,6,mgwa,ibit)
                                                        +
                                                        639  endif
                                                        +
                                                        640  endif
                                                        +
                                                        641  enddo
                                                        +
                                                        642 
                                                        +
                                                        643  ! Pad the end of Section 4 with zeroes up to the necessary byte count
                                                        +
                                                        644 
                                                        +
                                                        645  call pkb(0,jbit,mgwa,ibit)
                                                        +
                                                        646 
                                                        +
                                                        647  ! Add Section 5
                                                        +
                                                        648 
                                                        +
                                                        649  call pkc('7777',4,mgwa,ibit)
                                                        +
                                                        650 
                                                        +
                                                        651  ! Check that the message byte counters agree, then write the message
                                                        +
                                                        652 
                                                        +
                                                        653  if(mod(ibit,8)/=0) call bort('BUFRLIB: WRCMPS - THE NUMBER OF BITS IN THE '// &
                                                        +
                                                        654  'COMPRESSED BUFR MSG IS NOT A MULTIPLE OF 8 - MSG MUST END ON A BYTE BOUNDARY')
                                                        +
                                                        655  lbyt = iupbs01(mgwa,'LENM')
                                                        +
                                                        656  nbyt = ibit/8
                                                        +
                                                        657  if(nbyt/=lbyt) then
                                                        +
                                                        658  write(bort_str,'("BUFRLIB: WRCMPS - OUTPUT MESSAGE LENGTH FROM '// &
                                                        +
                                                        659  'SECTION 0",I6," DOES NOT EQUAL FINAL PACKED MESSAGE LENGTH (",I6,")")') lbyt,nbyt
                                                        +
                                                        660  call bort(bort_str)
                                                        +
                                                        661  endif
                                                        +
                                                        662 
                                                        +
                                                        663  call msgwrt(lunit,mgwa,nbyt)
                                                        +
                                                        664 
                                                        +
                                                        665  ! Now, unless this was a "flush" call to this subroutine, go back and initialize a new message to hold the current subset
                                                        +
                                                        666  ! that we weren't able to fit into the message that was just written out.
                                                        +
                                                        667 
                                                        +
                                                        668  first = .true.
                                                        +
                                                        669  if(flush) return
                                                        +
                                                        670  end do
                                                        +
                                                        671 
                                                        +
                                                        672 end subroutine wrcmps
                                                        +
                                                        subroutine strbtm(n, lun)
                                                        Store internal information in module moda_bitmaps if the input element is part of a bitmap.
                                                        Definition: bitmaps.F90:13
                                                        +
                                                        subroutine bort(str)
                                                        Log an error message, then abort the application program.
                                                        Definition: borts.F90:15
                                                        +
                                                        subroutine upb(nval, nbits, ibay, ibit)
                                                        Decode an integer value from within a specified number of bits of an integer array,...
                                                        Definition: cidecode.F90:202
                                                        +
                                                        real *8 function ups(ival, node)
                                                        Unpack a real*8 value from an integer by applying the proper scale and reference values.
                                                        Definition: cidecode.F90:319
                                                        +
                                                        subroutine up8(nval, nbits, ibay, ibit)
                                                        Decode an 8-byte integer value from within a specified number of bits of an integer array,...
                                                        Definition: cidecode.F90:128
                                                        +
                                                        subroutine upc(chr, nchr, ibay, ibit, cnvnull)
                                                        Decode a character string from within a specified number of bytes of an integer array,...
                                                        Definition: cidecode.F90:26
                                                        +
                                                        subroutine pkc(chr, nchr, ibay, ibit)
                                                        Encode a character string within a specified number of bytes of an integer array, starting at the bit...
                                                        Definition: ciencode.F90:25
                                                        +
                                                        recursive subroutine ipkm(cbay, nbyt, n)
                                                        Encode an integer value within a specified number of bytes of a character string, up to a maximum of ...
                                                        Definition: ciencode.F90:194
                                                        +
                                                        subroutine pkb(nval, nbits, ibay, ibit)
                                                        Encode an integer value within a specified number of bits of an integer array, starting at the bit im...
                                                        Definition: ciencode.F90:140
                                                        +
                                                        subroutine pkb8(nval, nbits, ibay, ibit)
                                                        Encode an 8-byte integer value within a specified number of bits of an integer array,...
                                                        Definition: ciencode.F90:97
                                                        +
                                                        subroutine rdcmps(lun)
                                                        Read the next compressed BUFR data subset into internal arrays.
                                                        Definition: compress.F90:110
                                                        +
                                                        subroutine cmsgini(lun, mesg, subset, idate, nsub, nbyt)
                                                        Initialize a new BUFR message for output in compressed format.
                                                        Definition: compress.F90:259
                                                        +
                                                        recursive subroutine writcp(lunit)
                                                        Write a data subset into a BUFR message using compression.
                                                        Definition: compress.F90:72
                                                        +
                                                        subroutine wrcmps(lunix)
                                                        Write a compressed BUFR data subset.
                                                        Definition: compress.F90:387
                                                        +
                                                        subroutine cmpmsg(cf)
                                                        Specify whether BUFR messages output by future calls to message-writing subroutines and subset-writin...
                                                        Definition: compress.F90:33
                                                        +
                                                        subroutine nemtba(lun, nemo, mtyp, msbt, inod)
                                                        Get information about a Table A descriptor from the internal DX BUFR tables.
                                                        Definition: dxtable.F90:1247
                                                        +
                                                        subroutine nemtab(lun, nemo, idn, tab, iret)
                                                        Get information about a descriptor, based on a mnemonic.
                                                        Definition: fxy.F90:432
                                                        +
                                                        subroutine capit(str)
                                                        Capitalize all of the alphabetic characters in a string.
                                                        Definition: misc.F90:355
                                                        +
                                                        Declare arrays and variables used to store BUFR messages internally for multiple file IDs.
                                                        +
                                                        integer, dimension(:), allocatable ibay
                                                        Current data subset.
                                                        +
                                                        integer ibit
                                                        Bit pointer within ibay.
                                                        +
                                                        integer, dimension(:,:), allocatable mbay
                                                        Current BUFR message for each file ID.
                                                        +
                                                        integer, dimension(:), allocatable mbyt
                                                        Length (in bytes) of current BUFR message for each file ID.
                                                        +
                                                        integer maxbyt
                                                        Maximum length of an output BUFR message.
                                                        +
                                                        Declare arrays and variables needed for the storage of data values needed when writing compressed dat...
                                                        +
                                                        integer ncol
                                                        Number of data subsets in message.
                                                        +
                                                        integer *8 incr
                                                        Increment used when compressing non-character data values.
                                                        +
                                                        character *(:), dimension(:,:), allocatable catx
                                                        Character data values for all data subsets in message.
                                                        +
                                                        integer *8, dimension(:,:), allocatable matx
                                                        Non-character data values for all data subsets in message.
                                                        +
                                                        Declare arrays and variable needed for the storage of data values needed when writing compressed data...
                                                        +
                                                        character *(:), dimension(:), allocatable cstr
                                                        Character data value, if corresponding ityp value is set to 3.
                                                        +
                                                        integer kbyt
                                                        Number of bytes required to store Sections 0, 1, 2, and 3 of message.
                                                        +
                                                        logical flush
                                                        Flush flag.
                                                        +
                                                        integer nrow
                                                        Number of data values for each data subset in message.
                                                        +
                                                        integer *8 imiss
                                                        "Missing" value used when compressing non-character data values.
                                                        +
                                                        integer *8, dimension(:), allocatable kmax
                                                        Maximum of each data value across all data subsets in message.
                                                        +
                                                        integer, dimension(:), allocatable jlnode
                                                        Jump/link table node corresponding to each data value.
                                                        +
                                                        logical writ1
                                                        Write-out flag.
                                                        +
                                                        integer, dimension(:), allocatable ityp
                                                        Type of each data value:
                                                        +
                                                        integer, dimension(:), allocatable iwid
                                                        Bit width of underlying data descriptor as defined within Table B for each data value.
                                                        +
                                                        integer lunc
                                                        File ID for output file.
                                                        +
                                                        integer, dimension(:), allocatable kbit
                                                        Number of bits needed to hold the increments for this data value within each data subset of the messa...
                                                        +
                                                        logical, dimension(:), allocatable kmis
                                                        "Missing" values flag.
                                                        +
                                                        integer *8, dimension(:), allocatable kmin
                                                        Minimum of each data value across all data subsets in message.
                                                        +
                                                        Declare an array used by various subroutines and functions to hold a temporary working copy of a BUFR...
                                                        +
                                                        integer, dimension(:), allocatable mgwa
                                                        Temporary working copy of BUFR message.
                                                        +
                                                        Declare a variable used to indicate whether output BUFR messages should be compressed.
                                                        +
                                                        character ccmf
                                                        Flag indicating whether BUFR output messages are to be compressed; this variable is initialized to a ...
                                                        +
                                                        Declare arrays used to store information about the current BUFR message that is in the process of bei...
                                                        +
                                                        integer, dimension(:), allocatable inode
                                                        Table A mnemonic for type of BUFR message.
                                                        +
                                                        integer, dimension(:), allocatable idate
                                                        Section 1 date-time of message.
                                                        +
                                                        integer, dimension(:), allocatable msub
                                                        Total number of data subsets in message.
                                                        +
                                                        integer, dimension(:), allocatable nsub
                                                        Current subset pointer within message.
                                                        +
                                                        Declare arrays and variables needed to store information about long character strings (greater than 8...
                                                        +
                                                        integer nrst
                                                        Number of long character strings in data subset.
                                                        +
                                                        integer, dimension(:), allocatable irnch
                                                        Lengths (in bytes) of long character strings.
                                                        +
                                                        integer, dimension(:), allocatable irbit
                                                        Pointers in data subset to first bits of long character strings.
                                                        +
                                                        character *10, dimension(:), allocatable crtag
                                                        Table B mnemonics associated with long character strings.
                                                        +
                                                        Declare arrays and variables used to store custom values for certain mnemonics within Sections 0 and ...
                                                        +
                                                        integer, dimension(:), allocatable ivmnem
                                                        Custom values for use within Sections 0 and 1 of all future output BUFR messages written to all Fortr...
                                                        +
                                                        integer ns01v
                                                        Number of custom values stored.
                                                        +
                                                        character *8, dimension(:), allocatable cmnem
                                                        Section 0 and 1 mnemonics corresponding to ivmnem.
                                                        +
                                                        Declare an array used to store a status code for each file ID if an error or other abnormal result oc...
                                                        +
                                                        integer, dimension(:), allocatable iscodes
                                                        Abnormal status codes.
                                                        +
                                                        Declare arrays and variables used to store the internal jump/link table.
                                                        +
                                                        integer, dimension(:), allocatable ibt
                                                        Bit widths corresponding to tag and typ:
                                                        +
                                                        character *10, dimension(:), allocatable tag
                                                        Mnemonics in the jump/link table.
                                                        +
                                                        integer, dimension(:), allocatable itp
                                                        Integer type values corresponding to typ:
                                                        +
                                                        Declare arrays used to store data values and associated metadata for the current BUFR data subset in ...
                                                        +
                                                        integer, dimension(:), allocatable nval
                                                        Number of data values in BUFR data subset.
                                                        +
                                                        real *8, dimension(:,:), allocatable, target val
                                                        Data values.
                                                        +
                                                        integer, dimension(:,:), allocatable, target inv
                                                        Inventory pointer which links each data value to its corresponding node in the internal jump/link tab...
                                                        +
                                                        integer, dimension(:,:), allocatable nrfelm
                                                        Referenced data value, for data values which refer to a previous data value in the BUFR data subset v...
                                                        +
                                                        recursive subroutine status(lunit, lun, il, im)
                                                        Check whether a specified Fortran logical unit number is currently connected to the NCEPLIBS-bufr sof...
                                                        +
                                                        subroutine msgwrt(lunit, mesg, mgbyt)
                                                        Perform final checks and updates on a BUFR message before writing it to a specified Fortran logical u...
                                                        +
                                                        subroutine usrtpl(lun, invn, nbmp)
                                                        Expand a subset template within internal arrays.
                                                        +
                                                        recursive subroutine writsb(lunit)
                                                        Write a complete data subset into a BUFR message, for eventual output to logical unit lunit.
                                                        +
                                                        subroutine x84(iin8, iout4, nval)
                                                        Encode one or more 8-byte integer values as 4-byte integer values.
                                                        Definition: x4884.F90:65
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/copydata_8F90.html b/previous_versions/v12.1.0/copydata_8F90.html new file mode 100644 index 000000000..8e155cd0e --- /dev/null +++ b/previous_versions/v12.1.0/copydata_8F90.html @@ -0,0 +1,720 @@ + + + + + + + +NCEPLIBS-bufr: copydata.F90 File Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        copydata.F90 File Reference
                                                        +
                                                        +
                                                        + +

                                                        Copy data between BUFR files or messages. +More...

                                                        + +

                                                        Go to the source code of this file.

                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                                                        +Functions/Subroutines

                                                        recursive subroutine copybf (lunin, lunot)
                                                         Copy an entire BUFR file from one Fortran logical unit to another. More...
                                                         
                                                        recursive subroutine copymg (lunin, lunot)
                                                         Copy a BUFR message from one file to another. More...
                                                         
                                                        recursive subroutine copysb (lunin, lunot, iret)
                                                         Copy a BUFR data subset from one Fortran logical unit to another. More...
                                                         
                                                        subroutine cpbfdx (lud, lun)
                                                         Copy all of the DX BUFR table information from one unit to another within internal memory. More...
                                                         
                                                        recursive subroutine cpymem (lunot)
                                                         Copy a BUFR message from internal arrays to a file. More...
                                                         
                                                        subroutine cpyupd (lunit, lin, lun, ibyt)
                                                         Copy a BUFR data subset from one unit to another within internal memory. More...
                                                         
                                                        recursive integer function icopysb (lunin, lunot)
                                                         Copy a BUFR data subset from one Fortran logical unit to another. More...
                                                         
                                                        integer function iok2cpy (lui, luo)
                                                         Check whether a BUFR message, or a data subset from within a BUFR message, can be copied from one Fortran logical unit to another. More...
                                                         
                                                        subroutine mvb (ib1, nb1, ib2, nb2, nbm)
                                                         Copy a specified number of bytes from one packed binary array to another. More...
                                                         
                                                        recursive subroutine ufbcpy (lubin, lubot)
                                                         Copy a BUFR data subset from one Fortran logical unit to another. More...
                                                         
                                                        recursive subroutine ufbcup (lubin, lubot)
                                                         Copy unique elements of a data subset. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Copy data between BUFR files or messages.

                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition in file copydata.F90.

                                                        +

                                                        Function/Subroutine Documentation

                                                        + +

                                                        ◆ copybf()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        recursive subroutine copybf (integer, intent(in) lunin,
                                                        integer, intent(in) lunot 
                                                        )
                                                        +
                                                        + +

                                                        Copy an entire BUFR file from one Fortran logical unit to another.

                                                        +
                                                        Parameters
                                                        + + + +
                                                        lunin- Fortran logical unit number for source BUFR file
                                                        lunot- Fortran logical unit number for target BUFR file
                                                        +
                                                        +
                                                        +

                                                        The logical unit numbers lunin and lunot must already be associated with actual filenames on the local system, typically via a Fortran "OPEN" statement.

                                                        +
                                                        Remarks
                                                          +
                                                        • This subroutine uses subroutine msgwrt() to copy each BUFR message from lunin to lunot; therefore, this subroutine can be used to create a copy of lunin where each corresponding message in lunot contains any or all of the updates described in the documentation for subroutine msgwrt().
                                                        • +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 22 of file copydata.F90.

                                                        + +

                                                        References bort(), closbf(), iupbs01(), moda_mgwa::mgwa, msgwrt(), openbf(), rdmsgw(), status(), and x84().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ copymg()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        recursive subroutine copymg (integer, intent(in) lunin,
                                                        integer, intent(in) lunot 
                                                        )
                                                        +
                                                        + +

                                                        Copy a BUFR message from one file to another.

                                                        +

                                                        This subroutine is similar to subroutine cpymem(), except that it copies a BUFR message from one Fortran logical unit to another, whereas cpymem() copies a BUFR message from internal arrays in memory to a specified Fortran logical unit.

                                                        +

                                                        Logical unit lUNIN should have already been opened for input operations via a previous call to subroutine openbf(). A BUFR message should have already been read into internal arrays for lunin via a previous call to one of the message-reading subroutines.

                                                        +

                                                        Logical unit lunot should have already been opened for output operations via a previous call to subroutine openbf(), but there should not be any BUFR message already open for output within the internal arrays for lunot via a previous call to one of the message-writing subroutines.

                                                        +

                                                        The DX BUFR Table information associated with each of the logical units lunin and lunot must contain identical definitions for the type of BUFR message to be copied from lunin to lunot.

                                                        +

                                                        This subroutine uses subroutine msgwrt() to write to lunot; therefore, it can be used to transform a copy of the original BUFR message from lunin with any or all of the updates described in the documentation for subroutine msgwrt().

                                                        +
                                                        Parameters
                                                        + + + +
                                                        lunin- Fortran logical unit number for source BUFR file
                                                        lunot- Fortran logical unit number for target BUFR file
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 107 of file copydata.F90.

                                                        + +

                                                        References bort(), moda_msgcwd::idate, moda_msgcwd::inode, iok2cpy(), iupbs01(), moda_bitbuf::mbay, msgwrt(), moda_msgcwd::msub, nemtba(), moda_msgcwd::nmsg, moda_msgcwd::nsub, status(), moda_tables::tag, and x84().

                                                        + +

                                                        Referenced by split_by_subset().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ copysb()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        recursive subroutine copysb (integer, intent(in) lunin,
                                                        integer, intent(in) lunot,
                                                        integer, intent(out) iret 
                                                        )
                                                        +
                                                        + +

                                                        Copy a BUFR data subset from one Fortran logical unit to another.

                                                        +

                                                        Logical unit lunin should have already been opened for input operations via a previous call to subroutine openbf(), and a BUFR message should have already been read into internal arrays for lunin via a previous call to one of the message-reading subroutines.

                                                        +

                                                        Logical unit lunot should have already been opened for output operations via a previous call to subroutine openbf(), and a BUFR message should already be open for output within internal arrays via a previous call to one of the NCEPLIBS-bufr message-writing subroutines.

                                                        +

                                                        The compression status of the data subset (i.e. compressed or uncompressed) will be preserved when copying from lunin to lunot.

                                                        +

                                                        If lunot < 0, then a data subset is read from the BUFR message in internal arrays for lunin but is not copied to the BUFR message in internal arrays for lunot. Otherwise, the DX BUFR Table information associated with each of the logical units lunin and lunot must contain identical definitions for the type of BUFR message containing the data subset to be copied from lunin to lunot.

                                                        +
                                                        Parameters
                                                        + + + + +
                                                        lunin- Fortran logical unit number for source BUFR file
                                                        lunot- Fortran logical unit number for target BUFR file
                                                        iret- return code:
                                                          +
                                                        • 0 = normal return
                                                        • +
                                                        • -1 = a BUFR data subset could not be read from the BUFR message in internal arrays for lunin
                                                        • +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 202 of file copydata.F90.

                                                        + +

                                                        References bort(), cmpmsg(), cpyupd(), getlens(), moda_bitbuf::ibit, moda_msgcwd::inode, iok2cpy(), moda_bitbuf::mbay, moda_bitbuf::mbyt, mesgbc(), moda_msgcwd::msub, moda_msgcwd::nsub, readsb(), status(), moda_tables::tag, ufbcpy(), upb(), writsb(), x48(), and x84().

                                                        + +

                                                        Referenced by icopysb().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ cpbfdx()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        subroutine cpbfdx (integer, intent(in) lud,
                                                        integer, intent(in) lun 
                                                        )
                                                        +
                                                        + +

                                                        Copy all of the DX BUFR table information from one unit to another within internal memory.

                                                        +
                                                        Parameters
                                                        + + + +
                                                        lud- File ID for input unit
                                                        lun- File ID for output unit
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 677 of file copydata.F90.

                                                        + +

                                                        References dxinit(), moda_tababd::idna, moda_tababd::idnb, moda_tababd::idnd, moda_msgcwd::inode, moda_tababd::mtab, moda_tababd::ntba, moda_tababd::ntbb, moda_tababd::ntbd, moda_tababd::taba, moda_tababd::tabb, and moda_tababd::tabd.

                                                        + +

                                                        Referenced by makestab(), readdx(), and wrdxtb().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ cpymem()

                                                        + +
                                                        +
                                                        + + + + + + + + +
                                                        recursive subroutine cpymem (integer, intent(in) lunot)
                                                        +
                                                        + +

                                                        Copy a BUFR message from internal arrays to a file.

                                                        +

                                                        This subroutine is similar to subroutine copymg(), except that it copies a BUFR message from internal arrays in memory to a specified Fortran logical unit, whereas copymg() copies a BUFR message from one Fortran logical unit to another.

                                                        +

                                                        One or more files of BUFR messages should have already been read into internal arrays in memory via one or more previous calls to subroutine ufbmem(), and a BUFR message should already be in scope for processing from these arrays via a previous call to subroutine rdmemm() or readmm().

                                                        +

                                                        Logical unit lunot should have already been opened for output operations via a previous call to subroutine openbf(), but there should not be any BUFR message already open for output within the internal arrays for lunot via a previous call to one of the message-writing subroutines.

                                                        +

                                                        The DX BUFR Table information associated with the internal arrays in memory and with logical unit lunot must contain identical definitions for the type of BUFR message to be copied from the former to the latter.

                                                        +

                                                        This subroutine uses subroutine msgwrt() to write to lunot; therefore, it can be used to transform a copy of the original BUFR message from memory with any or all of the updates described in the documentation for subroutine msgwrt().

                                                        +
                                                        Parameters
                                                        + + +
                                                        lunot- Fortran logical unit number for target BUFR file.
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 433 of file copydata.F90.

                                                        + +

                                                        References bort(), moda_msgcwd::idate, moda_msgcwd::inode, iok2cpy(), iupbs01(), moda_bitbuf::mbay, msgwrt(), moda_msgcwd::msub, moda_msgmem::munit, nemtba(), moda_msgcwd::nmsg, moda_msgcwd::nsub, status(), moda_tables::tag, and x84().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ cpyupd()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        subroutine cpyupd (integer, intent(in) lunit,
                                                        integer, intent(in) lin,
                                                        integer, intent(in) lun,
                                                        integer, intent(in) ibyt 
                                                        )
                                                        +
                                                        + +

                                                        Copy a BUFR data subset from one unit to another within internal memory.

                                                        +

                                                        If the subset will not fit into the output message, or if the subset byte count exceeds 65530 (sufficiently close to the 16-bit byte counter upper limit of 65535), then that message is flushed to lunit and a new one is created in order to hold the copied subset. Any subset with byte count > 65530 will be written into its own one-subset message. If the subset to be copied is larger than the maximum message length, then a call is issued to subroutine bort().

                                                        +
                                                        Parameters
                                                        + + + + + +
                                                        lunit- Fortran logical unit number for BUFR file associated with output unit
                                                        lin- File ID for input unit
                                                        lun- File ID for output unit
                                                        ibyt- Length (in bytes) of data subset
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 512 of file copydata.F90.

                                                        + +

                                                        References bort(), errwrt(), moda_bitbuf::maxbyt, moda_bitbuf::mbay, moda_bitbuf::mbyt, msgini(), msgwrt(), mvb(), moda_msgcwd::nsub, and pkb().

                                                        + +

                                                        Referenced by copysb().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ icopysb()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        recursive integer function icopysb (integer, intent(in) lunin,
                                                        integer, intent(in) lunot 
                                                        )
                                                        +
                                                        + +

                                                        Copy a BUFR data subset from one Fortran logical unit to another.

                                                        +

                                                        This function calls subroutine copysb() and passes back its return code as the function value.

                                                        +
                                                        Parameters
                                                        + + + +
                                                        lunin- Fortran logical unit number for source BUFR file
                                                        lunot- Fortran logical unit number for target BUFR file
                                                        +
                                                        +
                                                        +
                                                        Returns
                                                        icopysb - return code:
                                                          +
                                                        • 0 = normal return
                                                        • +
                                                        • -1 = a BUFR data subset could not be read from the BUFR message in internal arrays for lunin
                                                        • +
                                                        +
                                                        +
                                                        Remarks
                                                          +
                                                        • The use of this function allows the return code from copysb() to be used as the target variable within an iterative program loop.
                                                        • +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 311 of file copydata.F90.

                                                        + +

                                                        References copysb(), and x84().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ iok2cpy()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        integer function iok2cpy (integer, intent(in) lui,
                                                        integer, intent(in) luo 
                                                        )
                                                        +
                                                        + +

                                                        Check whether a BUFR message, or a data subset from within a BUFR message, can be copied from one Fortran logical unit to another.

                                                        +

                                                        The decision is based on whether both logical units contain identical definitions for the BUFR message type in question within their associated DX BUFR Table information. Note that it's possible for a BUFR message type to be identically defined for two different logical units even if the full set of associated DX BUFR table information isn't identical between both units.

                                                        +
                                                        Parameters
                                                        + + + +
                                                        lui- File ID for source BUFR file
                                                        luo- File ID for target BUFR file
                                                        +
                                                        +
                                                        +
                                                        Returns
                                                        iok2cpy - Flag indicating whether a BUFR message or data subset can be copied from lui to luo:
                                                          +
                                                        • 0 = No
                                                        • +
                                                        • 1 = Yes
                                                        • +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2009-06-26
                                                        + +

                                                        Definition at line 354 of file copydata.F90.

                                                        + +

                                                        References moda_tables::ibt, icmpdx(), moda_msgcwd::inode, moda_tables::irf, moda_tables::isc, nemtbax(), moda_tables::tag, and moda_tables::typ.

                                                        + +

                                                        Referenced by copymg(), copysb(), cpymem(), and ufbcpy().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ mvb()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        subroutine mvb (integer, dimension(*), intent(in) ib1,
                                                        integer, intent(in) nb1,
                                                        integer, dimension(*), intent(out) ib2,
                                                        integer, intent(in) nb2,
                                                        integer, intent(in) nbm 
                                                        )
                                                        +
                                                        + +

                                                        Copy a specified number of bytes from one packed binary array to another.

                                                        +
                                                        Parameters
                                                        + + + + + + +
                                                        ib1- Packed input binary array
                                                        nb1- Pointer to first byte in ib1 to copy from
                                                        ib2- Packed output binary array
                                                        nb2- Pointer to first byte in ib2 to copy to
                                                        nbm- Number of bytes to copy
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 730 of file copydata.F90.

                                                        + +

                                                        References pkb(), and upb().

                                                        + +

                                                        Referenced by atrcpt(), cnved4(), cpyupd(), msgupd(), stndrd(), x48(), and x84().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ ufbcpy()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        recursive subroutine ufbcpy (integer, intent(in) lubin,
                                                        integer, intent(in) lubot 
                                                        )
                                                        +
                                                        + +

                                                        Copy a BUFR data subset from one Fortran logical unit to another.

                                                        +

                                                        This subroutine is similar to subroutine copysb(), except that here a BUFR data subset should have already been read into internal arrays for logical unit lubin via a previous call to one of the subset-reading subroutines, whereas copysb() only requires that a BUFR message should have already been read into internal arrays via a previous call to one of the message-reading subroutines.

                                                        +

                                                        For logical unit lubot, a BUFR message should already be open for output within internal arrays via a previous call to one of the message-writing subroutines.

                                                        +

                                                        The DX BUFR Table information associated with each of the logical units lubin and lubot must contain identical definitions for the data subset to be copied.

                                                        +
                                                        Parameters
                                                        + + + +
                                                        lubin- Fortran logical unit number for source BUFR file
                                                        lubot- Fortran logical unit number for target BUFR file
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 611 of file copydata.F90.

                                                        + +

                                                        References bort(), moda_msgcwd::inode, moda_usrint::inv, iok2cpy(), moda_ufbcpl::luncpy, moda_usrint::nrfelm, moda_usrint::nval, status(), moda_tables::tag, moda_usrint::val, and x84().

                                                        + +

                                                        Referenced by copysb().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ ufbcup()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        recursive subroutine ufbcup (integer, intent(in) lubin,
                                                        integer, intent(in) lubot 
                                                        )
                                                        +
                                                        + +

                                                        Copy unique elements of a data subset.

                                                        +

                                                        Copy each unique element from an input subset into the identical mnemonic slot in the output subset.

                                                        +

                                                        Before this subroutine is called:

                                                        +

                                                        After this subroutine is called, one of the subset-writing subroutines must be called on the output file to write the subset to file.

                                                        +
                                                        Parameters
                                                        + + + +
                                                        lubin- Fortran logical unit number for input BUFR file
                                                        lubot- Fortran logical unit number for output BUFR file
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 767 of file copydata.F90.

                                                        + +

                                                        References bort(), moda_msgcwd::inode, moda_usrint::inv, moda_ivttmp::itmp, moda_tables::itp, moda_usrint::nval, status(), moda_tables::tag, moda_ivttmp::ttmp, moda_usrint::val, and x84().

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/copydata_8F90.js b/previous_versions/v12.1.0/copydata_8F90.js new file mode 100644 index 000000000..82be29cf1 --- /dev/null +++ b/previous_versions/v12.1.0/copydata_8F90.js @@ -0,0 +1,14 @@ +var copydata_8F90 = +[ + [ "copybf", "copydata_8F90.html#a6df688983642d7845688aba3819c847e", null ], + [ "copymg", "copydata_8F90.html#aedfe2559c1f9c59ec85c11993b378e7e", null ], + [ "copysb", "copydata_8F90.html#a81eba6ff34f0a5020bf311ccf24d8efc", null ], + [ "cpbfdx", "copydata_8F90.html#a352b4ac3adf31bada79d4d8672f0b800", null ], + [ "cpymem", "copydata_8F90.html#ad102179380a6543e1ec7af4c1ba1fdde", null ], + [ "cpyupd", "copydata_8F90.html#a9441a5be99c4a359ce4f2798037a2ea1", null ], + [ "icopysb", "copydata_8F90.html#a31b6d67aacae28998cab9d130d39e7a2", null ], + [ "iok2cpy", "copydata_8F90.html#a23f9925bf37d99fd855fd80cf5750ee2", null ], + [ "mvb", "copydata_8F90.html#a4ced98b23d03cd8718d81b357ee4e2c5", null ], + [ "ufbcpy", "copydata_8F90.html#aed892e851f07fc9bf94a2c58c809c09c", null ], + [ "ufbcup", "copydata_8F90.html#a6ec0c8f23e362f62f78ba314d6fa8f33", null ] +]; \ No newline at end of file diff --git a/previous_versions/v12.1.0/copydata_8F90_source.html b/previous_versions/v12.1.0/copydata_8F90_source.html new file mode 100644 index 000000000..0d04e1c2d --- /dev/null +++ b/previous_versions/v12.1.0/copydata_8F90_source.html @@ -0,0 +1,794 @@ + + + + + + + +NCEPLIBS-bufr: copydata.F90 Source File + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        +
                                                        copydata.F90
                                                        +
                                                        +
                                                        +Go to the documentation of this file.
                                                        1 
                                                        +
                                                        5 
                                                        +
                                                        22 recursive subroutine copybf(lunin,lunot)
                                                        +
                                                        23 
                                                        +
                                                        24  use modv_vars, only: im8b
                                                        +
                                                        25 
                                                        +
                                                        26  use moda_mgwa
                                                        +
                                                        27 
                                                        +
                                                        28  implicit none
                                                        +
                                                        29 
                                                        +
                                                        30  integer, intent(in) :: lunin, lunot
                                                        +
                                                        31  integer my_lunin, my_lunot, lun, il, im, ier, iupbs01
                                                        +
                                                        32 
                                                        +
                                                        33  ! Check for I8 integers
                                                        +
                                                        34 
                                                        +
                                                        35  if(im8b) then
                                                        +
                                                        36  im8b=.false.
                                                        +
                                                        37 
                                                        +
                                                        38  call x84(lunin,my_lunin,1)
                                                        +
                                                        39  call x84(lunot,my_lunot,1)
                                                        +
                                                        40  call copybf(my_lunin,my_lunot)
                                                        +
                                                        41 
                                                        +
                                                        42  im8b=.true.
                                                        +
                                                        43  return
                                                        +
                                                        44  endif
                                                        +
                                                        45 
                                                        +
                                                        46  ! Check BUFR file statuses
                                                        +
                                                        47 
                                                        +
                                                        48  call status(lunin,lun,il,im)
                                                        +
                                                        49  if(il/=0) call bort ('BUFRLIB: COPYBF - INPUT BUFR FILE IS OPEN, IT MUST BE CLOSED')
                                                        +
                                                        50  call status(lunot,lun,il,im)
                                                        +
                                                        51  if(il/=0) call bort ('BUFRLIB: COPYBF - OUTPUT BUFR FILE IS OPEN, IT MUST BE CLOSED')
                                                        +
                                                        52 
                                                        +
                                                        53  ! Connect the files for reading/writing to the C I/O interface
                                                        +
                                                        54 
                                                        +
                                                        55  call openbf(lunin,'INX',lunin)
                                                        +
                                                        56  call openbf(lunot,'OUX',lunin)
                                                        +
                                                        57 
                                                        +
                                                        58  ! Read and copy a BUFR file from unit lunin to unit lunot
                                                        +
                                                        59 
                                                        +
                                                        60  ier = 0
                                                        +
                                                        61  do while (ier==0)
                                                        +
                                                        62  call rdmsgw(lunin,mgwa,ier)
                                                        +
                                                        63  if(ier==0) call msgwrt(lunot,mgwa,iupbs01(mgwa,'LENM'))
                                                        +
                                                        64  enddo
                                                        +
                                                        65 
                                                        +
                                                        66  ! Free up the file connections for the two files
                                                        +
                                                        67 
                                                        +
                                                        68  call closbf(lunin)
                                                        +
                                                        69  call closbf(lunot)
                                                        +
                                                        70 
                                                        +
                                                        71  return
                                                        +
                                                        72 end subroutine copybf
                                                        +
                                                        73 
                                                        +
                                                        107 recursive subroutine copymg(lunin,lunot)
                                                        +
                                                        108 
                                                        +
                                                        109  use modv_vars, only: im8b
                                                        +
                                                        110 
                                                        +
                                                        111  use moda_msgcwd
                                                        +
                                                        112  use moda_bitbuf
                                                        +
                                                        113  use moda_tables
                                                        +
                                                        114 
                                                        +
                                                        115  implicit none
                                                        +
                                                        116 
                                                        +
                                                        117  integer, intent(in) :: lunin, lunot
                                                        +
                                                        118  integer my_lunin, my_lunot, lin, lot, il, im, mtyp, msbt, inod, mbym, iupbs01, iok2cpy
                                                        +
                                                        119 
                                                        +
                                                        120  character*8 subset
                                                        +
                                                        121 
                                                        +
                                                        122  ! Check for I8 integers
                                                        +
                                                        123 
                                                        +
                                                        124  if(im8b) then
                                                        +
                                                        125  im8b=.false.
                                                        +
                                                        126 
                                                        +
                                                        127  call x84(lunin,my_lunin,1)
                                                        +
                                                        128  call x84(lunot,my_lunot,1)
                                                        +
                                                        129  call copymg(my_lunin,my_lunot)
                                                        +
                                                        130 
                                                        +
                                                        131  im8b=.true.
                                                        +
                                                        132  return
                                                        +
                                                        133  endif
                                                        +
                                                        134 
                                                        +
                                                        135  ! Check the file statuses
                                                        +
                                                        136 
                                                        +
                                                        137  call status(lunin,lin,il,im)
                                                        +
                                                        138  if(il==0) call bort('BUFRLIB: COPYMG - INPUT BUFR FILE IS CLOSED, IT MUST BE OPEN FOR INPUT')
                                                        +
                                                        139  if(il>0) call bort('BUFRLIB: COPYMG - INPUT BUFR FILE IS OPEN FOR OUTPUT, IT MUST BE OPEN FOR INPUT')
                                                        +
                                                        140  if(im==0) call bort('BUFRLIB: COPYMG - A MESSAGE MUST BE OPEN IN INPUT BUFR FILE, NONE ARE')
                                                        +
                                                        141 
                                                        +
                                                        142  call status(lunot,lot,il,im)
                                                        +
                                                        143  if(il==0) call bort('BUFRLIB: COPYMG - OUTPUT BUFR FILE IS CLOSED, IT MUST BE OPEN FOR OUTPUT')
                                                        +
                                                        144  if(il<0) call bort('BUFRLIB: COPYMG - OUTPUT BUFR FILE IS OPEN FOR INPUT, IT MUST BE OPEN FOR OUTPUT')
                                                        +
                                                        145  if(im/=0) call bort('BUFRLIB: COPYMG - ALL MESSAGES MUST BE CLOSED IN OUTPUT BUFR FILE, A MESSAGE IS OPEN')
                                                        +
                                                        146 
                                                        +
                                                        147  ! Make sure both files have the same tables
                                                        +
                                                        148 
                                                        +
                                                        149  subset = tag(inode(lin))(1:8)
                                                        +
                                                        150  call nemtba(lot,subset,mtyp,msbt,inod)
                                                        +
                                                        151  if(inode(lin)/=inod .and. iok2cpy(lin,lot)/=1) &
                                                        +
                                                        152  call bort('BUFRLIB: COPYMG - INPUT AND OUTPUT BUFR FILES MUST HAVE THE SAME INTERNAL TABLES, THEY ARE DIFFERENT HERE')
                                                        +
                                                        153 
                                                        +
                                                        154  ! Everything okay, so copy a message
                                                        +
                                                        155 
                                                        +
                                                        156  mbym = iupbs01(mbay(1,lin),'LENM')
                                                        +
                                                        157  call msgwrt(lunot,mbay(1,lin),mbym)
                                                        +
                                                        158 
                                                        +
                                                        159  ! Set the message control words for partition associated with lunot
                                                        +
                                                        160 
                                                        +
                                                        161  nmsg(lot) = nmsg(lot) + 1
                                                        +
                                                        162  nsub(lot) = msub(lin)
                                                        +
                                                        163  msub(lot) = msub(lin)
                                                        +
                                                        164  idate(lot) = idate(lin)
                                                        +
                                                        165  inode(lot) = inod
                                                        +
                                                        166 
                                                        +
                                                        167  return
                                                        +
                                                        168 end subroutine copymg
                                                        +
                                                        169 
                                                        +
                                                        202 recursive subroutine copysb(lunin,lunot,iret)
                                                        +
                                                        203 
                                                        +
                                                        204  use modv_vars, only: im8b
                                                        +
                                                        205 
                                                        +
                                                        206  use moda_msgcwd
                                                        +
                                                        207  use moda_bitbuf
                                                        +
                                                        208  use moda_tables
                                                        +
                                                        209 
                                                        +
                                                        210  implicit none
                                                        +
                                                        211 
                                                        +
                                                        212  integer, intent(in) :: lunin, lunot
                                                        +
                                                        213  integer, intent(out) :: iret
                                                        +
                                                        214  integer my_lunin, my_lunot, lin, lot, il, im, mest, icmp, nbyt, len0, len1, len2, len3, len4, l5, iok2cpy
                                                        +
                                                        215 
                                                        +
                                                        216  ! Check for I8 integers
                                                        +
                                                        217 
                                                        +
                                                        218  if(im8b) then
                                                        +
                                                        219  im8b=.false.
                                                        +
                                                        220 
                                                        +
                                                        221  call x84(lunin,my_lunin,1)
                                                        +
                                                        222  call x84(lunot,my_lunot,1)
                                                        +
                                                        223  call copysb(my_lunin,my_lunot,iret)
                                                        +
                                                        224  call x48(iret,iret,1)
                                                        +
                                                        225 
                                                        +
                                                        226  im8b=.true.
                                                        +
                                                        227  return
                                                        +
                                                        228  endif
                                                        +
                                                        229 
                                                        +
                                                        230  iret = 0
                                                        +
                                                        231 
                                                        +
                                                        232  ! Check the file statuses
                                                        +
                                                        233 
                                                        +
                                                        234  call status(lunin,lin,il,im)
                                                        +
                                                        235  if(il==0) call bort('BUFRLIB: COPYSB - INPUT BUFR FILE IS CLOSED, IT MUST BE OPEN FOR INPUT')
                                                        +
                                                        236  if(il>0) call bort('BUFRLIB: COPYSB - INPUT BUFR FILE IS OPEN FOR OUTPUT, IT MUST BE OPEN FOR INPUT')
                                                        +
                                                        237  if(im==0) call bort('BUFRLIB: COPYSB - A MESSAGE MUST BE OPEN IN INPUT BUFR FILE, NONE ARE')
                                                        +
                                                        238 
                                                        +
                                                        239  if(lunot>0) then
                                                        +
                                                        240  call status(lunot,lot,il,im)
                                                        +
                                                        241  if(il==0) call bort('BUFRLIB: COPYSB - OUTPUT BUFR FILE IS CLOSED, IT MUST BE OPEN FOR OUTPUT')
                                                        +
                                                        242  if(il<0) call bort('BUFRLIB: COPYSB - OUTPUT BUFR FILE IS OPEN FOR INPUT, IT MUST BE OPEN FOR OUTPUT')
                                                        +
                                                        243  if(im==0) call bort('BUFRLIB: COPYSB - A MESSAGE MUST BE OPEN IN OUTPUT BUFR FILE, NONE ARE')
                                                        +
                                                        244  if( (inode(lin)/=inode(lot)) .and. ( (tag(inode(lin))/=tag(inode(lot))) .or. (iok2cpy(lin,lot)/=1) ) ) &
                                                        +
                                                        245  call bort('BUFRLIB: COPYSB - INPUT AND OUTPUT BUFR FILES MUST HAVE THE SAME INTERNAL TABLES, THEY ARE DIFFERENT HERE')
                                                        +
                                                        246  endif
                                                        +
                                                        247 
                                                        +
                                                        248  ! See if there is another subset in the message
                                                        +
                                                        249 
                                                        +
                                                        250  if(nsub(lin)==msub(lin)) then
                                                        +
                                                        251  iret = -1
                                                        +
                                                        252  return
                                                        +
                                                        253  endif
                                                        +
                                                        254 
                                                        +
                                                        255  ! Check compression status of input message, output message will match
                                                        +
                                                        256 
                                                        +
                                                        257  call mesgbc(-lunin, mest, icmp)
                                                        +
                                                        258 
                                                        +
                                                        259  if(icmp==1) then
                                                        +
                                                        260 
                                                        +
                                                        261  ! The input message is compressed, so read in the next subset and copy it as compressed to the output message.
                                                        +
                                                        262 
                                                        +
                                                        263  call readsb(lunin,iret)
                                                        +
                                                        264  if(lunot>0) then
                                                        +
                                                        265  call ufbcpy(lunin,lunot)
                                                        +
                                                        266  call cmpmsg('Y')
                                                        +
                                                        267  call writsb(lunot)
                                                        +
                                                        268  call cmpmsg('N')
                                                        +
                                                        269  endif
                                                        +
                                                        270  else
                                                        +
                                                        271 
                                                        +
                                                        272  ! The input message is uncompressed, so read in the next subset and copy it as uncompressed to the output message.
                                                        +
                                                        273 
                                                        +
                                                        274  ibit = (mbyt(lin))*8
                                                        +
                                                        275  call upb(nbyt,16,mbay(1,lin),ibit)
                                                        +
                                                        276  if (nbyt>65530) then
                                                        +
                                                        277  ! This is an oversized subset, so we can't rely on the value of nbyt as being the true size (in bytes) of the subset.
                                                        +
                                                        278  if ( (nsub(lin)==0) .and. (msub(lin)==1) ) then
                                                        +
                                                        279  ! But it's also the first and only subset in the message, so we can determine its true size in a different way.
                                                        +
                                                        280  call getlens(mbay(1,lin), 4, len0, len1, len2, len3, len4, l5)
                                                        +
                                                        281  nbyt = len4 - 4
                                                        +
                                                        282  else
                                                        +
                                                        283  ! We have no way to easily determine the true size of this oversized subset.
                                                        +
                                                        284  iret = -1
                                                        +
                                                        285  return
                                                        +
                                                        286  endif
                                                        +
                                                        287  endif
                                                        +
                                                        288  if(lunot>0) call cpyupd(lunot, lin, lot, nbyt)
                                                        +
                                                        289  mbyt(lin) = mbyt(lin) + nbyt
                                                        +
                                                        290  nsub(lin) = nsub(lin) + 1
                                                        +
                                                        291  endif
                                                        +
                                                        292 
                                                        +
                                                        293  return
                                                        +
                                                        294 end subroutine copysb
                                                        +
                                                        295 
                                                        +
                                                        311 recursive integer function icopysb(lunin,lunot) result(iret)
                                                        +
                                                        312 
                                                        +
                                                        313  use modv_vars, only: im8b
                                                        +
                                                        314 
                                                        +
                                                        315  implicit none
                                                        +
                                                        316 
                                                        +
                                                        317  integer, intent(in) :: lunin, lunot
                                                        +
                                                        318  integer my_lunin, my_lunot
                                                        +
                                                        319 
                                                        +
                                                        320  if(im8b) then
                                                        +
                                                        321  im8b=.false.
                                                        +
                                                        322 
                                                        +
                                                        323  call x84(lunin,my_lunin,1)
                                                        +
                                                        324  call x84(lunot,my_lunot,1)
                                                        +
                                                        325  iret=icopysb(my_lunin,my_lunot)
                                                        +
                                                        326 
                                                        +
                                                        327  im8b=.true.
                                                        +
                                                        328  return
                                                        +
                                                        329  endif
                                                        +
                                                        330 
                                                        +
                                                        331  call copysb(lunin,lunot,iret)
                                                        +
                                                        332 
                                                        +
                                                        333  return
                                                        +
                                                        334 end function icopysb
                                                        +
                                                        335 
                                                        +
                                                        354 integer function iok2cpy(lui,luo) result(iret)
                                                        +
                                                        355 
                                                        +
                                                        356  use moda_msgcwd
                                                        +
                                                        357  use moda_tables
                                                        +
                                                        358 
                                                        +
                                                        359  implicit none
                                                        +
                                                        360 
                                                        +
                                                        361  integer, intent(in) :: lui, luo
                                                        +
                                                        362  integer icmpdx, mtyp, msbt, inod, ntei, nteo, i
                                                        +
                                                        363 
                                                        +
                                                        364  character*8 subset
                                                        +
                                                        365 
                                                        +
                                                        366  iret = 0
                                                        +
                                                        367 
                                                        +
                                                        368  ! Do both logical units have the same internal table information?
                                                        +
                                                        369 
                                                        +
                                                        370  if ( icmpdx(lui,luo) == 1 ) then
                                                        +
                                                        371  iret = 1
                                                        +
                                                        372  return
                                                        +
                                                        373  endif
                                                        +
                                                        374 
                                                        +
                                                        375  ! No, so get the Table A mnemonic from the message to be copied, then check whether that mnemonic is defined within the
                                                        +
                                                        376  ! dictionary tables for the logical unit to be copied to.
                                                        +
                                                        377 
                                                        +
                                                        378  subset = tag(inode(lui))(1:8)
                                                        +
                                                        379  call nemtbax(luo,subset,mtyp,msbt,inod)
                                                        +
                                                        380  if ( inod == 0 ) return
                                                        +
                                                        381 
                                                        +
                                                        382  ! The Table A mnemonic is defined within the dictionary tables for both units, so now make sure the definitions are identical.
                                                        +
                                                        383 
                                                        +
                                                        384  ntei = isc(inode(lui))-inode(lui)
                                                        +
                                                        385  nteo = isc(inod)-inod
                                                        +
                                                        386  if ( ntei /= nteo ) return
                                                        +
                                                        387 
                                                        +
                                                        388  do i = 1, ntei
                                                        +
                                                        389  if ( tag(inode(lui)+i) /= tag(inod+i) ) return
                                                        +
                                                        390  if ( typ(inode(lui)+i) /= typ(inod+i) ) return
                                                        +
                                                        391  if ( isc(inode(lui)+i) /= isc(inod+i) ) return
                                                        +
                                                        392  if ( irf(inode(lui)+i) /= irf(inod+i) ) return
                                                        +
                                                        393  if ( ibt(inode(lui)+i) /= ibt(inod+i) ) return
                                                        +
                                                        394  enddo
                                                        +
                                                        395 
                                                        +
                                                        396  iret = 1
                                                        +
                                                        397 
                                                        +
                                                        398  return
                                                        +
                                                        399 end function iok2cpy
                                                        +
                                                        400 
                                                        +
                                                        433 recursive subroutine cpymem(lunot)
                                                        +
                                                        434 
                                                        +
                                                        435  use modv_vars, only: im8b
                                                        +
                                                        436 
                                                        +
                                                        437  use moda_msgcwd
                                                        +
                                                        438  use moda_bitbuf
                                                        +
                                                        439  use moda_msgmem
                                                        +
                                                        440  use moda_tables
                                                        +
                                                        441 
                                                        +
                                                        442  implicit none
                                                        +
                                                        443 
                                                        +
                                                        444  integer, intent(in) :: lunot
                                                        +
                                                        445  integer my_lunot, lin, lot, il, im, mtyp, msbt, inod, mbym, iupbs01, iok2cpy
                                                        +
                                                        446 
                                                        +
                                                        447  character*8 subset
                                                        +
                                                        448 
                                                        +
                                                        449  ! Check for I8 integers
                                                        +
                                                        450 
                                                        +
                                                        451  if(im8b) then
                                                        +
                                                        452  im8b=.false.
                                                        +
                                                        453 
                                                        +
                                                        454  call x84(lunot,my_lunot,1)
                                                        +
                                                        455  call cpymem(my_lunot)
                                                        +
                                                        456 
                                                        +
                                                        457  im8b=.true.
                                                        +
                                                        458  return
                                                        +
                                                        459  endif
                                                        +
                                                        460 
                                                        +
                                                        461  ! Check the file statuses
                                                        +
                                                        462 
                                                        +
                                                        463  call status(munit,lin,il,im)
                                                        +
                                                        464  if(im==0) call bort('BUFRLIB: CPYMEM - A MESSAGE MUST BE OPEN IN INPUT BUFR MESSAGES IN INTERNAL MEMORY, NONE ARE')
                                                        +
                                                        465 
                                                        +
                                                        466  call status(lunot,lot,il,im)
                                                        +
                                                        467  if(il==0) call bort('BUFRLIB: CPYMEM - OUTPUT BUFR FILE IS CLOSED, IT MUST BE OPEN FOR OUTPUT')
                                                        +
                                                        468  if(il<0) call bort('BUFRLIB: CPYMEM - OUTPUT BUFR FILE IS OPEN FOR INPUT, IT MUST BE OPEN FOR OUTPUT')
                                                        +
                                                        469  if(im/=0) call bort('BUFRLIB: CPYMEM - ALL MESSAGES MUST BE CLOSED IN OUTPUT BUFR FILE, A MESSAGE IS OPEN')
                                                        +
                                                        470 
                                                        +
                                                        471  ! Make sure both files have the same tables
                                                        +
                                                        472 
                                                        +
                                                        473  subset = tag(inode(lin))(1:8)
                                                        +
                                                        474  call nemtba(lot,subset,mtyp,msbt,inod)
                                                        +
                                                        475  if(inode(lin)/=inod .and. iok2cpy(lin,lot)/=1) &
                                                        +
                                                        476  call bort('BUFRLIB: CPYMEM - INPUT BUFR MESSAGES IN INTERNAL MEMORY AND OUTPUT BUFR FILE MUST HAVE SAME INTERNAL '// &
                                                        +
                                                        477  'TABLES (DIFFERENT HERE)')
                                                        +
                                                        478 
                                                        +
                                                        479  ! Everything okay, so copy a message
                                                        +
                                                        480 
                                                        +
                                                        481  mbym = iupbs01(mbay(1,lin),'LENM')
                                                        +
                                                        482  call msgwrt(lunot,mbay(1,lin),mbym)
                                                        +
                                                        483 
                                                        +
                                                        484  ! Set the message control words for partition associated with lunot
                                                        +
                                                        485 
                                                        +
                                                        486  nmsg(lot) = nmsg(lot) + 1
                                                        +
                                                        487  nsub(lot) = msub(lin)
                                                        +
                                                        488  msub(lot) = msub(lin)
                                                        +
                                                        489  idate(lot) = idate(lin)
                                                        +
                                                        490  inode(lot) = inod
                                                        +
                                                        491 
                                                        +
                                                        492  return
                                                        +
                                                        493 end subroutine cpymem
                                                        +
                                                        494 
                                                        +
                                                        512 subroutine cpyupd(lunit,lin,lun,ibyt)
                                                        +
                                                        513 
                                                        +
                                                        514  use moda_msgcwd
                                                        +
                                                        515  use moda_bitbuf
                                                        +
                                                        516 
                                                        +
                                                        517  implicit none
                                                        +
                                                        518 
                                                        +
                                                        519  integer, intent(in) :: lunit, lin, lun, ibyt
                                                        +
                                                        520  integer nby0, nby1, nby2, nby3, nby4, nby5, iprt, lbit, lbyt, nbyt, iupb
                                                        +
                                                        521 
                                                        +
                                                        522  common /msgptr/ nby0,nby1,nby2,nby3,nby4,nby5
                                                        +
                                                        523 
                                                        +
                                                        524  common /quiet/ iprt
                                                        +
                                                        525 
                                                        +
                                                        526  character*128 bort_str, errstr
                                                        +
                                                        527 
                                                        +
                                                        528  logical msgfull
                                                        +
                                                        529 
                                                        +
                                                        530  ! Check whether the new subset should be written into the currently open message
                                                        +
                                                        531 
                                                        +
                                                        532  if(msgfull(mbyt(lun),ibyt,maxbyt) .or. ((ibyt>65530).and.(nsub(lun)>0))) then
                                                        +
                                                        533  ! NO it should not, either because:
                                                        +
                                                        534  ! 1) it doesn't fit,
                                                        +
                                                        535  ! -- OR --
                                                        +
                                                        536  ! 2) it has byte count > 65530 (sufficiently close to the upper limit for the 16 bit byte counter placed at the
                                                        +
                                                        537  ! beginning of each subset), AND the current message has at least one subset in it,
                                                        +
                                                        538  ! SO write the current message out and create a new one to hold the current subset
                                                        +
                                                        539  call msgwrt(lunit,mbay(1,lun),mbyt(lun))
                                                        +
                                                        540  call msgini(lun)
                                                        +
                                                        541  endif
                                                        +
                                                        542 
                                                        +
                                                        543  if(msgfull(mbyt(lun),ibyt,maxbyt)) then
                                                        +
                                                        544  write(bort_str,'("BUFRLIB: CPYUPD - THE LENGTH OF THIS SUBSET EXCEEDS THE MAXIMUM MESSAGE LENGTH (",I6,")")') maxbyt
                                                        +
                                                        545  call bort(bort_str)
                                                        +
                                                        546  endif
                                                        +
                                                        547 
                                                        +
                                                        548  ! Transfer subset from one message to the other.
                                                        +
                                                        549 
                                                        +
                                                        550  ! Note that we want to append the data for this subset to the end of Section 4, but the value in mbyt(lun) already includes
                                                        +
                                                        551  ! the length of Section 5 (i.e. 4 bytes). Therefore, we need to begin writing at the point 3 bytes prior to the byte
                                                        +
                                                        552  ! currently pointed to by mbyt(lun).
                                                        +
                                                        553 
                                                        +
                                                        554  call mvb(mbay(1,lin),mbyt(lin)+1,mbay(1,lun),mbyt(lun)-3,ibyt)
                                                        +
                                                        555 
                                                        +
                                                        556  ! Update the subset and byte counters
                                                        +
                                                        557 
                                                        +
                                                        558  mbyt(lun) = mbyt(lun) + ibyt
                                                        +
                                                        559  nsub(lun) = nsub(lun) + 1
                                                        +
                                                        560 
                                                        +
                                                        561  lbit = (nby0+nby1+nby2+4)*8
                                                        +
                                                        562  call pkb(nsub(lun),16,mbay(1,lun),lbit)
                                                        +
                                                        563 
                                                        +
                                                        564  lbyt = nby0+nby1+nby2+nby3
                                                        +
                                                        565  nbyt = iupb(mbay(1,lun),lbyt+1,24)
                                                        +
                                                        566  lbit = lbyt*8
                                                        +
                                                        567  call pkb(nbyt+ibyt,24,mbay(1,lun),lbit)
                                                        +
                                                        568 
                                                        +
                                                        569  ! If the subset byte count is > 65530, then give it its own one-subset message (i.e. we cannot have any other subsets
                                                        +
                                                        570  ! in this message because their beginning would be beyond the upper limit of 65535 in the 16-bit byte counter, meaning
                                                        +
                                                        571  ! they could not be located!)
                                                        +
                                                        572 
                                                        +
                                                        573  if(ibyt>65530) then
                                                        +
                                                        574  if(iprt>=1) then
                                                        +
                                                        575  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        576  write ( unit=errstr, fmt='(A,I7,A,A)') 'BUFRLIB: CPYUPD - SUBSET HAS BYTE COUNT = ',ibyt,' > UPPER LIMIT OF 65535'
                                                        +
                                                        577  call errwrt(errstr)
                                                        +
                                                        578  call errwrt('>>>>>>>WILL BE COPIED INTO ITS OWN MESSAGE<<<<<<<<')
                                                        +
                                                        579  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        580  call errwrt(' ')
                                                        +
                                                        581  endif
                                                        +
                                                        582  call msgwrt(lunit,mbay(1,lun),mbyt(lun))
                                                        +
                                                        583  call msgini(lun)
                                                        +
                                                        584  endif
                                                        +
                                                        585 
                                                        +
                                                        586  return
                                                        +
                                                        587 end subroutine cpyupd
                                                        +
                                                        588 
                                                        +
                                                        611 recursive subroutine ufbcpy(lubin,lubot)
                                                        +
                                                        612 
                                                        +
                                                        613  use modv_vars, only: im8b
                                                        +
                                                        614 
                                                        +
                                                        615  use moda_usrint
                                                        +
                                                        616  use moda_msgcwd
                                                        +
                                                        617  use moda_ufbcpl
                                                        +
                                                        618  use moda_tables
                                                        +
                                                        619 
                                                        +
                                                        620  implicit none
                                                        +
                                                        621 
                                                        +
                                                        622  integer, intent(in) :: lubin, lubot
                                                        +
                                                        623  integer my_lubin, my_lubot, lui, luo, il, im, n, iok2cpy
                                                        +
                                                        624 
                                                        +
                                                        625  ! Check for I8 integers
                                                        +
                                                        626 
                                                        +
                                                        627  if(im8b) then
                                                        +
                                                        628  im8b=.false.
                                                        +
                                                        629 
                                                        +
                                                        630  call x84(lubin,my_lubin,1)
                                                        +
                                                        631  call x84(lubot,my_lubot,1)
                                                        +
                                                        632  call ufbcpy(my_lubin,my_lubot)
                                                        +
                                                        633 
                                                        +
                                                        634  im8b=.true.
                                                        +
                                                        635  return
                                                        +
                                                        636  endif
                                                        +
                                                        637 
                                                        +
                                                        638  ! Check the file statuses and inode
                                                        +
                                                        639 
                                                        +
                                                        640  call status(lubin,lui,il,im)
                                                        +
                                                        641  if(il==0) call bort('BUFRLIB: UFBCPY - INPUT BUFR FILE IS CLOSED, IT MUST BE OPEN FOR INPUT')
                                                        +
                                                        642  if(il>0) call bort('BUFRLIB: UFBCPY - INPUT BUFR FILE IS OPEN FOR OUTPUT, IT MUST BE OPEN FOR INPUT')
                                                        +
                                                        643  if(im==0) call bort('BUFRLIB: UFBCPY - A MESSAGE MUST BE OPEN IN INPUT BUFR FILE, NONE ARE')
                                                        +
                                                        644  if(inode(lui)/=inv(1,lui)) &
                                                        +
                                                        645  call bort('BUFRLIB: UFBCPY - LOCATION OF INTERNAL TABLE FOR INPUT BUFR FILE DOES NOT AGREE WITH EXPECTED LOCATION '// &
                                                        +
                                                        646  'IN INTERNAL SUBSET ARRAY')
                                                        +
                                                        647 
                                                        +
                                                        648  call status(lubot,luo,il,im)
                                                        +
                                                        649  if(il==0) call bort('BUFRLIB: UFBCPY - OUTPUT BUFR FILE IS CLOSED, IT MUST BE OPEN FOR OUTPUT')
                                                        +
                                                        650  if(il<0) call bort('BUFRLIB: UFBCPY - OUTPUT BUFR FILE IS OPEN FOR INPUT, IT MUST BE OPEN FOR OUTPUT')
                                                        +
                                                        651  if(im==0) call bort('BUFRLIB: UFBCPY - A MESSAGE MUST BE OPEN IN OUTPUT BUFR FILE, NONE ARE')
                                                        +
                                                        652 
                                                        +
                                                        653  if( (inode(lui)/=inode(luo)) .and. ( (tag(inode(lui))/=tag(inode(luo))) .or. (iok2cpy(lui,luo)/=1) ) ) &
                                                        +
                                                        654  call bort('BUFRLIB: UFBCPY - INPUT AND OUTPUT BUFR FILES MUST HAVE THE SAME INTERNAL TABLES, THEY ARE DIFFERENT HERE')
                                                        +
                                                        655 
                                                        +
                                                        656  ! Everything okay, so copy user array from lui to luo
                                                        +
                                                        657 
                                                        +
                                                        658  nval(luo) = nval(lui)
                                                        +
                                                        659 
                                                        +
                                                        660  do n=1,nval(lui)
                                                        +
                                                        661  inv(n,luo) = inv(n,lui)
                                                        +
                                                        662  nrfelm(n,luo) = nrfelm(n,lui)
                                                        +
                                                        663  val(n,luo) = val(n,lui)
                                                        +
                                                        664  enddo
                                                        +
                                                        665 
                                                        +
                                                        666  luncpy(luo)=lubin
                                                        +
                                                        667 
                                                        +
                                                        668  return
                                                        +
                                                        669 end subroutine ufbcpy
                                                        +
                                                        670 
                                                        +
                                                        677 subroutine cpbfdx(lud,lun)
                                                        +
                                                        678 
                                                        +
                                                        679  use moda_msgcwd
                                                        +
                                                        680  use moda_tababd
                                                        +
                                                        681 
                                                        +
                                                        682  implicit none
                                                        +
                                                        683 
                                                        +
                                                        684  integer, intent(in) :: lud, lun
                                                        +
                                                        685  integer i
                                                        +
                                                        686 
                                                        +
                                                        687  ! Initialize the dictionary table partition
                                                        +
                                                        688 
                                                        +
                                                        689  call dxinit(lun,0)
                                                        +
                                                        690 
                                                        +
                                                        691  ! Positional index for Table A mnem.
                                                        +
                                                        692  inode(lun) = inode(lud)
                                                        +
                                                        693 
                                                        +
                                                        694  ntba(lun) = ntba(lud)
                                                        +
                                                        695  ntbb(lun) = ntbb(lud)
                                                        +
                                                        696  ntbd(lun) = ntbd(lud)
                                                        +
                                                        697 
                                                        +
                                                        698  ! Table A entries
                                                        +
                                                        699  do i=1,ntba(lud)
                                                        +
                                                        700  idna(i,lun,1) = idna(i,lud,1)
                                                        +
                                                        701  idna(i,lun,2) = idna(i,lud,2)
                                                        +
                                                        702  taba(i,lun) = taba(i,lud)
                                                        +
                                                        703  mtab(i,lun) = mtab(i,lud)
                                                        +
                                                        704  enddo
                                                        +
                                                        705 
                                                        +
                                                        706  ! Table B entries
                                                        +
                                                        707  do i=1,ntbb(lud)
                                                        +
                                                        708  idnb(i,lun) = idnb(i,lud)
                                                        +
                                                        709  tabb(i,lun) = tabb(i,lud)
                                                        +
                                                        710  enddo
                                                        +
                                                        711 
                                                        +
                                                        712  ! Copy Table D entries
                                                        +
                                                        713  do i=1,ntbd(lud)
                                                        +
                                                        714  idnd(i,lun) = idnd(i,lud)
                                                        +
                                                        715  tabd(i,lun) = tabd(i,lud)
                                                        +
                                                        716  enddo
                                                        +
                                                        717 
                                                        +
                                                        718  return
                                                        +
                                                        719 end subroutine cpbfdx
                                                        +
                                                        720 
                                                        +
                                                        730 subroutine mvb(ib1,nb1,ib2,nb2,nbm)
                                                        +
                                                        731 
                                                        +
                                                        732  implicit none
                                                        +
                                                        733 
                                                        +
                                                        734  integer, intent(in) :: ib1(*), nb1, nb2, nbm
                                                        +
                                                        735  integer, intent(out) :: ib2(*)
                                                        +
                                                        736  integer jb1, jb2, n, nval
                                                        +
                                                        737 
                                                        +
                                                        738  jb1 = 8*(nb1-1)
                                                        +
                                                        739  jb2 = 8*(nb2-1)
                                                        +
                                                        740 
                                                        +
                                                        741  do n=1,nbm
                                                        +
                                                        742  call upb(nval,8,ib1,jb1)
                                                        +
                                                        743  call pkb(nval,8,ib2,jb2)
                                                        +
                                                        744  enddo
                                                        +
                                                        745 
                                                        +
                                                        746  return
                                                        +
                                                        747 end subroutine mvb
                                                        +
                                                        748 
                                                        +
                                                        767 recursive subroutine ufbcup(lubin,lubot)
                                                        +
                                                        768 
                                                        +
                                                        769  use modv_vars, only: im8b
                                                        +
                                                        770 
                                                        +
                                                        771  use moda_usrint
                                                        +
                                                        772  use moda_msgcwd
                                                        +
                                                        773  use moda_tables
                                                        +
                                                        774  use moda_ivttmp
                                                        +
                                                        775 
                                                        +
                                                        776  implicit none
                                                        +
                                                        777 
                                                        +
                                                        778  integer, intent(in) :: lubin, lubot
                                                        +
                                                        779  integer my_lubin, my_lubot, lui, luo, il, im, ntag, ni, no, nv, nin
                                                        +
                                                        780 
                                                        +
                                                        781  character*10 tago
                                                        +
                                                        782 
                                                        +
                                                        783  ! Check for I8 integers
                                                        +
                                                        784 
                                                        +
                                                        785  if(im8b) then
                                                        +
                                                        786  im8b=.false.
                                                        +
                                                        787  call x84(lubin,my_lubin,1)
                                                        +
                                                        788  call x84(lubot,my_lubot,1)
                                                        +
                                                        789  call ufbcup(my_lubin,my_lubot)
                                                        +
                                                        790  im8b=.true.
                                                        +
                                                        791  return
                                                        +
                                                        792  endif
                                                        +
                                                        793 
                                                        +
                                                        794  ! Check the file statuses and inode
                                                        +
                                                        795 
                                                        +
                                                        796  call status(lubin,lui,il,im)
                                                        +
                                                        797  if(il==0) call bort('BUFRLIB: UFBCUP - INPUT BUFR FILE IS CLOSED, IT MUST BE OPEN FOR INPUT')
                                                        +
                                                        798  if(il>0) call bort('BUFRLIB: UFBCUP - INPUT BUFR FILE IS OPEN FOR OUTPUT, IT MUST BE OPEN FOR INPUT')
                                                        +
                                                        799  if(im==0) call bort('BUFRLIB: UFBCUP - A MESSAGE MUST BE OPEN IN INPUT BUFR FILE, NONE ARE')
                                                        +
                                                        800  if(inode(lui)/=inv(1,lui)) call bort('BUFRLIB: UFBCUP - LOCATION OF INTERNAL TABLE FOR '// &
                                                        +
                                                        801  'INPUT BUFR FILE DOES NOT AGREE WITH EXPECTED LOCATION IN INTERNAL SUBSET ARRAY')
                                                        +
                                                        802 
                                                        +
                                                        803  call status(lubot,luo,il,im)
                                                        +
                                                        804  if(il==0) call bort('BUFRLIB: UFBCUP - OUTPUT BUFR FILE IS CLOSED, IT MUST BE OPEN FOR OUTPUT')
                                                        +
                                                        805  if(il<0) call bort('BUFRLIB: UFBCUP - OUTPUT BUFR FILE IS OPEN FOR INPUT, IT MUST BE OPEN FOR OUTPUT')
                                                        +
                                                        806  if(im==0) call bort('BUFRLIB: UFBCUP - A MESSAGE MUST BE OPEN IN OUTPUT BUFR FILE, NONE ARE')
                                                        +
                                                        807 
                                                        +
                                                        808  ! Make a list of unique tags in the input buffer
                                                        +
                                                        809 
                                                        +
                                                        810  ntag = 0
                                                        +
                                                        811 
                                                        +
                                                        812  outer1: do ni=1,nval(lui)
                                                        +
                                                        813  nin = inv(ni,lui)
                                                        +
                                                        814  if(itp(nin)>=2) then
                                                        +
                                                        815  do nv=1,ntag
                                                        +
                                                        816  if(ttmp(nv)==tag(nin)) cycle outer1
                                                        +
                                                        817  enddo
                                                        +
                                                        818  ntag = ntag+1
                                                        +
                                                        819  itmp(ntag) = ni
                                                        +
                                                        820  ttmp(ntag) = tag(nin)
                                                        +
                                                        821  endif
                                                        +
                                                        822  enddo outer1
                                                        +
                                                        823 
                                                        +
                                                        824  if(ntag==0) call bort('BUFRLIB: UFBCUP - THERE ARE NO ELEMENTS (TAGS) IN INPUT SUBSET BUFFER')
                                                        +
                                                        825 
                                                        +
                                                        826  ! Now, using the list of unique tags, make one copy of the common elements to the output buffer
                                                        +
                                                        827 
                                                        +
                                                        828  outer2: do nv=1,ntag
                                                        +
                                                        829  ni = itmp(nv)
                                                        +
                                                        830  do no=1,nval(luo)
                                                        +
                                                        831  tago = tag(inv(no,luo))
                                                        +
                                                        832  if(ttmp(nv)==tago) then
                                                        +
                                                        833  val(no,luo) = val(ni,lui)
                                                        +
                                                        834  cycle outer2
                                                        +
                                                        835  endif
                                                        +
                                                        836  enddo
                                                        +
                                                        837  enddo outer2
                                                        +
                                                        838 
                                                        +
                                                        839  return
                                                        +
                                                        840 end subroutine ufbcup
                                                        +
                                                        subroutine bort(str)
                                                        Log an error message, then abort the application program.
                                                        Definition: borts.F90:15
                                                        +
                                                        subroutine upb(nval, nbits, ibay, ibit)
                                                        Decode an integer value from within a specified number of bits of an integer array,...
                                                        Definition: cidecode.F90:202
                                                        +
                                                        subroutine pkb(nval, nbits, ibay, ibit)
                                                        Encode an integer value within a specified number of bits of an integer array, starting at the bit im...
                                                        Definition: ciencode.F90:140
                                                        +
                                                        subroutine cmpmsg(cf)
                                                        Specify whether BUFR messages output by future calls to message-writing subroutines and subset-writin...
                                                        Definition: compress.F90:33
                                                        +
                                                        integer function iok2cpy(lui, luo)
                                                        Check whether a BUFR message, or a data subset from within a BUFR message, can be copied from one For...
                                                        Definition: copydata.F90:355
                                                        +
                                                        recursive integer function icopysb(lunin, lunot)
                                                        Copy a BUFR data subset from one Fortran logical unit to another.
                                                        Definition: copydata.F90:312
                                                        +
                                                        subroutine cpbfdx(lud, lun)
                                                        Copy all of the DX BUFR table information from one unit to another within internal memory.
                                                        Definition: copydata.F90:678
                                                        +
                                                        subroutine mvb(ib1, nb1, ib2, nb2, nbm)
                                                        Copy a specified number of bytes from one packed binary array to another.
                                                        Definition: copydata.F90:731
                                                        +
                                                        recursive subroutine copybf(lunin, lunot)
                                                        Copy an entire BUFR file from one Fortran logical unit to another.
                                                        Definition: copydata.F90:23
                                                        +
                                                        recursive subroutine ufbcup(lubin, lubot)
                                                        Copy unique elements of a data subset.
                                                        Definition: copydata.F90:768
                                                        +
                                                        recursive subroutine copysb(lunin, lunot, iret)
                                                        Copy a BUFR data subset from one Fortran logical unit to another.
                                                        Definition: copydata.F90:203
                                                        +
                                                        subroutine cpyupd(lunit, lin, lun, ibyt)
                                                        Copy a BUFR data subset from one unit to another within internal memory.
                                                        Definition: copydata.F90:513
                                                        +
                                                        recursive subroutine cpymem(lunot)
                                                        Copy a BUFR message from internal arrays to a file.
                                                        Definition: copydata.F90:434
                                                        +
                                                        recursive subroutine ufbcpy(lubin, lubot)
                                                        Copy a BUFR data subset from one Fortran logical unit to another.
                                                        Definition: copydata.F90:612
                                                        +
                                                        recursive subroutine copymg(lunin, lunot)
                                                        Copy a BUFR message from one file to another.
                                                        Definition: copydata.F90:108
                                                        +
                                                        subroutine nemtba(lun, nemo, mtyp, msbt, inod)
                                                        Get information about a Table A descriptor from the internal DX BUFR tables.
                                                        Definition: dxtable.F90:1247
                                                        +
                                                        subroutine nemtbax(lun, nemo, mtyp, msbt, inod)
                                                        Get information about a Table A descriptor from the internal DX BUFR tables.
                                                        Definition: dxtable.F90:1197
                                                        +
                                                        subroutine dxinit(lun, ioi)
                                                        Clear out the internal arrays (in module moda_tababd) holding the DX BUFR table, then optionally init...
                                                        Definition: dxtable.F90:606
                                                        +
                                                        subroutine errwrt(str)
                                                        Specify a custom location for the logging of error and diagnostic messages generated by the NCEPLIBS-...
                                                        Definition: errwrt.F90:32
                                                        + +
                                                        Declare arrays and variables used to store BUFR messages internally for multiple file IDs.
                                                        +
                                                        integer ibit
                                                        Bit pointer within ibay.
                                                        +
                                                        integer, dimension(:,:), allocatable mbay
                                                        Current BUFR message for each file ID.
                                                        +
                                                        integer, dimension(:), allocatable mbyt
                                                        Length (in bytes) of current BUFR message for each file ID.
                                                        +
                                                        integer maxbyt
                                                        Maximum length of an output BUFR message.
                                                        +
                                                        Declare arrays which provide working space in several subprograms (usrtpl() and ufbcup()) which manip...
                                                        +
                                                        character *10, dimension(:), allocatable ttmp
                                                        tag array elements for new sections of a growing subset buffer.
                                                        +
                                                        integer, dimension(:), allocatable itmp
                                                        inv array elements for new sections of a growing subset buffer.
                                                        +
                                                        Declare an array used by various subroutines and functions to hold a temporary working copy of a BUFR...
                                                        +
                                                        integer, dimension(:), allocatable mgwa
                                                        Temporary working copy of BUFR message.
                                                        +
                                                        Declare arrays used to store information about the current BUFR message that is in the process of bei...
                                                        +
                                                        integer, dimension(:), allocatable inode
                                                        Table A mnemonic for type of BUFR message.
                                                        +
                                                        integer, dimension(:), allocatable idate
                                                        Section 1 date-time of message.
                                                        +
                                                        integer, dimension(:), allocatable nmsg
                                                        Current message pointer within logical unit.
                                                        +
                                                        integer, dimension(:), allocatable msub
                                                        Total number of data subsets in message.
                                                        +
                                                        integer, dimension(:), allocatable nsub
                                                        Current subset pointer within message.
                                                        +
                                                        Declare arrays and variables used to store the contents of one or more BUFR files within internal mem...
                                                        +
                                                        integer munit
                                                        Fortran logical unit number for use in accessing contents of BUFR files within internal memory.
                                                        +
                                                        Declare arrays and variables used to store DX BUFR tables internally for multiple file IDs.
                                                        +
                                                        integer, dimension(:), allocatable ntba
                                                        Number of Table A entries for each file ID (up to a maximum of maxtba, whose value is stored in array...
                                                        +
                                                        character *600, dimension(:,:), allocatable tabd
                                                        Table D entries for each file ID.
                                                        +
                                                        character *128, dimension(:,:), allocatable taba
                                                        Table A entries for each file ID.
                                                        +
                                                        integer, dimension(:,:), allocatable mtab
                                                        Entries within jump/link table corresponding to taba.
                                                        +
                                                        integer, dimension(:,:,:), allocatable idna
                                                        Message types (in array element 1) and subtypes (in array element 2) corresponding to taba.
                                                        +
                                                        integer, dimension(:), allocatable ntbd
                                                        Number of Table D entries for each file ID (up to a maximum of maxtbd, whose value is stored in array...
                                                        +
                                                        integer, dimension(:), allocatable ntbb
                                                        Number of Table B entries for each file ID (up to a maximum of maxtbb, whose value is stored in array...
                                                        +
                                                        integer, dimension(:,:), allocatable idnd
                                                        WMO bit-wise representations of the FXY values corresponding to tabd.
                                                        +
                                                        integer, dimension(:,:), allocatable idnb
                                                        WMO bit-wise representations of the FXY values corresponding to tabb.
                                                        +
                                                        character *128, dimension(:,:), allocatable tabb
                                                        Table B entries for each file ID.
                                                        +
                                                        Declare arrays and variables used to store the internal jump/link table.
                                                        +
                                                        integer, dimension(:), allocatable irf
                                                        Reference values corresponding to tag and typ:
                                                        +
                                                        integer, dimension(:), allocatable isc
                                                        Scale factors corresponding to tag and typ:
                                                        +
                                                        integer, dimension(:), allocatable ibt
                                                        Bit widths corresponding to tag and typ:
                                                        +
                                                        character *3, dimension(:), allocatable typ
                                                        Type indicators corresponding to tag:
                                                        +
                                                        character *10, dimension(:), allocatable tag
                                                        Mnemonics in the jump/link table.
                                                        +
                                                        integer, dimension(:), allocatable itp
                                                        Integer type values corresponding to typ:
                                                        +
                                                        Declare an array used to store, for each file ID, the logical unit number corresponding to a separate...
                                                        +
                                                        integer, dimension(:), allocatable luncpy
                                                        Logical unit numbers used to copy long character strings between BUFR data subsets.
                                                        +
                                                        Declare arrays used to store data values and associated metadata for the current BUFR data subset in ...
                                                        +
                                                        integer, dimension(:), allocatable nval
                                                        Number of data values in BUFR data subset.
                                                        +
                                                        real *8, dimension(:,:), allocatable, target val
                                                        Data values.
                                                        +
                                                        integer, dimension(:,:), allocatable, target inv
                                                        Inventory pointer which links each data value to its corresponding node in the internal jump/link tab...
                                                        +
                                                        integer, dimension(:,:), allocatable nrfelm
                                                        Referenced data value, for data values which refer to a previous data value in the BUFR data subset v...
                                                        +
                                                        recursive subroutine closbf(lunit)
                                                        Close the connection between logical unit lunit and the NCEPLIBS-bufr software.
                                                        +
                                                        recursive subroutine openbf(lunit, io, lundx)
                                                        Connect a new file to the NCEPLIBS-bufr software for input or output operations, or initialize the li...
                                                        +
                                                        recursive subroutine status(lunit, lun, il, im)
                                                        Check whether a specified Fortran logical unit number is currently connected to the NCEPLIBS-bufr sof...
                                                        +
                                                        recursive subroutine getlens(mbay, ll, len0, len1, len2, len3, len4, len5)
                                                        Read the section lengths of a BUFR message, up to a specified point in the message.
                                                        +
                                                        subroutine rdmsgw(lunit, mesg, iret)
                                                        Read the next BUFR message from logical unit lunit as an array of integer words.
                                                        +
                                                        subroutine msgini(lun)
                                                        Initialize, within the internal arrays, a new uncompressed BUFR message for output.
                                                        +
                                                        subroutine msgwrt(lunit, mesg, mgbyt)
                                                        Perform final checks and updates on a BUFR message before writing it to a specified Fortran logical u...
                                                        +
                                                        recursive subroutine writsb(lunit)
                                                        Write a complete data subset into a BUFR message, for eventual output to logical unit lunit.
                                                        +
                                                        recursive subroutine readsb(lunit, iret)
                                                        Read the next data subset from a BUFR message.
                                                        Definition: readwritesb.F90:32
                                                        +
                                                        recursive integer function iupbs01(mbay, s01mnem)
                                                        Read a specified value from within Section 0 or Section 1 of a BUFR message.
                                                        Definition: s013vals.F90:247
                                                        +
                                                        recursive subroutine mesgbc(lunin, mesgtyp, icomp)
                                                        Return the message type (from Section 1) and message compression indicator (from Section 3) of a BUFR...
                                                        Definition: s013vals.F90:1482
                                                        +
                                                        subroutine x48(iin4, iout8, nval)
                                                        Encode one or more 4-byte integer values as 8-byte integer values.
                                                        Definition: x4884.F90:18
                                                        +
                                                        subroutine x84(iin8, iout4, nval)
                                                        Encode one or more 8-byte integer values as 4-byte integer values.
                                                        Definition: x4884.F90:65
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/cpmstabs_8c.html b/previous_versions/v12.1.0/cpmstabs_8c.html new file mode 100644 index 000000000..557310f05 --- /dev/null +++ b/previous_versions/v12.1.0/cpmstabs_8c.html @@ -0,0 +1,257 @@ + + + + + + + +NCEPLIBS-bufr: cpmstabs.c File Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        cpmstabs.c File Reference
                                                        +
                                                        +
                                                        + +

                                                        Copy master Table B and Table D information from Fortran arrays to C arrays within internal memory. +More...

                                                        +
                                                        #include "bufrlib.h"
                                                        +#include "mstabs.h"
                                                        +
                                                        +

                                                        Go to the source code of this file.

                                                        + + + + + +

                                                        +Functions

                                                        void cpmstabs (int nmtb, int *ibfxyn, char(*cbscl)[4], char(*cbsref)[12], char(*cbbw)[4], char(*cbunit)[24], char(*cbmnem)[8], char(*cbelem)[120], int nmtd, int *idfxyn, char(*cdseq)[120], char(*cdmnem)[8], int *ndelem, int *idefxy, int maxcd)
                                                         Copy relevant information from the Fortran module moda_mstabs arrays to new arrays within C, for use whenever arrays are dynamically allocated at run time, and in which case we can't directly access those Fortran module arrays from within C. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Copy master Table B and Table D information from Fortran arrays to C arrays within internal memory.

                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2014-12-04
                                                        + +

                                                        Definition in file cpmstabs.c.

                                                        +

                                                        Function Documentation

                                                        + +

                                                        ◆ cpmstabs()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        void cpmstabs (int nmtb,
                                                        int * ibfxyn,
                                                        char(*) cbscl[4],
                                                        char(*) cbsref[12],
                                                        char(*) cbbw[4],
                                                        char(*) cbunit[24],
                                                        char(*) cbmnem[8],
                                                        char(*) cbelem[120],
                                                        int nmtd,
                                                        int * idfxyn,
                                                        char(*) cdseq[120],
                                                        char(*) cdmnem[8],
                                                        int * ndelem,
                                                        int * idefxy,
                                                        int maxcd 
                                                        )
                                                        +
                                                        + +

                                                        Copy relevant information from the Fortran module moda_mstabs arrays to new arrays within C, for use whenever arrays are dynamically allocated at run time, and in which case we can't directly access those Fortran module arrays from within C.

                                                        +

                                                        All arguments to this subroutine are input.

                                                        +
                                                        Parameters
                                                        + + + + + + + + + + + + + + + + +
                                                        nmtb- Number of master Table B entries
                                                        ibfxyn- WMO bit-wise representations of master Table B FXY numbers
                                                        cbscl- Master Table B scale factors
                                                        cbsref- Master Table B reference values
                                                        cbbw- Master Table B bit widths
                                                        cbunit- Master Table B units
                                                        cbmnem- Master Table B mnemonics
                                                        cbelem- Master Table B element names
                                                        nmtd- Number of master Table D entries
                                                        idfxyn- WMO bit-wise representations of master Table D FXY numbers
                                                        cdseq- Master Table D sequence names
                                                        cdmnem- Master Table D mnemonics
                                                        ndelem- Number of child descriptors for master Table D sequence
                                                        idefxy- WMO bit-wise representations of child descriptors for master Table D sequence
                                                        maxcd- Maximum number of child descriptors for a master Table D sequence
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2014-12-04
                                                        + +

                                                        Definition at line 37 of file cpmstabs.c.

                                                        + +

                                                        References moda_mstabs::cbbw, cbbw_c, moda_mstabs::cbelem, cbelem_c, moda_mstabs::cbmnem, cbmnem_c, moda_mstabs::cbscl, cbscl_c, moda_mstabs::cbsref, cbsref_c, moda_mstabs::cbunit, cbunit_c, moda_mstabs::cdmnem, cdmnem_c, moda_mstabs::cdseq, cdseq_c, moda_mstabs::ibfxyn, ibfxyn_c, icvidx(), moda_mstabs::idefxy, idefxy_c, moda_mstabs::idfxyn, idfxyn_c, moda_mstabs::ndelem, ndelem_c, moda_mstabs::nmtb, nmtb_c, moda_mstabs::nmtd, and nmtd_c.

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/cpmstabs_8c.js b/previous_versions/v12.1.0/cpmstabs_8c.js new file mode 100644 index 000000000..3fdde364f --- /dev/null +++ b/previous_versions/v12.1.0/cpmstabs_8c.js @@ -0,0 +1,4 @@ +var cpmstabs_8c = +[ + [ "cpmstabs", "cpmstabs_8c.html#ab993a0c7a1d8c4c04fb7006f6253025c", null ] +]; \ No newline at end of file diff --git a/previous_versions/v12.1.0/cpmstabs_8c_source.html b/previous_versions/v12.1.0/cpmstabs_8c_source.html new file mode 100644 index 000000000..270cdef3c --- /dev/null +++ b/previous_versions/v12.1.0/cpmstabs_8c_source.html @@ -0,0 +1,182 @@ + + + + + + + +NCEPLIBS-bufr: cpmstabs.c Source File + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        +
                                                        cpmstabs.c
                                                        +
                                                        +
                                                        +Go to the documentation of this file.
                                                        1 
                                                        +
                                                        6 #include "bufrlib.h"
                                                        +
                                                        7 #include "mstabs.h"
                                                        +
                                                        8 
                                                        +
                                                        36 void
                                                        +
                                                        37 cpmstabs(int nmtb, int *ibfxyn, char (*cbscl)[4], char (*cbsref)[12], char (*cbbw)[4],
                                                        +
                                                        38  char (*cbunit)[24], char (*cbmnem)[8], char (*cbelem)[120], int nmtd,
                                                        +
                                                        39  int *idfxyn, char (*cdseq)[120], char (*cdmnem)[8], int *ndelem,
                                                        +
                                                        40  int *idefxy, int maxcd)
                                                        +
                                                        41 {
                                                        +
                                                        42 
                                                        +
                                                        43  int ii, jj, idx;
                                                        +
                                                        44 
                                                        +
                                                        45  nmtb_c = nmtb;
                                                        +
                                                        46  for ( ii = 0; ii < nmtb; ii++ ) {
                                                        +
                                                        47  ibfxyn_c[ii] = ibfxyn[ii];
                                                        +
                                                        48  for ( jj = 0; jj < 4; jj++ ) {
                                                        +
                                                        49  cbscl_c[ii][jj] = cbscl[ii][jj];
                                                        +
                                                        50  cbbw_c[ii][jj] = cbbw[ii][jj];
                                                        +
                                                        51  }
                                                        +
                                                        52  for ( jj = 0; jj < 8; jj++ ) {
                                                        +
                                                        53  cbmnem_c[ii][jj] = cbmnem[ii][jj];
                                                        +
                                                        54  }
                                                        +
                                                        55  for ( jj = 0; jj < 12; jj++ ) {
                                                        +
                                                        56  cbsref_c[ii][jj] = cbsref[ii][jj];
                                                        +
                                                        57  }
                                                        +
                                                        58  for ( jj = 0; jj < 24; jj++ ) {
                                                        +
                                                        59  cbunit_c[ii][jj] = cbunit[ii][jj];
                                                        +
                                                        60  }
                                                        +
                                                        61  for ( jj = 0; jj < 120; jj++ ) {
                                                        +
                                                        62  cbelem_c[ii][jj] = cbelem[ii][jj];
                                                        +
                                                        63  }
                                                        +
                                                        64  }
                                                        +
                                                        65 
                                                        +
                                                        66  nmtd_c = nmtd;
                                                        +
                                                        67  for ( ii = 0; ii < nmtd; ii++ ) {
                                                        +
                                                        68  idfxyn_c[ii] = idfxyn[ii];
                                                        +
                                                        69  ndelem_c[ii] = ndelem[ii];
                                                        +
                                                        70  for ( jj = 0; jj < ndelem[ii]; jj++ ) {
                                                        +
                                                        71  idx = icvidx( ii, jj, maxcd );
                                                        +
                                                        72  idefxy_c[idx] = idefxy[idx];
                                                        +
                                                        73  }
                                                        +
                                                        74  for ( jj = 0; jj < 8; jj++ ) {
                                                        +
                                                        75  cdmnem_c[ii][jj] = cdmnem[ii][jj];
                                                        +
                                                        76  }
                                                        +
                                                        77  for ( jj = 0; jj < 120; jj++ ) {
                                                        +
                                                        78  cdseq_c[ii][jj] = cdseq[ii][jj];
                                                        +
                                                        79  }
                                                        +
                                                        80  }
                                                        +
                                                        81 
                                                        +
                                                        82 }
                                                        +
                                                        Enable a number of NCEPLIBS-bufr subprograms to be called from within the C part of the library.
                                                        +
                                                        int icvidx(int ii, int jj, int numjj)
                                                        Computes a unique 1-dimensional array index from 2-dimensional indices.
                                                        Definition: icvidx.c:22
                                                        +
                                                        void cpmstabs(int nmtb, int *ibfxyn, char(*cbscl)[4], char(*cbsref)[12], char(*cbbw)[4], char(*cbunit)[24], char(*cbmnem)[8], char(*cbelem)[120], int nmtd, int *idfxyn, char(*cdseq)[120], char(*cdmnem)[8], int *ndelem, int *idefxy, int maxcd)
                                                        Copy relevant information from the Fortran module moda_mstabs arrays to new arrays within C,...
                                                        Definition: cpmstabs.c:37
                                                        +
                                                        Declare variables for internal storage of master Table B and Table D entries.
                                                        +
                                                        int * idefxy_c
                                                        WMO bit-wise representations of child descriptors for master Table D sequences; copied from Fortran i...
                                                        +
                                                        char(* cbsref_c)[12]
                                                        Master Table B reference values; copied from Fortran cbsref array.
                                                        +
                                                        char(* cbelem_c)[120]
                                                        Master Table B element names; copied from Fortran cbelem array.
                                                        +
                                                        int * idfxyn_c
                                                        WMO bit-wise representations of master Table D FXY numbers; copied from Fortran idfxyn array.
                                                        +
                                                        char(* cdmnem_c)[8]
                                                        Master Table D mnemonics; copied from Fortran cdmnem array.
                                                        +
                                                        char(* cdseq_c)[120]
                                                        Master Table D sequence names; copied from Fortran cdseq array.
                                                        +
                                                        char(* cbscl_c)[4]
                                                        Master Table B scale factors; copied from Fortran cbscl array.
                                                        +
                                                        char(* cbunit_c)[24]
                                                        Master Table B units; copied from Fortran cbunit array.
                                                        +
                                                        char(* cbmnem_c)[8]
                                                        Master Table B mnemonics; copied from Fortran cbmnem array.
                                                        +
                                                        char(* cbbw_c)[4]
                                                        Master Table B bit widths; copied from Fortran cbbw array.
                                                        +
                                                        int nmtd_c
                                                        Number of master Table D entries; copied from Fortran nmtd variable.
                                                        +
                                                        int * ibfxyn_c
                                                        WMO bit-wise representations of master Table B FXY numbers; copied from Fortran ibfxyn array.
                                                        +
                                                        int nmtb_c
                                                        Number of master Table B entries; copied from Fortran nmtb variable.
                                                        +
                                                        int * ndelem_c
                                                        Number of child descriptors for master Table D sequences; copied from Fortran ndelem array.
                                                        +
                                                        integer, dimension(:), allocatable idfxyn
                                                        WMO bit-wise representations of FXY numbers for master Table D.
                                                        +
                                                        character, dimension(:,:), allocatable cbunit
                                                        Units corresponding to ibfxyn.
                                                        +
                                                        integer nmtb
                                                        Number of master Table B entries (up to a maximum of mxmtbb).
                                                        +
                                                        character, dimension(:,:), allocatable cbbw
                                                        Bit widths corresponding to ibfxyn.
                                                        +
                                                        character, dimension(:,:), allocatable cdseq
                                                        Sequence names corresponding to idfxyn.
                                                        +
                                                        character, dimension(:,:), allocatable cbmnem
                                                        Mnemonics corresponding to ibfxyn.
                                                        +
                                                        integer, dimension(:), allocatable ndelem
                                                        Numbers of child descriptors corresponding to idfxyn.
                                                        +
                                                        character, dimension(:,:), allocatable cbelem
                                                        Element names corresponding to ibfxyn.
                                                        +
                                                        character, dimension(:,:), allocatable cbscl
                                                        Scale factors corresponding to ibfxyn.
                                                        +
                                                        character, dimension(:,:), allocatable cdmnem
                                                        Mnemonics corresponding to idfxyn.
                                                        +
                                                        character, dimension(:,:), allocatable cbsref
                                                        Reference values corresponding to ibfxyn.
                                                        +
                                                        integer nmtd
                                                        Number of master Table D entries (up to a maximum of mxmtbd).
                                                        +
                                                        integer, dimension(:), allocatable idefxy
                                                        WMO bit-wise representations of child descriptors corresponding to idfxyn.
                                                        +
                                                        integer, dimension(:), allocatable ibfxyn
                                                        WMO bit-wise representations of FXY numbers for master Table B.
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/cread_8c.html b/previous_versions/v12.1.0/cread_8c.html new file mode 100644 index 000000000..5ad2352d2 --- /dev/null +++ b/previous_versions/v12.1.0/cread_8c.html @@ -0,0 +1,477 @@ + + + + + + + +NCEPLIBS-bufr: cread.c File Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        cread.c File Reference
                                                        +
                                                        +
                                                        + +

                                                        C language interface for reading or writing BUFR messages. +More...

                                                        +
                                                        #include "bufrlib.h"
                                                        +#include "cread.h"
                                                        +
                                                        +

                                                        Go to the source code of this file.

                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + +

                                                        +Functions

                                                        void backbufr (int nfile)
                                                         Backspace a BUFR file by one BUFR message. More...
                                                         
                                                        void cewind (int nfile)
                                                         Rewind a BUFR file back to its beginning. More...
                                                         
                                                        void closfb (int nfile)
                                                         Close a previously opened BUFR file. More...
                                                         
                                                        int crdbufr (int nfile, int *bufr, int mxwrd)
                                                         Read the next message from a BUFR file that was previously opened for reading. More...
                                                         
                                                        void cwrbufr (int nfile, int *bufr, int nwrd)
                                                         Write a BUFR message into a file that was previously opened for writing. More...
                                                         
                                                        void openab (int nfile, char *ufile)
                                                         Open a new file for appending BUFR messages. More...
                                                         
                                                        void openrb (int nfile, char *ufile)
                                                         Open a new file for reading BUFR messages. More...
                                                         
                                                        void openwb (int nfile, char *ufile)
                                                         Open a new file for writing BUFR messages. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        C language interface for reading or writing BUFR messages.

                                                        +

                                                        This interface is used internally by many of the Fortran language file-reading/writing subroutines and message-reading/writing subroutines within the NCEPLIBS-bufr software, in order to use C to directly read/write BUFR messages from/to files.

                                                        +

                                                        This in turn eliminates the need for IEEE Fortran control words within files, though such control words can still be included when writing BUFR messages to files (if desired) via a previous call to subroutine setblock().

                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        2012-09-15
                                                        + +

                                                        Definition in file cread.c.

                                                        +

                                                        Function Documentation

                                                        + +

                                                        ◆ backbufr()

                                                        + +
                                                        +
                                                        + + + + + + + + +
                                                        void backbufr (int nfile)
                                                        +
                                                        + +

                                                        Backspace a BUFR file by one BUFR message.

                                                        +
                                                        Parameters
                                                        + + +
                                                        nfile- File ID.
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        2012-09-15
                                                        + +

                                                        Definition at line 68 of file cread.c.

                                                        + +

                                                        References lstpos, and pb.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ cewind()

                                                        + +
                                                        +
                                                        + + + + + + + + +
                                                        void cewind (int nfile)
                                                        +
                                                        + +

                                                        Rewind a BUFR file back to its beginning.

                                                        +
                                                        Parameters
                                                        + + +
                                                        nfile- File ID.
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        2012-09-15
                                                        + +

                                                        Definition at line 80 of file cread.c.

                                                        + +

                                                        References pb.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ closfb()

                                                        + +
                                                        +
                                                        + + + + + + + + +
                                                        void closfb (int nfile)
                                                        +
                                                        + +

                                                        Close a previously opened BUFR file.

                                                        +
                                                        Parameters
                                                        + + +
                                                        nfile- File ID.
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        2012-09-15
                                                        + +

                                                        Definition at line 92 of file cread.c.

                                                        + +

                                                        References pb.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ crdbufr()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        int crdbufr (int nfile,
                                                        int * bufr,
                                                        int mxwrd 
                                                        )
                                                        +
                                                        + +

                                                        Read the next message from a BUFR file that was previously opened for reading.

                                                        +
                                                        Parameters
                                                        + + + + +
                                                        nfile- File ID.
                                                        bufr- BUFR message.
                                                        mxwrd- Number of elements in bufr array; used by the function to ensure that it doesn't overflow the array.
                                                        +
                                                        +
                                                        +
                                                        Returns
                                                          +
                                                        • 0 normal return.
                                                        • +
                                                        • -1 end-of-file encountered while reading.
                                                        • +
                                                        • -2 I/O error encountered while reading.
                                                        • +
                                                        • -3 overflow of bufr array.
                                                        • +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        2012-09-15
                                                        + +

                                                        Definition at line 114 of file cread.c.

                                                        + +

                                                        References iupbs01_f(), lstpos, and pb.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ cwrbufr()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        void cwrbufr (int nfile,
                                                        int * bufr,
                                                        int nwrd 
                                                        )
                                                        +
                                                        + +

                                                        Write a BUFR message into a file that was previously opened for writing.

                                                        +
                                                        Parameters
                                                        + + + + +
                                                        nfile- File ID.
                                                        bufr- BUFR message.
                                                        nwrd- Size (in integers) of bufr.
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        2012-09-15
                                                        + +

                                                        Definition at line 199 of file cread.c.

                                                        + +

                                                        References pb.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ openab()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        void openab (int nfile,
                                                        char * ufile 
                                                        )
                                                        +
                                                        + +

                                                        Open a new file for appending BUFR messages.

                                                        +
                                                        Parameters
                                                        + + + +
                                                        nfile- File ID.
                                                        ufile- [path/]name of file to be opened.
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        2012-09-15
                                                        + +

                                                        Definition at line 56 of file cread.c.

                                                        + +

                                                        References pb.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ openrb()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        void openrb (int nfile,
                                                        char * ufile 
                                                        )
                                                        +
                                                        + +

                                                        Open a new file for reading BUFR messages.

                                                        +
                                                        Parameters
                                                        + + + +
                                                        nfile- File ID.
                                                        ufile- [path/]name of file to be opened.
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        2012-09-15
                                                        + +

                                                        Definition at line 30 of file cread.c.

                                                        + +

                                                        References pb.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ openwb()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        void openwb (int nfile,
                                                        char * ufile 
                                                        )
                                                        +
                                                        + +

                                                        Open a new file for writing BUFR messages.

                                                        +
                                                        Parameters
                                                        + + + +
                                                        nfile- File ID.
                                                        ufile- [path/]name of file to be opened.
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        2012-09-15
                                                        + +

                                                        Definition at line 43 of file cread.c.

                                                        + +

                                                        References pb.

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/cread_8c.js b/previous_versions/v12.1.0/cread_8c.js new file mode 100644 index 000000000..96401e3e1 --- /dev/null +++ b/previous_versions/v12.1.0/cread_8c.js @@ -0,0 +1,11 @@ +var cread_8c = +[ + [ "backbufr", "cread_8c.html#ad5429d7ed327f515c880227bb795162b", null ], + [ "cewind", "cread_8c.html#afffb1b48f2c7d82abebcf2564d47438a", null ], + [ "closfb", "cread_8c.html#a7b13da152c5a09e0fc1c92d8eb41154b", null ], + [ "crdbufr", "cread_8c.html#a8b09f32462059d646e44ea6098a08edc", null ], + [ "cwrbufr", "cread_8c.html#a95bc32869561911e9ca020628802edc5", null ], + [ "openab", "cread_8c.html#a8eb759a820f7f12a3b75e92473db3c78", null ], + [ "openrb", "cread_8c.html#ab18be8cbb2bdbdb682adce89dd1a9c69", null ], + [ "openwb", "cread_8c.html#aa7b36dfb6c0fe0f9a1104d34c5acfa5e", null ] +]; \ No newline at end of file diff --git a/previous_versions/v12.1.0/cread_8c_source.html b/previous_versions/v12.1.0/cread_8c_source.html new file mode 100644 index 000000000..e57ebc74b --- /dev/null +++ b/previous_versions/v12.1.0/cread_8c_source.html @@ -0,0 +1,227 @@ + + + + + + + +NCEPLIBS-bufr: cread.c Source File + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        +
                                                        cread.c
                                                        +
                                                        +
                                                        +Go to the documentation of this file.
                                                        1 
                                                        +
                                                        18 #include "bufrlib.h"
                                                        +
                                                        19 #include "cread.h"
                                                        +
                                                        20 
                                                        +
                                                        29 void
                                                        +
                                                        30 openrb(int nfile, char *ufile) {
                                                        +
                                                        31  pb[nfile] = fopen(ufile, "rb ");
                                                        +
                                                        32 }
                                                        +
                                                        33 
                                                        +
                                                        42 void
                                                        +
                                                        43 openwb(int nfile, char *ufile) {
                                                        +
                                                        44  pb[nfile] = fopen(ufile, "wb ");
                                                        +
                                                        45 }
                                                        +
                                                        46 
                                                        +
                                                        55 void
                                                        +
                                                        56 openab(int nfile, char *ufile) {
                                                        +
                                                        57  pb[nfile] = fopen(ufile, "a+b");
                                                        +
                                                        58 }
                                                        +
                                                        59 
                                                        +
                                                        67 void
                                                        +
                                                        68 backbufr(int nfile) {
                                                        +
                                                        69  fsetpos(pb[nfile],&lstpos[nfile]);
                                                        +
                                                        70 }
                                                        +
                                                        71 
                                                        +
                                                        79 void
                                                        +
                                                        80 cewind(int nfile) {
                                                        +
                                                        81  rewind(pb[nfile]);
                                                        +
                                                        82 }
                                                        +
                                                        83 
                                                        +
                                                        91 void
                                                        +
                                                        92 closfb(int nfile) {
                                                        +
                                                        93  fclose(pb[nfile]);
                                                        +
                                                        94 }
                                                        +
                                                        95 
                                                        +
                                                        113 int
                                                        +
                                                        114 crdbufr(int nfile, int *bufr, int mxwrd) {
                                                        +
                                                        115 
                                                        +
                                                        116  int nbytrem, nintrem, nbytx, nintx, wkint[2], ii;
                                                        +
                                                        117  size_t nb = sizeof(int), nbdi8 = 8/sizeof(int);
                                                        +
                                                        118  char wkchr[17] = " ";
                                                        +
                                                        119  fpos_t nxtpos;
                                                        +
                                                        120 
                                                        +
                                                        121  /* Find the start of the next BUFR message within the file. */
                                                        +
                                                        122  fgetpos(pb[nfile], &lstpos[nfile]);
                                                        +
                                                        123  while (strncmp(wkchr, "BUFR", 4) != 0) {
                                                        +
                                                        124  memmove(wkchr, &wkchr[1], 3);
                                                        +
                                                        125  if (fread(wkchr + 3, 1, 1, pb[nfile]) != 1)
                                                        +
                                                        126  return -1;
                                                        +
                                                        127  }
                                                        +
                                                        128 
                                                        +
                                                        129  /* Save the current location in case we need to restore it later. */
                                                        +
                                                        130  fgetpos(pb[nfile], &nxtpos);
                                                        +
                                                        131 
                                                        +
                                                        132  /* Read the next 4 bytes of the message. */
                                                        +
                                                        133  if (fread(wkchr+4, 1, 4, pb[nfile]) != 4)
                                                        +
                                                        134  return -1;
                                                        +
                                                        135 
                                                        +
                                                        136  /* Determine the remaining number of bytes in the message. This doesn't
                                                        +
                                                        137  * include the first 8 bytes, because we've already read those in. */
                                                        +
                                                        138  memcpy(wkint, wkchr, 8);
                                                        +
                                                        139  nbytrem = iupbs01_f(wkint, "LENM") - 8;
                                                        +
                                                        140 
                                                        +
                                                        141  nintrem = nbytrem / nb;
                                                        +
                                                        142  nintx = nbdi8;
                                                        +
                                                        143  /* Since nbytrem doesn't include the first 8 bytes of the BUFR message, then
                                                        +
                                                        144  * nintrem is at least nintx integers short of the number needed to hold the
                                                        +
                                                        145  * entire message. But there may still be one more integer needed beyond
                                                        +
                                                        146  * that, depending on whether nbytrem is an exact multiple of nb. */
                                                        +
                                                        147  if ( ( nbytx = nbytrem % nb ) > 0 ) {
                                                        +
                                                        148  nintx += 1;
                                                        +
                                                        149  }
                                                        +
                                                        150  /* Make sure the output array is large enough to hold the entire message. */
                                                        +
                                                        151  if (nintrem + nintx > mxwrd) {
                                                        +
                                                        152  fsetpos(pb[nfile], &nxtpos);
                                                        +
                                                        153  return -3;
                                                        +
                                                        154  }
                                                        +
                                                        155 
                                                        +
                                                        156  /* Copy the first 8 bytes of the BUFR message into the output array. */
                                                        +
                                                        157  for ( ii = 0; ii < nbdi8; ii++ ) {
                                                        +
                                                        158  bufr[ii] = wkint[ii];
                                                        +
                                                        159  }
                                                        +
                                                        160  /* Continue reading up to the next-to-last integer of the BUFR message,
                                                        +
                                                        161  * and copy these into the output array. */
                                                        +
                                                        162  if (fread(&bufr[ii], nb, nintrem-1, pb[nfile]) != nintrem-1) {
                                                        +
                                                        163  fsetpos(pb[nfile],&nxtpos);
                                                        +
                                                        164  return -2;
                                                        +
                                                        165  }
                                                        +
                                                        166 
                                                        +
                                                        167  /* Read the last few bytes of the BUFR message and check for the "7777"
                                                        +
                                                        168  * indicator. We want to read the end of the message byte-by-byte
                                                        +
                                                        169  * (rather than integer-by-integer) so that we can easily check for the
                                                        +
                                                        170  * ending "7777" string. */
                                                        +
                                                        171  nbytrem = nb + nbytx;
                                                        +
                                                        172  if (fread(wkchr, 1, nbytrem, pb[nfile]) != nbytrem) {
                                                        +
                                                        173  fsetpos(pb[nfile], &nxtpos);
                                                        +
                                                        174  return -2;
                                                        +
                                                        175  }
                                                        +
                                                        176  if (strncmp(&wkchr[nbytrem-4], "7777", 4) != 0) {
                                                        +
                                                        177  fsetpos(pb[nfile], &nxtpos);
                                                        +
                                                        178  return -2;
                                                        +
                                                        179  }
                                                        +
                                                        180  /* Copy the last few bytes of the BUFR message into the output array. */
                                                        +
                                                        181  memcpy(wkint, wkchr, nbytrem);
                                                        +
                                                        182  bufr[nintrem + 1] = wkint[0];
                                                        +
                                                        183  if ( nbytx > 0 ) bufr[nintrem + 2] = wkint[1];
                                                        +
                                                        184 
                                                        +
                                                        185  return 0;
                                                        +
                                                        186 }
                                                        +
                                                        187 
                                                        +
                                                        198 void
                                                        +
                                                        199 cwrbufr(int nfile, int *bufr, int nwrd) {
                                                        +
                                                        200  size_t nb = sizeof(int);
                                                        +
                                                        201 
                                                        +
                                                        202  fwrite(bufr, nb, nwrd, pb[nfile]);
                                                        +
                                                        203 }
                                                        +
                                                        int iupbs01_f(int *bufr, char *mnemonic)
                                                        Read a data value from Section 0 or Section 1 of a BUFR message.
                                                        +
                                                        Enable a number of NCEPLIBS-bufr subprograms to be called from within the C part of the library.
                                                        +
                                                        void closfb(int nfile)
                                                        Close a previously opened BUFR file.
                                                        Definition: cread.c:92
                                                        +
                                                        int crdbufr(int nfile, int *bufr, int mxwrd)
                                                        Read the next message from a BUFR file that was previously opened for reading.
                                                        Definition: cread.c:114
                                                        +
                                                        void openab(int nfile, char *ufile)
                                                        Open a new file for appending BUFR messages.
                                                        Definition: cread.c:56
                                                        +
                                                        void cwrbufr(int nfile, int *bufr, int nwrd)
                                                        Write a BUFR message into a file that was previously opened for writing.
                                                        Definition: cread.c:199
                                                        +
                                                        void openwb(int nfile, char *ufile)
                                                        Open a new file for writing BUFR messages.
                                                        Definition: cread.c:43
                                                        +
                                                        void openrb(int nfile, char *ufile)
                                                        Open a new file for reading BUFR messages.
                                                        Definition: cread.c:30
                                                        +
                                                        void backbufr(int nfile)
                                                        Backspace a BUFR file by one BUFR message.
                                                        Definition: cread.c:68
                                                        +
                                                        void cewind(int nfile)
                                                        Rewind a BUFR file back to its beginning.
                                                        Definition: cread.c:80
                                                        +
                                                        Declare variables for reading or writing BUFR messages via a C language interface.
                                                        +
                                                        FILE ** pb
                                                        File pointers.
                                                        +
                                                        fpos_t * lstpos
                                                        Byte positions of last successful reads from files corresponding to pb, for files that were opened fo...
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/cread_8h.html b/previous_versions/v12.1.0/cread_8h.html new file mode 100644 index 000000000..d19eb02d6 --- /dev/null +++ b/previous_versions/v12.1.0/cread_8h.html @@ -0,0 +1,177 @@ + + + + + + + +NCEPLIBS-bufr: cread.h File Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        cread.h File Reference
                                                        +
                                                        +
                                                        + +

                                                        Declare variables for reading or writing BUFR messages via a C language interface. +More...

                                                        + +

                                                        Go to the source code of this file.

                                                        + + + + + + + + +

                                                        +Variables

                                                        fpos_t * lstpos
                                                         Byte positions of last successful reads from files corresponding to pb, for files that were opened for reading. More...
                                                         
                                                        FILE ** pb
                                                         File pointers. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Declare variables for reading or writing BUFR messages via a C language interface.

                                                        +

                                                        These variables are used by the C language interface which encompasses functions openrb(), openwb(), openab(), backbufr(), cewind(), closfb(), crdbufr() and cwrbufr().

                                                        +

                                                        When allocated, these variables are dimensioned as one larger than NFILES because of the difference in array indexing between Fortran and C. In each function, the value passed in for nfile will be a Fortran file ID ranging in value from 1 to NFILES, so we need to allow for this same range of values in C, which would otherwise expect the array indices to range from 0 to NFILES-1.

                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        2012-09-15
                                                        + +

                                                        Definition in file cread.h.

                                                        +

                                                        Variable Documentation

                                                        + +

                                                        ◆ lstpos

                                                        + +
                                                        +
                                                        + + + + + +
                                                        + + + + +
                                                        lstpos
                                                        +
                                                        +extern
                                                        +
                                                        + +

                                                        Byte positions of last successful reads from files corresponding to pb, for files that were opened for reading.

                                                        + +

                                                        Referenced by arallocc(), ardllocc(), backbufr(), and crdbufr().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ pb

                                                        + +
                                                        +
                                                        + + + + + +
                                                        + + + + +
                                                        pb
                                                        +
                                                        +extern
                                                        +
                                                        + +

                                                        File pointers.

                                                        + +

                                                        Referenced by arallocc(), ardllocc(), backbufr(), cewind(), closfb(), crdbufr(), cwrbufr(), openab(), openrb(), and openwb().

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/cread_8h.js b/previous_versions/v12.1.0/cread_8h.js new file mode 100644 index 000000000..b596b3ea3 --- /dev/null +++ b/previous_versions/v12.1.0/cread_8h.js @@ -0,0 +1,5 @@ +var cread_8h = +[ + [ "lstpos", "cread_8h.html#af3681883f8ef0fe1771afc9aeb072eb0", null ], + [ "pb", "cread_8h.html#a58db779a0b3c7250a119069bd2e5106c", null ] +]; \ No newline at end of file diff --git a/previous_versions/v12.1.0/cread_8h_source.html b/previous_versions/v12.1.0/cread_8h_source.html new file mode 100644 index 000000000..0a6743905 --- /dev/null +++ b/previous_versions/v12.1.0/cread_8h_source.html @@ -0,0 +1,109 @@ + + + + + + + +NCEPLIBS-bufr: cread.h Source File + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        +
                                                        cread.h
                                                        +
                                                        +
                                                        +Go to the documentation of this file.
                                                        1 
                                                        +
                                                        27 #ifdef IN_ARALLOCC
                                                        +
                                                        28  FILE **pb;
                                                        +
                                                        29  fpos_t *lstpos;
                                                        +
                                                        30 #else
                                                        +
                                                        31  extern FILE **pb;
                                                        +
                                                        32  extern fpos_t *lstpos;
                                                        +
                                                        33 #endif
                                                        +
                                                        FILE ** pb
                                                        File pointers.
                                                        +
                                                        fpos_t * lstpos
                                                        Byte positions of last successful reads from files corresponding to pb, for files that were opened fo...
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/crwbmg_8c.html b/previous_versions/v12.1.0/crwbmg_8c.html new file mode 100644 index 000000000..24fd8b54e --- /dev/null +++ b/previous_versions/v12.1.0/crwbmg_8c.html @@ -0,0 +1,458 @@ + + + + + + + +NCEPLIBS-bufr: crwbmg.c File Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        crwbmg.c File Reference
                                                        +
                                                        +
                                                        + +

                                                        C language interface for reading or writing BUFR messages. +More...

                                                        +
                                                        #include "bufrlib.h"
                                                        +
                                                        +

                                                        Go to the source code of this file.

                                                        + + + + + +

                                                        +Macros

                                                        #define MXFNLEN   200
                                                         Maximum length of a filename, including any directory prefixes or other local filesystem notation. More...
                                                         
                                                        + + + + + + + + + + + + + + + + +

                                                        +Functions

                                                        void ccbfl (void)
                                                         Close all files that were opened via previous calls to function cobfl(). More...
                                                         
                                                        void cobfl (char *bfl, char io)
                                                         Open a new file for reading or writing BUFR messages via a C language interface. More...
                                                         
                                                        void crbmg (char *bmg, int mxmb, int *nmb, int *iret)
                                                         Read the next BUFR message from the file that was opened via the most recent call to function cobfl() with io = 'r'. More...
                                                         
                                                        void cwbmg (char *bmg, int nmb, int *iret)
                                                         Write a BUFR message to the file that was opened via the most recent call to function cobfl() with io = 'w'. More...
                                                         
                                                        int rbytes (char *bmg, int mxmb, int isloc, int newbytes)
                                                         Read a specified number of bytes from the file that was opened via the most recent call to function cobfl() with io = 'r'. More...
                                                         
                                                        + + + + +

                                                        +Variables

                                                        FILE * pbf [2]
                                                         File pointers; each element will automatically initialize to NULL. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        C language interface for reading or writing BUFR messages.

                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2005-11-29
                                                        + +

                                                        Definition in file crwbmg.c.

                                                        +

                                                        Macro Definition Documentation

                                                        + +

                                                        ◆ MXFNLEN

                                                        + +
                                                        +
                                                        + + + + +
                                                        #define MXFNLEN   200
                                                        +
                                                        + +

                                                        Maximum length of a filename, including any directory prefixes or other local filesystem notation.

                                                        + +

                                                        Definition at line 10 of file crwbmg.c.

                                                        + +
                                                        +
                                                        +

                                                        Function Documentation

                                                        + +

                                                        ◆ ccbfl()

                                                        + +
                                                        +
                                                        + + + + + + + + +
                                                        void ccbfl (void )
                                                        +
                                                        + +

                                                        Close all files that were opened via previous calls to function cobfl().

                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2005-11-29
                                                        + +

                                                        Definition at line 290 of file crwbmg.c.

                                                        + +

                                                        References pbf.

                                                        + +

                                                        Referenced by main().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ cobfl()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        void cobfl (char * bfl,
                                                        char io 
                                                        )
                                                        +
                                                        + +

                                                        Open a new file for reading or writing BUFR messages via a C language interface.

                                                        +

                                                        This function is designed to be easily callable from application program written in either C or Fortran. It is functionally equivalent to subroutine openbf(); however, there are some important differences:

                                                        +
                                                          +
                                                        • When using openbf(), the underlying file must already be associated with a Fortran logical unit number on the local system, typicially via a prior Fortran "OPEN" statement. This is not required when using this function.
                                                        • +
                                                        • When using this function, it is only possible to have at most one input (io = 'r') file and one output (io = 'w') file open at a time. If a successive call to this function is made in either case where a file of that type is already open, then the function will automatically close the previous file of that type before opening the new one.
                                                        • +
                                                        • When opening a file for input/reading using openbf(), the user can make subsequent calls to any of the NCEPLIBS-bufr message-reading subroutines to read individual BUFR messages from that file into internal arrays, followed by subsequent calls to any of the NCEPLIBS-bufr subset-reading subroutines") to read individual data subsets from each such message. However, when opening a file for input/reading using this function, the user must instead make subsequent calls to crbmg() to read individual BUFR messages from that file, and each such message will be returned directly to the user within an allocated memory array. The user may then, if desired, make subsequent calls to readerme() to store each such message into the same internal arrays, followed by subsequent calls to any of the NCEPLIBS-bufr subset-reading subroutines" to read individual data subsets from each such message.
                                                        • +
                                                        • When opening a file for output/writing using openbf(), the user can make subsequent successive calls to writsb() to pack each completed data subset into the BUFR message that is currently open within the internal arrays, for eventual output to that file. However, when opening a file for output/writing using this function, the user can instead, if desired, make subsequent successive calls to writsa() to pack each completed data subset into the BUFR message that is currently open within the internal arrays. The use of writsa() will cause each completed BUFR message to be returned directly to the user within an allocated memory array, which in turn can then be written directly to the file via a subsequent call to cwbmg().
                                                        • +
                                                        +

                                                        Any errors encountered when using this function are automatically logged to standard output, or to an alternate location previously specified via a call to subroutine errwrt().

                                                        +
                                                        Parameters
                                                        + + + +
                                                        bfl- System file to be opened. Inclusion of directory prefixes or other local filesystem notation is allowed, up to 200 total characters.
                                                        io- Flag indicating how bfl is to be opened:
                                                          +
                                                        • 'r' input (for reading BUFR messages)
                                                        • +
                                                        • 'w' output (for writing BUFR messages)
                                                        • +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2005-11-29
                                                        + +

                                                        Definition at line 120 of file crwbmg.c.

                                                        + +

                                                        References bort_f(), MXFNLEN, and pbf.

                                                        + +

                                                        Referenced by main().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ crbmg()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        void crbmg (char * bmg,
                                                        int mxmb,
                                                        int * nmb,
                                                        int * iret 
                                                        )
                                                        +
                                                        + +

                                                        Read the next BUFR message from the file that was opened via the most recent call to function cobfl() with io = 'r'.

                                                        +

                                                        This function is designed to be easily callable from application program written in either C or Fortran.

                                                        +
                                                        Parameters
                                                        + + + + + +
                                                        bmg- BUFR message
                                                        mxmb- Number of elements in bmg array;; used by the function to ensure that it doesn't overflow the array.
                                                        nmb- Size (in bytes) of BUFR message in bmg.
                                                        iret- return code:
                                                          +
                                                        • 0 normal return.
                                                        • +
                                                        • 1 overflow of bmg array.
                                                        • +
                                                        • 2 "7777" indicator not found in expected location.
                                                        • +
                                                        • -1 end-of-file encountered while reading.
                                                        • +
                                                        • -2 I/O error encountered while reading.
                                                        • +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2005-11-29
                                                        + +

                                                        Definition at line 195 of file crwbmg.c.

                                                        + +

                                                        References bort_f(), iupbs01_f(), pbf, and rbytes().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ cwbmg()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        void cwbmg (char * bmg,
                                                        int nmb,
                                                        int * iret 
                                                        )
                                                        +
                                                        + +

                                                        Write a BUFR message to the file that was opened via the most recent call to function cobfl() with io = 'w'.

                                                        +

                                                        This function is designed to be easily callable from application program written in either C or Fortran.

                                                        +
                                                        Parameters
                                                        + + + + +
                                                        bmg- BUFR message
                                                        nmb- Size (in bytes) of BUFR message in bmg
                                                        iret- return code:
                                                          +
                                                        • 0 normal return.
                                                        • +
                                                        • -1 I/O error encountered while writing.
                                                        • +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2005-11-29
                                                        + +

                                                        Definition at line 263 of file crwbmg.c.

                                                        + +

                                                        References bort_f(), and pbf.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ rbytes()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        int rbytes (char * bmg,
                                                        int mxmb,
                                                        int isloc,
                                                        int newbytes 
                                                        )
                                                        +
                                                        + +

                                                        Read a specified number of bytes from the file that was opened via the most recent call to function cobfl() with io = 'r'.

                                                        +
                                                        Parameters
                                                        + + + + + +
                                                        bmg- Array containing the newbytes bytes that were read, beginning at byte number isloc.
                                                        mxmb- Number of elements in bmg array; used by the function to ensure that it doesn't overflow the array.
                                                        isloc- Starting byte within bmg into which to read the next newbytes bytes
                                                        newbytes- Number of bytes to read from file most recently opened for input/reading via function cobfl()
                                                        +
                                                        +
                                                        +
                                                        Returns
                                                          +
                                                        • 0 normal return
                                                        • +
                                                        • 1 overflow of bmg array
                                                        • +
                                                        • -1 end-of-file encountered while reading
                                                        • +
                                                        • -2 I/O error encountered while reading
                                                        • +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2005-11-29
                                                        + +

                                                        Definition at line 38 of file crwbmg.c.

                                                        + +

                                                        References pbf.

                                                        + +

                                                        Referenced by crbmg().

                                                        + +
                                                        +
                                                        +

                                                        Variable Documentation

                                                        + +

                                                        ◆ pbf

                                                        + +
                                                        +
                                                        + + + + +
                                                        FILE* pbf[2]
                                                        +
                                                        + +

                                                        File pointers; each element will automatically initialize to NULL.

                                                        + +

                                                        Definition at line 14 of file crwbmg.c.

                                                        + +

                                                        Referenced by ccbfl(), cobfl(), crbmg(), cwbmg(), and rbytes().

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/crwbmg_8c.js b/previous_versions/v12.1.0/crwbmg_8c.js new file mode 100644 index 000000000..811debbad --- /dev/null +++ b/previous_versions/v12.1.0/crwbmg_8c.js @@ -0,0 +1,10 @@ +var crwbmg_8c = +[ + [ "MXFNLEN", "crwbmg_8c.html#adcb9ca74c59f88b5a3d6bd10c8095692", null ], + [ "ccbfl", "crwbmg_8c.html#ab66668ab9633ce3b475416f6a9899802", null ], + [ "cobfl", "crwbmg_8c.html#a1a79689096002f6f3c125abc59c2143d", null ], + [ "crbmg", "crwbmg_8c.html#a8e937daaf4fe2e1c74c3f8754bcce048", null ], + [ "cwbmg", "crwbmg_8c.html#a3ccf1d9c69d9b23a3906d3f7b5ab743d", null ], + [ "rbytes", "crwbmg_8c.html#a6dbaed2f330cb936df41084b4d8a5aae", null ], + [ "pbf", "crwbmg_8c.html#ae17af2b55406347c25aca1cb56d7b193", null ] +]; \ No newline at end of file diff --git a/previous_versions/v12.1.0/crwbmg_8c_source.html b/previous_versions/v12.1.0/crwbmg_8c_source.html new file mode 100644 index 000000000..92693907c --- /dev/null +++ b/previous_versions/v12.1.0/crwbmg_8c_source.html @@ -0,0 +1,274 @@ + + + + + + + +NCEPLIBS-bufr: crwbmg.c Source File + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        +
                                                        crwbmg.c
                                                        +
                                                        +
                                                        +Go to the documentation of this file.
                                                        1 
                                                        +
                                                        6 #include "bufrlib.h"
                                                        +
                                                        7 
                                                        +
                                                        10 #define MXFNLEN 200
                                                        +
                                                        11 
                                                        +
                                                        14 FILE *pbf[2];
                                                        +
                                                        15 
                                                        +
                                                        37 int
                                                        +
                                                        38 rbytes(char *bmg, int mxmb, int isloc, int newbytes)
                                                        +
                                                        39 {
                                                        +
                                                        40  int iret;
                                                        +
                                                        41 
                                                        +
                                                        42  if ((isloc + newbytes) > mxmb) {
                                                        +
                                                        43  iret = 1;
                                                        +
                                                        44  }
                                                        +
                                                        45  else if (fread(&bmg[isloc], 1, newbytes, pbf[0]) != newbytes) {
                                                        +
                                                        46  iret = (feof(pbf[0]) ? -1 : -2);
                                                        +
                                                        47  }
                                                        +
                                                        48  else {
                                                        +
                                                        49  iret = 0;
                                                        +
                                                        50  }
                                                        +
                                                        51 
                                                        +
                                                        52  return iret;
                                                        +
                                                        53 }
                                                        +
                                                        54 
                                                        +
                                                        119 void
                                                        +
                                                        120 cobfl(char *bfl, char io)
                                                        +
                                                        121 {
                                                        +
                                                        122  char lbf[MXFNLEN+1];
                                                        +
                                                        123  char lio;
                                                        +
                                                        124 
                                                        +
                                                        125  char errstr[MXFNLEN+50];
                                                        +
                                                        126 
                                                        +
                                                        127  char foparg[3] = " b"; /* 3rd character will automatically initialize to NULL */
                                                        +
                                                        128  unsigned short i, j;
                                                        +
                                                        129 
                                                        +
                                                        130  /*
                                                        +
                                                        131  ** Copy the input arguments into local variables and check them for validity. This is especially
                                                        +
                                                        132  ** important in case either of the arguments was passed in as a string literal by the calling
                                                        +
                                                        133  ** program or else doesn't have a trailing NULL character.
                                                        +
                                                        134  */
                                                        +
                                                        135  for (i = 0; (! isspace(bfl[i]) && ! iscntrl(bfl[i])); i++) {
                                                        +
                                                        136  if (i == MXFNLEN) {
                                                        +
                                                        137  sprintf(errstr, "BUFRLIB: COBFL - INPUT FILENAME CONTAINS"
                                                        +
                                                        138  " MORE THAN %hu CHARACTERS", (unsigned short) MXFNLEN);
                                                        +
                                                        139  bort_f(errstr);
                                                        +
                                                        140  }
                                                        +
                                                        141  lbf[i] = bfl[i];
                                                        +
                                                        142  }
                                                        +
                                                        143  lbf[i] = '\0';
                                                        +
                                                        144 
                                                        +
                                                        145  lio = io;
                                                        +
                                                        146  if ((foparg[0] = (char) tolower(lio)) == 'r') {
                                                        +
                                                        147  j = 0;
                                                        +
                                                        148  }
                                                        +
                                                        149  else if (foparg[0] == 'w') {
                                                        +
                                                        150  j = 1;
                                                        +
                                                        151  }
                                                        +
                                                        152  else {
                                                        +
                                                        153  sprintf(errstr, "BUFRLIB: COBFL - SECOND ARGUMENT WAS (%c),"
                                                        +
                                                        154  " WHICH IS AN ILLEGAL VALUE", lio);
                                                        +
                                                        155  bort_f(errstr);
                                                        +
                                                        156  }
                                                        +
                                                        157 
                                                        +
                                                        158  /*
                                                        +
                                                        159  ** If a file of this type is already open, then close it before opening the new one.
                                                        +
                                                        160  */
                                                        +
                                                        161  if (pbf[j] != NULL) fclose(pbf[j]);
                                                        +
                                                        162 
                                                        +
                                                        163  /*
                                                        +
                                                        164  ** Open the requested file.
                                                        +
                                                        165  */
                                                        +
                                                        166  if ((pbf[j] = fopen(lbf, foparg)) == NULL) {
                                                        +
                                                        167  sprintf(errstr, "BUFRLIB: COBFL - COULD NOT OPEN FILE %s", lbf);
                                                        +
                                                        168  bort_f(errstr);
                                                        +
                                                        169  }
                                                        +
                                                        170 
                                                        +
                                                        171  return;
                                                        +
                                                        172 }
                                                        +
                                                        173 
                                                        +
                                                        194 void
                                                        +
                                                        195 crbmg(char *bmg, int mxmb, int *nmb, int *iret)
                                                        +
                                                        196 {
                                                        +
                                                        197  int wkint[2];
                                                        +
                                                        198 
                                                        +
                                                        199  char errstr[129];
                                                        +
                                                        200  char blanks[5] = " ";
                                                        +
                                                        201 
                                                        +
                                                        202  /*
                                                        +
                                                        203  ** Make sure that a file is open for reading.
                                                        +
                                                        204  */
                                                        +
                                                        205  if (pbf[0] == NULL) {
                                                        +
                                                        206  sprintf(errstr, "BUFRLIB: CRBMG - NO FILE IS OPEN FOR READING");
                                                        +
                                                        207  bort_f(errstr);
                                                        +
                                                        208  }
                                                        +
                                                        209 
                                                        +
                                                        210  /*
                                                        +
                                                        211  ** Initialize the first 4 characters of the output array to blanks.
                                                        +
                                                        212  */
                                                        +
                                                        213  if (mxmb < 5) {
                                                        +
                                                        214  *iret = 1;
                                                        +
                                                        215  return;
                                                        +
                                                        216  }
                                                        +
                                                        217  strcpy(bmg, blanks);
                                                        +
                                                        218 
                                                        +
                                                        219  /*
                                                        +
                                                        220  ** Look for the start of the next BUFR message.
                                                        +
                                                        221  */
                                                        +
                                                        222  while (strncmp("BUFR", bmg, 4) != 0) {
                                                        +
                                                        223  memmove(bmg, &bmg[1], 3);
                                                        +
                                                        224  if ((*iret = rbytes(bmg, mxmb, 3, 1)) != 0) return;
                                                        +
                                                        225  }
                                                        +
                                                        226 
                                                        +
                                                        227  /*
                                                        +
                                                        228  ** Read the next 4 bytes of the BUFR message and get the length of the message.
                                                        +
                                                        229  */
                                                        +
                                                        230  if ((*iret = rbytes(bmg, mxmb, 4, 4)) != 0) return;
                                                        +
                                                        231  memcpy(wkint, bmg, 8);
                                                        +
                                                        232  *nmb = iupbs01_f(wkint, "LENM");
                                                        +
                                                        233 
                                                        +
                                                        234  /*
                                                        +
                                                        235  ** Read the remainder of the BUFR message.
                                                        +
                                                        236  */
                                                        +
                                                        237  if ((*iret = rbytes(bmg, mxmb, 8, *nmb-8)) != 0) return;
                                                        +
                                                        238 
                                                        +
                                                        239  /*
                                                        +
                                                        240  ** Check that the "7777" is in the expected location.
                                                        +
                                                        241  */
                                                        +
                                                        242  *iret = ((strncmp("7777", &bmg[*nmb-4], 4) == 0) ? 0 : 2);
                                                        +
                                                        243 
                                                        +
                                                        244  return;
                                                        +
                                                        245 }
                                                        +
                                                        246 
                                                        +
                                                        262 void
                                                        +
                                                        263 cwbmg(char *bmg, int nmb, int *iret)
                                                        +
                                                        264 {
                                                        +
                                                        265  char errstr[129];
                                                        +
                                                        266 
                                                        +
                                                        267  /*
                                                        +
                                                        268  ** Make sure that a file is open for writing.
                                                        +
                                                        269  */
                                                        +
                                                        270  if (pbf[1] == NULL) {
                                                        +
                                                        271  sprintf(errstr, "BUFRLIB: CWBMG - NO FILE IS OPEN FOR WRITING");
                                                        +
                                                        272  bort_f(errstr);
                                                        +
                                                        273  }
                                                        +
                                                        274 
                                                        +
                                                        275  /*
                                                        +
                                                        276  ** Write the BUFR message to the file.
                                                        +
                                                        277  */
                                                        +
                                                        278  *iret = ((fwrite(bmg, 1, nmb, pbf[1]) == nmb) ? 0 : -1);
                                                        +
                                                        279 
                                                        +
                                                        280  return;
                                                        +
                                                        281 }
                                                        +
                                                        282 
                                                        +
                                                        289 void
                                                        +
                                                        290 ccbfl(void)
                                                        +
                                                        291 {
                                                        +
                                                        292  unsigned short i;
                                                        +
                                                        293 
                                                        +
                                                        294  for (i = 0; i < 2; i++) {
                                                        +
                                                        295  if (pbf[i] != NULL) fclose(pbf[i]);
                                                        +
                                                        296  }
                                                        +
                                                        297 
                                                        +
                                                        298  return;
                                                        +
                                                        299 }
                                                        +
                                                        int iupbs01_f(int *bufr, char *mnemonic)
                                                        Read a data value from Section 0 or Section 1 of a BUFR message.
                                                        +
                                                        Enable a number of NCEPLIBS-bufr subprograms to be called from within the C part of the library.
                                                        +
                                                        void bort_f(char *errstr)
                                                        Log one error message and abort application program.
                                                        +
                                                        void cobfl(char *bfl, char io)
                                                        Open a new file for reading or writing BUFR messages via a C language interface.
                                                        Definition: crwbmg.c:120
                                                        +
                                                        void cwbmg(char *bmg, int nmb, int *iret)
                                                        Write a BUFR message to the file that was opened via the most recent call to function cobfl() with io...
                                                        Definition: crwbmg.c:263
                                                        +
                                                        int rbytes(char *bmg, int mxmb, int isloc, int newbytes)
                                                        Read a specified number of bytes from the file that was opened via the most recent call to function c...
                                                        Definition: crwbmg.c:38
                                                        +
                                                        void crbmg(char *bmg, int mxmb, int *nmb, int *iret)
                                                        Read the next BUFR message from the file that was opened via the most recent call to function cobfl()...
                                                        Definition: crwbmg.c:195
                                                        +
                                                        void ccbfl(void)
                                                        Close all files that were opened via previous calls to function cobfl().
                                                        Definition: crwbmg.c:290
                                                        +
                                                        #define MXFNLEN
                                                        Maximum length of a filename, including any directory prefixes or other local filesystem notation.
                                                        Definition: crwbmg.c:10
                                                        +
                                                        FILE * pbf[2]
                                                        File pointers; each element will automatically initialize to NULL.
                                                        Definition: crwbmg.c:14
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/debufr_8F90.html b/previous_versions/v12.1.0/debufr_8F90.html new file mode 100644 index 000000000..837126914 --- /dev/null +++ b/previous_versions/v12.1.0/debufr_8F90.html @@ -0,0 +1,321 @@ + + + + + + + +NCEPLIBS-bufr: debufr.F90 File Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        debufr.F90 File Reference
                                                        +
                                                        +
                                                        + +

                                                        Fortran language code for debufr utility. +More...

                                                        + +

                                                        Go to the source code of this file.

                                                        + + + + + +

                                                        +Modules

                                                        module  share_table_info
                                                         This module is used within the debufr utility to share information between subroutine fdebufr_c() and subroutine openbt(), since the latter is not called by the former but rather is called directly from within the NCEPLIBS-bufr software.
                                                         
                                                        + + + + + + + +

                                                        +Functions/Subroutines

                                                        subroutine fdebufr_c (ofile, lenof, tbldir, lentd, tblfil, lentf, prmstg, lenps, basic, forcemt, cfms)
                                                         This subroutine reads, decodes, and generates a verbose output listing of the contents of every BUFR message from within the input file that was previously opened via a call to function cobfl() with io = 'r'. More...
                                                         
                                                        subroutine openbt (lundx, mtyp)
                                                         This subroutine overrides the placeholder subroutine of the same name within the NCEPLIBS-bufr distribution package. More...
                                                         
                                                        + + + + + + + + + + +

                                                        +Variables

                                                        integer share_table_info::ltbd
                                                         Length (in characters) of tbldir_f. More...
                                                         
                                                        integer share_table_info::ludx
                                                         Fortran logical unit number to use for referencing a DX table. More...
                                                         
                                                        character(len=:), allocatable share_table_info::tbldir_f
                                                         Directory containing DX BUFR tables to be used for decoding. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Fortran language code for debufr utility.

                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2009-07-01
                                                        + +

                                                        Definition in file debufr.F90.

                                                        +

                                                        Function/Subroutine Documentation

                                                        + +

                                                        ◆ fdebufr_c()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        subroutine fdebufr_c (character(kind=c_char,len=1), dimension(*), intent(in) ofile,
                                                        integer(c_int), intent(in), value lenof,
                                                        character(kind=c_char,len=1), dimension(*), intent(in) tbldir,
                                                        integer(c_int), intent(in), value lentd,
                                                        character(kind=c_char,len=1), dimension(*), intent(in) tblfil,
                                                        integer(c_int), intent(in), value lentf,
                                                        character(kind=c_char,len=1), dimension(*), intent(in) prmstg,
                                                        integer(c_int), intent(in), value lenps,
                                                        character(kind=c_char,len=1), intent(in) basic,
                                                        character(kind=c_char,len=1), intent(in) forcemt,
                                                        character(kind=c_char,len=1), intent(in) cfms 
                                                        )
                                                        +
                                                        + +

                                                        This subroutine reads, decodes, and generates a verbose output listing of the contents of every BUFR message from within the input file that was previously opened via a call to function cobfl() with io = 'r'.

                                                        +
                                                        Parameters
                                                        + + + + + + + + + + + + +
                                                        ofile- File to contain verbose output listing of contents of each decoded BUFR message
                                                        lenof- Length of ofile string
                                                        tbldir- Directory containing DX and/or master BUFR tables to be used for decoding
                                                        lentd- Length of tbldir string
                                                        tblfil- File containing DX BUFR table information to be used for decoding
                                                          +
                                                        • 'NULLFILE' = No such file will be used
                                                        • +
                                                        +
                                                        lentf- Length of tblfil string
                                                        prmstg- String of up to 20 comma-separated PARAMETER=VALUE pairs to be used to dynamically allocate memory within the NCEPLIBS-bufr software, overriding the default VALUE that would otherwise be used for each such PARAMETER
                                                          +
                                                        • 'NULLPSTG' = No such pairs will be used
                                                        • +
                                                        +
                                                        lenps- Length of prmstg string
                                                        basic- Indicator as to whether only "basic" information in Sections 0-3 should be decoded from each BUFR message:
                                                          +
                                                        • 'Y' = Yes
                                                        • +
                                                        • 'N' = No
                                                        • +
                                                        +
                                                        forcemt- Indicator as to whether master BUFR tables should be used for decoding, regardless of whether the input file contains any embedded DX BUFR table messages:
                                                          +
                                                        • 'Y' = Yes
                                                        • +
                                                        • 'N' = No
                                                        • +
                                                        +
                                                        cfms- Indicator as to whether code and flag table meanings should be read from master BUFR tables and included in the print output:
                                                          +
                                                        • 'Y' = Yes
                                                        • +
                                                        • 'N' = No
                                                        • +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        Remarks
                                                          +
                                                        • See NCEPLIBS-bufr function isetprm() for a complete list of parameters that can be dynamically sized via prmstg.
                                                        • +
                                                        • Fortran logical unit numbers 51, 90, 91, 92 and 93 are reserved for use within this subroutine.
                                                        • +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2009-07-01
                                                        + +

                                                        Definition at line 54 of file debufr.F90.

                                                        + +

                                                        References codflg(), datelen(), dxdump(), getcfmng(), share_table_info::ltbd, share_table_info::ludx, mtinfo(), openbf(), parstr(), readerme(), rtrcptb(), strnum(), strsuc(), ufdump(), and upds3().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ openbt()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        subroutine openbt (integer, intent(out) lundx,
                                                        integer, intent(in) mtyp 
                                                        )
                                                        +
                                                        + +

                                                        This subroutine overrides the placeholder subroutine of the same name within the NCEPLIBS-bufr distribution package.

                                                        +

                                                        Given the data category for a BUFR message, this subroutine opens the appropriate DX BUFR tables file to use in reading/decoding the message.

                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2012-12-07
                                                        +
                                                        Parameters
                                                        + + + +
                                                        mtyp- Data category of BUFR message
                                                        lundx- Fortran logical unit number for DX BUFR tables file to use in reading/decoding the message
                                                          +
                                                        • 0 = No such file is available
                                                        • +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2012-12-07
                                                        + +

                                                        Definition at line 383 of file debufr.F90.

                                                        + +

                                                        References share_table_info::ltbd, share_table_info::ludx, and share_table_info::tbldir_f.

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/debufr_8F90.js b/previous_versions/v12.1.0/debufr_8F90.js new file mode 100644 index 000000000..309c4b444 --- /dev/null +++ b/previous_versions/v12.1.0/debufr_8F90.js @@ -0,0 +1,8 @@ +var debufr_8F90 = +[ + [ "fdebufr_c", "debufr_8F90.html#abd70421a18d899bec6fbdade1262dd0b", null ], + [ "openbt", "debufr_8F90.html#a8dbba5dc66c2e09ccdd8065dda184f89", null ], + [ "ltbd", "debufr_8F90.html#a9cb558bc60eed8b777532f56fff8a08c", null ], + [ "ludx", "debufr_8F90.html#a88fbe3e8e14e3810e1dc3f1560d1c51f", null ], + [ "tbldir_f", "debufr_8F90.html#ad7e71b6c16362d8d65d97662bcdd7d02", null ] +]; \ No newline at end of file diff --git a/previous_versions/v12.1.0/debufr_8F90_source.html b/previous_versions/v12.1.0/debufr_8F90_source.html new file mode 100644 index 000000000..007974792 --- /dev/null +++ b/previous_versions/v12.1.0/debufr_8F90_source.html @@ -0,0 +1,475 @@ + + + + + + + +NCEPLIBS-bufr: debufr.F90 Source File + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        +
                                                        debufr.F90
                                                        +
                                                        +
                                                        +Go to the documentation of this file.
                                                        1 
                                                        +
                                                        5 
                                                        + +
                                                        12 
                                                        +
                                                        14  character(len=:), allocatable :: tbldir_f
                                                        +
                                                        15 
                                                        +
                                                        17  integer ltbd
                                                        +
                                                        18 
                                                        +
                                                        20  integer ludx
                                                        +
                                                        21 end module share_table_info
                                                        +
                                                        22 
                                                        +
                                                        54 subroutine fdebufr_c ( ofile, lenof, tbldir, lentd, tblfil, lentf, prmstg, lenps, basic, forcemt, cfms ) &
                                                        +
                                                        55  bind( c, name = 'fdebufr_f' )
                                                        +
                                                        56 
                                                        +
                                                        57  use iso_c_binding
                                                        +
                                                        58  use bufr_interface
                                                        + +
                                                        60 
                                                        +
                                                        61  implicit none
                                                        +
                                                        62 
                                                        +
                                                        63  integer, parameter :: mxbf = 2500000
                                                        +
                                                        64  integer, parameter :: mxbfd4 = mxbf/4
                                                        +
                                                        65  integer, parameter :: mxds3 = 500
                                                        +
                                                        66  integer, parameter :: mxprms = 20
                                                        +
                                                        67 
                                                        +
                                                        68  character(kind=c_char,len=1), intent(in) :: ofile(*), tbldir(*), tblfil(*), prmstg(*), basic, forcemt, cfms
                                                        +
                                                        69 
                                                        +
                                                        70  character(len=:), allocatable :: ofile_f, tblfil_f, prmstg_f
                                                        +
                                                        71 
                                                        +
                                                        72  integer(c_int), value, intent(in) :: lenof, lentd, lentf, lenps
                                                        +
                                                        73 
                                                        +
                                                        74  integer*4 :: isetprm, idxmsg, iupbs01, iupbs3, ireadsb
                                                        +
                                                        75  integer*4 :: nbyt, ierr
                                                        +
                                                        76 
                                                        +
                                                        77  logical exists
                                                        +
                                                        78 
                                                        +
                                                        79  character*120 cmorgc, cmgses, cmmtyp, cmmsbt, cmmsbti
                                                        +
                                                        80  character*20 ptag ( mxprms ), pvtag(2), cprmnm
                                                        +
                                                        81  character*8 cmgtag
                                                        +
                                                        82  character*6 cds3 ( mxds3 )
                                                        +
                                                        83  character opened, usemt, bfmg ( mxbf ), basic_f, forcemt_f, cfms_f
                                                        +
                                                        84 
                                                        +
                                                        85  integer ibfmg ( mxbfd4 ), lunit, nmsg, nsub, nsubt, ii, jj, nds3, nptag, npvtag, ipval, lcprmnm, ier, imgdt, ierme, &
                                                        +
                                                        86  iogce, lcmorgc, ierorgc, igses, lcmgses, iergses, iryr, irmo, irdy, irhr, irmi, irtret, &
                                                        +
                                                        87  mtyp, lcmmtyp, iermtyp, msbt, lcmmsbt, iermsbt, msbti, lcmmsbti, iermsbti, iersn
                                                        +
                                                        88 
                                                        +
                                                        89  equivalence( bfmg(1), ibfmg(1) )
                                                        +
                                                        90 
                                                        +
                                                        91  ! Initialize the values in the Share_Table_Info module.
                                                        +
                                                        92 
                                                        +
                                                        93  ludx = 93
                                                        +
                                                        94  ltbd = lentd
                                                        +
                                                        95  allocate( character(len=lentd) :: tbldir_f )
                                                        +
                                                        96  tbldir_f = transfer( tbldir(1:lentd), tbldir_f )
                                                        +
                                                        97 
                                                        +
                                                        98  ! Copy the other input C strings into Fortran strings.
                                                        +
                                                        99 
                                                        +
                                                        100  allocate( character(len=lenof) :: ofile_f )
                                                        +
                                                        101  ofile_f = transfer( ofile(1:lenof), ofile_f )
                                                        +
                                                        102  allocate( character(len=lentf) :: tblfil_f )
                                                        +
                                                        103  tblfil_f = transfer( tblfil(1:lentf), tblfil_f )
                                                        +
                                                        104  allocate( character(len=lenps) :: prmstg_f )
                                                        +
                                                        105  prmstg_f = transfer( prmstg(1:lenps), prmstg_f )
                                                        +
                                                        106  basic_f = transfer( basic(1:1), basic_f )
                                                        +
                                                        107  forcemt_f = transfer( forcemt(1:1), forcemt_f )
                                                        +
                                                        108  cfms_f = transfer( cfms(1:1), cfms_f )
                                                        +
                                                        109 
                                                        +
                                                        110  ! Open the output file.
                                                        +
                                                        111 
                                                        +
                                                        112  open ( unit = 51, file = ofile_f )
                                                        +
                                                        113 
                                                        +
                                                        114  ! Note that in the below open statement we just need to specify a dummy placeholder file.
                                                        +
                                                        115 
                                                        +
                                                        116  lunit = 92
                                                        +
                                                        117  open ( unit = lunit, file = '/dev/null' )
                                                        +
                                                        118 
                                                        +
                                                        119  call datelen ( 10 )
                                                        +
                                                        120 
                                                        +
                                                        121  ! Initialize some other values.
                                                        +
                                                        122 
                                                        +
                                                        123  nmsg = 0
                                                        +
                                                        124  nsubt = 0
                                                        +
                                                        125 
                                                        +
                                                        126  opened = 'N'
                                                        +
                                                        127  usemt = 'N'
                                                        +
                                                        128 
                                                        +
                                                        129  do while ( .true. )
                                                        +
                                                        130 
                                                        +
                                                        131  ! Get the next message from the input BUFR file.
                                                        +
                                                        132 
                                                        +
                                                        133  call crbmg_c ( bfmg, mxbf, nbyt, ierr )
                                                        +
                                                        134 
                                                        +
                                                        135  if ( ierr /= 0 ) then
                                                        +
                                                        136 
                                                        +
                                                        137  if ( ierr == -1 ) then
                                                        +
                                                        138  write ( 51, fmt = '( /, A, I7, A, I9, A )') 'Reached end of BUFR file; it contained a total of', nmsg, &
                                                        +
                                                        139  ' messages and', nsubt, ' subsets'
                                                        +
                                                        140  else
                                                        +
                                                        141  write ( 51, fmt = '( /, A, I4 )' ) 'Error while reading BUFR file; the return code from CRBMG = ', ierr
                                                        +
                                                        142  end if
                                                        +
                                                        143 
                                                        +
                                                        144  if ( ( basic_f == 'N' ) .and. ( opened == 'Y' ) ) then
                                                        +
                                                        145  write (51, fmt = '( /, A, / )' ) 'Here is the DX table that was generated:'
                                                        +
                                                        146  call dxdump ( lunit, 51 )
                                                        +
                                                        147  end if
                                                        +
                                                        148 
                                                        +
                                                        149  ! Close the output file, deallocate memory, and return.
                                                        +
                                                        150 
                                                        +
                                                        151  close ( 51 )
                                                        +
                                                        152  deallocate ( ofile_f )
                                                        +
                                                        153  deallocate ( tbldir_f )
                                                        +
                                                        154  deallocate ( tblfil_f )
                                                        +
                                                        155  deallocate ( prmstg_f )
                                                        +
                                                        156  return
                                                        +
                                                        157  end if
                                                        +
                                                        158 
                                                        +
                                                        159  if ( opened == 'N' ) then
                                                        +
                                                        160 
                                                        +
                                                        161  if ( ( isetprm( 'MAXCD', mxds3 ) /= 0 ) .or. ( isetprm( 'MXMSGL', mxbf ) /= 0 ) .or. &
                                                        +
                                                        162  ( isetprm( 'MAXSS', 300000 ) /= 0 ) .or. ( isetprm( 'NFILES', 2 ) /= 0 ) ) then
                                                        +
                                                        163  print *, 'Error: Bad return from isetprm'
                                                        +
                                                        164  return
                                                        +
                                                        165  end if
                                                        +
                                                        166 
                                                        +
                                                        167  ! Process any dynamic allocation parameters that were passed in on the command line.
                                                        +
                                                        168 
                                                        +
                                                        169  if ( prmstg_f(1:8) /= 'NULLPSTG' ) then
                                                        +
                                                        170  call parstr ( prmstg_f, ptag, mxprms, nptag, ',', .false. )
                                                        +
                                                        171  if ( nptag > 0 ) then
                                                        +
                                                        172  do ii = 1, nptag
                                                        +
                                                        173  call parstr ( ptag(ii), pvtag, 2, npvtag, '=', .false. )
                                                        +
                                                        174  if ( npvtag == 2 ) then
                                                        +
                                                        175  call strsuc ( pvtag(1), cprmnm, lcprmnm )
                                                        +
                                                        176  call strnum ( pvtag(2), ipval, iersn )
                                                        +
                                                        177  if ( ( lcprmnm > 0 ) .and. ( iersn /= -1 ) ) then
                                                        +
                                                        178  if ( isetprm( cprmnm(1:lcprmnm), ipval ) /= 0 ) then
                                                        +
                                                        179  print *, 'Error: Bad return from isetprm for parameter: ', cprmnm(1:lcprmnm)
                                                        +
                                                        180  return
                                                        +
                                                        181  end if
                                                        +
                                                        182  end if
                                                        +
                                                        183  end if
                                                        +
                                                        184  end do
                                                        +
                                                        185  end if
                                                        +
                                                        186  end if
                                                        +
                                                        187 
                                                        +
                                                        188  ! Decide how to process the file.
                                                        +
                                                        189 
                                                        +
                                                        190  if ( ( idxmsg( ibfmg ) == 1 ) .and. ( forcemt_f == 'N' ) ) then
                                                        +
                                                        191 
                                                        +
                                                        192  ! The first message in the file is a DX dictionary message, so assume there's an embedded table at the
                                                        +
                                                        193  ! front of the file, and use this table to decode it.
                                                        +
                                                        194 
                                                        +
                                                        195  call openbf ( lunit, 'INUL', lunit )
                                                        +
                                                        196  else if ( ( tblfil_f(1:8) /= 'NULLFILE' ) .and. ( forcemt_f == 'N' ) ) then
                                                        +
                                                        197 
                                                        +
                                                        198  ! A DX dictionary tables file was specified on the command line, so use it to decode the BUFR file.
                                                        +
                                                        199 
                                                        +
                                                        200  inquire ( file = tblfil_f, exist = exists )
                                                        +
                                                        201  if ( .not. exists ) then
                                                        +
                                                        202  print *, 'Error: Could not find file ', tblfil_f
                                                        +
                                                        203  return
                                                        +
                                                        204  end if
                                                        +
                                                        205  open ( unit = 91, file = tblfil_f, iostat = ier )
                                                        +
                                                        206  if ( ier /= 0 ) then
                                                        +
                                                        207  print *, 'Error: Could not open file ', tblfil_f
                                                        +
                                                        208  return
                                                        +
                                                        209  endif
                                                        +
                                                        210  call openbf ( lunit, 'IN', 91 )
                                                        +
                                                        211  else
                                                        +
                                                        212 
                                                        +
                                                        213  ! Decode the file using the master tables in tbldir_f.
                                                        +
                                                        214 
                                                        +
                                                        215  usemt = 'Y'
                                                        +
                                                        216  call openbf ( lunit, 'SEC3', lunit )
                                                        +
                                                        217  end if
                                                        +
                                                        218 
                                                        +
                                                        219  opened = 'Y'
                                                        +
                                                        220 
                                                        +
                                                        221  call mtinfo ( tbldir_f, 90, 91 )
                                                        +
                                                        222  if ( cfms_f == 'Y' ) call codflg ( 'Y' )
                                                        +
                                                        223  end if
                                                        +
                                                        224 
                                                        +
                                                        225  if ( basic_f == 'N' ) then
                                                        +
                                                        226 
                                                        +
                                                        227  ! Pass the message to the decoder.
                                                        +
                                                        228 
                                                        +
                                                        229  call readerme ( ibfmg, lunit, cmgtag, imgdt, ierme )
                                                        +
                                                        230  end if
                                                        +
                                                        231 
                                                        +
                                                        232  ! If this is a DX dictionary message, then don't generate any output unless master tables are being used for decoding.
                                                        +
                                                        233 
                                                        +
                                                        234  if ( ( idxmsg( ibfmg ) /= 1 ) .or. ( usemt == 'Y' ) ) then
                                                        +
                                                        235 
                                                        +
                                                        236  nmsg = nmsg + 1
                                                        +
                                                        237 
                                                        +
                                                        238  write ( 51, fmt = '( /, A, I7 )' ) 'Found BUFR message #', nmsg
                                                        +
                                                        239 
                                                        +
                                                        240  ! Decode and output the data from Section 0.
                                                        +
                                                        241 
                                                        +
                                                        242  write ( 51, fmt= '( /, A, I9 )' ) ' Message length: ', iupbs01( ibfmg, 'LENM' )
                                                        +
                                                        243  write ( 51, fmt= '( A, I4 )' ) ' Section 0 length: ', iupbs01( ibfmg, 'LEN0' )
                                                        +
                                                        244  write ( 51, fmt= '( A, I4 )' ) ' BUFR edition: ', iupbs01( ibfmg, 'BEN' )
                                                        +
                                                        245 
                                                        +
                                                        246  ! Decode and output the data from Section 1.
                                                        +
                                                        247 
                                                        +
                                                        248  write ( 51, fmt= '( /, A, I4 )' ) ' Section 1 length: ', iupbs01( ibfmg, 'LEN1' )
                                                        +
                                                        249  write ( 51, fmt= '( A, I4 )' ) ' Master table: ', iupbs01( ibfmg, 'BMT' )
                                                        +
                                                        250 
                                                        +
                                                        251  iogce = iupbs01( ibfmg, 'OGCE' )
                                                        +
                                                        252  igses = iupbs01( ibfmg, 'GSES' )
                                                        +
                                                        253  if ( ( basic_f == 'Y' ) .or. ( cfms_f == 'N' ) ) then
                                                        +
                                                        254  write ( 51, fmt= '( A, I5 )' ) ' Originating center: ', iogce
                                                        +
                                                        255  write ( 51, fmt= '( A, I4 )' ) ' Originating subcenter: ', igses
                                                        +
                                                        256  else
                                                        +
                                                        257  call getcfmng ( lunit, 'ORIGC', iogce, ' ', -1, cmorgc, lcmorgc, ierorgc )
                                                        +
                                                        258  if ( ierorgc == 0 ) then
                                                        +
                                                        259  write ( 51, fmt= '( A, I5, 3A )' ) ' Originating center: ', iogce, ' (= ', cmorgc(1:lcmorgc), ')'
                                                        +
                                                        260  else
                                                        +
                                                        261  write ( 51, fmt= '( A, I5 )' ) ' Originating center: ', iogce
                                                        +
                                                        262  end if
                                                        +
                                                        263  call getcfmng ( lunit, 'GSES', igses, 'ORIGC', iogce, cmgses, lcmgses, iergses )
                                                        +
                                                        264  if ( iergses == 0 ) then
                                                        +
                                                        265  write ( 51, fmt= '( A, I4, 3A )' ) ' Originating subcenter: ', igses, ' (= ', cmgses(1:lcmgses), ')'
                                                        +
                                                        266  else
                                                        +
                                                        267  write ( 51, fmt= '( A, I4 )' ) ' Originating subcenter: ', igses
                                                        +
                                                        268  end if
                                                        +
                                                        269  end if
                                                        +
                                                        270 
                                                        +
                                                        271  write ( 51, fmt= '( A, I4 )' ) ' Update sequence numbr: ', iupbs01( ibfmg, 'USN' )
                                                        +
                                                        272 
                                                        +
                                                        273  if ( iupbs01( ibfmg, 'ISC2' ) == 1 ) then
                                                        +
                                                        274  write ( 51, fmt = '( A )') ' Section 2 present?: Yes'
                                                        +
                                                        275  else
                                                        +
                                                        276  write ( 51, fmt = '( A )') ' Section 2 present?: No'
                                                        +
                                                        277  end if
                                                        +
                                                        278 
                                                        +
                                                        279  mtyp = iupbs01( ibfmg, 'MTYP' )
                                                        +
                                                        280  msbt = iupbs01( ibfmg, 'MSBT' )
                                                        +
                                                        281  msbti = iupbs01( ibfmg, 'MSBTI' )
                                                        +
                                                        282  if ( ( basic_f == 'Y' ) .or. ( cfms_f == 'N' ) ) then
                                                        +
                                                        283  write ( 51, fmt= '( A, I4 )' ) ' Data category: ', mtyp
                                                        +
                                                        284  write ( 51, fmt= '( A, I4 )' ) ' Local subcategory: ', msbt
                                                        +
                                                        285  write ( 51, fmt= '( A, I4 )' ) ' Internatl subcategory: ', msbti
                                                        +
                                                        286  else
                                                        +
                                                        287  call getcfmng ( lunit, 'TABLAT', mtyp, ' ', -1, cmmtyp, lcmmtyp, iermtyp )
                                                        +
                                                        288  if ( iermtyp == 0 ) then
                                                        +
                                                        289  write ( 51, fmt= '( A, I4, 3A )' ) ' Data category: ', mtyp, ' (= ', cmmtyp(1:lcmmtyp), ')'
                                                        +
                                                        290  else
                                                        +
                                                        291  write ( 51, fmt= '( A, I4 )' ) ' Data category: ', mtyp
                                                        +
                                                        292  end if
                                                        +
                                                        293  call getcfmng ( lunit, 'TABLASL', msbt, 'TABLAT', mtyp, cmmsbt, lcmmsbt, iermsbt )
                                                        +
                                                        294  if ( ( iermsbt == 0 ) .and. ( iogce == 7 ) ) then
                                                        +
                                                        295  write ( 51, fmt= '( A, I4, 3A )' ) ' Local subcategory: ', msbt, ' (= ', cmmsbt(1:lcmmsbt), ')'
                                                        +
                                                        296  else
                                                        +
                                                        297  write ( 51, fmt= '( A, I4 )' ) ' Local subcategory: ', msbt
                                                        +
                                                        298  end if
                                                        +
                                                        299  call getcfmng ( lunit, 'TABLASS', msbti, 'TABLAT', mtyp, cmmsbti, lcmmsbti, iermsbti )
                                                        +
                                                        300  if ( iermsbti == 0 ) then
                                                        +
                                                        301  write ( 51, fmt= '( A, I4, 3A )' ) ' Internatl subcategory: ', msbti, ' (= ', cmmsbti(1:lcmmsbti), ')'
                                                        +
                                                        302  else
                                                        +
                                                        303  write ( 51, fmt= '( A, I4 )' ) ' Internatl subcategory: ', msbti
                                                        +
                                                        304  end if
                                                        +
                                                        305  end if
                                                        +
                                                        306 
                                                        +
                                                        307  write ( 51, fmt= '( A, I4 )' ) ' Master table version: ', iupbs01( ibfmg, 'MTV' )
                                                        +
                                                        308  write ( 51, fmt= '( A, I4 )' ) ' Local table version: ', iupbs01( ibfmg, 'MTVL' )
                                                        +
                                                        309  write ( 51, fmt= '( A, I4 )' ) ' Year: ', iupbs01( ibfmg, 'YEAR' )
                                                        +
                                                        310  write ( 51, fmt= '( A, I4 )' ) ' Month: ', iupbs01( ibfmg, 'MNTH' )
                                                        +
                                                        311  write ( 51, fmt= '( A, I4 )' ) ' Day: ', iupbs01( ibfmg, 'DAYS' )
                                                        +
                                                        312  write ( 51, fmt= '( A, I4 )' ) ' Hour: ', iupbs01( ibfmg, 'HOUR' )
                                                        +
                                                        313  write ( 51, fmt= '( A, I4 )' ) ' Minute: ', iupbs01( ibfmg, 'MINU' )
                                                        +
                                                        314  write ( 51, fmt= '( A, I4 )' ) ' Second: ', iupbs01( ibfmg, 'SECO' )
                                                        +
                                                        315  if ( ( iogce == 7 ) .and. ( igses == 3 ) ) then
                                                        +
                                                        316  call rtrcptb ( ibfmg, iryr, irmo, irdy, irhr, irmi, irtret )
                                                        +
                                                        317  if ( irtret == 0 ) then
                                                        +
                                                        318  write ( 51, fmt= '( A, I4 )' ) ' NCEP tank rcpt year: ', iryr
                                                        +
                                                        319  write ( 51, fmt= '( A, I4 )' ) ' NCEP tank rcpt month: ', irmo
                                                        +
                                                        320  write ( 51, fmt= '( A, I4 )' ) ' NCEP tank rcpt day: ', irdy
                                                        +
                                                        321  write ( 51, fmt= '( A, I4 )' ) ' NCEP tank rcpt hour: ', irhr
                                                        +
                                                        322  write ( 51, fmt= '( A, I4 )' ) ' NCEP tank rcpt minute: ', irmi
                                                        +
                                                        323  end if
                                                        +
                                                        324  end if
                                                        +
                                                        325 
                                                        +
                                                        326  ! Decode and output the data from Section 3.
                                                        +
                                                        327 
                                                        +
                                                        328  nsub = iupbs3( ibfmg, 'NSUB' )
                                                        +
                                                        329  write ( 51, fmt= '( /, A, I4 )' ) ' Number of data subsets: ', nsub
                                                        +
                                                        330  nsubt = nsubt + nsub
                                                        +
                                                        331 
                                                        +
                                                        332  if ( iupbs3( ibfmg, 'IOBS' ) == 1 ) then
                                                        +
                                                        333  write ( 51, fmt = '( A )') ' Data are observed?: Yes'
                                                        +
                                                        334  else
                                                        +
                                                        335  write ( 51, fmt = '( A )') ' Data are observed?: No'
                                                        +
                                                        336  end if
                                                        +
                                                        337 
                                                        +
                                                        338  if ( iupbs3( ibfmg, 'ICMP' ) == 1 ) then
                                                        +
                                                        339  write ( 51, fmt = '( A )') ' Data are compressed?: Yes'
                                                        +
                                                        340  else
                                                        +
                                                        341  write ( 51, fmt = '( A )') ' Data are compressed?: No'
                                                        +
                                                        342  end if
                                                        +
                                                        343 
                                                        +
                                                        344  call upds3 ( ibfmg, mxds3, cds3, nds3 )
                                                        +
                                                        345  write ( 51, fmt= '( A, I5 )' ) ' Number of descriptors: ', nds3
                                                        +
                                                        346  do jj = 1, nds3
                                                        +
                                                        347  write ( 51, fmt = '( 5X, I4, A, A6)' ) jj, ": ", cds3( jj )
                                                        +
                                                        348  end do
                                                        +
                                                        349 
                                                        +
                                                        350  if ( ( basic_f == 'N' ) .and. ( ierme >= 0 ) ) then
                                                        +
                                                        351 
                                                        +
                                                        352  ! Decode and output the data from Section 4.
                                                        +
                                                        353 
                                                        +
                                                        354  write ( 51, fmt = '( /, A, I7, 3A, I10, A, I6, A )' ) &
                                                        +
                                                        355  'BUFR message #', nmsg, ' of type ', cmgtag, ' and date ', imgdt, ' contains ', nsub, ' subsets:'
                                                        +
                                                        356  do while ( ireadsb( lunit ) == 0 )
                                                        +
                                                        357  call ufdump ( lunit, 51 )
                                                        +
                                                        358  end do
                                                        +
                                                        359  end if
                                                        +
                                                        360 
                                                        +
                                                        361  write ( 51, fmt = '( /, A, I7 )' ) 'End of BUFR message #', nmsg
                                                        +
                                                        362  write ( 51, fmt = '( /, 120("-"))' )
                                                        +
                                                        363  end if
                                                        +
                                                        364 
                                                        +
                                                        365  end do
                                                        +
                                                        366 
                                                        +
                                                        367  return
                                                        +
                                                        368 end subroutine fdebufr_c
                                                        +
                                                        369 
                                                        +
                                                        383 subroutine openbt ( lundx, mtyp )
                                                        +
                                                        384 
                                                        +
                                                        385  use share_table_info
                                                        +
                                                        386 
                                                        +
                                                        387  implicit none
                                                        +
                                                        388 
                                                        +
                                                        389  character*11 bftab
                                                        +
                                                        390  character*275 bftabfil
                                                        +
                                                        391 
                                                        +
                                                        392  integer, intent(in) :: mtyp
                                                        +
                                                        393  integer, intent(out) :: lundx
                                                        +
                                                        394 
                                                        +
                                                        395  logical exists
                                                        +
                                                        396 
                                                        +
                                                        397  write ( bftab, '("bufrtab.",i3.3)' ) mtyp
                                                        +
                                                        398  bftabfil = tbldir_f(1:ltbd) // '/' // bftab
                                                        +
                                                        399 
                                                        +
                                                        400  inquire ( file = bftabfil, exist = exists )
                                                        +
                                                        401  if ( exists ) then
                                                        +
                                                        402  lundx = ludx
                                                        +
                                                        403  close ( lundx )
                                                        +
                                                        404  open ( unit = lundx, file = bftabfil )
                                                        +
                                                        405  else
                                                        +
                                                        406  lundx = 0
                                                        +
                                                        407  end if
                                                        +
                                                        408 
                                                        +
                                                        409  return
                                                        +
                                                        410 end subroutine openbt
                                                        +
                                                        recursive subroutine getcfmng(lunit, nemoi, ivali, nemod, ivald, cmeang, lnmng, iret)
                                                        Decode the meaning of a numerical value from a code or flag table.
                                                        Definition: cftbvs.F90:220
                                                        +
                                                        subroutine fdebufr_c(ofile, lenof, tbldir, lentd, tblfil, lentf, prmstg, lenps, basic, forcemt, cfms)
                                                        This subroutine reads, decodes, and generates a verbose output listing of the contents of every BUFR ...
                                                        Definition: debufr.F90:56
                                                        +
                                                        recursive subroutine ufdump(lunit, luprt)
                                                        Print a verbose listing of the contents of a data subset, including all data values and replicated se...
                                                        Definition: dumpdata.F90:228
                                                        +
                                                        recursive subroutine dxdump(lunit, ldxot)
                                                        Print a copy of the DX BUFR table associated with a specified Fortran logical unit.
                                                        Definition: dumpdata.F90:580
                                                        + +
                                                        subroutine codflg(cf)
                                                        Specify whether or not code and flag table information should be included during all future reads of ...
                                                        +
                                                        recursive subroutine mtinfo(cmtdir, lunmt1, lunmt2)
                                                        Specify the directory location and Fortran logical unit numbers to be used when reading master BUFR t...
                                                        Definition: mastertable.F90:35
                                                        +
                                                        recursive subroutine strnum(str, num, iret)
                                                        Decode an integer from a character string.
                                                        Definition: misc.F90:177
                                                        +
                                                        subroutine strsuc(str1, str2, lens)
                                                        Remove leading and trailing blanks from a character string.
                                                        Definition: misc.F90:220
                                                        +
                                                        Wrap C NCEPLIBS-bufr functions so they can be called from within Fortran application programs.
                                                        +
                                                        This module is used within the debufr utility to share information between subroutine fdebufr_c() and...
                                                        Definition: debufr.F90:11
                                                        +
                                                        integer ludx
                                                        Fortran logical unit number to use for referencing a DX table.
                                                        Definition: debufr.F90:20
                                                        +
                                                        integer ltbd
                                                        Length (in characters) of tbldir_f.
                                                        Definition: debufr.F90:17
                                                        +
                                                        character(len=:), allocatable tbldir_f
                                                        Directory containing DX BUFR tables to be used for decoding.
                                                        Definition: debufr.F90:14
                                                        +
                                                        recursive subroutine openbt(lundx, mtyp)
                                                        Specify a DX BUFR table of last resort, in case subroutine cktaba() is unable to locate a DX BUFR tab...
                                                        Definition: openbt.F90:31
                                                        +
                                                        recursive subroutine openbf(lunit, io, lundx)
                                                        Connect a new file to the NCEPLIBS-bufr software for input or output operations, or initialize the li...
                                                        +
                                                        recursive subroutine readerme(mesg, lunit, subset, jdate, iret)
                                                        Read a BUFR message from a memory array.
                                                        +
                                                        recursive subroutine upds3(mbay, lcds3, cds3, nds3)
                                                        Read the sequence of data descriptors contained within Section 3 of a BUFR message.
                                                        Definition: s013vals.F90:829
                                                        +
                                                        recursive subroutine datelen(len)
                                                        Specify the format of Section 1 date-time values that will be output by future calls to any of the NC...
                                                        Definition: s013vals.F90:889
                                                        +
                                                        subroutine parstr(str, tags, mtag, ntag, sep, limit80)
                                                        Parse a string containing one or more substrings into an array of substrings.
                                                        Definition: strings.F90:473
                                                        +
                                                        recursive subroutine rtrcptb(mbay, iyr, imo, idy, ihr, imi, iret)
                                                        Read the tank receipt time (if one exists) from Section 1 of a BUFR message.
                                                        Definition: tankrcpt.F90:114
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/debufr_8c.html b/previous_versions/v12.1.0/debufr_8c.html new file mode 100644 index 000000000..ab5a1c613 --- /dev/null +++ b/previous_versions/v12.1.0/debufr_8c.html @@ -0,0 +1,372 @@ + + + + + + + +NCEPLIBS-bufr: debufr.c File Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        debufr.c File Reference
                                                        +
                                                        +
                                                        + +

                                                        C language code for debufr utility. +More...

                                                        +
                                                        #include <ctype.h>
                                                        +#include <string.h>
                                                        +#include <stdio.h>
                                                        +#include <libgen.h>
                                                        +#include <unistd.h>
                                                        +#include <stdlib.h>
                                                        +#include "bufr_interface.h"
                                                        +
                                                        +

                                                        Go to the source code of this file.

                                                        + + + + + + + + + + + +

                                                        +Functions

                                                        void fdebufr_f (char *ofile, int lenof, char *tbldir, int lentd, char *tblfil, int lentf, char *prmstg, int lenps, char *basic, char *forcemt, char *cfms)
                                                         Read, decode, and print a verbose output listing of the contents of a BUFR file. More...
                                                         
                                                        int main (int argc, char *argv[])
                                                         This program decodes a BUFR file and generates a verbose listing of the contents. More...
                                                         
                                                        void prtusage (char *prgnam)
                                                         This function prints program usage information to standard output. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        C language code for debufr utility.

                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2009-07-01
                                                        + +

                                                        Definition in file debufr.c.

                                                        +

                                                        Function Documentation

                                                        + +

                                                        ◆ fdebufr_f()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        void fdebufr_f (char * ofile,
                                                        int lenof,
                                                        char * tbldir,
                                                        int lentd,
                                                        char * tblfil,
                                                        int lentf,
                                                        char * prmstg,
                                                        int lenps,
                                                        char * basic,
                                                        char * forcemt,
                                                        char * cfms 
                                                        )
                                                        +
                                                        + +

                                                        Read, decode, and print a verbose output listing of the contents of a BUFR file.

                                                        +

                                                        All arguments are input.

                                                        +
                                                        Parameters
                                                        + + + + + + + + + + + + +
                                                        ofile- File to contain verbose output listing
                                                        lenof- Length of ofile string
                                                        tbldir- Directory containing DX and/or master BUFR tables for decoding
                                                        lentd- Length of tbldir string
                                                        tblfil- File containing DX BUFR table information for decoding
                                                        lentf- Length of tblfil string
                                                        prmstg- String of up to 20 comma-separated PARAMETER=VALUE pairs to be used for dynamically allocating memory withint the NCEPLIBS-bufr
                                                        lenps- Length of prmstg string
                                                        basic- Indicates whether to only decode and print the contents of Sections 0-3
                                                        forcemt- Indicates whether to ignore embedded DX BUFR tables and force the use of master BUFR tables for decoding
                                                        cfms- Indicates whether code and flag table meanings should be read from master BUFR tables and included in the output
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2009-07-01
                                                        + +

                                                        Referenced by main().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ main()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        int main (int argc,
                                                        char * argv[] 
                                                        )
                                                        +
                                                        + +

                                                        This program decodes a BUFR file and generates a verbose listing of the contents.

                                                        +

                                                        If a DX BUFR Tables file is specified (using the -f option) or if the specified BUFR file contains an embedded DX BUFR tables message as the first message in the file, then this information is used to decode the data messages in the file. Otherwise, or whenever the -m option is specified, master BUFR tables are read and used to decode the data messages in the file.

                                                        +

                                                        Usage
                                                        +

                                                        +
                                                        +  debufr [-v] [-h] [-b] [-c] [-m] [-o outfile] [-t tabledir] [-f tablefil] [-p prmstg] bufrfile
                                                        +
                                                        +    where:
                                                        +      -v        prints version information and exits
                                                        +
                                                        +      -h        prints program help and usage information and exits
                                                        +
                                                        +      -b        specifies the "basic" option, meaning that only the
                                                        +                information in Sections 0-3 will be decoded from each
                                                        +                BUFR message in the bufrfile, and no attempt will be
                                                        +                made to decode the data in Section 4
                                                        +
                                                        +      -c        specifies that code and flag table meanings should not
                                                        +                be read from master BUFR tables and included in the
                                                        +                output; otherwise this feature is enabled by default
                                                        +
                                                        +      -m        specifies that master BUFR tables will be used to
                                                        +                decode the data messages in the file, regardless of
                                                        +                whether it contains any embedded DX BUFR table
                                                        +                messages.  This option can be used to view the actual
                                                        +                contents of DX BUFR table messages, which otherwise
                                                        +                would not be printed in the output listing.
                                                        +
                                                        +      outfile   [path/]name of file to contain verbose output listing.
                                                        +                The default is "bufrfilename.debufr.out" in the current
                                                        +                working directory, where bufrfilename is the basename of
                                                        +                the bufrfile (i.e. bufrfile with any preceding [path/]
                                                        +                removed).
                                                        +
                                                        +      tabledir  [path/]name of directory containing tables to be used
                                                        +                for decoding.  This directory contains the DX BUFR
                                                        +                tables file to be used (if one was specified
                                                        +                via the -f option), or it may contain all of the master
                                                        +                BUFR tables when these are being used to decode a
                                                        +                file.  If unspecified, the default directory location is
                                                        +                the defined value of the MASTER_TABLE_DIR macro when the
                                                        +                utility was built.
                                                        +
                                                        +      tablefil  file within tabledir containing DX BUFR tables
                                                        +                to be used for decoding.
                                                        +
                                                        +      prmstg    string of comma-separated PARAMETER=VALUE pairs, up to a
                                                        +                maximum of 20.  For each pair, the dynamic allocation
                                                        +                PARAMETER will be set to VALUE within the underlying
                                                        +                NCEPLIBS-bufr software, overriding the default value that
                                                        +                would otherwise be used.  A complete list of parameters
                                                        +                that can be dynamically sized is included within the
                                                        +                documentation for NCEPLIBS-bufr function isetprm().
                                                        +
                                                        +      bufrfile  [path/]name of BUFR file to be decoded
                                                        +
                                                        Remarks
                                                          +
                                                        • Fortran logical unit numbers 51, 90, 91, 92 and 93 are reserved for use within this program.
                                                        • +
                                                        +
                                                        +
                                                        Parameters
                                                        + + + +
                                                        argc- argument count.
                                                        argv- argument array.
                                                        +
                                                        +
                                                        +
                                                        Returns
                                                        0 for successs, error code otherwise.
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2009-07-01
                                                        + +

                                                        Definition at line 167 of file debufr.c.

                                                        + +

                                                        References bvers_f(), ccbfl(), cobfl(), fdebufr_f(), prtusage(), and VERS_STR_LEN.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ prtusage()

                                                        + +
                                                        +
                                                        + + + + + + + + +
                                                        void prtusage (char * prgnam)
                                                        +
                                                        + +

                                                        This function prints program usage information to standard output.

                                                        +
                                                        Parameters
                                                        + + +
                                                        prgnam- [path/]name of program executable.
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2009-07-01
                                                        + +

                                                        Definition at line 48 of file debufr.c.

                                                        + +

                                                        Referenced by main().

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/debufr_8c.js b/previous_versions/v12.1.0/debufr_8c.js new file mode 100644 index 000000000..acdc65c3a --- /dev/null +++ b/previous_versions/v12.1.0/debufr_8c.js @@ -0,0 +1,6 @@ +var debufr_8c = +[ + [ "fdebufr_f", "debufr_8c.html#a834922eb8174316cd235a552c2456279", null ], + [ "main", "debufr_8c.html#a0ddf1224851353fc92bfbff6f499fa97", null ], + [ "prtusage", "debufr_8c.html#a54cbb8b652032605c043b18a134cd85d", null ] +]; \ No newline at end of file diff --git a/previous_versions/v12.1.0/debufr_8c_source.html b/previous_versions/v12.1.0/debufr_8c_source.html new file mode 100644 index 000000000..8419f6ad1 --- /dev/null +++ b/previous_versions/v12.1.0/debufr_8c_source.html @@ -0,0 +1,358 @@ + + + + + + + +NCEPLIBS-bufr: debufr.c Source File + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        +
                                                        debufr.c
                                                        +
                                                        +
                                                        +Go to the documentation of this file.
                                                        1 
                                                        +
                                                        7 #include <ctype.h>
                                                        +
                                                        8 #include <string.h>
                                                        +
                                                        9 #include <stdio.h>
                                                        +
                                                        10 #include <libgen.h>
                                                        +
                                                        11 #include <unistd.h>
                                                        +
                                                        12 #include <stdlib.h>
                                                        +
                                                        13 
                                                        +
                                                        14 #include "bufr_interface.h"
                                                        +
                                                        15 
                                                        +
                                                        38 void fdebufr_f( char *ofile, int lenof, char *tbldir, int lentd, char *tblfil, int lentf, char *prmstg, int lenps,
                                                        +
                                                        39  char *basic, char *forcemt, char *cfms );
                                                        +
                                                        40 
                                                        +
                                                        48 void prtusage( char *prgnam ) {
                                                        +
                                                        49  printf( "\nUSAGE:\n" );
                                                        +
                                                        50  printf( " %s [-v] [-h] [-b] [-c] [-m] [-o outfile] [-t tabledir] [-f tablefil] [-p prmstg] bufrfile\n\n", prgnam );
                                                        +
                                                        51  printf( "\nWHERE:\n" );
                                                        +
                                                        52  printf( " -v prints program version information and exits\n\n" );
                                                        +
                                                        53  printf( " -h prints program help and usage information and exits\n\n" );
                                                        +
                                                        54  printf( " -b specifies the \"basic\" option, meaning that only the\n" );
                                                        +
                                                        55  printf( " information in Sections 0-3 will be decoded from each\n" );
                                                        +
                                                        56  printf( " BUFR message in the bufrfile, and no attempt will be\n" );
                                                        +
                                                        57  printf( " made to decode the data in Section 4\n\n" );
                                                        +
                                                        58  printf( " -c specifies that code and flag table meanings should not\n" );
                                                        +
                                                        59  printf( " be read from master BUFR tables and included in the output;\n" );
                                                        +
                                                        60  printf( " otherwise this feature is enabled by default\n\n" );
                                                        +
                                                        61  printf( " -m specifies that master BUFR tables will be used to\n" );
                                                        +
                                                        62  printf( " decode the data messages in the file, regardless of\n" );
                                                        +
                                                        63  printf( " whether it contains any embedded DX BUFR table messages.\n" );
                                                        +
                                                        64  printf( " This option can be used to view the actual contents of\n" );
                                                        +
                                                        65  printf( " DX BUFR table messages, which otherwise would not be\n" );
                                                        +
                                                        66  printf( " printed in the output listing.\n\n" );
                                                        +
                                                        67  printf( " outfile [path/]name of file to contain verbose output listing.\n" );
                                                        +
                                                        68  printf( " The default is \"bufrfilename.debufr.out\" in the current\n" );
                                                        +
                                                        69  printf( " working directory, where bufrfilename is the basename of\n" );
                                                        +
                                                        70  printf( " the bufrfile (i.e. bufrfile with any preceding [path/]\n" );
                                                        +
                                                        71  printf( " removed).\n\n" );
                                                        +
                                                        72  printf( " tabledir [path/]name of directory containing tables to be used\n" );
                                                        +
                                                        73  printf( " for decoding. This directory contains the DX BUFR tables\n" );
                                                        +
                                                        74  printf( " file to be used (if one was specified via the -f option),\n" );
                                                        +
                                                        75  printf( " or it may contain all of the master BUFR tables when these\n" );
                                                        +
                                                        76  printf( " are being used to decode a file. If unspecified, the\n" );
                                                        +
                                                        77  printf( " default directory location is\n" );
                                                        +
                                                        78  printf( " \"/home/runner/work/NCEPLIBS-bufr/NCEPLIBS-bufr/bufr/build-docs/install/tables\"\n\n" );
                                                        +
                                                        79  printf( " tablefil file within tabledir containing DX BUFR tables to be used\n" );
                                                        +
                                                        80  printf( " for decoding.\n\n" );
                                                        +
                                                        81  printf( " prmstg string of comma-separated PARAMETER=VALUE pairs, up to a\n" );
                                                        +
                                                        82  printf( " maximum of 20. For each pair, the dynamic allocation\n" );
                                                        +
                                                        83  printf( " PARAMETER will be set to VALUE within the underlying\n" );
                                                        +
                                                        84  printf( " NCEPLIBS-bufr software, overriding the default value that would\n" );
                                                        +
                                                        85  printf( " otherwise be used. A complete list of parameters that can\n" );
                                                        +
                                                        86  printf( " be dynamically sized is included within the documentation\n" );
                                                        +
                                                        87  printf( " for NCEPLIBS-bufr function isetprm.\n\n" );
                                                        +
                                                        88  printf( " bufrfile [path/]name of BUFR file to be decoded\n\n" );
                                                        +
                                                        89 }
                                                        +
                                                        90 
                                                        +
                                                        167 int main( int argc, char *argv[ ] ) {
                                                        +
                                                        168 
                                                        +
                                                        169  int ch;
                                                        +
                                                        170  int iret;
                                                        +
                                                        171  int lenof, lentd, lentf, lenps;
                                                        +
                                                        172 
                                                        +
                                                        173  char basic = 'N';
                                                        +
                                                        174  char forcemt = 'N';
                                                        +
                                                        175  char cfms = 'Y';
                                                        +
                                                        176  char io = 'r';
                                                        +
                                                        177  char tbldir_default[240] =
                                                        +
                                                        178  "/home/runner/work/NCEPLIBS-bufr/NCEPLIBS-bufr/bufr/build-doc"
                                                        +
                                                        179  "s/install/tables";
                                                        +
                                                        180  char bvstr[VERS_STR_LEN+1];
                                                        +
                                                        181 
                                                        +
                                                        182  char *ofile = NULL;
                                                        +
                                                        183  char *tbldir = NULL;
                                                        +
                                                        184  char *tblfil = NULL;
                                                        +
                                                        185  char *prmstg = NULL;
                                                        +
                                                        186  char *wkstr = NULL;
                                                        +
                                                        187 
                                                        +
                                                        188  char *bcopy, *bname, *dcopy, *dname;
                                                        +
                                                        189 
                                                        +
                                                        190  /*
                                                        +
                                                        191  ** Get and process the valid options from the command line:
                                                        +
                                                        192  */
                                                        +
                                                        193  while ( ( ch = getopt ( argc, argv, "vhbcmo:t:f:p:" ) ) != EOF ) {
                                                        +
                                                        194  switch ( ch ) {
                                                        +
                                                        195  case 'v':
                                                        +
                                                        196  bvers_f( bvstr, VERS_STR_LEN+1 );
                                                        +
                                                        197  printf( "This is the debufr utility, built with NCEPLIBS-bufr v%s\n", bvstr );
                                                        +
                                                        198  return 0;
                                                        +
                                                        199  case 'h':
                                                        +
                                                        200  printf( "\nPROGRAM %s\n", argv[0] );
                                                        +
                                                        201  printf( "\nABSTRACT: This program decodes a BUFR file and generates a verbose\n" );
                                                        +
                                                        202  printf( " listing of the contents. If a DX BUFR tables file is specified\n" );
                                                        +
                                                        203  printf( " (using the -f option) or if the specified BUFR file contains an\n" );
                                                        +
                                                        204  printf( " embedded DX BUFR tables message as the first message in the file,\n" );
                                                        +
                                                        205  printf( " then this DX BUFR tables information is used to decode the data\n" );
                                                        +
                                                        206  printf( " messages in the file. Otherwise, or whenever the -m option is\n" );
                                                        +
                                                        207  printf( " specified, master BUFR tables are read and used to decode the\n" );
                                                        +
                                                        208  printf( " data messages in the file.\n" );
                                                        +
                                                        209  prtusage( argv[0] );
                                                        +
                                                        210  return 0;
                                                        +
                                                        211  break;
                                                        +
                                                        212  case 'b':
                                                        +
                                                        213  basic = 'Y';
                                                        +
                                                        214  break;
                                                        +
                                                        215  case 'm':
                                                        +
                                                        216  forcemt = 'Y';
                                                        +
                                                        217  break;
                                                        +
                                                        218  case 'c':
                                                        +
                                                        219  cfms = 'N';
                                                        +
                                                        220  break;
                                                        +
                                                        221  case 'o':
                                                        +
                                                        222  if ( ( ofile = malloc( strlen( optarg ) + 1 ) ) == NULL ) {
                                                        +
                                                        223  printf( "\nERROR: Could not allocate memory for output file name!\n" );
                                                        +
                                                        224  return -1;
                                                        +
                                                        225  }
                                                        +
                                                        226  strcpy ( ofile, optarg );
                                                        +
                                                        227  break;
                                                        +
                                                        228  case 't':
                                                        +
                                                        229  if ( ( tbldir = malloc( strlen( optarg ) + 1 ) ) == NULL ) {
                                                        +
                                                        230  printf( "\nERROR: Could not allocate memory for tables directory!\n" );
                                                        +
                                                        231  return -1;
                                                        +
                                                        232  }
                                                        +
                                                        233  strcpy ( tbldir, optarg );
                                                        +
                                                        234  break;
                                                        +
                                                        235  case 'f':
                                                        +
                                                        236  if ( ( wkstr = malloc( strlen( optarg ) + 1 ) ) == NULL ) {
                                                        +
                                                        237  printf( "\nERROR: Could not allocate memory for DX BUFR tables file!\n" );
                                                        +
                                                        238  return -1;
                                                        +
                                                        239  }
                                                        +
                                                        240  strcpy ( wkstr, optarg );
                                                        +
                                                        241  break;
                                                        +
                                                        242  case 'p':
                                                        +
                                                        243  if ( ( prmstg = malloc( strlen( optarg ) + 1 ) ) == NULL ) {
                                                        +
                                                        244  printf( "\nERROR: Could not allocate memory for PARAMETER(S)=VALUE(S) string!\n" );
                                                        +
                                                        245  return -1;
                                                        +
                                                        246  }
                                                        +
                                                        247  strcpy ( prmstg, optarg );
                                                        +
                                                        248  break;
                                                        +
                                                        249  }
                                                        +
                                                        250  }
                                                        +
                                                        251 
                                                        +
                                                        252  /*
                                                        +
                                                        253  ** There should be one remaining command line argument specifying the
                                                        +
                                                        254  ** input BUFR file.
                                                        +
                                                        255  */
                                                        +
                                                        256  if ( (optind+1) != argc ) {
                                                        +
                                                        257  printf( "\nERROR: You must specify an input BUFR file to be decoded!\n" );
                                                        +
                                                        258  prtusage( argv[0] );
                                                        +
                                                        259  return -1;
                                                        +
                                                        260  }
                                                        +
                                                        261 
                                                        +
                                                        262  /*
                                                        +
                                                        263  ** Open the input BUFR file.
                                                        +
                                                        264  */
                                                        +
                                                        265  cobfl( argv[optind], io );
                                                        +
                                                        266 
                                                        +
                                                        267  /*
                                                        +
                                                        268  ** Check whether a PARAMETER(S)=VALUE(S) string was specified.
                                                        +
                                                        269  */
                                                        +
                                                        270  if ( prmstg == NULL ) { // no, so set a default value
                                                        +
                                                        271  if ( ( prmstg = malloc( 9 ) ) == NULL ) {
                                                        +
                                                        272  printf( "\nERROR: Could not allocate memory for PARAMETER(S)=VALUE(S) string!\n" );
                                                        +
                                                        273  return -1;
                                                        +
                                                        274  }
                                                        +
                                                        275  strcpy( prmstg, "NULLPSTG" );
                                                        +
                                                        276  }
                                                        +
                                                        277 
                                                        +
                                                        278  /*
                                                        +
                                                        279  ** Check whether a tables directory was specified.
                                                        +
                                                        280  */
                                                        +
                                                        281  if ( tbldir == NULL ) { // no, so use the default directory
                                                        +
                                                        282  if ( ( tbldir = malloc( strlen( tbldir_default ) + 1 ) ) == NULL ) {
                                                        +
                                                        283  printf( "\nERROR: Could not allocate memory for tables directory!\n" );
                                                        +
                                                        284  return -1;
                                                        +
                                                        285  }
                                                        +
                                                        286  strcpy( tbldir, tbldir_default );
                                                        +
                                                        287  }
                                                        +
                                                        288 
                                                        +
                                                        289  /*
                                                        +
                                                        290  ** Check whether a DX tables file was specified.
                                                        +
                                                        291  */
                                                        +
                                                        292  if ( wkstr == NULL ) { // no, so set a default value
                                                        +
                                                        293  if ( ( tblfil = malloc( 9 ) ) == NULL ) {
                                                        +
                                                        294  printf( "\nERROR: Could not allocate memory for DX BUFR tables file!\n" );
                                                        +
                                                        295  return -1;
                                                        +
                                                        296  }
                                                        +
                                                        297  strcpy( tblfil, "NULLFILE" );
                                                        +
                                                        298  }
                                                        +
                                                        299  else {
                                                        +
                                                        300  if ( ( tblfil = malloc( strlen( tbldir ) + strlen( wkstr ) + 2 ) ) == NULL ) {
                                                        +
                                                        301  printf( "\nERROR: Could not allocate memory for DX BUFR tables file!\n" );
                                                        +
                                                        302  return -1;
                                                        +
                                                        303  }
                                                        +
                                                        304  sprintf( tblfil, "%s%c%s", tbldir, '/', wkstr );
                                                        +
                                                        305  }
                                                        +
                                                        306  free( wkstr );
                                                        +
                                                        307 
                                                        +
                                                        308  /*
                                                        +
                                                        309  ** Check whether an output file was specified. If not, make a default
                                                        +
                                                        310  ** filename in the current working directory using the basename of the
                                                        +
                                                        311  ** input BUFR file.
                                                        +
                                                        312  */
                                                        +
                                                        313  if ( ofile == NULL ) {
                                                        +
                                                        314  bcopy = strdup( argv[optind] );
                                                        +
                                                        315  bname = basename( bcopy );
                                                        +
                                                        316  if ( ( ofile = malloc( strlen( bname ) + 15 ) ) == NULL ) {
                                                        +
                                                        317  printf( "\nERROR: Could not allocate memory for output file name!\n" );
                                                        +
                                                        318  return -1;
                                                        +
                                                        319  }
                                                        +
                                                        320  strcpy( ofile, bname );
                                                        +
                                                        321  strcat( ofile, ".debufr.out" );
                                                        +
                                                        322  free( bcopy );
                                                        +
                                                        323  }
                                                        +
                                                        324 
                                                        +
                                                        325  /*
                                                        +
                                                        326  ** Confirm that the output directory is writeable.
                                                        +
                                                        327  */
                                                        +
                                                        328  dcopy = strdup( ofile );
                                                        +
                                                        329  dname = dirname( dcopy );
                                                        +
                                                        330  if ( access( dname, W_OK ) != 0 ) {
                                                        +
                                                        331  printf( "\nERROR: Cannot write output file to %s\n",
                                                        +
                                                        332  ( strcmp( dname, "." ) == 0 ? "current working directory" : dname ) );
                                                        +
                                                        333  prtusage( argv[0] );
                                                        +
                                                        334  iret = -1;
                                                        +
                                                        335  }
                                                        +
                                                        336  else {
                                                        +
                                                        337 
                                                        +
                                                        338  /*
                                                        +
                                                        339  ** Read and decode each message from the input BUFR file.
                                                        +
                                                        340  */
                                                        +
                                                        341  lenof = strlen( ofile );
                                                        +
                                                        342  lentd = strlen( tbldir );
                                                        +
                                                        343  lentf = strlen( tblfil );
                                                        +
                                                        344  lenps = strlen( prmstg );
                                                        +
                                                        345  fdebufr_f( ofile, lenof, tbldir, lentd, tblfil, lentf, prmstg, lenps, &basic, &forcemt, &cfms );
                                                        +
                                                        346  iret = 0;
                                                        +
                                                        347  }
                                                        +
                                                        348  free( dcopy );
                                                        +
                                                        349 
                                                        +
                                                        350  free( ofile );
                                                        +
                                                        351  free( tbldir );
                                                        +
                                                        352  free( tblfil );
                                                        +
                                                        353  free( prmstg );
                                                        +
                                                        354 
                                                        +
                                                        355  /*
                                                        +
                                                        356  ** Close the input BUFR file.
                                                        +
                                                        357  */
                                                        +
                                                        358  ccbfl( );
                                                        +
                                                        359 
                                                        +
                                                        360  return iret;
                                                        +
                                                        361 }
                                                        +
                                                        Enable a number of NCEPLIBS-bufr subprograms to be called from within C and C++ application programs.
                                                        +
                                                        #define VERS_STR_LEN
                                                        Size of a character string needed to store a library version number.
                                                        +
                                                        void cobfl(char *bfl, char io)
                                                        Open a new file for reading or writing BUFR messages via a C language interface.
                                                        Definition: crwbmg.c:120
                                                        +
                                                        void ccbfl(void)
                                                        Close all files that were opened via previous calls to function cobfl().
                                                        Definition: crwbmg.c:290
                                                        +
                                                        void bvers_f(char *cverstr, int cverstr_len)
                                                        Get the version number of the NCEPLIBS-bufr software.
                                                        +
                                                        int main(int argc, char *argv[])
                                                        This program decodes a BUFR file and generates a verbose listing of the contents.
                                                        Definition: debufr.c:167
                                                        +
                                                        void prtusage(char *prgnam)
                                                        This function prints program usage information to standard output.
                                                        Definition: debufr.c:48
                                                        +
                                                        void fdebufr_f(char *ofile, int lenof, char *tbldir, int lentd, char *tblfil, int lentf, char *prmstg, int lenps, char *basic, char *forcemt, char *cfms)
                                                        Read, decode, and print a verbose output listing of the contents of a BUFR file.
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/dir_22e12ea4559d63fc79cb69a343f5f5b4.html b/previous_versions/v12.1.0/dir_22e12ea4559d63fc79cb69a343f5f5b4.html new file mode 100644 index 000000000..e2c73d50e --- /dev/null +++ b/previous_versions/v12.1.0/dir_22e12ea4559d63fc79cb69a343f5f5b4.html @@ -0,0 +1,109 @@ + + + + + + + +NCEPLIBS-bufr: utils Directory Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        +
                                                        utils Directory Reference
                                                        +
                                                        +
                                                        + + + + + + + + +

                                                        +Files

                                                        file  debufr.c [code]
                                                         C language code for debufr utility.
                                                         
                                                        file  sinv.F90 [code]
                                                         Produces a BUFR file inventory by satellite type.
                                                         
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/dir_49e56c817e5e54854c35e136979f97ca.html b/previous_versions/v12.1.0/dir_49e56c817e5e54854c35e136979f97ca.html new file mode 100644 index 000000000..cca8f5bf5 --- /dev/null +++ b/previous_versions/v12.1.0/dir_49e56c817e5e54854c35e136979f97ca.html @@ -0,0 +1,99 @@ + + + + + + + +NCEPLIBS-bufr: docs Directory Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        +
                                                        docs Directory Reference
                                                        +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/dir_68267d1309a1af8e8297ef4c3efbcdba.html b/previous_versions/v12.1.0/dir_68267d1309a1af8e8297ef4c3efbcdba.html new file mode 100644 index 000000000..5573139c1 --- /dev/null +++ b/previous_versions/v12.1.0/dir_68267d1309a1af8e8297ef4c3efbcdba.html @@ -0,0 +1,235 @@ + + + + + + + +NCEPLIBS-bufr: src Directory Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        +
                                                        src Directory Reference
                                                        +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                                                        +Files

                                                        file  arallocc.c [code]
                                                         Allocate or deallocate C language arrays.
                                                         
                                                        file  arallocf.F90 [code]
                                                         Allocate or deallocate Fortran language arrays.
                                                         
                                                        file  bitmaps.F90 [code]
                                                         Process bitmaps within BUFR messages.
                                                         
                                                        file  blocks.F90 [code]
                                                         Block BUFR messages with IEEE Fortran control words.
                                                         
                                                        file  borts.F90 [code]
                                                         Log one or more error messages and abort application program.
                                                         
                                                        file  bufr_c2f_interface.F90 [code]
                                                         Enable a number of Fortran NCEPLIBS-bufr subprograms to be called from within C.
                                                         
                                                        file  bufr_interface.F90 [code]
                                                         Enable a number of C NCEPLIBS-bufr functions to be called from within Fortran application programs.
                                                         
                                                        file  bufr_interface.h [code]
                                                         Enable a number of NCEPLIBS-bufr subprograms to be called from within C and C++ application programs.
                                                         
                                                        file  bufrlib.F90 [code]
                                                         Enable a number of C NCEPLIBS-bufr functions to be called from within the Fortran part of the library.
                                                         
                                                        file  bufrlib.h [code]
                                                         Enable a number of NCEPLIBS-bufr subprograms to be called from within the C part of the library.
                                                         
                                                        file  cfe.c [code]
                                                         C language interface for processing master Code/Flag table entries.
                                                         
                                                        file  cftbvs.F90 [code]
                                                         Convert between code or flag table values and actual data values.
                                                         
                                                        file  cidecode.F90 [code]
                                                         Decode character strings and integer values.
                                                         
                                                        file  ciencode.F90 [code]
                                                         Encode character strings and integer values.
                                                         
                                                        file  compress.F90 [code]
                                                         Read or write compressed BUFR messages.
                                                         
                                                        file  copydata.F90 [code]
                                                         Copy data between BUFR files or messages.
                                                         
                                                        file  cpmstabs.c [code]
                                                         Copy master Table B and Table D information from Fortran arrays to C arrays within internal memory.
                                                         
                                                        file  cread.c [code]
                                                         C language interface for reading or writing BUFR messages.
                                                         
                                                        file  cread.h [code]
                                                         Declare variables for reading or writing BUFR messages via a C language interface.
                                                         
                                                        file  crwbmg.c [code]
                                                         C language interface for reading or writing BUFR messages.
                                                         
                                                        file  dumpdata.F90 [code]
                                                         Print the contents of a data subset or DX BUFR table.
                                                         
                                                        file  dxtable.F90 [code]
                                                         Read or write DX BUFR table information.
                                                         
                                                        file  errwrt.F90 [code]
                                                         Specify location for logging of error and diagnostic messages.
                                                         
                                                        file  fxy.F90 [code]
                                                         Process FXY values, including converting between character and WMO bit-wise representations.
                                                         
                                                        file  icvidx.c [code]
                                                         Compute a unique 1-dimensional array index from 2-dimensional indices.
                                                         
                                                         
                                                        file  mastertable.F90 [code]
                                                         Read or write master table information.
                                                         
                                                        file  memmsgs.F90 [code]
                                                         Read and process BUFR messages within internal memory arrays.
                                                         
                                                        file  missing.F90 [code]
                                                         Test for "missing" data values.
                                                         
                                                        file  modules_arrs.F90 [code]
                                                         Declare module arrays.
                                                         
                                                        file  modules_vars.F90 [code]
                                                         Declare and initialize module variables.
                                                         
                                                        file  mstabs.h [code]
                                                         Declare variables for internal storage of master Table B and Table D entries.
                                                         
                                                        file  openbt.F90 [code]
                                                         Specify DX BUFR table file of last resort.
                                                         
                                                        file  openclosebf.F90 [code]
                                                         Open or close a file to the library.
                                                         
                                                        file  readwritemg.F90 [code]
                                                         Read or write a BUFR message.
                                                         
                                                        file  readwritesb.F90 [code]
                                                         Read or write a BUFR data subset.
                                                         
                                                        file  readwriteval.F90 [code]
                                                         Read or write data values within a BUFR data subset.
                                                         
                                                        file  restd.c [code]
                                                         Standardize a local Table D descriptor.
                                                         
                                                        file  s013vals.F90 [code]
                                                         Read and write data values within Sections 0, 1, and 3 of BUFR messages.
                                                         
                                                        file  standard.F90 [code]
                                                         Write WMO-standard BUFR messages.
                                                         
                                                        file  strings.F90 [code]
                                                         Process mnemonic strings.
                                                         
                                                        file  stseq.c [code]
                                                         Store information about a standard Table D descriptor within internal DX BUFR tables.
                                                         
                                                        file  tankrcpt.F90 [code]
                                                         Read and write tank receipt times within BUFR messages.
                                                         
                                                        file  x4884.F90 [code]
                                                         Convert between 4-byte integers and 8-byte integers.
                                                         
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/dir_7a6c296ee00f7c8711e279503c1d5b5f.html b/previous_versions/v12.1.0/dir_7a6c296ee00f7c8711e279503c1d5b5f.html new file mode 100644 index 000000000..a251393c4 --- /dev/null +++ b/previous_versions/v12.1.0/dir_7a6c296ee00f7c8711e279503c1d5b5f.html @@ -0,0 +1,106 @@ + + + + + + + +NCEPLIBS-bufr: src Directory Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        +
                                                        src Directory Reference
                                                        +
                                                        +
                                                        + + + + + +

                                                        +Files

                                                        file  misc.F90 [code]
                                                         Miscellaneous subroutines and functions.
                                                         
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/dir_cbdb8362360e11eafe2fa3bc74cf0ffd.html b/previous_versions/v12.1.0/dir_cbdb8362360e11eafe2fa3bc74cf0ffd.html new file mode 100644 index 000000000..b933ea13d --- /dev/null +++ b/previous_versions/v12.1.0/dir_cbdb8362360e11eafe2fa3bc74cf0ffd.html @@ -0,0 +1,130 @@ + + + + + + + +NCEPLIBS-bufr: utils Directory Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        +
                                                        utils Directory Reference
                                                        +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                                                        +Files

                                                        file  apxdx.F90 [code]
                                                         Append a specified DX BUFR table to a specified BUFR file.
                                                         
                                                        file  binv.F90 [code]
                                                         Produce an inventory of subsets in a bufr file.
                                                         
                                                        file  cmpbqm.F90 [code]
                                                         Print inventory of observations from prepbufr file by variable, report type and quality mark.
                                                         
                                                        file  debufr.F90 [code]
                                                         Fortran language code for debufr utility.
                                                         
                                                        file  gettab.F90 [code]
                                                         Read BUFR file containing embedded DX BUFR tables, and print the tables to stdout.
                                                         
                                                        file  readbp.F90 [code]
                                                         Read PREPBUFR file containing embedded DX BUFR tables, and print each report one at a time.
                                                         
                                                        file  readmp.F90 [code]
                                                         Read BUFR file containing embedded DX BUFR tables, and print each report one at a time.
                                                         
                                                        file  split_by_subset.F90 [code]
                                                         Split a BUFR file into separate BUFR files by subset type.
                                                         
                                                        file  xbfmg.c [code]
                                                         Split a BUFR file into separate BUFR files by message.
                                                         
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/doc.png b/previous_versions/v12.1.0/doc.png new file mode 100644 index 0000000000000000000000000000000000000000..17edabff95f7b8da13c9516a04efe05493c29501 GIT binary patch literal 746 zcmV7=@pnbNXRFEm&G8P!&WHG=d)>K?YZ1bzou)2{$)) zumDct!>4SyxL;zgaG>wy`^Hv*+}0kUfCrz~BCOViSb$_*&;{TGGn2^x9K*!Sf0=lV zpP=7O;GA0*Jm*tTYj$IoXvimpnV4S1Z5f$p*f$Db2iq2zrVGQUz~yq`ahn7ck(|CE z7Gz;%OP~J6)tEZWDzjhL9h2hdfoU2)Nd%T<5Kt;Y0XLt&<@6pQx!nw*5`@bq#?l*?3z{Hlzoc=Pr>oB5(9i6~_&-}A(4{Q$>c>%rV&E|a(r&;?i5cQB=} zYSDU5nXG)NS4HEs0it2AHe2>shCyr7`6@4*6{r@8fXRbTA?=IFVWAQJL&H5H{)DpM#{W(GL+Idzf^)uRV@oB8u$ z8v{MfJbTiiRg4bza<41NAzrl{=3fl_D+$t+^!xlQ8S}{UtY`e z;;&9UhyZqQRN%2pot{*Ei0*4~hSF_3AH2@fKU!$NSflS>{@tZpDT4`M2WRTTVH+D? z)GFlEGGHe?koB}i|1w45!BF}N_q&^HJ&-tyR{(afC6H7|aml|tBBbv}55C5DNP8p3 z)~jLEO4Z&2hZmP^i-e%(@d!(E|KRafiU8Q5u(wU((j8un3OR*Hvj+t literal 0 HcmV?d00001 diff --git a/previous_versions/v12.1.0/doxygen.css b/previous_versions/v12.1.0/doxygen.css new file mode 100644 index 000000000..ffbff0224 --- /dev/null +++ b/previous_versions/v12.1.0/doxygen.css @@ -0,0 +1,1793 @@ +/* The standard CSS for doxygen 1.9.1 */ + +body, table, div, p, dl { + font: 400 14px/22px Roboto,sans-serif; +} + +p.reference, p.definition { + font: 400 14px/22px Roboto,sans-serif; +} + +/* @group Heading Levels */ + +h1.groupheader { + font-size: 150%; +} + +.title { + font: 400 14px/28px Roboto,sans-serif; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h2.groupheader { + border-bottom: 1px solid #879ECB; + color: #354C7B; + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px cyan; +} + +dt { + font-weight: bold; +} + +ul.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; + column-count: 3; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +th p.starttd, th p.intertd, th p.endtd { + font-size: 100%; + font-weight: 700; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +p.interli { +} + +p.interdd { +} + +p.intertd { +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.navtab { + border-right: 1px solid #A3B4D7; + padding-right: 15px; + text-align: right; + line-height: 110%; +} + +div.navtab table { + border-spacing: 0; +} + +td.navtab { + padding-right: 6px; + padding-left: 6px; +} +td.navtabHL { + background-image: url('tab_a.png'); + background-repeat:repeat-x; + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL a, td.navtabHL a:visited { + color: #fff; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +} + +a.navtab { + font-weight: bold; +} + +div.qindex{ + text-align: center; + width: 100%; + line-height: 140%; + font-size: 130%; + color: #A0A0A0; +} + +dt.alphachar{ + font-size: 180%; + font-weight: bold; +} + +.alphachar a{ + color: black; +} + +.alphachar a:hover, .alphachar a:visited{ + text-decoration: none; +} + +.classindex dl { + padding: 25px; + column-count:1 +} + +.classindex dd { + display:inline-block; + margin-left: 50px; + width: 90%; + line-height: 1.15em; +} + +.classindex dl.odd { + background-color: #F8F9FC; +} + +@media(min-width: 1120px) { + .classindex dl { + column-count:2 + } +} + +@media(min-width: 1320px) { + .classindex dl { + column-count:3 + } +} + + +/* @group Link Styling */ + +a { + color: #3D578C; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #4665A2; +} + +a:hover { + text-decoration: underline; +} + +.contents a.qindexHL:visited { + color: #FFFFFF; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: #4665A2; +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: #4665A2; +} + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +ul { + overflow: hidden; /*Fixed: list item bullets overlap floating elements*/ +} + +#side-nav ul { + overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */ +} + +#main-nav ul { + overflow: visible; /* reset ul rule for the navigation bar drop down lists */ +} + +.fragment { + text-align: left; + direction: ltr; + overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/ + overflow-y: hidden; +} + +pre.fragment { + border: 1px solid #C4CFE5; + background-color: #FBFCFD; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: monospace, fixed; + font-size: 105%; +} + +div.fragment { + padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/ + margin: 4px 8px 4px 2px; + background-color: #FBFCFD; + border: 1px solid #C4CFE5; +} + +div.line { + font-family: monospace, fixed; + font-size: 13px; + min-height: 13px; + line-height: 1.0; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: cyan; + box-shadow: 0 0 10px cyan; +} + + +span.lineno { + padding-right: 4px; + text-align: right; + border-right: 2px solid #0F0; + background-color: #E8E8E8; + white-space: pre; +} +span.lineno a { + background-color: #D8D8D8; +} + +span.lineno a:hover { + background-color: #C8C8C8; +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.ah, span.ah { + background-color: black; + font-weight: bold; + color: #FFFFFF; + margin-bottom: 3px; + margin-top: 3px; + padding: 0.2em; + border: solid thin #333; + border-radius: 0.5em; + -webkit-border-radius: .5em; + -moz-border-radius: .5em; + box-shadow: 2px 2px 3px #999; + -webkit-box-shadow: 2px 2px 3px #999; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); + background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%); +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + background-color: white; + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +td.indexkey { + background-color: #EBEFF6; + font-weight: bold; + border: 1px solid #C4CFE5; + margin: 2px 0px 2px 0; + padding: 2px 10px; + white-space: nowrap; + vertical-align: top; +} + +td.indexvalue { + background-color: #EBEFF6; + border: 1px solid #C4CFE5; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #EEF1F7; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +img.formulaInl, img.inline { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000 +} + +span.keywordtype { + color: #604020 +} + +span.keywordflow { + color: #e08000 +} + +span.comment { + color: #800000 +} + +span.preprocessor { + color: #806020 +} + +span.stringliteral { + color: #002080 +} + +span.charliteral { + color: #008080 +} + +span.vhdldigit { + color: #ff00ff +} + +span.vhdlchar { + color: #000000 +} + +span.vhdlkeyword { + color: #700070 +} + +span.vhdllogic { + color: #ff0000 +} + +blockquote { + background-color: #F7F8FB; + border-left: 2px solid #9CAFD4; + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +blockquote.DocNodeRTL { + border-left: 0; + border-right: 2px solid #9CAFD4; + margin: 0 4px 0 24px; + padding: 0 16px 0 12px; +} + +/* @end */ + +/* +.search { + color: #003399; + font-weight: bold; +} + +form.search { + margin-bottom: 0px; + margin-top: 0px; +} + +input.search { + font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +*/ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #A3B4D7; +} + +th.dirtab { + background: #EBEFF6; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #4A6AAA; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: cyan; + box-shadow: 0 0 15px cyan; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #F9FAFC; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memSeparator { + border-bottom: 1px solid #DEE4F0; + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight, .memTemplItemRight { + width: 100%; +} + +.memTemplParams { + color: #4665A2; + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: url('nav_f.png'); + background-repeat: repeat-x; + background-color: #E2E8F2; + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: #4665A2; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px cyan; +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 0px 6px 0px; + color: #253555; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + background-color: #DFE5F1; + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 4px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 4px; + +} + +.overload { + font-family: "courier new",courier,monospace; + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 10px 2px 10px; + background-color: #FBFCFD; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: #FFFFFF; + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype, .tparams .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir, .tparams .paramdir { + font-family: "courier new",courier,monospace; + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: #728DC1; + border-top:1px solid #5373B4; + border-left:1px solid #5373B4; + border-right:1px solid #C4CFE5; + border-bottom:1px solid #C4CFE5; + text-shadow: none; + color: white; + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid #9CAFD4; + border-bottom: 1px solid #9CAFD4; + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.even { + padding-left: 6px; + background-color: #F7F8FB; +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: #3D578C; +} + +.arrow { + color: #9CAFD4; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: Arial, Helvetica; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: #728DC1; + color: white; + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderopen.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderclosed.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('doc.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +table.directory { + font: 400 14px Roboto,sans-serif; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: #2A3D61; +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + /*width: 100%;*/ + margin-bottom: 10px; + border: 1px solid #A8B8D9; + border-spacing: 0px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid #A8B8D9; + border-bottom: 1px solid #A8B8D9; + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid #A8B8D9; + /*width: 100%;*/ +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + font-size: 90%; + color: #253555; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid #A8B8D9; +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image:url('tab_b.png'); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:#8AA0CC; + border:solid 1px #C2CDE4; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color:#364D7C; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: #283A5D; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color:#6884BD; +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color:#364D7C; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + margin: 0px; + border-bottom: 1px solid #C4CFE5; +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +.PageDocRTL-title div.headertitle { + text-align: right; + direction: rtl; +} + +dl { + padding: 0 0 0 0; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */ +dl.section { + margin-left: 0px; + padding-left: 0px; +} + +dl.section.DocNodeRTL { + margin-right: 0px; + padding-right: 0px; +} + +dl.note { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #D0C000; +} + +dl.note.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #FF0000; +} + +dl.warning.DocNodeRTL, dl.attention.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00D000; +} + +dl.pre.DocNodeRTL, dl.post.DocNodeRTL, dl.invariant.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #00D000; +} + +dl.deprecated { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #505050; +} + +dl.deprecated.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #505050; +} + +dl.todo { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00C0E0; +} + +dl.todo.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #00C0E0; +} + +dl.test { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #3030E0; +} + +dl.test.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #3030E0; +} + +dl.bug { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #C08050; +} + +dl.bug.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; +} + +#projectname +{ + font: 300% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font: 120% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font: 50% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #5373B4; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +div.zoom +{ + border: 1px solid #90A5CE; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:#334975; + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; + text-align:right; + width:52px; +} + +dl.citelist dd { + margin:2px 0 2px 72px; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: #F4F6FA; + border: 1px solid #D8DFEE; + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +.PageDocRTL-title div.toc { + float: left !important; + text-align: right; +} + +div.toc li { + background: url("bdwn.png") no-repeat scroll 0 5px transparent; + font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +.PageDocRTL-title div.toc li { + background-position-x: right !important; + padding-left: 0 !important; + padding-right: 10px; +} + +div.toc h3 { + font: bold 12px/1.2 Arial,FreeSans,sans-serif; + color: #4665A2; + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 30px; +} + +div.toc li.level4 { + margin-left: 45px; +} + +span.emoji { + /* font family used at the site: https://unicode.org/emoji/charts/full-emoji-list.html + * font-family: "Noto Color Emoji", "Apple Color Emoji", "Segoe UI Emoji", Times, Symbola, Aegyptus, Code2000, Code2001, Code2002, Musica, serif, LastResort; + */ +} + +.PageDocRTL-title div.toc li.level1 { + margin-left: 0 !important; + margin-right: 0; +} + +.PageDocRTL-title div.toc li.level2 { + margin-left: 0 !important; + margin-right: 15px; +} + +.PageDocRTL-title div.toc li.level3 { + margin-left: 0 !important; + margin-right: 30px; +} + +.PageDocRTL-title div.toc li.level4 { + margin-left: 0 !important; + margin-right: 45px; +} + +.inherit_header { + font-weight: bold; + color: gray; + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + white-space: nowrap; + background-color: white; + border: 1px solid gray; + border-radius: 4px 4px 4px 4px; + box-shadow: 1px 1px 7px gray; + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: grey; + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: #006318; +} + +#powerTip div { + margin: 0px; + padding: 0px; + font: 12px/16px Roboto,sans-serif; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: #FFFFFF; + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before { + border-top-color: #808080; + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: #FFFFFF; + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: #808080; + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: #FFFFFF; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: #FFFFFF; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + +.DocNodeRTL { + text-align: right; + direction: rtl; +} + +.DocNodeLTR { + text-align: left; + direction: ltr; +} + +table.DocNodeRTL { + width: auto; + margin-right: 0; + margin-left: auto; +} + +table.DocNodeLTR { + width: auto; + margin-right: auto; + margin-left: 0; +} + +tt, code, kbd, samp +{ + display: inline-block; + direction:ltr; +} +/* @end */ + +u { + text-decoration: underline; +} + diff --git a/previous_versions/v12.1.0/doxygen.svg b/previous_versions/v12.1.0/doxygen.svg new file mode 100644 index 000000000..d42dad52d --- /dev/null +++ b/previous_versions/v12.1.0/doxygen.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/previous_versions/v12.1.0/dumpdata_8F90.html b/previous_versions/v12.1.0/dumpdata_8F90.html new file mode 100644 index 000000000..15372bd48 --- /dev/null +++ b/previous_versions/v12.1.0/dumpdata_8F90.html @@ -0,0 +1,343 @@ + + + + + + + +NCEPLIBS-bufr: dumpdata.F90 File Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        dumpdata.F90 File Reference
                                                        +
                                                        +
                                                        + +

                                                        Print the contents of a data subset or DX BUFR table. +More...

                                                        + +

                                                        Go to the source code of this file.

                                                        + + + + + + + + + + + + + + +

                                                        +Functions/Subroutines

                                                        recursive subroutine dxdump (lunit, ldxot)
                                                         Print a copy of the DX BUFR table associated with a specified Fortran logical unit. More...
                                                         
                                                        recursive subroutine getabdb (lunit, tabdb, itab, jtab)
                                                         Get Table B and Table D information from the internal DX BUFR tables. More...
                                                         
                                                        recursive subroutine ufbdmp (lunin, luprt)
                                                         Print a verbose listing of the contents of a data subset, including all data values and replicated sequences, as well as jump/link table information and other internal subset pointers. More...
                                                         
                                                        recursive subroutine ufdump (lunit, luprt)
                                                         Print a verbose listing of the contents of a data subset, including all data values and replicated sequences, as well as the meanings of data values which are code or flag table entries. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Print the contents of a data subset or DX BUFR table.

                                                        +
                                                        Authors
                                                        J. Woollen, J. Ator, D. Keyser
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition in file dumpdata.F90.

                                                        +

                                                        Function/Subroutine Documentation

                                                        + +

                                                        ◆ dxdump()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        recursive subroutine dxdump (integer, intent(in) lunit,
                                                        integer, intent(in) ldxot 
                                                        )
                                                        +
                                                        + +

                                                        Print a copy of the DX BUFR table associated with a specified Fortran logical unit.

                                                        +

                                                        This subroutine is especially useful for learning the structure of existing BUFR files which contain DX BUFR table information embedded as BUFR messages within those files. The DX BUFR table is printed using the same ASCII format described in the documentation for DX BUFR Tables, so the output file is suitable for use as Fortran logical unit LUNDX in subsequent calls to subroutine openbf() for reading or writing additional BUFR files with the same structure.

                                                        +
                                                        Parameters
                                                        + + + +
                                                        lunit- Fortran logical unit number for BUFR file
                                                        ldxot- Fortran logical unit number for print output
                                                        +
                                                        +
                                                        +

                                                        Logical unit lunit must be open for either input or output operations via a previous call to subroutine openbf(). Logical unit ldxot must already be associated with a filename on the local system, typically via a Fortran "OPEN" statement.

                                                        +
                                                        Remarks
                                                          +
                                                        • This subroutine only prints the DX BUFR table that is currently in scope for logical unit lunit. Therefore, if logical unit lunit contains multiple embedded DX BUFR tables, then multiple calls to this subroutine must be made to print out all of the tables, once while each table is in scope for a data subset defined within that particular table.
                                                        • +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2004-08-18
                                                        + +

                                                        Definition at line 579 of file dumpdata.F90.

                                                        + +

                                                        References bort(), moda_nmikrp::irp, moda_nmikrp::krp, moda_nmikrp::nem, nemtbd(), moda_tababd::ntba, moda_tababd::ntbb, moda_tababd::ntbd, status(), strsuc(), moda_tababd::taba, moda_tababd::tabb, moda_tababd::tabd, and x84().

                                                        + +

                                                        Referenced by fdebufr_c(), and gettab().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ getabdb()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        recursive subroutine getabdb (integer, intent(in) lunit,
                                                        character*128, dimension(*), intent(out) tabdb,
                                                        integer, intent(in) itab,
                                                        integer, intent(out) jtab 
                                                        )
                                                        +
                                                        + +

                                                        Get Table B and Table D information from the internal DX BUFR tables.

                                                        +

                                                        The information is returned in a memory array in a pre-defined ASCII format.

                                                        +
                                                        Parameters
                                                        + + + + + +
                                                        lunit- Fortran logical unit number for BUFR file
                                                        itab- Dimensioned size of tabdb array; used by the subroutine to ensure that it doesn't overflow the tabdb array
                                                        tabdb- Internal Table B and Table D information
                                                        jtab- Number of entries stored within tabdb
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2005-11-29
                                                        + +

                                                        Definition at line 828 of file dumpdata.F90.

                                                        + +

                                                        References moda_nmikrp::irp, moda_nmikrp::krp, moda_nmikrp::nem, nemtbd(), moda_tababd::ntbb, moda_tababd::ntbd, status(), moda_tababd::tabb, moda_tababd::tabd, x48(), and x84().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ ufbdmp()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        recursive subroutine ufbdmp (integer, intent(in) lunin,
                                                        integer, intent(in) luprt 
                                                        )
                                                        +
                                                        + +

                                                        Print a verbose listing of the contents of a data subset, including all data values and replicated sequences, as well as jump/link table information and other internal subset pointers.

                                                        +

                                                        This subroutine is similar to subroutine ufdump(), but it prints different characteristics of each data subset, and in a slightly different format. However, both subroutines can be useful for different diagnostic purposes, and both can also be run interactively to scroll through the contents of a data subset.

                                                        +

                                                        Logical unit abs(lunin) should have already been opened for input operations via a previous call to subroutine openbf(), and a BUFR data subset should have already been read into internal arrays via a previous call to one of the subset-reading subroutines.

                                                        +

                                                        Except when luprt = 0, logical unit luprt must already be associated with a filename on the local system, typically via a Fortran "OPEN" statement. When luprt = 0, the subroutine will run interactively and print to standard output, scrolling 20 lines at a time and prompting each time whether to quit and return to the application program (by typing 'q' then '<Enter>') or continue scrolling (by typing anything else).

                                                        +
                                                        Parameters
                                                        + + + +
                                                        lunin- Absolute value is Fortran logical unit number for BUFR file
                                                          +
                                                        • If lunin > 0, data values are printed to luprt using the format descriptor code 'G15.6', meaning that all values will be printed (since the format adapts to the order of magnitude of each value), but values won't necessarily be lined up with the decimal point in the same column
                                                        • +
                                                        • If lunin < 0, data values are printed to luprt using the format descriptor code 'F15.6', meaning that all values will be lined up with the decimal point in the same column, but values exceeding the format width of 15 characters will print as overflow (e.g. '***************')
                                                        • +
                                                        +
                                                        luprt- Fortran logical unit number for print output:
                                                          +
                                                        • 0 = Run interactively, printing to standard output
                                                        • +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        Authors
                                                        J. Woollen, J. Ator, D. Keyser
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 41 of file dumpdata.F90.

                                                        + +

                                                        References bort(), ibfms(), moda_tables::ibt, icbfms(), moda_msgcwd::inode, moda_usrint::inv, moda_tables::irf, moda_tables::isc, isize(), moda_tables::itp, moda_tables::jmpb, moda_tables::jump, moda_tables::link, nemtab(), moda_usrint::nval, readlc(), status(), moda_tababd::tabb, moda_tables::tag, moda_tables::typ, upftbv(), moda_usrint::val, and x84().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ ufdump()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        recursive subroutine ufdump (integer, intent(in) lunit,
                                                        integer, intent(in) luprt 
                                                        )
                                                        +
                                                        + +

                                                        Print a verbose listing of the contents of a data subset, including all data values and replicated sequences, as well as the meanings of data values which are code or flag table entries.

                                                        +

                                                        This subroutine is similar to subroutine ufbdmp(), but it prints different characteristics of each data subset, and in a slightly different format. However, both subroutines can be useful for different diagnostic purposes, and both can also be run interactively to scroll through the contents of a data subset.

                                                        +

                                                        Logical unit lunit should have already been opened for input operations via a previous call to subroutine openbf(), and a BUFR data subset should have already been read into internal arrays via a previous call to one of the subset-reading subroutines.

                                                        +

                                                        Except when luprt = 0, logical unit luprt must already be associated with a filename on the local system, typically via a Fortran "OPEN" statement. When luprt = 0, the subroutine will run interactively and print to standard output, scrolling 20 lines at a time and prompting each time whether to quit and return to the application program (by typing 'q' then '<Enter>') or continue scrolling (by typing anything else).

                                                        +

                                                        In order for the meanings of code and flag table values to be included in the output, a previous call to subroutine codflg() must have been made with argument cf = 'Y'. Otherwise, only the code and flag table values themselves will be printed.

                                                        +
                                                        Parameters
                                                        + + + +
                                                        lunit- Fortran logical unit number for BUFR file
                                                        luprt- Fortran logical unit number for print output
                                                          +
                                                        • 0 = Run interactively, printing to standard output
                                                        • +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        Authors
                                                        J. Woollen, J. Ator
                                                        +
                                                        Date
                                                        2002-05-14
                                                        + +

                                                        Definition at line 227 of file dumpdata.F90.

                                                        + +

                                                        References bort(), moda_tablef::cdmf, fstag(), ibfms(), moda_tables::ibt, icbfms(), moda_msgcwd::inode, moda_nrv203::inodnrv, moda_usrint::inv, ireadmt(), moda_tables::irf, moda_tables::isc, isize(), moda_tables::itp, nemtab(), moda_nrv203::nnrv, moda_usrint::nrfelm, moda_msgcwd::nsub, numtbd(), moda_usrint::nval, readlc(), status(), strsuc(), moda_tababd::tabb, moda_tables::tag, moda_tables::typ, upftbv(), moda_usrint::val, and x84().

                                                        + +

                                                        Referenced by fdebufr_c(), readbp(), and readmp().

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/dumpdata_8F90.js b/previous_versions/v12.1.0/dumpdata_8F90.js new file mode 100644 index 000000000..5b58498cc --- /dev/null +++ b/previous_versions/v12.1.0/dumpdata_8F90.js @@ -0,0 +1,7 @@ +var dumpdata_8F90 = +[ + [ "dxdump", "dumpdata_8F90.html#ac693ae3d5af0a71505d5f9305c86fdb8", null ], + [ "getabdb", "dumpdata_8F90.html#aa267dbf23e18a201eec17e2fa48238d7", null ], + [ "ufbdmp", "dumpdata_8F90.html#ad4fdbfc4ae3890133d9204a881541a1a", null ], + [ "ufdump", "dumpdata_8F90.html#a20fa33f6e0fcb0816c4b070c73362539", null ] +]; \ No newline at end of file diff --git a/previous_versions/v12.1.0/dumpdata_8F90_source.html b/previous_versions/v12.1.0/dumpdata_8F90_source.html new file mode 100644 index 000000000..d965794ce --- /dev/null +++ b/previous_versions/v12.1.0/dumpdata_8F90_source.html @@ -0,0 +1,929 @@ + + + + + + + +NCEPLIBS-bufr: dumpdata.F90 Source File + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        +
                                                        dumpdata.F90
                                                        +
                                                        +
                                                        +Go to the documentation of this file.
                                                        1 
                                                        +
                                                        5 
                                                        +
                                                        41 recursive subroutine ufbdmp(lunin,luprt)
                                                        +
                                                        42 
                                                        +
                                                        43  use modv_vars, only: im8b
                                                        +
                                                        44 
                                                        +
                                                        45  use moda_usrint
                                                        +
                                                        46  use moda_msgcwd
                                                        +
                                                        47  use moda_tababd
                                                        +
                                                        48  use moda_tables
                                                        +
                                                        49 
                                                        +
                                                        50  implicit none
                                                        +
                                                        51 
                                                        +
                                                        52  integer, intent(in) :: lunin, luprt
                                                        +
                                                        53  integer, parameter :: mxfv = 31
                                                        +
                                                        54  integer ifv(mxfv), my_lunin, my_luprt, luout, lunit, lun, il, im, nv, nd, it, ib, is, ir, jp, lk, jb, &
                                                        +
                                                        55  idn, nifv, nchr, n, ii, ipt, isz, isize, ibfms, icbfms
                                                        +
                                                        56 
                                                        +
                                                        57  character lchr2*120, lchr*20, pmiss*20, bits*14, tg*10, tg_rj*10, vc*8, fmtf*7, tp*3, tab, you
                                                        +
                                                        58 
                                                        +
                                                        59  real*8 vl
                                                        +
                                                        60 
                                                        +
                                                        61  equivalence(vl,vc)
                                                        +
                                                        62 
                                                        +
                                                        63  data pmiss /' MISSING'/
                                                        +
                                                        64  data you /'Y'/
                                                        +
                                                        65 
                                                        +
                                                        66  ! Check for I8 integers
                                                        +
                                                        67 
                                                        +
                                                        68  if(im8b) then
                                                        +
                                                        69  im8b=.false.
                                                        +
                                                        70 
                                                        +
                                                        71  call x84(lunin,my_lunin,1)
                                                        +
                                                        72  call x84(luprt,my_luprt,1)
                                                        +
                                                        73  call ufbdmp(my_lunin,my_luprt)
                                                        +
                                                        74 
                                                        +
                                                        75  im8b=.true.
                                                        +
                                                        76  return
                                                        +
                                                        77  endif
                                                        +
                                                        78 
                                                        +
                                                        79  if(luprt==0) then
                                                        +
                                                        80  luout = 6
                                                        +
                                                        81  else
                                                        +
                                                        82  luout = luprt
                                                        +
                                                        83  endif
                                                        +
                                                        84 
                                                        +
                                                        85  ! Check the file status and inode
                                                        +
                                                        86 
                                                        +
                                                        87  lunit = abs(lunin)
                                                        +
                                                        88  call status(lunit,lun,il,im)
                                                        +
                                                        89  if(il==0) call bort('BUFRLIB: UFBDMP - INPUT BUFR FILE IS CLOSED, IT MUST BE OPEN FOR INPUT')
                                                        +
                                                        90  if(il>0) call bort('BUFRLIB: UFBDMP - INPUT BUFR FILE IS OPEN FOR OUTPUT, IT MUST BE OPEN FOR INPUT')
                                                        +
                                                        91  if(im==0) call bort('BUFRLIB: UFBDMP - A MESSAGE MUST BE OPEN IN INPUT BUFR FILE, NONE ARE')
                                                        +
                                                        92  if(inode(lun)/=inv(1,lun)) call bort('BUFRLIB: UFBDMP - LOCATION OF INTERNAL TABLE FOR '// &
                                                        +
                                                        93  'INPUT BUFR FILE DOES NOT AGREE WITH EXPECTED LOCATION IN INTERNAL SUBSET ARRAY')
                                                        +
                                                        94 
                                                        +
                                                        95  ! Dump the contents of @ref moda_usrint for unit abs(lunin)
                                                        +
                                                        96 
                                                        +
                                                        97  do nv=1,nval(lun)
                                                        +
                                                        98  if(luprt==0 .and. mod(nv,20)==0) then
                                                        +
                                                        99 
                                                        +
                                                        100  ! When luprt=0, the output will be scrolled, 20 elements at a time
                                                        +
                                                        101 
                                                        +
                                                        102  print*,'(<enter> for MORE, q <enter> to QUIT)'
                                                        +
                                                        103  read(5,'(A1)') you
                                                        +
                                                        104 
                                                        +
                                                        105  ! If the terminal enters "q" followed by "<enter>", then scrolling will end and the subroutine will return to the
                                                        +
                                                        106  ! calling program
                                                        +
                                                        107 
                                                        +
                                                        108  if(you=='q') then
                                                        +
                                                        109  print*
                                                        +
                                                        110  print*,'==> You have chosen to stop the dumping of this subset'
                                                        +
                                                        111  print*
                                                        +
                                                        112  return
                                                        +
                                                        113  endif
                                                        +
                                                        114  endif
                                                        +
                                                        115  nd = inv(nv,lun)
                                                        +
                                                        116  vl = val(nv,lun)
                                                        +
                                                        117  tg = tag(nd)
                                                        +
                                                        118  tp = typ(nd)
                                                        +
                                                        119  it = itp(nd)
                                                        +
                                                        120  ib = ibt(nd)
                                                        +
                                                        121  is = isc(nd)
                                                        +
                                                        122  ir = irf(nd)
                                                        +
                                                        123  jp = jump(nd)
                                                        +
                                                        124  lk = link(nd)
                                                        +
                                                        125  jb = jmpb(nd)
                                                        +
                                                        126  tg_rj = adjustr(tg)
                                                        +
                                                        127  if(tp/='CHR') then
                                                        +
                                                        128  bits = ' '
                                                        +
                                                        129  if(it==2) then
                                                        +
                                                        130  call nemtab(lun,tg,idn,tab,n)
                                                        +
                                                        131  if(tabb(n,lun)(71:75)=='FLAG') then
                                                        +
                                                        132 
                                                        +
                                                        133  ! Print a listing of the bits corresponding to this value.
                                                        +
                                                        134 
                                                        +
                                                        135  call upftbv(lunit,tg,vl,mxfv,ifv,nifv)
                                                        +
                                                        136  if(nifv>0) then
                                                        +
                                                        137  bits(1:1) = '('
                                                        +
                                                        138  ipt = 2
                                                        +
                                                        139  do ii=1,nifv
                                                        +
                                                        140  isz = isize(ifv(ii))
                                                        +
                                                        141  write(fmtf,'(A2,I1,A4)') '(I', isz, ',A1)'
                                                        +
                                                        142  if((ipt+isz)<=14) then
                                                        +
                                                        143  write(bits(ipt:ipt+isz),fmtf) ifv(ii), ','
                                                        +
                                                        144  ipt = ipt + isz + 1
                                                        +
                                                        145  else
                                                        +
                                                        146  bits(2:13) = 'MANY BITS ON'
                                                        +
                                                        147  ipt = 15
                                                        +
                                                        148  endif
                                                        +
                                                        149  enddo
                                                        +
                                                        150  bits(ipt-1:ipt-1) = ')'
                                                        +
                                                        151  endif
                                                        +
                                                        152  endif
                                                        +
                                                        153  endif
                                                        +
                                                        154  if(ibfms(vl)/=0) then
                                                        +
                                                        155  write(luout,'(I5,1X,A3,A1,I1,1X,A10,1X, A20, 14X,7(1X,I5))') nv,tp,'-',it,tg_rj,pmiss,ib,is,ir,nd,jp,lk,jb
                                                        +
                                                        156  else
                                                        +
                                                        157  if(lunit==lunin) then
                                                        +
                                                        158  write(luout,'(I5,1X,A3,A1,I1,1X,A10,5X,G15.6,1X,A14,7(1X,I5))') nv,tp,'-',it,tg_rj,vl,bits,ib,is,ir,nd,jp,lk,jb
                                                        +
                                                        159  else
                                                        +
                                                        160  write(luout,'(I5,1X,A3,A1,I1,1X,A10,5X,F15.6,1X,A14,7(1X,I5))') nv,tp,'-',it,tg_rj,vl,bits,ib,is,ir,nd,jp,lk,jb
                                                        +
                                                        161  endif
                                                        +
                                                        162  endif
                                                        +
                                                        163  else
                                                        +
                                                        164  nchr=ib/8
                                                        +
                                                        165  if(nchr>8) then
                                                        +
                                                        166  call readlc(lunit,lchr2,tg_rj)
                                                        +
                                                        167  if (icbfms(lchr2,nchr)/=0) then
                                                        +
                                                        168  lchr = pmiss
                                                        +
                                                        169  else
                                                        +
                                                        170  lchr = lchr2(1:20)
                                                        +
                                                        171  endif
                                                        +
                                                        172  else
                                                        +
                                                        173  if(ibfms(vl)/=0) then
                                                        +
                                                        174  lchr = pmiss
                                                        +
                                                        175  else
                                                        +
                                                        176  lchr = vc
                                                        +
                                                        177  endif
                                                        +
                                                        178  endif
                                                        +
                                                        179  if ( nchr<=20 .or. lchr==pmiss ) then
                                                        +
                                                        180  lchr = adjustr(lchr)
                                                        +
                                                        181  write(luout,'(I5,1X,A3,A1,I1,1X,A10,1X, A20, 14X,7(1X,I5))') nv,tp,'-',it,tg_rj,lchr,ib,is,ir,nd,jp,lk,jb
                                                        +
                                                        182  else
                                                        +
                                                        183  write(luout,'(I5,1X,A3,A1,I1,1X,A10,1X, A, 7(1X,I5))') nv,tp,'-',it,tg_rj,lchr2(1:nchr),ib,is,ir,nd,jp,lk,jb
                                                        +
                                                        184  endif
                                                        +
                                                        185  endif
                                                        +
                                                        186  enddo
                                                        +
                                                        187 
                                                        +
                                                        188  write(luout,'(/A/)') ' >>> END OF SUBSET <<< '
                                                        +
                                                        189 
                                                        +
                                                        190  return
                                                        +
                                                        191 end subroutine ufbdmp
                                                        +
                                                        192 
                                                        +
                                                        227 recursive subroutine ufdump(lunit,luprt)
                                                        +
                                                        228 
                                                        +
                                                        229  use bufrlib
                                                        +
                                                        230 
                                                        +
                                                        231  use modv_vars, only: im8b
                                                        +
                                                        232 
                                                        +
                                                        233  use moda_usrint
                                                        +
                                                        234  use moda_msgcwd
                                                        +
                                                        235  use moda_tababd
                                                        +
                                                        236  use moda_tables
                                                        +
                                                        237  use moda_tablef
                                                        +
                                                        238  use moda_nrv203
                                                        +
                                                        239 
                                                        +
                                                        240  implicit none
                                                        +
                                                        241 
                                                        +
                                                        242  integer, intent(in) :: lunit, luprt
                                                        +
                                                        243  integer, parameter :: mxfv = 31 , mxcfdp = 5, mxseq = 10, mxls = 10
                                                        +
                                                        244  integer ifv(mxfv), icfdp(mxcfdp), idxrep(mxseq), numrep(mxseq), lsqnam(mxseq), lsct(mxls), my_lunit, my_luprt, &
                                                        +
                                                        245  nseq, nls, lcfmeang, luout, lun, il, im, node, lnm2, lnm3, itmp, ityp, ii, jj, nifv, nv, n, nchr, idn, ipt, &
                                                        +
                                                        246  nrfe, nout, lcfmg, ifvd, iersf, ierbd, ierft, isz, isize, ireadmt, ibfms, icbfms
                                                        +
                                                        247  integer*8 ival
                                                        +
                                                        248 
                                                        +
                                                        249  real*8 rval
                                                        +
                                                        250 
                                                        +
                                                        251  character cfmeang*120, lchr2*120, fmt*80, desc*64, unit*24, lchr*20, pmiss*20, nemo3*15, nemo*10, nemo2*10, tagrfe*10, &
                                                        +
                                                        252  seqnam(mxseq)*10, lsnemo(mxls)*10, nemod*8, cval*8, fmtf*7, numb*6, type*3, tab, you
                                                        +
                                                        253 
                                                        +
                                                        254  logical track, found, rdrv
                                                        +
                                                        255 
                                                        +
                                                        256  equivalence(rval,cval)
                                                        +
                                                        257 
                                                        +
                                                        258  data pmiss /' MISSING'/
                                                        +
                                                        259  data you /'Y'/
                                                        +
                                                        260 
                                                        +
                                                        261  ! Check for I8 integers
                                                        +
                                                        262 
                                                        +
                                                        263  if(im8b) then
                                                        +
                                                        264  im8b=.false.
                                                        +
                                                        265 
                                                        +
                                                        266  call x84(lunit,my_lunit,1)
                                                        +
                                                        267  call x84(luprt,my_luprt,1)
                                                        +
                                                        268  call ufdump(my_lunit,my_luprt)
                                                        +
                                                        269 
                                                        +
                                                        270  im8b=.true.
                                                        +
                                                        271  return
                                                        +
                                                        272  endif
                                                        +
                                                        273 
                                                        +
                                                        274  nseq = 0
                                                        +
                                                        275  nls = 0
                                                        +
                                                        276  lcfmeang = len(cfmeang)
                                                        +
                                                        277 
                                                        +
                                                        278  if(luprt==0) then
                                                        +
                                                        279  luout = 6
                                                        +
                                                        280  else
                                                        +
                                                        281  luout = luprt
                                                        +
                                                        282  endif
                                                        +
                                                        283 
                                                        +
                                                        284  ! Check the file status and inode
                                                        +
                                                        285 
                                                        +
                                                        286  call status(lunit,lun,il,im)
                                                        +
                                                        287  if(il==0) call bort('BUFRLIB: UFDUMP - INPUT BUFR FILE IS CLOSED, IT MUST BE OPEN FOR INPUT')
                                                        +
                                                        288  if(il>0) call bort('BUFRLIB: UFDUMP - INPUT BUFR FILE IS OPEN FOR OUTPUT, IT MUST BE OPEN FOR INPUT')
                                                        +
                                                        289  if(im==0) call bort('BUFRLIB: UFDUMP - A MESSAGE MUST BE OPEN IN INPUT BUFR FILE, NONE ARE')
                                                        +
                                                        290  if(inode(lun)/=inv(1,lun)) call bort('BUFRLIB: UFDUMP - LOCATION OF INTERNAL TABLE FOR '// &
                                                        +
                                                        291  'INPUT BUFR FILE DOES NOT AGREE WITH EXPECTED LOCATION IN INTERNAL SUBSET ARRAY')
                                                        +
                                                        292 
                                                        +
                                                        293  write(luout,'(/,2A,/)') 'MESSAGE TYPE ',tag(inode(lun))
                                                        +
                                                        294 
                                                        +
                                                        295  ! If code/flag table details are being printed, and if this is the first subset of a new message, then
                                                        +
                                                        296  ! make sure the appropriate master tables have been read in to memory for this message.
                                                        +
                                                        297 
                                                        +
                                                        298  if(cdmf=='Y' .and. nsub(lun)==1) itmp = ireadmt(lun)
                                                        +
                                                        299 
                                                        +
                                                        300  ! Dump the contents of @ref moda_usrint for unit lunit
                                                        +
                                                        301 
                                                        +
                                                        302  do nv=1,nval(lun)
                                                        +
                                                        303  if(luprt==0 .and. mod(nv,20)==0) then
                                                        +
                                                        304 
                                                        +
                                                        305  ! When luprt=0, the output will be scrolled, 20 elements at a time
                                                        +
                                                        306 
                                                        +
                                                        307  print*,'(<enter> for MORE, q <enter> to QUIT)'
                                                        +
                                                        308  read(5,'(A1)') you
                                                        +
                                                        309 
                                                        +
                                                        310  ! If the terminal enters "q" followed by "<enter>", then scrolling will end and the subroutine will return to the
                                                        +
                                                        311  ! calling program
                                                        +
                                                        312 
                                                        +
                                                        313  if(you=='q') then
                                                        +
                                                        314  print*
                                                        +
                                                        315  print*,'==> You have chosen to stop the dumping of this subset'
                                                        +
                                                        316  print*
                                                        +
                                                        317  return
                                                        +
                                                        318  endif
                                                        +
                                                        319  endif
                                                        +
                                                        320 
                                                        +
                                                        321  node = inv(nv,lun)
                                                        +
                                                        322  nemo = tag(node)
                                                        +
                                                        323  ityp = itp(node)
                                                        +
                                                        324  type = typ(node)
                                                        +
                                                        325 
                                                        +
                                                        326  if(ityp>=1.and.ityp<=3) then
                                                        +
                                                        327  call nemtab(lun,nemo,idn,tab,n)
                                                        +
                                                        328  if(n>0) then
                                                        +
                                                        329  numb = tabb(n,lun)(1:6)
                                                        +
                                                        330  desc = tabb(n,lun)(16:70)
                                                        +
                                                        331  unit = tabb(n,lun)(71:94)
                                                        +
                                                        332  endif
                                                        +
                                                        333  rval = val(nv,lun)
                                                        +
                                                        334  endif
                                                        +
                                                        335 
                                                        +
                                                        336  if((ityp==0).or.(ityp==1)) then
                                                        +
                                                        337 
                                                        +
                                                        338  ! Sequence descriptor or delayed descriptor replication factor
                                                        +
                                                        339 
                                                        +
                                                        340  if((type=='REP').or.(type=='DRP').or.(type=='DRB').or.(type=='DRS')) then
                                                        +
                                                        341 
                                                        +
                                                        342  ! Print the number of replications
                                                        +
                                                        343  nseq = nseq+1
                                                        +
                                                        344  if(nseq>mxseq) call bort('BUFRLIB: UFDUMP - MXSEQ OVERFLOW')
                                                        +
                                                        345  if(type=='REP') then
                                                        +
                                                        346  numrep(nseq) = irf(node)
                                                        +
                                                        347  else
                                                        +
                                                        348  numrep(nseq) = nint(rval)
                                                        +
                                                        349  endif
                                                        +
                                                        350  call strsuc(nemo,nemo2,lnm2)
                                                        +
                                                        351  fmt = '(11X,A,I6,1X,A)'
                                                        +
                                                        352  write(luout,fmt) nemo2(1:lnm2), numrep(nseq), 'REPLICATIONS'
                                                        +
                                                        353 
                                                        +
                                                        354  ! How many times is this sequence replicated?
                                                        +
                                                        355  if(numrep(nseq)>1) then
                                                        +
                                                        356  ! Track the sequence
                                                        +
                                                        357  seqnam(nseq) = nemo2
                                                        +
                                                        358  lsqnam(nseq) = lnm2
                                                        +
                                                        359  idxrep(nseq) = 1
                                                        +
                                                        360  else
                                                        +
                                                        361  ! Don't bother
                                                        +
                                                        362  nseq = nseq-1
                                                        +
                                                        363  endif
                                                        +
                                                        364  elseif( ((type=='SEQ').or.(type=='RPC').or.(type=='RPS')) .and. (nseq>0) ) then
                                                        +
                                                        365 
                                                        +
                                                        366  ! Is this one of the sequences being tracked?
                                                        +
                                                        367  ii = nseq
                                                        +
                                                        368  track = .false.
                                                        +
                                                        369  call strsuc(nemo,nemo2,lnm2)
                                                        +
                                                        370  do while ((ii>=1).and.(.not.track))
                                                        +
                                                        371  if(nemo2(1:lnm2)==seqnam(ii)(2:lsqnam(ii)-1)) then
                                                        +
                                                        372  track = .true.
                                                        +
                                                        373  ! Mark this level in the output
                                                        +
                                                        374  fmt = '(4X,A,2X,A,2X,A,I6,2X,A)'
                                                        +
                                                        375  write(luout,fmt) '++++++', nemo2(1:lnm2), 'REPLICATION #', idxrep(ii), '++++++'
                                                        +
                                                        376  if(idxrep(ii)<numrep(ii)) then
                                                        +
                                                        377  ! There are more levels to come
                                                        +
                                                        378  idxrep(ii) = idxrep(ii)+1
                                                        +
                                                        379  else
                                                        +
                                                        380  ! This was the last level for this sequence, so stop tracking it
                                                        +
                                                        381  nseq = nseq-1
                                                        +
                                                        382  endif
                                                        +
                                                        383  else
                                                        +
                                                        384  ii = ii-1
                                                        +
                                                        385  endif
                                                        +
                                                        386  enddo
                                                        +
                                                        387  endif
                                                        +
                                                        388  elseif(ityp==2) then
                                                        +
                                                        389 
                                                        +
                                                        390  ! Numeric value.
                                                        +
                                                        391 
                                                        +
                                                        392  ! First check if this node contains a redefined reference value. If so, modify the desc field to label it as such.
                                                        +
                                                        393  jj = 1
                                                        +
                                                        394  rdrv = .false.
                                                        +
                                                        395  do while ((jj<=nnrv).and.(.not.rdrv))
                                                        +
                                                        396  if (node==inodnrv(jj)) then
                                                        +
                                                        397  rdrv = .true.
                                                        +
                                                        398  desc = 'New reference value for ' // nemo
                                                        +
                                                        399  unit = ' '
                                                        +
                                                        400  else
                                                        +
                                                        401  jj = jj + 1
                                                        +
                                                        402  endif
                                                        +
                                                        403  enddo
                                                        +
                                                        404 
                                                        +
                                                        405  ! Next check if this element refers to another element via a bitmap. If so, modify the desc field to identify the
                                                        +
                                                        406  ! referred element.
                                                        +
                                                        407  nrfe = nrfelm(nv,lun)
                                                        +
                                                        408  if(nrfe>0) then
                                                        +
                                                        409  tagrfe = tag(inv(nrfe,lun))
                                                        +
                                                        410  jj = 48
                                                        +
                                                        411  do while((jj>=1).and.(desc(jj:jj)==' '))
                                                        +
                                                        412  jj = jj - 1
                                                        +
                                                        413  enddo
                                                        +
                                                        414  if(jj<=33) desc(jj+1:jj+15) = ' for ' // tagrfe
                                                        +
                                                        415  endif
                                                        +
                                                        416 
                                                        +
                                                        417  ! Now print the value
                                                        +
                                                        418  if(ibfms(rval)/=0) then
                                                        +
                                                        419  ! The value is "missing".
                                                        +
                                                        420  fmt = '(A6,2X,A10,2X,A20,2X,A24,6X,A48)'
                                                        +
                                                        421  write(luout,fmt) numb,nemo,pmiss,unit,desc
                                                        +
                                                        422  else
                                                        +
                                                        423  fmt = '(A6,2X,A10,2X, ,2X,A24,6X,A48)'
                                                        +
                                                        424  ! Based upon the corresponding scale factor, select an appropriate format for the printing of this value.
                                                        +
                                                        425  if(isc(node)>0) then
                                                        +
                                                        426  write(fmt(15:20),'(A,I2)') 'F20.', isc(node)
                                                        +
                                                        427  else
                                                        +
                                                        428  write(fmt(18:20),'(A)') 'I20'
                                                        +
                                                        429  endif
                                                        +
                                                        430  if(unit(1:4)=='FLAG') then
                                                        +
                                                        431  ! Print a listing of the bits corresponding to this value.
                                                        +
                                                        432  call upftbv(lunit,nemo,rval,mxfv,ifv,nifv)
                                                        +
                                                        433  if(nifv>0) then
                                                        +
                                                        434  unit(11:11) = '('
                                                        +
                                                        435  ipt = 12
                                                        +
                                                        436  do ii=1,nifv
                                                        +
                                                        437  isz = isize(ifv(ii))
                                                        +
                                                        438  write(fmtf,'(A2,I1,A4)') '(I', isz, ',A1)'
                                                        +
                                                        439  if((ipt+isz)<=24) then
                                                        +
                                                        440  write(unit(ipt:ipt+isz),fmtf) ifv(ii), ','
                                                        +
                                                        441  ipt = ipt + isz + 1
                                                        +
                                                        442  else
                                                        +
                                                        443  unit(12:23) = 'MANY BITS ON'
                                                        +
                                                        444  ipt = 25
                                                        +
                                                        445  endif
                                                        +
                                                        446  enddo
                                                        +
                                                        447  unit(ipt-1:ipt-1) = ')'
                                                        +
                                                        448  endif
                                                        +
                                                        449  endif
                                                        +
                                                        450  if(isc(node)>0) then
                                                        +
                                                        451  write(luout,fmt) numb,nemo,rval,unit,desc
                                                        +
                                                        452  else
                                                        +
                                                        453  ival = nint(rval,8)
                                                        +
                                                        454  write(luout,fmt) numb,nemo,ival,unit,desc
                                                        +
                                                        455  endif
                                                        +
                                                        456  if( (unit(1:4)=='FLAG' .or. unit(1:4)=='CODE') .and. (cdmf=='Y') ) then
                                                        +
                                                        457  ! Print the meanings of the code and flag values.
                                                        +
                                                        458  fmt = '(31X,I8,A,A)'
                                                        +
                                                        459  if(unit(1:4)=='CODE') then
                                                        +
                                                        460  nifv = 1
                                                        +
                                                        461  ifv(nifv) = nint(rval)
                                                        +
                                                        462  endif
                                                        +
                                                        463  do ii=1,nifv
                                                        +
                                                        464  icfdp(1) = (-1)
                                                        +
                                                        465  call srchtbf_c(idn,ifv(ii),icfdp(1),mxcfdp,-1,cfmeang,lcfmeang,lcfmg,iersf)
                                                        +
                                                        466  if(iersf==0) then
                                                        +
                                                        467  write(luout,fmt) ifv(ii),' = ',cfmeang(1:lcfmg)
                                                        +
                                                        468  elseif(iersf<0) then
                                                        +
                                                        469  write(luout,fmt) ifv(ii),' = ','***THIS IS AN ILLEGAL/UNDEFINED VALUE***'
                                                        +
                                                        470  else
                                                        +
                                                        471  ! The meaning of this value is dependent on the value of another mnemonic in the report. Look for
                                                        +
                                                        472  ! that other mnemonic within the report and then use it and its associated value to retrieve and print
                                                        +
                                                        473  ! the proper meaning from the code/flag tables.
                                                        +
                                                        474  ierft = (-1)
                                                        +
                                                        475  jj = 0
                                                        +
                                                        476  do while((jj<iersf).and.(ierft<0))
                                                        +
                                                        477  jj = jj + 1
                                                        +
                                                        478  call numtbd(lun,icfdp(jj),nemod,tab,ierbd)
                                                        +
                                                        479  if((ierbd>0).and.(tab=='B')) call fstag(lun,nemod,-1,nv,nout,ierft)
                                                        +
                                                        480  enddo
                                                        +
                                                        481  if(ierft==0) then
                                                        +
                                                        482  ifvd = nint(val(nout,lun))
                                                        +
                                                        483  if(jj>1) icfdp(1) = icfdp(jj)
                                                        +
                                                        484  call srchtbf_c(idn,ifv(ii),icfdp(1),mxcfdp,ifvd,cfmeang,lcfmeang,lcfmg,iersf)
                                                        +
                                                        485  if(iersf==0) write(luout,fmt) ifv(ii),' = ', cfmeang(1:lcfmg)
                                                        +
                                                        486  endif
                                                        +
                                                        487  endif
                                                        +
                                                        488  enddo
                                                        +
                                                        489  endif
                                                        +
                                                        490  endif
                                                        +
                                                        491  elseif(ityp==3) then
                                                        +
                                                        492 
                                                        +
                                                        493  ! Character (CCITT IA5) value
                                                        +
                                                        494 
                                                        +
                                                        495  nchr = ibt(node)/8
                                                        +
                                                        496 
                                                        +
                                                        497  if(ibfms(rval)/=0) then
                                                        +
                                                        498  lchr = pmiss
                                                        +
                                                        499  else if(nchr<=8) then
                                                        +
                                                        500  lchr = cval
                                                        +
                                                        501  else
                                                        +
                                                        502  ! Track the number of occurrences of this long character string, so that we can properly output each one.
                                                        +
                                                        503  ii = 1
                                                        +
                                                        504  found = .false.
                                                        +
                                                        505  do while((ii<=nls).and.(.not.found))
                                                        +
                                                        506  if(nemo==lsnemo(ii)) then
                                                        +
                                                        507  found = .true.
                                                        +
                                                        508  else
                                                        +
                                                        509  ii = ii + 1
                                                        +
                                                        510  endif
                                                        +
                                                        511  enddo
                                                        +
                                                        512  if(.not.found) then
                                                        +
                                                        513  nls = nls+1
                                                        +
                                                        514  if(nls>mxls) call bort('BUFRLIB: UFDUMP - MXLS OVERFLOW')
                                                        +
                                                        515  lsnemo(nls) = nemo
                                                        +
                                                        516  lsct(nls) = 1
                                                        +
                                                        517  nemo3 = nemo
                                                        +
                                                        518  else
                                                        +
                                                        519  call strsuc(nemo,nemo3,lnm3)
                                                        +
                                                        520  lsct(ii) = lsct(ii) + 1
                                                        +
                                                        521  write(fmtf,'(A,I1,A)') '(2A,I', isize(lsct(ii)), ')'
                                                        +
                                                        522  write(nemo3,fmtf) nemo(1:lnm3), '#', lsct(ii)
                                                        +
                                                        523  endif
                                                        +
                                                        524 
                                                        +
                                                        525  call readlc(lunit,lchr2,nemo3)
                                                        +
                                                        526  if (icbfms(lchr2,nchr)/=0) then
                                                        +
                                                        527  lchr = pmiss
                                                        +
                                                        528  else
                                                        +
                                                        529  lchr = lchr2(1:20)
                                                        +
                                                        530  endif
                                                        +
                                                        531  endif
                                                        +
                                                        532 
                                                        +
                                                        533  if ( nchr<=20 .or. lchr==pmiss ) then
                                                        +
                                                        534  lchr = adjustr(lchr)
                                                        +
                                                        535  fmt = '(A6,2X,A10,2X,A20,2X,"(",I2,")",A24,2X,A48)'
                                                        +
                                                        536  write(luout,fmt) numb,nemo,lchr,nchr,unit,desc
                                                        +
                                                        537  else
                                                        +
                                                        538  fmt = '(A6,2X,A10,2X,A,2X,"(",I3,")",A23,2X,A48)'
                                                        +
                                                        539  write(luout,fmt) numb,nemo,lchr2(1:nchr),nchr,unit,desc
                                                        +
                                                        540  endif
                                                        +
                                                        541  endif
                                                        +
                                                        542 
                                                        +
                                                        543  enddo
                                                        +
                                                        544 
                                                        +
                                                        545  write(luout,'(/A/)') ' >>> END OF SUBSET <<< '
                                                        +
                                                        546 
                                                        +
                                                        547  return
                                                        +
                                                        548 end subroutine ufdump
                                                        +
                                                        549 
                                                        +
                                                        579 recursive subroutine dxdump(lunit,ldxot)
                                                        +
                                                        580 
                                                        +
                                                        581  use modv_vars, only: im8b, reps
                                                        +
                                                        582 
                                                        +
                                                        583  use moda_tababd
                                                        +
                                                        584  use moda_nmikrp
                                                        +
                                                        585 
                                                        +
                                                        586  implicit none
                                                        +
                                                        587 
                                                        +
                                                        588  integer, intent(in) :: lunit, ldxot
                                                        +
                                                        589  integer my_lunit, my_ldxot, lun, il, im, n, na, nc, nch, ic, icms, nseq
                                                        +
                                                        590 
                                                        +
                                                        591  character card*80, cardi1*80, cardi2*80, cardi3*80, cardi4*80, cmstr*20, wrk3*10, wrk1*8, wrk2*8, adn*6
                                                        +
                                                        592 
                                                        +
                                                        593  logical tbskip, tdskip, xtrci1
                                                        +
                                                        594 
                                                        +
                                                        595  data cardi1 /'| | | |'/
                                                        +
                                                        596  data cardi2 /'| | |'/
                                                        +
                                                        597  data cardi3 /'| | | | | |-------------|'/
                                                        +
                                                        598  data cardi4 /'|------------------------------------------------------------------------------|'/
                                                        +
                                                        599 
                                                        +
                                                        600  ! Statement functions
                                                        +
                                                        601  tbskip(adn) = ((adn=='063000').or.(adn=='063255').or.(adn=='031000').or.(adn=='031001').or.(adn=='031002'))
                                                        +
                                                        602  tdskip(adn) = ((adn=='360001').or.(adn=='360002').or.(adn=='360003').or.(adn=='360004'))
                                                        +
                                                        603 
                                                        +
                                                        604  ! Check for I8 integers.
                                                        +
                                                        605 
                                                        +
                                                        606  if(im8b) then
                                                        +
                                                        607  im8b=.false.
                                                        +
                                                        608 
                                                        +
                                                        609  call x84(lunit,my_lunit,1)
                                                        +
                                                        610  call x84(ldxot,my_ldxot,1)
                                                        +
                                                        611  call dxdump(my_lunit,my_ldxot)
                                                        +
                                                        612 
                                                        +
                                                        613  im8b=.true.
                                                        +
                                                        614  return
                                                        +
                                                        615  endif
                                                        +
                                                        616 
                                                        +
                                                        617  ! Determine lun from lunit.
                                                        +
                                                        618 
                                                        +
                                                        619  call status(lunit,lun,il,im)
                                                        +
                                                        620  if(il==0) call bort('BUFRLIB: DXDUMP - BUFR FILE IS CLOSED, IT MUST BE OPEN')
                                                        +
                                                        621 
                                                        +
                                                        622  ! Create and write out (to ldxot) the header cards for the descriptor definition section.
                                                        +
                                                        623 
                                                        +
                                                        624  card=cardi4
                                                        +
                                                        625  card( 1: 1)='.'
                                                        +
                                                        626  card(80:80)='.'
                                                        +
                                                        627  write (ldxot,'(A)') card
                                                        +
                                                        628 
                                                        +
                                                        629  card=cardi4
                                                        +
                                                        630  card( 2: 2)=' '
                                                        +
                                                        631  card(79:79)=' '
                                                        +
                                                        632  card(15:64)=' USER DEFINITIONS FOR TABLE-A TABLE-B TABLE D '
                                                        +
                                                        633  write (ldxot,'(A)') card
                                                        +
                                                        634 
                                                        +
                                                        635  write (ldxot,'(A)') cardi4
                                                        +
                                                        636 
                                                        +
                                                        637  card=cardi1
                                                        +
                                                        638  card( 3:10)='MNEMONIC'
                                                        +
                                                        639  card(14:19)='NUMBER'
                                                        +
                                                        640  card(23:33)='DESCRIPTION'
                                                        +
                                                        641  write (ldxot,'(A)') card
                                                        +
                                                        642 
                                                        +
                                                        643  card=cardi4
                                                        +
                                                        644  card(12:12)='|'
                                                        +
                                                        645  card(21:21)='|'
                                                        +
                                                        646  write (ldxot,'(A)') card
                                                        +
                                                        647 
                                                        +
                                                        648  ! Create and write out (to ldxot) the Table D descriptor definition cards.
                                                        +
                                                        649 
                                                        +
                                                        650  write (ldxot,'(A)') cardi1
                                                        +
                                                        651 
                                                        +
                                                        652  xtrci1=.false.
                                                        +
                                                        653  do n=1,ntbd(lun)
                                                        +
                                                        654  if(.not.tdskip(tabd(n,lun)(1:6))) then
                                                        +
                                                        655  card=cardi1
                                                        +
                                                        656  card( 3:10)=tabd(n,lun)( 7:14)
                                                        +
                                                        657  card(14:19)=tabd(n,lun)( 1: 6)
                                                        +
                                                        658  card(23:77)=tabd(n,lun)(16:70)
                                                        +
                                                        659  ! Check if this Table D mnemonic is also a Table A mnemonic. If so, then label it as such and also check if it is the
                                                        +
                                                        660  ! last of the Table A mnemonics, in which case an extra cardi1 line will be written to ldxot in order to separate
                                                        +
                                                        661  ! the Table A mnemonics from the other Table D mnemonics.
                                                        +
                                                        662  do na=1,ntba(lun)
                                                        +
                                                        663  if(taba(na,lun)(4:11)==tabd(n,lun)(7:14)) then
                                                        +
                                                        664  card(14:14)='A'
                                                        +
                                                        665  if(na==ntba(lun)) xtrci1=.true.
                                                        +
                                                        666  exit
                                                        +
                                                        667  end if
                                                        +
                                                        668  end do
                                                        +
                                                        669  write (ldxot,'(A)') card
                                                        +
                                                        670  if(xtrci1) then
                                                        +
                                                        671  write (ldxot,'(A)') cardi1
                                                        +
                                                        672  xtrci1=.false.
                                                        +
                                                        673  end if
                                                        +
                                                        674  end if
                                                        +
                                                        675  end do
                                                        +
                                                        676 
                                                        +
                                                        677  ! Create and write out (to ldxot) the Table B descriptor definition cards.
                                                        +
                                                        678 
                                                        +
                                                        679  write (ldxot,'(A)') cardi1
                                                        +
                                                        680 
                                                        +
                                                        681  do n=1,ntbb(lun)
                                                        +
                                                        682  if(.not.tbskip(tabb(n,lun)(1:6))) then
                                                        +
                                                        683  card=cardi1
                                                        +
                                                        684  card( 3:10)=tabb(n,lun)( 7:14)
                                                        +
                                                        685  card(14:19)=tabb(n,lun)( 1: 6)
                                                        +
                                                        686  card(23:77)=tabb(n,lun)(16:70)
                                                        +
                                                        687  write (ldxot,'(A)') card
                                                        +
                                                        688  end if
                                                        +
                                                        689  end do
                                                        +
                                                        690 
                                                        +
                                                        691  write (ldxot,'(A)') cardi1
                                                        +
                                                        692 
                                                        +
                                                        693  ! Create and write out (to ldxot) the header cards for the sequence definition section.
                                                        +
                                                        694 
                                                        +
                                                        695  write (ldxot,'(A)') cardi4
                                                        +
                                                        696 
                                                        +
                                                        697  card=cardi2
                                                        +
                                                        698  card( 3:10)='MNEMONIC'
                                                        +
                                                        699  card(14:21)='SEQUENCE'
                                                        +
                                                        700  write (ldxot,'(A)') card
                                                        +
                                                        701 
                                                        +
                                                        702  card=cardi4
                                                        +
                                                        703  card(12:12)='|'
                                                        +
                                                        704  write (ldxot,'(A)') card
                                                        +
                                                        705 
                                                        +
                                                        706  ! Create and write out (to ldxot) the Table D sequence definition cards.
                                                        +
                                                        707 
                                                        +
                                                        708  write (ldxot,'(A)') cardi2
                                                        +
                                                        709 
                                                        +
                                                        710  do n=1,ntbd(lun)
                                                        +
                                                        711  if(.not.tdskip(tabd(n,lun)(1:6))) then
                                                        +
                                                        712  card=cardi2
                                                        +
                                                        713  card( 3:10)=tabd(n,lun)( 7:14)
                                                        +
                                                        714  ic = 14
                                                        +
                                                        715  ! Get the list of child mnemonics for this Table D descriptor, and then add each one (including any replication tags)
                                                        +
                                                        716  ! to the sequence definition card for this Table D descriptor.
                                                        +
                                                        717  call nemtbd(lun,n,nseq,nem(1,1),irp(1,1),krp(1,1))
                                                        +
                                                        718  if(nseq>0) then
                                                        +
                                                        719  do nc=1,nseq
                                                        +
                                                        720  cmstr=' '
                                                        +
                                                        721  icms=0
                                                        +
                                                        722  call strsuc(nem(nc,1),wrk2,nch)
                                                        +
                                                        723  if(irp(nc,1)/=0) then
                                                        +
                                                        724  ! Add the opening replication tag.
                                                        +
                                                        725  icms=icms+1
                                                        +
                                                        726  cmstr(icms:icms)=reps(irp(nc,1))
                                                        +
                                                        727  end if
                                                        +
                                                        728  cmstr(icms+1:icms+nch)=wrk2(1:nch)
                                                        +
                                                        729  icms=icms+nch
                                                        +
                                                        730  if(irp(nc,1)/=0) then
                                                        +
                                                        731  ! Add the closing replication tag.
                                                        +
                                                        732  icms=icms+1
                                                        +
                                                        733  cmstr(icms:icms)=reps(irp(nc,1)+5)
                                                        +
                                                        734  end if
                                                        +
                                                        735  if(krp(nc,1)/=0) then
                                                        +
                                                        736  ! Add the fixed replication count.
                                                        +
                                                        737  wrk1=' '
                                                        +
                                                        738  write (wrk1,'(I3)') krp(nc,1)
                                                        +
                                                        739  call strsuc(wrk1,wrk2,nch)
                                                        +
                                                        740  cmstr(icms+1:icms+nch)=wrk2(1:nch)
                                                        +
                                                        741  icms=icms+nch
                                                        +
                                                        742  end if
                                                        +
                                                        743  ! Will this child (and its replication tags, if any) fit into the current sequence definition card? If not, then
                                                        +
                                                        744  ! write out (to ldxot) the current card and initialize a new one to hold this child.
                                                        +
                                                        745  if(ic>(79-icms)) then
                                                        +
                                                        746  write (ldxot,'(A)') card
                                                        +
                                                        747  card=cardi2
                                                        +
                                                        748  card( 3:10)=tabd(n,lun)( 7:14)
                                                        +
                                                        749  ic = 14
                                                        +
                                                        750  end if
                                                        +
                                                        751  card(ic:ic+icms-1)=cmstr(1:icms)
                                                        +
                                                        752  ! Note that we want to leave 2 blank spaces between each child within the sequence definition card, to improve
                                                        +
                                                        753  ! readability.
                                                        +
                                                        754  ic=ic+icms+2
                                                        +
                                                        755  end do
                                                        +
                                                        756  write (ldxot,'(A)') card
                                                        +
                                                        757  write (ldxot,'(A)') cardi2
                                                        +
                                                        758  end if
                                                        +
                                                        759  end if
                                                        +
                                                        760  end do
                                                        +
                                                        761 
                                                        +
                                                        762  ! Create and write out (to ldxot) the header cards for the element definition section.
                                                        +
                                                        763 
                                                        +
                                                        764  write (ldxot,'(A)') cardi4
                                                        +
                                                        765 
                                                        +
                                                        766  card=cardi3
                                                        +
                                                        767  card( 3:10)='MNEMONIC'
                                                        +
                                                        768  card(14:17)='SCAL'
                                                        +
                                                        769  card(21:29)='REFERENCE'
                                                        +
                                                        770  card(35:37)='BIT'
                                                        +
                                                        771  card(41:45)='UNITS'
                                                        +
                                                        772  write (ldxot,'(A)') card
                                                        +
                                                        773 
                                                        +
                                                        774  card=cardi4
                                                        +
                                                        775  card(12:12)='|'
                                                        +
                                                        776  card(19:19)='|'
                                                        +
                                                        777  card(33:33)='|'
                                                        +
                                                        778  card(39:39)='|'
                                                        +
                                                        779  card(66:66)='|'
                                                        +
                                                        780  write (ldxot,'(A)') card
                                                        +
                                                        781 
                                                        +
                                                        782  ! Create and write out (to ldxot) the Table B element definition cards.
                                                        +
                                                        783 
                                                        +
                                                        784  write (ldxot,'(A)') cardi3
                                                        +
                                                        785 
                                                        +
                                                        786  do n=1,ntbb(lun)
                                                        +
                                                        787  if(.not.tbskip(tabb(n,lun)(1:6))) then
                                                        +
                                                        788  card=cardi3
                                                        +
                                                        789  card( 3:10)=tabb(n,lun)( 7:14)
                                                        +
                                                        790  card(41:64)=tabb(n,lun)(71:94)
                                                        +
                                                        791  ! Add the scale factor.
                                                        +
                                                        792  call strsuc(tabb(n,lun)(96:98),wrk2,nch)
                                                        +
                                                        793  card(17-nch+1:17)=wrk2
                                                        +
                                                        794  if(tabb(n,lun)(95:95)=='-') card(17-nch:17-nch)='-'
                                                        +
                                                        795  ! Add the reference value.
                                                        +
                                                        796  call strsuc(tabb(n,lun)(100:109),wrk3,nch)
                                                        +
                                                        797  card(31-nch+1:31)=wrk3
                                                        +
                                                        798  if(tabb(n,lun)(99:99)=='-') card(31-nch:31-nch)='-'
                                                        +
                                                        799  ! Add the bit width.
                                                        +
                                                        800  call strsuc(tabb(n,lun)(110:112),wrk2,nch)
                                                        +
                                                        801  card(37-nch+1:37)=wrk2
                                                        +
                                                        802  write (ldxot,'(a)') card
                                                        +
                                                        803  end if
                                                        +
                                                        804  end do
                                                        +
                                                        805 
                                                        +
                                                        806  write (ldxot,'(A)') cardi3
                                                        +
                                                        807 
                                                        +
                                                        808  ! Create and write out (to ldxot) the closing card.
                                                        +
                                                        809 
                                                        +
                                                        810  card=cardi4
                                                        +
                                                        811  card( 1: 1)='`'
                                                        +
                                                        812  card(80:80)=''''
                                                        +
                                                        813  write (ldxot,'(A)') card
                                                        +
                                                        814 
                                                        +
                                                        815  return
                                                        +
                                                        816 end subroutine dxdump
                                                        +
                                                        817 
                                                        +
                                                        828 recursive subroutine getabdb(lunit,tabdb,itab,jtab)
                                                        +
                                                        829 
                                                        +
                                                        830  use modv_vars, only: im8b
                                                        +
                                                        831 
                                                        +
                                                        832  use moda_tababd
                                                        +
                                                        833  use moda_nmikrp
                                                        +
                                                        834 
                                                        +
                                                        835  implicit none
                                                        +
                                                        836 
                                                        +
                                                        837  integer, intent(in) :: lunit, itab
                                                        +
                                                        838  integer, intent(out) :: jtab
                                                        +
                                                        839  integer my_lunit, my_itab, lun, il, im, i, j, k, nseq
                                                        +
                                                        840 
                                                        +
                                                        841  character*128, intent(out) :: tabdb(*)
                                                        +
                                                        842  character*8 nemo
                                                        +
                                                        843 
                                                        +
                                                        844  ! Check for I8 integers
                                                        +
                                                        845 
                                                        +
                                                        846  if(im8b) then
                                                        +
                                                        847  im8b=.false.
                                                        +
                                                        848  call x84(lunit,my_lunit,1)
                                                        +
                                                        849  call x84(itab,my_itab,1)
                                                        +
                                                        850  call getabdb(my_lunit,tabdb,my_itab,jtab)
                                                        +
                                                        851  call x48(jtab,jtab,1)
                                                        +
                                                        852  im8b=.true.
                                                        +
                                                        853  return
                                                        +
                                                        854  endif
                                                        +
                                                        855 
                                                        +
                                                        856  jtab = 0
                                                        +
                                                        857 
                                                        +
                                                        858  ! Make sure the file is open
                                                        +
                                                        859 
                                                        +
                                                        860  call status(lunit,lun,il,im)
                                                        +
                                                        861  if(il==0) return
                                                        +
                                                        862 
                                                        +
                                                        863  ! Write out the Table D entries for this file
                                                        +
                                                        864 
                                                        +
                                                        865  do i=1,ntbd(lun)
                                                        +
                                                        866  nemo = tabd(i,lun)(7:14)
                                                        +
                                                        867  call nemtbd(lun,i,nseq,nem(1,1),irp(1,1),krp(1,1))
                                                        +
                                                        868  do j=1,nseq,10
                                                        +
                                                        869  jtab = jtab+1
                                                        +
                                                        870  if(jtab<=itab) then
                                                        +
                                                        871  write(tabdb(jtab),fmt='(A,A8,10(1X,A10))') 'D ', nemo, (nem(k,1),k=j,min(j+9,nseq))
                                                        +
                                                        872  endif
                                                        +
                                                        873  enddo
                                                        +
                                                        874  enddo
                                                        +
                                                        875 
                                                        +
                                                        876  ! Add the Table B entries
                                                        +
                                                        877 
                                                        +
                                                        878  do i=1,ntbb(lun)
                                                        +
                                                        879  jtab = jtab+1
                                                        +
                                                        880  if(jtab<=itab) then
                                                        +
                                                        881  write(tabdb(jtab),fmt='(A,A8,1X,A42)') 'B ', tabb(i,lun)(7:14), tabb(i,lun)(71:112)
                                                        +
                                                        882  endif
                                                        +
                                                        883  enddo
                                                        +
                                                        884 
                                                        +
                                                        885  return
                                                        +
                                                        886 end subroutine getabdb
                                                        +
                                                        subroutine bort(str)
                                                        Log an error message, then abort the application program.
                                                        Definition: borts.F90:15
                                                        +
                                                        recursive subroutine upftbv(lunit, nemo, val, mxib, ibit, nib)
                                                        Given a Table B mnemonic with flag table units and a corresponding numerical data value,...
                                                        Definition: cftbvs.F90:70
                                                        +
                                                        recursive subroutine ufdump(lunit, luprt)
                                                        Print a verbose listing of the contents of a data subset, including all data values and replicated se...
                                                        Definition: dumpdata.F90:228
                                                        +
                                                        recursive subroutine getabdb(lunit, tabdb, itab, jtab)
                                                        Get Table B and Table D information from the internal DX BUFR tables.
                                                        Definition: dumpdata.F90:829
                                                        +
                                                        recursive subroutine dxdump(lunit, ldxot)
                                                        Print a copy of the DX BUFR table associated with a specified Fortran logical unit.
                                                        Definition: dumpdata.F90:580
                                                        +
                                                        recursive subroutine ufbdmp(lunin, luprt)
                                                        Print a verbose listing of the contents of a data subset, including all data values and replicated se...
                                                        Definition: dumpdata.F90:42
                                                        +
                                                        subroutine nemtbd(lun, itab, nseq, nems, irps, knts)
                                                        Get information about a Table D descriptor from the internal DX BUFR tables.
                                                        Definition: dxtable.F90:1346
                                                        +
                                                        subroutine nemtab(lun, nemo, idn, tab, iret)
                                                        Get information about a descriptor, based on a mnemonic.
                                                        Definition: fxy.F90:432
                                                        +
                                                        subroutine numtbd(lun, idn, nemo, tab, iret)
                                                        Get information about a Table B or Table D descriptor, based on the WMO bit-wise representation of an...
                                                        Definition: fxy.F90:290
                                                        + + +
                                                        integer function ireadmt(lun)
                                                        Check the most recent BUFR message that was read via a call to one of the message-reading subroutines...
                                                        +
                                                        subroutine strsuc(str1, str2, lens)
                                                        Remove leading and trailing blanks from a character string.
                                                        Definition: misc.F90:220
                                                        +
                                                        integer function isize(num)
                                                        Compute the number of characters needed to encode an integer as a string.
                                                        Definition: misc.F90:408
                                                        +
                                                        recursive integer function icbfms(str, lstr)
                                                        Check whether a character string returned from a previous call to subroutine readlc() was encoded as ...
                                                        Definition: missing.F90:56
                                                        +
                                                        integer function ibfms(r8val)
                                                        Check whether a real*8 data value returned from a previous call to any of the NCEPLIBS-bufr values-re...
                                                        Definition: missing.F90:25
                                                        +
                                                        Wrap C NCEPLIBS-bufr functions so they can be called from within the Fortran part of the library.
                                                        Definition: bufrlib.F90:11
                                                        +
                                                        Declare arrays used to store information about the current BUFR message that is in the process of bei...
                                                        +
                                                        integer, dimension(:), allocatable inode
                                                        Table A mnemonic for type of BUFR message.
                                                        +
                                                        integer, dimension(:), allocatable nsub
                                                        Current subset pointer within message.
                                                        +
                                                        Declare arrays used by various subroutines to hold information about Table D sequences.
                                                        +
                                                        integer, dimension(:,:), allocatable krp
                                                        Replication counts corresponding to nem:
                                                        +
                                                        integer, dimension(:,:), allocatable irp
                                                        Replication indicators corresponding to nem:
                                                        +
                                                        character *8, dimension(:,:), allocatable nem
                                                        Child mnemonics within Table D sequences.
                                                        +
                                                        Declare arrays and variables for use with any 2-03-YYY (change reference value) operators present wit...
                                                        +
                                                        integer nnrv
                                                        Number of entries in the jump/link table which contain new reference values (up to a maximum of mxnrv...
                                                        +
                                                        integer, dimension(:), allocatable inodnrv
                                                        Entries within jump/link table which contain new reference values.
                                                        +
                                                        Declare arrays and variables used to store DX BUFR tables internally for multiple file IDs.
                                                        +
                                                        integer, dimension(:), allocatable ntba
                                                        Number of Table A entries for each file ID (up to a maximum of maxtba, whose value is stored in array...
                                                        +
                                                        character *600, dimension(:,:), allocatable tabd
                                                        Table D entries for each file ID.
                                                        +
                                                        character *128, dimension(:,:), allocatable taba
                                                        Table A entries for each file ID.
                                                        +
                                                        integer, dimension(:), allocatable ntbd
                                                        Number of Table D entries for each file ID (up to a maximum of maxtbd, whose value is stored in array...
                                                        +
                                                        integer, dimension(:), allocatable ntbb
                                                        Number of Table B entries for each file ID (up to a maximum of maxtbb, whose value is stored in array...
                                                        +
                                                        character *128, dimension(:,:), allocatable tabb
                                                        Table B entries for each file ID.
                                                        +
                                                        Declare a variable used to indicate whether master code and flag tables should be read.
                                                        +
                                                        character cdmf
                                                        Flag indicating whether to include code and flag table information during reads of master BUFR tables...
                                                        +
                                                        Declare arrays and variables used to store the internal jump/link table.
                                                        +
                                                        integer, dimension(:), allocatable irf
                                                        Reference values corresponding to tag and typ:
                                                        +
                                                        integer, dimension(:), allocatable isc
                                                        Scale factors corresponding to tag and typ:
                                                        +
                                                        integer, dimension(:), allocatable ibt
                                                        Bit widths corresponding to tag and typ:
                                                        +
                                                        character *3, dimension(:), allocatable typ
                                                        Type indicators corresponding to tag:
                                                        +
                                                        integer, dimension(:), allocatable jmpb
                                                        Jump backward indices corresponding to tag and typ:
                                                        +
                                                        character *10, dimension(:), allocatable tag
                                                        Mnemonics in the jump/link table.
                                                        +
                                                        integer, dimension(:), allocatable jump
                                                        Jump forward indices corresponding to tag and typ:
                                                        +
                                                        integer, dimension(:), allocatable itp
                                                        Integer type values corresponding to typ:
                                                        +
                                                        integer, dimension(:), allocatable link
                                                        Link indices corresponding to tag, typ and jmpb:
                                                        +
                                                        Declare arrays used to store data values and associated metadata for the current BUFR data subset in ...
                                                        +
                                                        integer, dimension(:), allocatable nval
                                                        Number of data values in BUFR data subset.
                                                        +
                                                        real *8, dimension(:,:), allocatable, target val
                                                        Data values.
                                                        +
                                                        integer, dimension(:,:), allocatable, target inv
                                                        Inventory pointer which links each data value to its corresponding node in the internal jump/link tab...
                                                        +
                                                        integer, dimension(:,:), allocatable nrfelm
                                                        Referenced data value, for data values which refer to a previous data value in the BUFR data subset v...
                                                        +
                                                        recursive subroutine status(lunit, lun, il, im)
                                                        Check whether a specified Fortran logical unit number is currently connected to the NCEPLIBS-bufr sof...
                                                        +
                                                        recursive subroutine readlc(lunit, chr, str)
                                                        Read a long character string (greater than 8 bytes) from a data subset.
                                                        +
                                                        subroutine x48(iin4, iout8, nval)
                                                        Encode one or more 4-byte integer values as 8-byte integer values.
                                                        Definition: x4884.F90:18
                                                        +
                                                        subroutine x84(iin8, iout4, nval)
                                                        Encode one or more 8-byte integer values as 4-byte integer values.
                                                        Definition: x4884.F90:65
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/dxtable_8F90.html b/previous_versions/v12.1.0/dxtable_8F90.html new file mode 100644 index 000000000..44f1b5937 --- /dev/null +++ b/previous_versions/v12.1.0/dxtable_8F90.html @@ -0,0 +1,1530 @@ + + + + + + + +NCEPLIBS-bufr: dxtable.F90 File Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        dxtable.F90 File Reference
                                                        +
                                                        +
                                                        + +

                                                        Read or write DX BUFR table information. +More...

                                                        + +

                                                        Go to the source code of this file.

                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                                                        +Functions/Subroutines

                                                        subroutine dxinit (lun, ioi)
                                                         Clear out the internal arrays (in module moda_tababd) holding the DX BUFR table, then optionally initialize the table with apriori Table B and D entries. More...
                                                         
                                                        subroutine dxmini (mbay, mbyt, mb4, mba, mbb, mbd)
                                                         Initialize a DX BUFR tables (dictionary) message, writing all the preliminary information into Sections 0, 1, 3, 4. More...
                                                         
                                                        subroutine elemdx (card, lun)
                                                         Decode the scale factor, reference value, bit width and units (i.e., the "elements") from a Table B mnemonic definition card that was previously read from a user-supplied DX BUFR table file in character format by subroutine rdusdx(). More...
                                                         
                                                        integer function idxmsg (mesg)
                                                         Check whether a BUFR message contains DX BUFR tables information that was generated by the NCEPLIBS-bufr software. More...
                                                         
                                                        integer function igetntbi (lun, ctb)
                                                         Get the next available index for storing an entry within a specified internal DX BUFR table. More...
                                                         
                                                        recursive subroutine nemdefs (lunit, nemo, celem, cunit, iret)
                                                         Get the element name and units associated with a Table B descriptor. More...
                                                         
                                                        subroutine nemtba (lun, nemo, mtyp, msbt, inod)
                                                         Get information about a Table A descriptor from the internal DX BUFR tables. More...
                                                         
                                                        subroutine nemtbax (lun, nemo, mtyp, msbt, inod)
                                                         Get information about a Table A descriptor from the internal DX BUFR tables. More...
                                                         
                                                        subroutine nemtbb (lun, itab, unit, iscl, iref, ibit)
                                                         Get information about a Table B descriptor from the internal DX BUFR tables. More...
                                                         
                                                        subroutine nemtbd (lun, itab, nseq, nems, irps, knts)
                                                         Get information about a Table D descriptor from the internal DX BUFR tables. More...
                                                         
                                                        subroutine nenubd (nemo, numb, lun)
                                                         Confirm that a mnemonic and FXY value haven't already been defined. More...
                                                         
                                                        subroutine pktdd (id, lun, idn, iret)
                                                         Store information about a child mnemonic within the internal BUFR Table D. More...
                                                         
                                                        subroutine rdbfdx (lunit, lun)
                                                         Beginning at the current file pointer location within lunit, read a complete DX BUFR table into internal memory arrays in module moda_tababd. More...
                                                         
                                                        subroutine rdusdx (lundx, lun)
                                                         Read and parse a file containing a user-supplied DX BUFR table in character format, then store this information into internal arrays in module moda_tababd. More...
                                                         
                                                        subroutine readdx (lunit, lun, lundx)
                                                         Initialize modules moda_tababd and moda_msgcwd with DX BUFR (dictionary) tables. More...
                                                         
                                                        subroutine rsvfvm (nem1, nem2)
                                                         Process a "following value" mnemonic. More...
                                                         
                                                        subroutine seqsdx (card, lun)
                                                         Decode the Table D sequence information from a mnemonic definition card that was previously read from a user-supplied DX BUFR table in character format by subroutine rdusdx(), then add this information to the already-existing entry for that mnemonic within the internal BUFR Table D arrays in module moda_tababd. More...
                                                         
                                                        subroutine stbfdx (lun, mesg)
                                                         Copy a DX BUFR tables message into the internal memory arrays in module moda_tababd. More...
                                                         
                                                        subroutine stntbi (n, lun, numb, nemo, celsq)
                                                         Store a new entry within internal BUFR Table B or D. More...
                                                         
                                                        subroutine stntbia (n, lun, numb, nemo, celsq)
                                                         Store a new entry within internal BUFR Table A. More...
                                                         
                                                        subroutine uptdd (id, lun, ient, iret)
                                                         Get the WMO bit-wise representation of the FXY value corresponding to a child mnemonic in a Table D sequence. More...
                                                         
                                                        recursive subroutine wrdxtb (lundx, lunot)
                                                         Generate one or more BUFR messages from the DX BUFR tables information associated with a given BUFR file, then write out those messages to the same or possibly a different BUFR file. More...
                                                         
                                                        subroutine writdx (lunit, lun, lundx)
                                                         Write DX BUFR table (dictionary) messages to the beginning of an output BUFR file in lunit. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Read or write DX BUFR table information.

                                                        +
                                                        Author
                                                        Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition in file dxtable.F90.

                                                        +

                                                        Function/Subroutine Documentation

                                                        + +

                                                        ◆ dxinit()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        subroutine dxinit (integer, intent(in) lun,
                                                        integer, intent(in) ioi 
                                                        )
                                                        +
                                                        + +

                                                        Clear out the internal arrays (in module moda_tababd) holding the DX BUFR table, then optionally initialize the table with apriori Table B and D entries.

                                                        +
                                                        Parameters
                                                        + + + +
                                                        lun- File ID
                                                        ioi- Switch:
                                                          +
                                                        • 0 do not initialize the table with apriori Table B and D entries
                                                        • +
                                                        • else initialize the table with apriori Table B and D entries
                                                        • +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 605 of file dxtable.F90.

                                                        + +

                                                        References moda_tababd::idnb, moda_tababd::idnd, moda_tababd::mtab, moda_tababd::ntba, moda_tababd::ntbb, moda_tababd::ntbd, pktdd(), moda_tababd::taba, moda_tababd::tabb, and moda_tababd::tabd.

                                                        + +

                                                        Referenced by cpbfdx(), rdbfdx(), rdmemm(), rdusdx(), readerme(), and reads3().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ dxmini()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        subroutine dxmini (integer, dimension(*), intent(out) mbay,
                                                        integer, intent(out) mbyt,
                                                        integer, intent(out) mb4,
                                                        integer, intent(out) mba,
                                                        integer, intent(out) mbb,
                                                        integer, intent(out) mbd 
                                                        )
                                                        +
                                                        + +

                                                        Initialize a DX BUFR tables (dictionary) message, writing all the preliminary information into Sections 0, 1, 3, 4.

                                                        +

                                                        Subroutine wrdxtb() will be called later to add this information into the message.

                                                        +
                                                        Parameters
                                                        + + + + + + + +
                                                        mbay- BUFR message
                                                        mbyt- Length (in bytes) of mbay
                                                        mb4- Byte number in message of first byte in Section 4
                                                        mba- Byte number in message of fourth byte in Section 4
                                                        mbb- Byte number in message of fifth byte in Section 4
                                                        mbd- Byte number in message of sixth byte in Section 4
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 696 of file dxtable.F90.

                                                        + +

                                                        References bort(), pkb(), and pkc().

                                                        + +

                                                        Referenced by wrdxtb().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ elemdx()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        subroutine elemdx (character*80, intent(in) card,
                                                        integer, intent(in) lun 
                                                        )
                                                        +
                                                        + +

                                                        Decode the scale factor, reference value, bit width and units (i.e., the "elements") from a Table B mnemonic definition card that was previously read from a user-supplied DX BUFR table file in character format by subroutine rdusdx().

                                                        +

                                                        These decoded values are then added to the already-existing entry for that mnemonic within the internal BUFR Table B array tabb(*,lun) in module moda_tababd.

                                                        +
                                                        Parameters
                                                        + + + +
                                                        card- Mnemonic definition card that was read from a user-supplied DX BUFR table
                                                        lun- File ID
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 515 of file dxtable.F90.

                                                        + +

                                                        References bort2(), capit(), jstnum(), nemtab(), and moda_tababd::tabb.

                                                        + +

                                                        Referenced by bufr_c2f_interface::elemdx_c(), and rdusdx().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ idxmsg()

                                                        + +
                                                        +
                                                        + + + + + + + + +
                                                        integer function idxmsg (integer, dimension(*), intent(in) mesg)
                                                        +
                                                        + +

                                                        Check whether a BUFR message contains DX BUFR tables information that was generated by the NCEPLIBS-bufr software.

                                                        +
                                                        Parameters
                                                        + + +
                                                        mesg- BUFR message
                                                        +
                                                        +
                                                        +
                                                        Returns
                                                        idxmsg - Flag indicating whether mesg contains DX BUFR tables information:
                                                          +
                                                        • 0 = No
                                                        • +
                                                        • 1 = Yes
                                                        • +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2009-03-23
                                                        + +

                                                        Definition at line 1122 of file dxtable.F90.

                                                        + +

                                                        References iupbs01().

                                                        + +

                                                        Referenced by datebf(), dumpbf(), mesgbc(), mesgbf(), readerme(), readmg(), and ufbmem().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ igetntbi()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        integer function igetntbi (integer, intent(in) lun,
                                                        character, intent(in) ctb 
                                                        )
                                                        +
                                                        + +

                                                        Get the next available index for storing an entry within a specified internal DX BUFR table.

                                                        +
                                                        Parameters
                                                        + + + +
                                                        lun- File ID
                                                        ctb- Type of internal DX BUFR table for which to return the next available index:
                                                          +
                                                        • 'A' = Table A
                                                        • +
                                                        • 'B' = Table B
                                                        • +
                                                        • 'D' = Table D
                                                        • +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        Returns
                                                        igetntbi - Next available index for storing an entry within ctb
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2009-03-23
                                                        + +

                                                        Definition at line 1152 of file dxtable.F90.

                                                        + +

                                                        References bort(), moda_tababd::ntba, moda_tababd::ntbb, and moda_tababd::ntbd.

                                                        + +

                                                        Referenced by bufr_c2f_interface::igetntbi_c().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ nemdefs()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        recursive subroutine nemdefs (integer, intent(in) lunit,
                                                        character*(*), intent(in) nemo,
                                                        character*(*), intent(out) celem,
                                                        character*(*), intent(out) cunit,
                                                        integer, intent(out) iret 
                                                        )
                                                        +
                                                        + +

                                                        Get the element name and units associated with a Table B descriptor.

                                                        +

                                                        Given a Table B mnemonic defined in the DX BUFR Tables associated with a BUFR file (or in the master BUFR tables, if the file was opened in subroutine openbf() with io = 'SEC3'), this subroutine returns the element name and units associated with that mnemonic.

                                                        +
                                                        Parameters
                                                        + + + + + + +
                                                        lunit- Fortran logical unit number for BUFR file
                                                        nemo- Mnemonic for Table B descriptor
                                                        celem- Element name associated with nemo
                                                        cunit- Units associated with nemo
                                                        iret- Return code
                                                          +
                                                        • 0 normal return
                                                        • +
                                                        • -1 nemo could not be found, or some other error occurred
                                                        • +
                                                        +
                                                        +
                                                        +
                                                        +

                                                        Logical unit lunit should have already been opened for input or output operations via a previous call to subroutine openbf().

                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2014-10-02
                                                        + +

                                                        Definition at line 1445 of file dxtable.F90.

                                                        + +

                                                        References nemtab(), status(), moda_tababd::tabb, x48(), and x84().

                                                        + +

                                                        Referenced by bufr_c2f_interface::nemdefs_c().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ nemtba()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        subroutine nemtba (integer, intent(in) lun,
                                                        character*(*), intent(in) nemo,
                                                        integer, intent(out) mtyp,
                                                        integer, intent(out) msbt,
                                                        integer, intent(out) inod 
                                                        )
                                                        +
                                                        + +

                                                        Get information about a Table A descriptor from the internal DX BUFR tables.

                                                        +

                                                        This subroutine is similar to subroutine nemtbax(), except that it calls subroutine bort() if the descriptor is not found in Table A, whereas nemtbax() will return an inod value of 0 in such cases.

                                                        +
                                                        Parameters
                                                        + + + + + + +
                                                        lun- File ID associated with DX BUFR tables
                                                        nemo- Mnemonic for Table A descriptor
                                                        mtyp- Message type corresponding to nemo
                                                        msbt- Message subtype corresponding to nemo
                                                        inod- Positional index of nemo within internal Table A, if found
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1999-11-18
                                                        + +

                                                        Definition at line 1246 of file dxtable.F90.

                                                        + +

                                                        References bort(), and nemtbax().

                                                        + +

                                                        Referenced by cmsgini(), copymg(), cpymem(), lcmgdf(), msgini(), openmb(), and openmg().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ nemtbax()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        subroutine nemtbax (integer, intent(in) lun,
                                                        character*(*), intent(in) nemo,
                                                        integer, intent(out) mtyp,
                                                        integer, intent(out) msbt,
                                                        integer, intent(out) inod 
                                                        )
                                                        +
                                                        + +

                                                        Get information about a Table A descriptor from the internal DX BUFR tables.

                                                        +

                                                        This subroutine is similar to subroutine nemtba(), except it returns an inod value of 0 if the descriptor is not found in Table A, whereas nemtba() will call subroutine bort() in such cases.

                                                        +
                                                        Parameters
                                                        + + + + + + +
                                                        lun- File ID associated with DX BUFR tables
                                                        nemo- Mnemonic for Table A descriptor
                                                        mtyp- Message type corresponding to nemo
                                                        msbt- Message subtype corresponding to nemo
                                                        inod- Positional index of nemo within internal Table A, if found
                                                          +
                                                        • 0 = nemo not found within internal Table A
                                                        • +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1999-11-18
                                                        + +

                                                        Definition at line 1196 of file dxtable.F90.

                                                        + +

                                                        References bort(), moda_tababd::idna, moda_tababd::mtab, moda_tababd::ntba, and moda_tababd::taba.

                                                        + +

                                                        Referenced by cktaba(), iok2cpy(), nemtba(), and stndrd().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ nemtbb()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        subroutine nemtbb (integer, intent(in) lun,
                                                        integer, intent(in) itab,
                                                        character*24, intent(out) unit,
                                                        integer, intent(out) iscl,
                                                        integer, intent(out) iref,
                                                        integer, intent(out) ibit 
                                                        )
                                                        +
                                                        + +

                                                        Get information about a Table B descriptor from the internal DX BUFR tables.

                                                        +
                                                        Parameters
                                                        + + + + + + + +
                                                        lun- File ID
                                                        itab- Positional index of descriptor within internal Table B
                                                        unit- Units of descriptor
                                                        iscl- Scale factor of descriptor
                                                        iref- Reference value of descriptor
                                                        ibit- Bit width of descriptor
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 1277 of file dxtable.F90.

                                                        + +

                                                        References bort(), moda_tababd::idnb, moda_tababd::ntbb, strnum(), and moda_tababd::tabb.

                                                        + +

                                                        Referenced by chekstab(), bufr_c2f_interface::nemtbb_c(), and tabent().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ nemtbd()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        subroutine nemtbd (integer, intent(in) lun,
                                                        integer, intent(in) itab,
                                                        integer, intent(out) nseq,
                                                        character*8, dimension(*), intent(out) nems,
                                                        integer, dimension(*), intent(out) irps,
                                                        integer, dimension(*), intent(out) knts 
                                                        )
                                                        +
                                                        + +

                                                        Get information about a Table D descriptor from the internal DX BUFR tables.

                                                        +
                                                        Parameters
                                                        + + + + + + + +
                                                        lun- File ID associated with DX BUFR tables
                                                        itab- Positional index of descriptor within internal Table D
                                                        nseq- Number of child mnemonics for descriptor
                                                        nems- Child mnemonics
                                                        irps- Array of values corresponding to nems
                                                          +
                                                        • 5, if corresponding nems value is a Table D mnemonic using 1-bit delayed replication
                                                        • +
                                                        • 4, if corresponding nems value is a Table D mnemonic using 8-bit delayed (stack) replication
                                                        • +
                                                        • 3, if corresponding nems value is a Table D mnemonic using 8-bit delayed replication
                                                        • +
                                                        • 2, if corresponding nems value is a Table D mnemonic using 16-bit delayed replication
                                                        • +
                                                        • 1, if corresponding nems value is a Table D mnemonic using regular (non-delayed) replication
                                                        • +
                                                        • 0, otherwise
                                                        • +
                                                        +
                                                        knts- Array of values corresponding to nems
                                                          +
                                                        • Number of replications, if corresponding nems value is a Table D mnemonic using regular (non-delayed) replication
                                                        • +
                                                        • 0, otherwise
                                                        • +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        Remarks
                                                          +
                                                        • This subroutine does not recursively resolve any child mnemonics which may themselves be Table D mnemonics. Instead, this subroutine only returns the list of mnemonics which are direct children of the descriptor referenced by itab. This information should have already been stored into internal arrays via previous calls to subroutine pktdd().
                                                        • +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 1345 of file dxtable.F90.

                                                        + +

                                                        References bort(), moda_tababd::idnd, moda_tababd::ntbd, numtab(), rsvfvm(), moda_tababd::tabd, and uptdd().

                                                        + +

                                                        Referenced by chekstab(), dxdump(), getabdb(), and tabsub().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ nenubd()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        subroutine nenubd (character, intent(in) nemo,
                                                        character, intent(in) numb,
                                                        integer, intent(in) lun 
                                                        )
                                                        +
                                                        + +

                                                        Confirm that a mnemonic and FXY value haven't already been defined.

                                                        +

                                                        Check a mnemonic and FXY value pair that were read from a user-supplied BUFR DX dictionary table in character format, in order to confirm that neither value has already been defined within internal BUFR table B or D (in module moda_tababd) for the given lun. If either value has already been defined for this lun, then an appropriate call is made to subroutine bort().

                                                        +
                                                        Parameters
                                                        + + + + +
                                                        nemo- Mnemonic
                                                        numb- FXY value associated with nemo
                                                        lun- File ID
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 1513 of file dxtable.F90.

                                                        + +

                                                        References bort(), moda_tababd::ntbb, moda_tababd::ntbd, moda_tababd::tabb, and moda_tababd::tabd.

                                                        + +

                                                        Referenced by stbfdx(), and stntbi().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ pktdd()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        subroutine pktdd (integer, intent(in) id,
                                                        integer, intent(in) lun,
                                                        integer, intent(in) idn,
                                                        integer, intent(out) iret 
                                                        )
                                                        +
                                                        + +

                                                        Store information about a child mnemonic within the internal BUFR Table D.

                                                        +

                                                        Store information about a child mnemonic within the internal BUFR table D entry (in module moda_tababd) for a table D sequence (parent) mnemonic when the child mnemonic is contained within the sequence represented by the parent mnemonic (as determined within seqsdx()).

                                                        +
                                                        Parameters
                                                        + + + + + +
                                                        id- Positional index of parent mnemonic within internal BUFR table D array tabd(*,*)
                                                        lun- File ID
                                                        idn- WMO bit-wise representation of FXY value corresponding to child mnemonic
                                                          +
                                                        • 0 = Delete all information about all child mnemonics from within tabd(id,lun)
                                                        • +
                                                        +
                                                        iret- Total number of child mnemonics stored thus far (including idn) for the parent mnemonic given by tabd(id,lun)
                                                          +
                                                        • 0 = Information was cleared from tabd(id,lun) because input idn value was 0
                                                        • +
                                                        • -1 = Bad counter value or maximum number of child mnemonics already stored for this parent mnemonic
                                                        • +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 1665 of file dxtable.F90.

                                                        + +

                                                        References errwrt(), ipkm(), and moda_tababd::tabd.

                                                        + +

                                                        Referenced by dxinit(), bufr_c2f_interface::pktdd_c(), seqsdx(), and stbfdx().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ rdbfdx()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        subroutine rdbfdx (integer, intent(in) lunit,
                                                        integer, intent(in) lun 
                                                        )
                                                        +
                                                        + +

                                                        Beginning at the current file pointer location within lunit, read a complete DX BUFR table into internal memory arrays in module moda_tababd.

                                                        +

                                                        A DX BUFR table consists of one or more consecutive DX BUFR messages.

                                                        +

                                                        This subroutine performs a function similar to rdusdx(), except that rdusdx() reads from a file containing a user-supplied DX BUFR table in character format. See rdusdx() for a description of the arrays that are filled in module moda_tababd.

                                                        +

                                                        This subroutine performs a function similar to cpdxmm(), except that cpdxmm() writes to the internal memory arrays in module moda_msgmem, for use with a file of BUFR messages that is being read and stored into internal memory via subroutine ufbmem().

                                                        +
                                                        Parameters
                                                        + + + +
                                                        lunit- Fortran logical unit number for BUFR file
                                                        lun- File ID associated with lunit
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 120 of file dxtable.F90.

                                                        + +

                                                        References bort(), dxinit(), errwrt(), makestab(), moda_mgwa::mgwa, rdmsgw(), and stbfdx().

                                                        + +

                                                        Referenced by posapx(), readdx(), and readmg().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ rdusdx()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        subroutine rdusdx (integer, intent(in) lundx,
                                                        integer, intent(in) lun 
                                                        )
                                                        +
                                                        + +

                                                        Read and parse a file containing a user-supplied DX BUFR table in character format, then store this information into internal arrays in module moda_tababd.

                                                        +

                                                        This subroutine performs a function similar to subroutine rdbfdx(), except that rdbfdx() reads the DX BUFR table directly from messages at the beginning of an input BUFR file.

                                                        +
                                                        Parameters
                                                        + + + +
                                                        lundx- Fortran logical unit number for user-supplied DX BUFR table in character format
                                                        lun- File ID
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 196 of file dxtable.F90.

                                                        + +

                                                        References bort2(), dxinit(), elemdx(), moda_tababd::idna, makestab(), seqsdx(), stntbi(), and stntbia().

                                                        + +

                                                        Referenced by cktaba(), and readdx().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ readdx()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        subroutine readdx (integer, intent(in) lunit,
                                                        integer, intent(in) lun,
                                                        integer, intent(in) lundx 
                                                        )
                                                        +
                                                        + +

                                                        Initialize modules moda_tababd and moda_msgcwd with DX BUFR (dictionary) tables.

                                                        +

                                                        These tables are needed to read, write, initialize or append a BUFR file.

                                                        +

                                                        The modules are initialized from either:

                                                          +
                                                        1. an external, user-supplied BUFR dictionary table file (i.e., a BUFR mnemonic table), or
                                                        2. +
                                                        3. the BUFR file indicated by lunit, or
                                                        4. +
                                                        5. another currently opened BUFR file.
                                                        6. +
                                                        +

                                                        If the modules are initialized by the BUFR file indicated by lunit, then it must have been opened for input processing and positioned at a dictionary table message somewhere in the file.

                                                        +

                                                        Once initialzed, the dictionary arrays are associated with the BUFR file indicated by lunit, until the file is closed with closbf().

                                                        +
                                                        Parameters
                                                        + + + + +
                                                        lunit- Fortran logical unit number for BUFR file being read, written, initialized or appended
                                                        lun- file ID associated with LUNIT
                                                        lundx- Fortran logical unit number containing dictionary table information to be used in reading/writing from/to lunit (depending on the case); may be set equal to lunit if dictionary table information is already embedded in lunit (but only if lunit is being read)
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 28 of file dxtable.F90.

                                                        + +

                                                        References bort(), cpbfdx(), errwrt(), makestab(), rdbfdx(), rdusdx(), and status().

                                                        + +

                                                        Referenced by openbf(), and writdx().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ rsvfvm()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        subroutine rsvfvm (character*8, intent(inout) nem1,
                                                        character*8, intent(in) nem2 
                                                        )
                                                        +
                                                        + +

                                                        Process a "following value" mnemonic.

                                                        +

                                                        Step through the "following value" mnemonic nem1 and, for each "." character encountered (except for the initial one), overwrite it with the next corresponding character from nem2.

                                                        +

                                                        For example:

                                                        +     if, on input:    nem1 = ".DTH...."
                                                        +                      nem2 = "MXTM    "
                                                        +     then, on output: nem1 = ".DTHMXTM"
                                                        + 
                                                        Parameters
                                                        + + + +
                                                        nem1- Mnemonic
                                                          +
                                                        • on input, a "following value" mnemonic
                                                        • +
                                                        • on output, a copy of input nem1 with all "." characters (except the initial one) overwritten with corresponding characters from nem2
                                                        • +
                                                        +
                                                        nem2- Mnemonic immediately following nem1 within DX BUFR table
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 1794 of file dxtable.F90.

                                                        + +

                                                        Referenced by nemtbd(), and seqsdx().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ seqsdx()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        subroutine seqsdx (character*80, intent(in) card,
                                                        integer, intent(in) lun 
                                                        )
                                                        +
                                                        + +

                                                        Decode the Table D sequence information from a mnemonic definition card that was previously read from a user-supplied DX BUFR table in character format by subroutine rdusdx(), then add this information to the already-existing entry for that mnemonic within the internal BUFR Table D arrays in module moda_tababd.

                                                        +
                                                        Parameters
                                                        + + + +
                                                        card- Mnemonic definition card that was read from a user-supplied DX BUFR table
                                                        lun- File ID
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 332 of file dxtable.F90.

                                                        + +

                                                        References bort2(), nemtab(), numtab(), parstr(), pktdd(), rsvfvm(), and strnum().

                                                        + +

                                                        Referenced by rdusdx().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ stbfdx()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        subroutine stbfdx (integer, intent(in) lun,
                                                        integer, dimension(*), intent(in) mesg 
                                                        )
                                                        +
                                                        + +

                                                        Copy a DX BUFR tables message into the internal memory arrays in module moda_tababd.

                                                        +
                                                        Parameters
                                                        + + + +
                                                        lun- File ID
                                                        mesg- DX BUFR tables message
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2009-03-23
                                                        + +

                                                        Definition at line 989 of file dxtable.F90.

                                                        + +

                                                        References bort(), capit(), getlens(), moda_tababd::idnb, moda_tababd::idnd, nenubd(), moda_tababd::ntbb, moda_tababd::ntbd, pktdd(), stntbia(), moda_tababd::taba, moda_tababd::tabb, moda_tababd::tabd, and upc().

                                                        + +

                                                        Referenced by rdbfdx(), rdmemm(), and readerme().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ stntbi()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        subroutine stntbi (integer, intent(in) n,
                                                        integer, intent(in) lun,
                                                        character*(*), intent(in) numb,
                                                        character*(*), intent(in) nemo,
                                                        character*(*), intent(in) celsq 
                                                        )
                                                        +
                                                        + +

                                                        Store a new entry within internal BUFR Table B or D.

                                                        +
                                                        Parameters
                                                        + + + + + + +
                                                        n- Storage index into internal Table B or D
                                                        lun- File ID
                                                        numb- FXY number for new Table B or D entry
                                                        nemo- Mnemonic corresponding to numb
                                                        celsq- Element or sequence description corresponding to numb
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        Ator
                                                        +
                                                        Date
                                                        2009-03-23
                                                        + +

                                                        Definition at line 1620 of file dxtable.F90.

                                                        + +

                                                        References moda_tababd::idnb, moda_tababd::idnd, nenubd(), moda_tababd::ntbb, moda_tababd::ntbd, moda_tababd::tabb, and moda_tababd::tabd.

                                                        + +

                                                        Referenced by rdusdx(), and bufr_c2f_interface::stntbi_c().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ stntbia()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        subroutine stntbia (integer, intent(in) n,
                                                        integer, intent(in) lun,
                                                        character*(*), intent(in) numb,
                                                        character*(*), intent(in) nemo,
                                                        character*(*), intent(in) celsq 
                                                        )
                                                        +
                                                        + +

                                                        Store a new entry within internal BUFR Table A.

                                                        +
                                                        Parameters
                                                        + + + + + + +
                                                        n- Storage index into internal Table A
                                                        lun- File ID
                                                        numb- FXY number for new Table A entry
                                                        nemo- Mnemonic corresponding to numb
                                                        celsq- Sequence description corresponding to numb
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        Ator
                                                        +
                                                        Date
                                                        2009-03-23
                                                        + +

                                                        Definition at line 1559 of file dxtable.F90.

                                                        + +

                                                        References bort(), moda_tababd::idna, moda_tababd::ntba, and moda_tababd::taba.

                                                        + +

                                                        Referenced by rdusdx(), reads3(), and stbfdx().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ uptdd()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        subroutine uptdd (integer, intent(in) id,
                                                        integer, intent(in) lun,
                                                        integer, intent(in) ient,
                                                        integer, intent(out) iret 
                                                        )
                                                        +
                                                        + +

                                                        Get the WMO bit-wise representation of the FXY value corresponding to a child mnemonic in a Table D sequence.

                                                        +

                                                        For a description of the WMO bit-wise representation of the FXY value, see ifxy().

                                                        +
                                                        Parameters
                                                        + + + + + +
                                                        id- Positional index of parent mnemonic within internal BUFR Table D array tabd
                                                        lun- File ID
                                                        ient- Ordinal indicator of child mnemonic to return from within tabd(id,lun) sequence
                                                          +
                                                        • 0 = Return a count of the total number of child mnemonics within the sequence
                                                        • +
                                                        +
                                                        iret- Return value:
                                                          +
                                                        • WMO bit-wise representation of FXY value corresponding to (ient)th child mnemonic, if input ient was > 0
                                                        • +
                                                        • Total number of child mnemonics, if input ient was 0
                                                        • +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 1740 of file dxtable.F90.

                                                        + +

                                                        References bort(), and moda_tababd::tabd.

                                                        + +

                                                        Referenced by nemtbd(), and bufr_c2f_interface::uptdd_c().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ wrdxtb()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        recursive subroutine wrdxtb (integer, intent(in) lundx,
                                                        integer, intent(in) lunot 
                                                        )
                                                        +
                                                        + +

                                                        Generate one or more BUFR messages from the DX BUFR tables information associated with a given BUFR file, then write out those messages to the same or possibly a different BUFR file.

                                                        +

                                                        Logical units lundx and lunot should have already been opened via previous calls to subroutine openbf(), and in particular logical unit lunot must have been opened for output operations. lundx and lunot may be the same if it is desired to append to lunot with DX BUFR messages generated from its own internal tables.

                                                        +
                                                        Parameters
                                                        + + + +
                                                        lundx- Fortran logical unit number associated with DX BUFR table information to be written out
                                                        lunot- Fortran logical unit number of BUFR file to which messages are to be written
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2009-03-23
                                                        + +

                                                        Definition at line 849 of file dxtable.F90.

                                                        + +

                                                        References adn30(), bort(), cpbfdx(), dxmini(), getlens(), iupb(), iupm(), moda_mgwa::mgwa, msgfull(), msgwrt(), moda_tababd::ntba, moda_tababd::ntbb, moda_tababd::ntbd, pkb(), pkc(), status(), moda_tababd::taba, moda_tababd::tabb, moda_tababd::tabd, and x84().

                                                        + +

                                                        Referenced by apxdx(), makestab(), and writdx().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ writdx()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        subroutine writdx (integer, intent(in) lunit,
                                                        integer, intent(in) lun,
                                                        integer, intent(in) lundx 
                                                        )
                                                        +
                                                        + +

                                                        Write DX BUFR table (dictionary) messages to the beginning of an output BUFR file in lunit.

                                                        +

                                                        The table messages are read from arrays in internal memory (module moda_tababd). An initial call to subroutine readdx() generates these internal arrays.

                                                        +
                                                        Parameters
                                                        + + + + +
                                                        lunit- Fortran logical unit number for BUFR file being written.
                                                        lun- File ID of open BUFR file.
                                                        lundx- Fortran logical unit number containing dictionary table information to be used (by readdx()) to create internal tables written to lunit; if set equal to lunit, this subroutine calls bort().
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 811 of file dxtable.F90.

                                                        + +

                                                        References bort(), readdx(), and wrdxtb().

                                                        + +

                                                        Referenced by openbf().

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/dxtable_8F90.js b/previous_versions/v12.1.0/dxtable_8F90.js new file mode 100644 index 000000000..a0bc82ec5 --- /dev/null +++ b/previous_versions/v12.1.0/dxtable_8F90.js @@ -0,0 +1,26 @@ +var dxtable_8F90 = +[ + [ "dxinit", "dxtable_8F90.html#ae1a2a7cf7f60579fa9e9399a25f4930b", null ], + [ "dxmini", "dxtable_8F90.html#a30167b1b9b52074ad5db11d45665d551", null ], + [ "elemdx", "dxtable_8F90.html#a0669d7561ae99961babcdb2022073052", null ], + [ "idxmsg", "dxtable_8F90.html#aea259cd399ca3121a66475a2ea73ec65", null ], + [ "igetntbi", "dxtable_8F90.html#ad7abde76f89f036b69d944c260fbe2d4", null ], + [ "nemdefs", "dxtable_8F90.html#ad6352a1c1fdec4ba0adb0173781e4542", null ], + [ "nemtba", "dxtable_8F90.html#a36f644b9119ebf87f957bfe023e5cc45", null ], + [ "nemtbax", "dxtable_8F90.html#a8ea33660d62d74dee92cf7bf9541c1cd", null ], + [ "nemtbb", "dxtable_8F90.html#a21fa5817ff8a6f471dca950fbaa693ba", null ], + [ "nemtbd", "dxtable_8F90.html#aa0b7269b3a7df645e6917bfd4ba72b32", null ], + [ "nenubd", "dxtable_8F90.html#ae672eaf27f17dc904b894f347d89c233", null ], + [ "pktdd", "dxtable_8F90.html#aae6295132b2eb71f969417879832ed47", null ], + [ "rdbfdx", "dxtable_8F90.html#aef89e4de1387c4bcdeda0a64e8c6d308", null ], + [ "rdusdx", "dxtable_8F90.html#a3c5a3be625c365b782f36c0cb772ae35", null ], + [ "readdx", "dxtable_8F90.html#adc51a45a8d628c17cd4d749733df506b", null ], + [ "rsvfvm", "dxtable_8F90.html#a437a4acba1f5e0b3173da0cafc101e9c", null ], + [ "seqsdx", "dxtable_8F90.html#a591d4a2752e5c69299905fb910f7fcc7", null ], + [ "stbfdx", "dxtable_8F90.html#ac59d8db430cbb1cbe7ced7ebc386ef4a", null ], + [ "stntbi", "dxtable_8F90.html#aaa433680a14847a3fd64a6fa1b877211", null ], + [ "stntbia", "dxtable_8F90.html#ac0b4a9cb7d5c89dfe084698b9bb4042e", null ], + [ "uptdd", "dxtable_8F90.html#aeec2544ee0e0d8587c6687cda7023e54", null ], + [ "wrdxtb", "dxtable_8F90.html#a81ea6d2408950b5728790bc8f8c80261", null ], + [ "writdx", "dxtable_8F90.html#ac8141d6ac66d21c3fd2be3251a6a40c3", null ] +]; \ No newline at end of file diff --git a/previous_versions/v12.1.0/dxtable_8F90_source.html b/previous_versions/v12.1.0/dxtable_8F90_source.html new file mode 100644 index 000000000..8b7515df5 --- /dev/null +++ b/previous_versions/v12.1.0/dxtable_8F90_source.html @@ -0,0 +1,1673 @@ + + + + + + + +NCEPLIBS-bufr: dxtable.F90 Source File + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        +
                                                        dxtable.F90
                                                        +
                                                        +
                                                        +Go to the documentation of this file.
                                                        1 
                                                        +
                                                        5 
                                                        +
                                                        28 subroutine readdx(lunit,lun,lundx)
                                                        +
                                                        29 
                                                        +
                                                        30  implicit none
                                                        +
                                                        31 
                                                        +
                                                        32  integer, intent(in) :: lunit, lun, lundx
                                                        +
                                                        33  integer iprt, lud, ildx, imdx
                                                        +
                                                        34 
                                                        +
                                                        35  character*128 errstr
                                                        +
                                                        36 
                                                        +
                                                        37  common /quiet/ iprt
                                                        +
                                                        38 
                                                        +
                                                        39  ! Get the status of unit lundx
                                                        +
                                                        40 
                                                        +
                                                        41  call status(lundx,lud,ildx,imdx)
                                                        +
                                                        42 
                                                        +
                                                        43  ! Read a dictionary table from the indicated source
                                                        +
                                                        44 
                                                        +
                                                        45  if (lunit==lundx) then
                                                        +
                                                        46  ! Source is input BUFR file in lunit
                                                        +
                                                        47  if(iprt>=2) then
                                                        +
                                                        48  call errwrt('++++++++++++BUFR ARCHIVE LIBRARY+++++++++++++++')
                                                        +
                                                        49  write ( unit=errstr, fmt='(A,A,I3,A)' ) 'BUFRLIB: READDX - READING BUFR DICTIONARY TABLE FROM ', &
                                                        +
                                                        50  'INPUT BUFR FILE IN UNIT ', lundx, ' INTO INTERNAL ARRAYS'
                                                        +
                                                        51  call errwrt(errstr)
                                                        +
                                                        52  call errwrt('++++++++++++BUFR ARCHIVE LIBRARY+++++++++++++++')
                                                        +
                                                        53  call errwrt(' ')
                                                        +
                                                        54  endif
                                                        +
                                                        55  rewind lunit
                                                        +
                                                        56  call rdbfdx(lunit,lun)
                                                        +
                                                        57  elseif(ildx==-1) then
                                                        +
                                                        58  ! Source is input BUFR file in lundx; BUFR file in lunit may be input or output
                                                        +
                                                        59  if(iprt>=2) then
                                                        +
                                                        60  call errwrt('++++++++++++BUFR ARCHIVE LIBRARY+++++++++++++++')
                                                        +
                                                        61  write ( unit=errstr, fmt='(A,A,I3,A,A,I3)' ) 'BUFRLIB: READDX - COPYING BUFR DCTY TBL FROM INTERNAL ', &
                                                        +
                                                        62  'ARRAYS ASSOC. W/ INPUT UNIT ', lundx, ' TO THOSE ASSOC. W/ UNIT ', lunit
                                                        +
                                                        63  call errwrt(errstr)
                                                        +
                                                        64  call errwrt('++++++++++++BUFR ARCHIVE LIBRARY+++++++++++++++')
                                                        +
                                                        65  call errwrt(' ')
                                                        +
                                                        66  endif
                                                        +
                                                        67  call cpbfdx(lud,lun)
                                                        +
                                                        68  call makestab
                                                        +
                                                        69  elseif(ildx==1) then
                                                        +
                                                        70  ! Source is output BUFR file in lundx; BUFR file in lunit may be input or output
                                                        +
                                                        71  if(iprt>=2) then
                                                        +
                                                        72  call errwrt('++++++++++++BUFR ARCHIVE LIBRARY+++++++++++++++')
                                                        +
                                                        73  write ( unit=errstr, fmt='(A,A,I3,A,A,I3)' ) 'BUFRLIB: READDX - COPYING BUFR DCTY TBL FROM INTERNAL ', &
                                                        +
                                                        74  'ARRAYS ASSOC. W/ OUTPUT UNIT ', lundx, ' TO THOSE ASSOC. W/ UNIT ', lunit
                                                        +
                                                        75  call errwrt(errstr)
                                                        +
                                                        76  call errwrt('++++++++++++BUFR ARCHIVE LIBRARY+++++++++++++++')
                                                        +
                                                        77  call errwrt(' ')
                                                        +
                                                        78  endif
                                                        +
                                                        79  call cpbfdx(lud,lun)
                                                        +
                                                        80  call makestab
                                                        +
                                                        81  elseif(ildx==0) then
                                                        +
                                                        82  ! Source is user-supplied character table in lundx; BUFR file in lunit may be input or output
                                                        +
                                                        83  if(iprt>=2) then
                                                        +
                                                        84  call errwrt('++++++++++++BUFR ARCHIVE LIBRARY+++++++++++++++')
                                                        +
                                                        85  write ( unit=errstr, fmt='(A,A,I3,A)' ) 'BUFRLIB: READDX - READING BUFR DICTIONARY TABLE FROM ', &
                                                        +
                                                        86  'USER-SUPPLIED TEXT FILE IN UNIT ', lundx, ' INTO INTERNAL ARRAYS'
                                                        +
                                                        87  call errwrt(errstr)
                                                        +
                                                        88  call errwrt('++++++++++++BUFR ARCHIVE LIBRARY+++++++++++++++')
                                                        +
                                                        89  call errwrt(' ')
                                                        +
                                                        90  endif
                                                        +
                                                        91  rewind lundx
                                                        +
                                                        92  call rdusdx(lundx,lun)
                                                        +
                                                        93  else
                                                        +
                                                        94  call bort('BUFRLIB: READDX - CANNOT DETERMINE SOURCE OF INPUT DICTIONARY TABLE')
                                                        +
                                                        95  endif
                                                        +
                                                        96 
                                                        +
                                                        97  return
                                                        +
                                                        98 end subroutine readdx
                                                        +
                                                        99 
                                                        +
                                                        120 subroutine rdbfdx(lunit,lun)
                                                        +
                                                        121 
                                                        +
                                                        122  use bufrlib
                                                        +
                                                        123 
                                                        +
                                                        124  use moda_mgwa
                                                        +
                                                        125 
                                                        +
                                                        126  implicit none
                                                        +
                                                        127 
                                                        +
                                                        128  integer, intent(in) :: lunit, lun
                                                        +
                                                        129  integer iprt, ict, ier, idxmsg, iupbs3
                                                        +
                                                        130 
                                                        +
                                                        131  character*128 errstr
                                                        +
                                                        132 
                                                        +
                                                        133  logical done
                                                        +
                                                        134 
                                                        +
                                                        135  common /quiet/ iprt
                                                        +
                                                        136 
                                                        +
                                                        137  call dxinit(lun,0)
                                                        +
                                                        138 
                                                        +
                                                        139  ict = 0
                                                        +
                                                        140  done = .false.
                                                        +
                                                        141 
                                                        +
                                                        142  ! Read a complete dictionary table from lunit, as a set of one or more DX dictionary messages.
                                                        +
                                                        143 
                                                        +
                                                        144  do while ( .not. done )
                                                        +
                                                        145  call rdmsgw ( lunit, mgwa, ier )
                                                        +
                                                        146  if ( ier == -1 ) then
                                                        +
                                                        147  ! Don't abort for an end-of-file condition, since it may be possible for a file to end with dictionary messages.
                                                        +
                                                        148  ! Instead, backspace the file pointer and let the calling routine diagnose the end-of-file condition and deal with
                                                        +
                                                        149  ! it as it sees fit.
                                                        +
                                                        150  call backbufr_c(lun)
                                                        +
                                                        151  done = .true.
                                                        +
                                                        152  else if ( ier == -2 ) then
                                                        +
                                                        153  call bort('BUFRLIB: RDBFDX - ERROR READING A BUFR DICTIONARY MESSAGE')
                                                        +
                                                        154  else if ( idxmsg(mgwa) /= 1 ) then
                                                        +
                                                        155  ! This is a non-DX dictionary message. Assume we've reached the end of the dictionary table, and backspace lunit
                                                        +
                                                        156  ! so that the next read (e.g. in the calling routine) will get this same message.
                                                        +
                                                        157  call backbufr_c(lun)
                                                        +
                                                        158  done = .true.
                                                        +
                                                        159  else if ( iupbs3(mgwa,'NSUB') == 0 ) then
                                                        +
                                                        160  ! This is a DX dictionary message, but it doesn't contain any actual dictionary information. Assume we've reached
                                                        +
                                                        161  ! the end of the dictionary table.
                                                        +
                                                        162  done = .true.
                                                        +
                                                        163  else
                                                        +
                                                        164  ! Store this message into module @ref moda_tababd.
                                                        +
                                                        165  ict = ict + 1
                                                        +
                                                        166  call stbfdx(lun,mgwa)
                                                        +
                                                        167  endif
                                                        +
                                                        168  enddo
                                                        +
                                                        169 
                                                        +
                                                        170  if ( iprt >= 2 ) then
                                                        +
                                                        171  call errwrt('+++++++++++++++++++++++++++++++++++++++++++++++++')
                                                        +
                                                        172  write ( unit=errstr, fmt='(A,I3,A)' ) 'BUFRLIB: RDBFDX - STORED NEW DX TABLE CONSISTING OF (', ict, ') MESSAGES;'
                                                        +
                                                        173  call errwrt(errstr)
                                                        +
                                                        174  errstr = 'WILL APPLY THIS TABLE TO ALL SUBSEQUENT DATA IN FILE UNTIL NEXT DX TABLE IS FOUND'
                                                        +
                                                        175  call errwrt(errstr)
                                                        +
                                                        176  call errwrt('+++++++++++++++++++++++++++++++++++++++++++++++++')
                                                        +
                                                        177  call errwrt(' ')
                                                        +
                                                        178  endif
                                                        +
                                                        179 
                                                        +
                                                        180  call makestab
                                                        +
                                                        181 
                                                        +
                                                        182  return
                                                        +
                                                        183 end subroutine rdbfdx
                                                        +
                                                        184 
                                                        +
                                                        196 subroutine rdusdx(lundx,lun)
                                                        +
                                                        197 
                                                        +
                                                        198  use moda_tababd
                                                        +
                                                        199 
                                                        +
                                                        200  implicit none
                                                        +
                                                        201 
                                                        +
                                                        202  integer, intent(in) :: lundx, lun
                                                        +
                                                        203  integer ios, iret, n, numbck, nemock, igetntbi
                                                        +
                                                        204 
                                                        +
                                                        205  character*128 bort_str1
                                                        +
                                                        206  character*156 bort_str2
                                                        +
                                                        207  character*80 card
                                                        +
                                                        208  character*8 nemo
                                                        +
                                                        209  character*6 numb, nmb2
                                                        +
                                                        210 
                                                        +
                                                        211  ! Initialize the dictionary table control word partition arrays with apriori Table B and D entries
                                                        +
                                                        212 
                                                        +
                                                        213  call dxinit(lun,1)
                                                        +
                                                        214  rewind lundx
                                                        +
                                                        215 
                                                        +
                                                        216  ! Read user cards until there are no more
                                                        +
                                                        217 
                                                        +
                                                        218  do while (.true.)
                                                        +
                                                        219 
                                                        +
                                                        220  read(lundx, '(A80)', iostat = ios) card
                                                        +
                                                        221  if (ios/=0) then
                                                        +
                                                        222  call makestab
                                                        +
                                                        223  return
                                                        +
                                                        224  endif
                                                        +
                                                        225 
                                                        +
                                                        226  if(card(1: 1)== '*') cycle ! comment line
                                                        +
                                                        227  if(card(3:10)=='--------') cycle ! separation line
                                                        +
                                                        228  if(card(3:10)==' ') cycle ! blank line
                                                        +
                                                        229  if(card(3:10)=='MNEMONIC') cycle ! header line
                                                        +
                                                        230  if(card(3:10)=='TABLE D') cycle ! header line
                                                        +
                                                        231  if(card(3:10)=='TABLE B') cycle ! header line
                                                        +
                                                        232 
                                                        +
                                                        233  if(card(12:12)=='|' .and. card(21:21)=='|') then
                                                        +
                                                        234 
                                                        +
                                                        235  ! Parse a descriptor definition card
                                                        +
                                                        236  nemo = card(3:10) ! nemo is the (up to) 8-character mnemonic
                                                        +
                                                        237  iret=nemock(nemo)
                                                        +
                                                        238  if(iret==-2) then
                                                        +
                                                        239  write(bort_str1,'("BUFRLIB: RDUSDX - CARD READ IN IS: ",A)') card
                                                        +
                                                        240  write(bort_str2,'(18X,"MNEMONIC ",A," IN USER DICTIONARY HAS INVALID CHARACTERS")') nemo
                                                        +
                                                        241  call bort2(bort_str1,bort_str2)
                                                        +
                                                        242  endif
                                                        +
                                                        243  numb = card(14:19) ! numb is the 6-character FXY value corresponding to nemo
                                                        +
                                                        244  nmb2 = numb
                                                        +
                                                        245  if(nmb2(1:1)=='A') nmb2(1:1) = '3'
                                                        +
                                                        246  iret=numbck(nmb2)
                                                        +
                                                        247  if(iret==-1) then
                                                        +
                                                        248  write(bort_str1,'("BUFRLIB: RDUSDX - CARD READ IN IS: ",A)') card
                                                        +
                                                        249  write(bort_str2,'(18X,"DESCRIPTOR NUMBER ",A," IN USER '// &
                                                        +
                                                        250  'DICTIONARY HAS AN INVALID FIRST CHARACTER (F VALUE) - MUST BE A, 0 OR 3")') numb
                                                        +
                                                        251  call bort2(bort_str1,bort_str2)
                                                        +
                                                        252  endif
                                                        +
                                                        253  if(iret==-2) then
                                                        +
                                                        254  write(bort_str1,'("BUFRLIB: RDUSDX - CARD READ IN IS: ",A)') card
                                                        +
                                                        255  write(bort_str2,'(18X,"DESCRIPTOR NUMBER ",A," IN USER '// &
                                                        +
                                                        256  'DICTIONARY HAS NON-NUMERIC VALUES IN CHARACTERS 2-6 (X AND Y VALUES)")') numb
                                                        +
                                                        257  call bort2(bort_str1,bort_str2)
                                                        +
                                                        258  endif
                                                        +
                                                        259  if(iret==-3) then
                                                        +
                                                        260  write(bort_str1,'("BUFRLIB: RDUSDX - CARD READ IN IS: ",A)') card
                                                        +
                                                        261  write(bort_str2,'(18X,"DESCRIPTOR NUMBER ",A," IN USER '// &
                                                        +
                                                        262  'DICTIONARY HAS INVALID NUMBER IN CHARACTERS 2-3 (X VALUE) - MUST BE BETWEEN 00 AND 63")') numb
                                                        +
                                                        263  call bort2(bort_str1,bort_str2)
                                                        +
                                                        264  endif
                                                        +
                                                        265  if(iret==-4) then
                                                        +
                                                        266  write(bort_str1,'("BUFRLIB: RDUSDX - CARD READ IN IS: ",A)') card
                                                        +
                                                        267  write(bort_str2,'(18X,"DESCRIPTOR NUMBER ",A," IN USER '// &
                                                        +
                                                        268  'DICTIONARY HAS INVALID NUMBER IN CHARACTERS 4-6 (Y VALUE) - MUST BE BETWEEN 000 AND 255")') numb
                                                        +
                                                        269  call bort2(bort_str1,bort_str2)
                                                        +
                                                        270  endif
                                                        +
                                                        271 
                                                        +
                                                        272  if(numb(1:1)=='A') then
                                                        +
                                                        273  ! Table A descriptor found
                                                        +
                                                        274  n = igetntbi( lun, 'A' )
                                                        +
                                                        275  call stntbia ( n, lun, numb, nemo, card(23:) )
                                                        +
                                                        276  if ( idna(n,lun,1) == 11 ) then
                                                        +
                                                        277  write(bort_str1,'("BUFRLIB: RDUSDX - CARD READ IN IS: ",A)') card
                                                        +
                                                        278  write(bort_str2,'(18X,"USER-DEFINED MESSAGE TYPE ""011"" IS RESERVED FOR DICTIONARY MESSAGES")')
                                                        +
                                                        279  call bort2(bort_str1,bort_str2)
                                                        +
                                                        280  endif
                                                        +
                                                        281  ! Replace "A" with "3" so Table D descriptor will be found in card as well (see below).
                                                        +
                                                        282  numb(1:1) = '3'
                                                        +
                                                        283  endif
                                                        +
                                                        284 
                                                        +
                                                        285  if(numb(1:1)=='0') then
                                                        +
                                                        286  ! Table B descriptor found
                                                        +
                                                        287  call stntbi ( igetntbi(lun,'B'), lun, numb, nemo, card(23:) )
                                                        +
                                                        288  cycle
                                                        +
                                                        289  endif
                                                        +
                                                        290 
                                                        +
                                                        291  if(numb(1:1)=='3') then
                                                        +
                                                        292  ! Table D descriptor found
                                                        +
                                                        293  call stntbi ( igetntbi(lun,'D'), lun, numb, nemo, card(23:) )
                                                        +
                                                        294  cycle
                                                        +
                                                        295  endif
                                                        +
                                                        296 
                                                        +
                                                        297  write(bort_str1,'("BUFRLIB: RDUSDX - CARD READ IN IS: ",A)') card
                                                        +
                                                        298  write(bort_str2,'(18X,"DESCRIPTOR NUMBER ",A," IN USER '// &
                                                        +
                                                        299  'DICTIONARY HAS AN INVALID FIRST CHARACTER (F VALUE) - MUST BE A, 0 OR 3")') numb
                                                        +
                                                        300  call bort2(bort_str1,bort_str2)
                                                        +
                                                        301 
                                                        +
                                                        302  endif
                                                        +
                                                        303 
                                                        +
                                                        304  if(card(12:12)=='|' .and. card(19:19)/='|') then
                                                        +
                                                        305  ! Parse a sequence definition card
                                                        +
                                                        306  call seqsdx(card,lun)
                                                        +
                                                        307  cycle
                                                        +
                                                        308  endif
                                                        +
                                                        309 
                                                        +
                                                        310  if(card(12:12)=='|' .and. card(19:19)=='|') then
                                                        +
                                                        311  ! Parse an element definition card
                                                        +
                                                        312  call elemdx(card,lun)
                                                        +
                                                        313  cycle
                                                        +
                                                        314  endif
                                                        +
                                                        315 
                                                        +
                                                        316  ! Can't figure out what kind of card it is
                                                        +
                                                        317  write(bort_str1,'("BUFRLIB: RDUSDX - CARD READ IN IS: ",A)') card
                                                        +
                                                        318  write(bort_str2,'(18X,"THIS CARD HAS A BAD FORMAT - IT IS NOT RECOGNIZED BY THIS SUBROUTINE")')
                                                        +
                                                        319  call bort2(bort_str1,bort_str2)
                                                        +
                                                        320  enddo
                                                        +
                                                        321 
                                                        +
                                                        322 end subroutine rdusdx
                                                        +
                                                        323 
                                                        +
                                                        332 subroutine seqsdx(card,lun)
                                                        +
                                                        333 
                                                        +
                                                        334  use modv_vars, only: reps, idnr
                                                        +
                                                        335 
                                                        +
                                                        336  implicit none
                                                        +
                                                        337 
                                                        +
                                                        338  integer, intent(in) :: lun
                                                        +
                                                        339  integer maxtgs, maxtag, ntag, idn, jdn, iseq, irep, i, j, n, itab, iret, ier, numr, nemock
                                                        +
                                                        340 
                                                        +
                                                        341  character*128 bort_str1, bort_str2
                                                        +
                                                        342  character*80 seqs
                                                        +
                                                        343  character*80, intent(in) :: card
                                                        +
                                                        344  character*12 atag, tags(250)
                                                        +
                                                        345  character*8 nemo, nema, nemb
                                                        +
                                                        346  character*6 adn30, clemon
                                                        +
                                                        347  character tab
                                                        +
                                                        348 
                                                        +
                                                        349  data maxtgs /250/
                                                        +
                                                        350  data maxtag /12/
                                                        +
                                                        351 
                                                        +
                                                        352  ! Find the sequence tag in Table D and parse the sequence string
                                                        +
                                                        353 
                                                        +
                                                        354  nemo = card( 3:10)
                                                        +
                                                        355  seqs = card(14:78)
                                                        +
                                                        356 
                                                        +
                                                        357  ! Note that an entry for this mnemonic should already exist within the internal BUFR Table D array tabd(*,LUN); this entry
                                                        +
                                                        358  ! should have been created by subroutine rdusdx() when the mnemonic and its associated FXY value and description were
                                                        +
                                                        359  ! initially defined within a card read from the "Descriptor Definition" section at the top of the user-supplied DX BUFR
                                                        +
                                                        360  ! table in character format. Now, we need to retrieve the positional index for that entry within tabd(*,lun) so that we
                                                        +
                                                        361  ! can access the entry and then add the decoded sequence information to it.
                                                        +
                                                        362 
                                                        +
                                                        363  call nemtab(lun,nemo,idn,tab,iseq)
                                                        +
                                                        364  if(tab/='D') then
                                                        +
                                                        365  write(bort_str1,'("BUFRLIB: SEQSDX - CARD READ IN IS: ",A)') card
                                                        +
                                                        366  write(bort_str2,'(18X,"MNEMONIC ",A," IS NOT A TABLE D ENTRY (UNDEFINED, TAB=",A,")")') nemo,tab
                                                        +
                                                        367  call bort2(bort_str1,bort_str2)
                                                        +
                                                        368  endif
                                                        +
                                                        369  call parstr(seqs,tags,maxtgs,ntag,' ',.true.)
                                                        +
                                                        370  if(ntag==0) then
                                                        +
                                                        371  write(bort_str1,'("BUFRLIB: SEQSDX - CARD READ IN IS: ",A)') card
                                                        +
                                                        372  write(bort_str2,'(18X,"TABLE D SEQUENCE (PARENT) MNEMONIC ",A," DOES NOT CONTAIN ANY CHILD MNEMONICS")') nemo
                                                        +
                                                        373  call bort2(bort_str1,bort_str2)
                                                        +
                                                        374  endif
                                                        +
                                                        375 
                                                        +
                                                        376  do n=1,ntag
                                                        +
                                                        377  atag = tags(n)
                                                        +
                                                        378  irep = 0
                                                        +
                                                        379 
                                                        +
                                                        380  ! Check for a replicator
                                                        +
                                                        381 
                                                        +
                                                        382  outer: do i=1,5
                                                        +
                                                        383  if(atag(1:1)==reps(i)) then
                                                        +
                                                        384  ! Note that reps(*), which contains all of the symbols used to denote all of the various replication schemes that
                                                        +
                                                        385  ! are possible within a user-supplied BUFR dictionary table in character format, was previously defined within
                                                        +
                                                        386  ! subroutine bfrini().
                                                        +
                                                        387  do j=2,maxtag
                                                        +
                                                        388  if(atag(j:j)==reps(i+5)) then
                                                        +
                                                        389  ! Note that subroutine strnum() will return numr = 0 if the string passed to it contains all blanks
                                                        +
                                                        390  ! (as *should* be the case whenever i = 2 '(' ')', 3 '{' '}', 4 '[' ']', or 5 '<' '>').
                                                        +
                                                        391  ! However, when i = 1 '"' '"', then subroutine strnum() will return numr = (the number of replications for
                                                        +
                                                        392  ! the mnemonic using F=1 "regular" (i.e. non-delayed) replication).
                                                        +
                                                        393  call strnum(atag(j+1:maxtag),numr,ier)
                                                        +
                                                        394  if(i==1 .and. numr<=0) then
                                                        +
                                                        395  write(bort_str1,'("BUFRLIB: SEQSDX - CARD READ IN IS: ",A)') card
                                                        +
                                                        396  write(bort_str2,'(9X,"TBL D MNEM. ",A," CONTAINS REG. REPL. '// &
                                                        +
                                                        397  'CHILD MNEM. ",A," W/ INVALID # OF REPLICATIONS (",I3,") AFTER 2ND QUOTE")') nemo,tags(n),numr
                                                        +
                                                        398  call bort2(bort_str1,bort_str2)
                                                        +
                                                        399  endif
                                                        +
                                                        400  if(i==1 .and. numr>255) then
                                                        +
                                                        401  write(bort_str1,'("BUFRLIB: SEQSDX - CARD READ IN IS: ",A)') card
                                                        +
                                                        402  write(bort_str2,'(18X,"TBL D MNEM. ",A," CONTAINS REG. REPL. '// &
                                                        +
                                                        403  'CHILD MNEM. ",A," W/ # OF REPLICATIONS (",I3,") > LIMIT OF 255")') nemo,tags(n),numr
                                                        +
                                                        404  call bort2(bort_str1,bort_str2)
                                                        +
                                                        405  endif
                                                        +
                                                        406  if(i/=1 .and. numr/=0) then
                                                        +
                                                        407  write(bort_str1,'("BUFRLIB: SEQSDX - CARD READ IN IS: ",A)') card
                                                        +
                                                        408  write(bort_str2,'(18X,"TBL D MNEM. ",A," CONTAINS DELAYED REPL. '// &
                                                        +
                                                        409  'CHILD MNEM. ",A," W/ # OF REPL. (",I3,") SPECIFIED - A NO-NO")') nemo,tags(n),numr
                                                        +
                                                        410  call bort2(bort_str1,bort_str2)
                                                        +
                                                        411  endif
                                                        +
                                                        412  atag = atag(2:j-1)
                                                        +
                                                        413  irep = i
                                                        +
                                                        414  exit outer
                                                        +
                                                        415  endif
                                                        +
                                                        416  enddo
                                                        +
                                                        417  write(bort_str1,'("BUFRLIB: SEQSDX - CARD READ IN IS: ",A)') card
                                                        +
                                                        418  write(bort_str2,'(18X,"TABLE D SEQUENCE (PARENT) MNEMONIC ",A,'// &
                                                        +
                                                        419  '" CONTAINS A BADLY FORMED CHILD MNEMONIC ",A)') nemo,tags(n)
                                                        +
                                                        420  call bort2(bort_str1,bort_str2)
                                                        +
                                                        421  endif
                                                        +
                                                        422  enddo outer
                                                        +
                                                        423 
                                                        +
                                                        424  ! Check for a valid tag
                                                        +
                                                        425 
                                                        +
                                                        426  iret=nemock(atag)
                                                        +
                                                        427  if(iret==-1) then
                                                        +
                                                        428  write(bort_str1,'("BUFRLIB: SEQSDX - CARD READ IN IS: ",A)') card
                                                        +
                                                        429  write(bort_str2,'(18X,"TABLE D (PARENT) MNEMONIC ",A," CONTAINS'// &
                                                        +
                                                        430  ' A CHILD MNEMONIC ",A," NOT BETWEEN 1 & 8 CHARACTERS")') nemo,tags(n)
                                                        +
                                                        431  call bort2(bort_str1,bort_str2)
                                                        +
                                                        432  endif
                                                        +
                                                        433  if(iret==-2) then
                                                        +
                                                        434  write(bort_str1,'("BUFRLIB: SEQSDX - CARD READ IN IS: ",A)') card
                                                        +
                                                        435  write(bort_str2,'(18X,"TABLE D (PARENT) MNEMONIC ",A," CONTAINS'// &
                                                        +
                                                        436  ' A CHILD MNEMONIC ",A," WITH INVALID CHARACTERS")') nemo,tags(n)
                                                        +
                                                        437  call bort2(bort_str1,bort_str2)
                                                        +
                                                        438  endif
                                                        +
                                                        439  call nemtab(lun,atag,idn,tab,iret)
                                                        +
                                                        440  if(iret>0) then
                                                        +
                                                        441  ! Note that the next code line checks that we are not trying to replicate a Table B mnemonic (which is currently not
                                                        +
                                                        442  ! allowed). The logic works because, for replicated mnemonics, irep = i = (the index within reps(*) of the symbol
                                                        +
                                                        443  ! associated with the type of replication in question (e.g. "{, "<", etc.))
                                                        +
                                                        444  if(tab=='B' .and. irep/=0) then
                                                        +
                                                        445  write(bort_str1,'("BUFRLIB: SEQSDX - CARD READ IN IS: ",A)') card
                                                        +
                                                        446  write(bort_str2,'(18X,"TABLE D (PARENT) MNEMONIC ",A," CONTAINS'// &
                                                        +
                                                        447  ' A REPLICATED CHILD TABLE B MNEMONIC ",A," - A NO-NO")') nemo,tags(n)
                                                        +
                                                        448  call bort2(bort_str1,bort_str2)
                                                        +
                                                        449  endif
                                                        +
                                                        450  if(atag(1:1)=='.') then
                                                        +
                                                        451  ! This mnemonic is a "following value" mnemonic (i.e. it relates to the mnemonic that immediately follows it within
                                                        +
                                                        452  ! the user-supplied character-format BUFR dictionary table sequence), so confirm that it contains, as a substring,
                                                        +
                                                        453  ! this mnemonic that immediately follows it.
                                                        +
                                                        454  if(n==ntag) then
                                                        +
                                                        455  write(bort_str1,'("BUFRLIB: SEQSDX - CARD READ IN IS: ",A)') card
                                                        +
                                                        456  write(bort_str2,'(18X,"TBL D (PARENT) MNEM. ",A," CONTAINS A '// &
                                                        +
                                                        457  '''FOLLOWING VALUE'' MNEMONIC WHICH IS LAST IN THE STRING")') nemo
                                                        +
                                                        458  call bort2(bort_str1,bort_str2)
                                                        +
                                                        459  endif
                                                        +
                                                        460  nemb = tags(n+1)(1:8)
                                                        +
                                                        461  call numtab(lun,idn,nema,tab,itab)
                                                        +
                                                        462  call nemtab(lun,nemb,jdn,tab,iret)
                                                        +
                                                        463  call rsvfvm(nema,nemb)
                                                        +
                                                        464  if(nema/=atag) then
                                                        +
                                                        465  write(bort_str1,'("BUFRLIB: SEQSDX - CARD READ IN IS: ",A)') card
                                                        +
                                                        466  write(bort_str2,'(18X,"TBL D (PARENT) MNEM. ",A," CONTAINS AN '// &
                                                        +
                                                        467  'INVALID ''FOLLOWING VALUE'' MNEMONIC ",A,"(SHOULD BE ",A,")")') nemo,tags(n),nema
                                                        +
                                                        468  call bort2(bort_str1,bort_str2)
                                                        +
                                                        469  endif
                                                        +
                                                        470  if(tab/='B') then
                                                        +
                                                        471  write(bort_str1,'("BUFRLIB: SEQSDX - CARD READ IN IS: ",A)') card
                                                        +
                                                        472  write(bort_str2,'(18X,"TBL D (PARENT) MNEM. ",A,", THE MNEM. ",'// &
                                                        +
                                                        473  'A," FOLLOWING A ''FOLLOWING VALUE'' MNEM. IS NOT A TBL B ENTRY")') nemo,nemb
                                                        +
                                                        474  call bort2(bort_str1,bort_str2)
                                                        +
                                                        475  endif
                                                        +
                                                        476  endif
                                                        +
                                                        477  else
                                                        +
                                                        478  write(bort_str1,'("BUFRLIB: SEQSDX - CARD READ IN IS: ",A)') card
                                                        +
                                                        479  write(bort_str2,'(18X,"TABLE D SEQUENCE (PARENT) MNEMONIC ",A,'// &
                                                        +
                                                        480  '" CONTAINS A CHILD MNEMONIC ",A," NOT FOUND IN ANY TABLE")') nemo,tags(n)
                                                        +
                                                        481  call bort2(bort_str1,bort_str2)
                                                        +
                                                        482  endif
                                                        +
                                                        483 
                                                        +
                                                        484  ! Write the descriptor string into the tabd array, but first look for a replication descriptor
                                                        +
                                                        485  if(irep>0) call pktdd(iseq,lun,idnr(irep)+numr,iret)
                                                        +
                                                        486  if(iret<0) then
                                                        +
                                                        487  clemon = adn30(idnr(irep)+numr,6)
                                                        +
                                                        488  write(bort_str1,'("BUFRLIB: SEQSDX - CARD READ IN IS: ",A)') card
                                                        +
                                                        489  write(bort_str2,'(9X,"TBL D (PARENT) MNEM. ",A," - BAD RETURN '// &
                                                        +
                                                        490  'FROM PKTDD TRYING TO STORE REPL. DESC. ",A,", SEE PREV. WARNING MSG")') nemo,clemon
                                                        +
                                                        491  call bort2(bort_str1,bort_str2)
                                                        +
                                                        492  endif
                                                        +
                                                        493  call pktdd(iseq,lun,idn,iret)
                                                        +
                                                        494  if(iret<0) then
                                                        +
                                                        495  write(bort_str1,'("BUFRLIB: SEQSDX - CARD READ IN IS: ",A)') card
                                                        +
                                                        496  write(bort_str2,'(9X,"TBL D (PARENT) MNEM. ",A," - BAD RETURN '// &
                                                        +
                                                        497  'FROM PKTDD TRYING TO STORE CHILD MNEM. ",A,", SEE PREV. WARNING MSG")') nemo,tags(n)
                                                        +
                                                        498  call bort2(bort_str1,bort_str2)
                                                        +
                                                        499  endif
                                                        +
                                                        500 
                                                        +
                                                        501  enddo
                                                        +
                                                        502 
                                                        +
                                                        503  return
                                                        +
                                                        504 end subroutine seqsdx
                                                        +
                                                        505 
                                                        +
                                                        515 subroutine elemdx(card,lun)
                                                        +
                                                        516 
                                                        +
                                                        517  use moda_tababd
                                                        +
                                                        518 
                                                        +
                                                        519  implicit none
                                                        +
                                                        520 
                                                        +
                                                        521  integer, intent(in) :: lun
                                                        +
                                                        522  integer idsn, iele, iret
                                                        +
                                                        523 
                                                        +
                                                        524  character*128 bort_str1, bort_str2
                                                        +
                                                        525  character*80, intent(in) :: card
                                                        +
                                                        526  character*24 unit
                                                        +
                                                        527  character*11 refr, refr_orig
                                                        +
                                                        528  character*8 nemo
                                                        +
                                                        529  character*4 scal, scal_orig
                                                        +
                                                        530  character*3 bitw, bitw_orig
                                                        +
                                                        531  character sign, tab
                                                        +
                                                        532 
                                                        +
                                                        533  ! Capture the various elements characteristics
                                                        +
                                                        534 
                                                        +
                                                        535  nemo = card( 3:10)
                                                        +
                                                        536  scal = card(14:17)
                                                        +
                                                        537  refr = card(21:31)
                                                        +
                                                        538  bitw = card(35:37)
                                                        +
                                                        539  unit = card(41:64)
                                                        +
                                                        540  ! Make sure the units are all capitalized
                                                        +
                                                        541  call capit(unit)
                                                        +
                                                        542 
                                                        +
                                                        543  ! Find the element tag in Table B. Note that an entry for this mnemonic should already exist within the internal
                                                        +
                                                        544  ! BUFR Table B array tabb(*,lun). We now need to retrieve the positional index for that entry within tabb(*,lun)
                                                        +
                                                        545  ! so that we can access the entry and then add the scale factor, reference value, bit width, and units to it.
                                                        +
                                                        546 
                                                        +
                                                        547  call nemtab(lun,nemo,idsn,tab,iele)
                                                        +
                                                        548  if(tab/='B') then
                                                        +
                                                        549  write(bort_str1,'("BUFRLIB: ELEMDX - CARD READ IN IS: ",A)') card
                                                        +
                                                        550  write(bort_str2,'(18X,"MNEMONIC ",A," IS NOT A TABLE B ENTRY (UNDEFINED, TAB=",A,")")') nemo,tab
                                                        +
                                                        551  call bort2(bort_str1,bort_str2)
                                                        +
                                                        552  endif
                                                        +
                                                        553 
                                                        +
                                                        554  ! Left justify and store characteristics
                                                        +
                                                        555 
                                                        +
                                                        556  unit = adjustl(unit)
                                                        +
                                                        557  if(unit==' ') then
                                                        +
                                                        558  write(bort_str1,'("BUFRLIB: ELEMDX - CARD READ IN IS: ",A)') card
                                                        +
                                                        559  write(bort_str2,'(18X,"UNITS FIELD IS EMPTY")')
                                                        +
                                                        560  call bort2(bort_str1,bort_str2)
                                                        +
                                                        561  endif
                                                        +
                                                        562  tabb(iele,lun)(71:94) = unit
                                                        +
                                                        563 
                                                        +
                                                        564  scal_orig=scal
                                                        +
                                                        565  call jstnum(scal,sign,iret)
                                                        +
                                                        566  if(iret/=0) then
                                                        +
                                                        567  write(bort_str1,'("BUFRLIB: ELEMDX - CARD READ IN IS: ",A)') card
                                                        +
                                                        568  write(bort_str2,'(18X,"PARSED SCALE VALUE (=",A,") IS NOT NUMERIC")') scal_orig
                                                        +
                                                        569  call bort2(bort_str1,bort_str2)
                                                        +
                                                        570  endif
                                                        +
                                                        571  tabb(iele,lun)(95:95) = sign
                                                        +
                                                        572  tabb(iele,lun)(96:98) = scal(1:3)
                                                        +
                                                        573 
                                                        +
                                                        574  refr_orig=refr
                                                        +
                                                        575  call jstnum(refr,sign,iret)
                                                        +
                                                        576  if(iret/=0) then
                                                        +
                                                        577  write(bort_str1,'("BUFRLIB: ELEMDX - CARD READ IN IS: ",A)') card
                                                        +
                                                        578  write(bort_str2,'(18X,"PARSED REFERENCE VALUE (=",A,") IS NOT NUMERIC")') refr_orig
                                                        +
                                                        579  call bort2(bort_str1,bort_str2)
                                                        +
                                                        580  endif
                                                        +
                                                        581  tabb(iele,lun)( 99: 99) = sign
                                                        +
                                                        582  tabb(iele,lun)(100:109) = refr(1:10)
                                                        +
                                                        583 
                                                        +
                                                        584  bitw_orig=bitw
                                                        +
                                                        585  call jstnum(bitw,sign,iret)
                                                        +
                                                        586  if(iret/=0 .or. sign=='-') then
                                                        +
                                                        587  write(bort_str1,'("BUFRLIB: ELEMDX - CARD READ IN IS: ",A)') card
                                                        +
                                                        588  write(bort_str2,'(18X,"PARSED BIT WIDTH VALUE (=",A,") IS NOT NUMERIC")') bitw_orig
                                                        +
                                                        589  call bort2(bort_str1,bort_str2)
                                                        +
                                                        590  endif
                                                        +
                                                        591  tabb(iele,lun)(110:112) = bitw
                                                        +
                                                        592 
                                                        +
                                                        593  return
                                                        +
                                                        594 end subroutine elemdx
                                                        +
                                                        595 
                                                        +
                                                        605 subroutine dxinit(lun,ioi)
                                                        +
                                                        606 
                                                        +
                                                        607  use modv_vars, only: idnr
                                                        +
                                                        608 
                                                        +
                                                        609  use moda_tababd
                                                        +
                                                        610 
                                                        +
                                                        611  implicit none
                                                        +
                                                        612 
                                                        +
                                                        613  integer, intent(in) :: lun, ioi
                                                        +
                                                        614  integer ibct, ipd1, ipd2, ipd3, ipd4, ninib, ninid, n, i, iret, ifxy
                                                        +
                                                        615 
                                                        +
                                                        616  character*8 inib(6,5),inid(5)
                                                        +
                                                        617  character*6 adn30
                                                        +
                                                        618 
                                                        +
                                                        619  common /padesc/ ibct, ipd1, ipd2, ipd3, ipd4
                                                        +
                                                        620 
                                                        +
                                                        621  data inib /'------','BYTCNT ','BYTES ','+0','+0','16', &
                                                        +
                                                        622  '------','BITPAD ','NONE ','+0','+0','1 ', &
                                                        +
                                                        623  '031000','DRF1BIT ','NUMERIC','+0','+0','1 ', &
                                                        +
                                                        624  '031001','DRF8BIT ','NUMERIC','+0','+0','8 ', &
                                                        +
                                                        625  '031002','DRF16BIT','NUMERIC','+0','+0','16'/
                                                        +
                                                        626  data ninib /5/
                                                        +
                                                        627 
                                                        +
                                                        628  data inid /' ', &
                                                        +
                                                        629  'DRP16BIT', &
                                                        +
                                                        630  'DRP8BIT ', &
                                                        +
                                                        631  'DRPSTAK ', &
                                                        +
                                                        632  'DRP1BIT '/
                                                        +
                                                        633  data ninid /5/
                                                        +
                                                        634 
                                                        +
                                                        635  ! Clear out a table partition
                                                        +
                                                        636 
                                                        +
                                                        637  ntba(lun) = 0
                                                        +
                                                        638  do i=1,ntba(0)
                                                        +
                                                        639  taba(i,lun) = ' '
                                                        +
                                                        640  mtab(i,lun) = 0
                                                        +
                                                        641  enddo
                                                        +
                                                        642 
                                                        +
                                                        643  ntbb(lun) = 0
                                                        +
                                                        644  do i=1,ntbb(0)
                                                        +
                                                        645  tabb(i,lun) = ' '
                                                        +
                                                        646  enddo
                                                        +
                                                        647 
                                                        +
                                                        648  ntbd(lun) = 0
                                                        +
                                                        649  do i=1,ntbd(0)
                                                        +
                                                        650  tabd(i,lun) = ' '
                                                        +
                                                        651  call pktdd(i,lun,0,iret)
                                                        +
                                                        652  enddo
                                                        +
                                                        653 
                                                        +
                                                        654  if(ioi==0) return
                                                        +
                                                        655 
                                                        +
                                                        656  ! Initialize table with apriori Table B and D entries
                                                        +
                                                        657 
                                                        +
                                                        658  inib(1,1) = adn30(ibct,6)
                                                        +
                                                        659  inib(1,2) = adn30(ipd4,6)
                                                        +
                                                        660 
                                                        +
                                                        661  do i=1,ninib
                                                        +
                                                        662  ntbb(lun) = ntbb(lun)+1
                                                        +
                                                        663  idnb(i,lun) = ifxy(inib(1,i))
                                                        +
                                                        664  tabb(i,lun)( 1: 6) = inib(1,i)(1:6)
                                                        +
                                                        665  tabb(i,lun)( 7: 70) = inib(2,i)
                                                        +
                                                        666  tabb(i,lun)( 71: 94) = inib(3,i)
                                                        +
                                                        667  tabb(i,lun)( 95: 98) = inib(4,i)(1:4)
                                                        +
                                                        668  tabb(i,lun)( 99:109) = inib(5,i)
                                                        +
                                                        669  tabb(i,lun)(110:112) = inib(6,i)(1:3)
                                                        +
                                                        670  enddo
                                                        +
                                                        671 
                                                        +
                                                        672  do i=2,ninid
                                                        +
                                                        673  n = ntbd(lun)+1
                                                        +
                                                        674  idnd(n,lun) = idnr(i)
                                                        +
                                                        675  tabd(n,lun)(1: 6) = adn30(idnr(i),6)
                                                        +
                                                        676  tabd(n,lun)(7:70) = inid(i)
                                                        +
                                                        677  call pktdd(n,lun,idnr(1),iret)
                                                        +
                                                        678  call pktdd(n,lun,idnr(i+5),iret)
                                                        +
                                                        679  ntbd(lun) = n
                                                        +
                                                        680  enddo
                                                        +
                                                        681 
                                                        +
                                                        682  return
                                                        +
                                                        683 end subroutine dxinit
                                                        +
                                                        684 
                                                        +
                                                        696 subroutine dxmini(mbay,mbyt,mb4,mba,mbb,mbd)
                                                        +
                                                        697 
                                                        +
                                                        698  use modv_vars, only: mxmsgld4
                                                        +
                                                        699 
                                                        +
                                                        700  implicit none
                                                        +
                                                        701 
                                                        +
                                                        702  integer, intent(out) :: mbay(*), mbyt, mb4, mba, mbb, mbd
                                                        +
                                                        703  integer maxdx, idxv, nxstr, ldxa, ldxb, ldxd, ld30, mtyp, msbt, mbit, ih, id, im, iy, i, nsub, idxs, ldxs, &
                                                        +
                                                        704  nby0, nby1, nby2, nby3, nby4, nby5, iupm
                                                        +
                                                        705 
                                                        +
                                                        706  character*128 bort_str
                                                        +
                                                        707  character*56 dxstr
                                                        +
                                                        708 
                                                        +
                                                        709  common /dxtab/ maxdx, idxv, nxstr(10), ldxa(10), ldxb(10), ldxd(10), ld30(10), dxstr(10)
                                                        +
                                                        710 
                                                        +
                                                        711  msbt = idxv
                                                        +
                                                        712 
                                                        +
                                                        713  ! Initialize the message
                                                        +
                                                        714 
                                                        +
                                                        715  mbit = 0
                                                        +
                                                        716  do i=1,mxmsgld4
                                                        +
                                                        717  mbay(i) = 0
                                                        +
                                                        718  enddo
                                                        +
                                                        719 
                                                        +
                                                        720  ! For DX table messages, the Section 1 date is simply zeroed out. Note that there is logic in function idxmsg()
                                                        +
                                                        721  ! which relies on this.
                                                        +
                                                        722  ih = 0
                                                        +
                                                        723  id = 0
                                                        +
                                                        724  im = 0
                                                        +
                                                        725  iy = 0
                                                        +
                                                        726 
                                                        +
                                                        727  mtyp = 11 ! DX table messages are always type 11, per WMO BUFR Table A
                                                        +
                                                        728  nsub = 1
                                                        +
                                                        729 
                                                        +
                                                        730  idxs = idxv+1
                                                        +
                                                        731  ldxs = nxstr(idxs)
                                                        +
                                                        732 
                                                        +
                                                        733  nby0 = 8
                                                        +
                                                        734  nby1 = 18
                                                        +
                                                        735  nby2 = 0
                                                        +
                                                        736  nby3 = 7 + nxstr(idxs) + 1
                                                        +
                                                        737  nby4 = 7
                                                        +
                                                        738  nby5 = 4
                                                        +
                                                        739  mbyt = nby0+nby1+nby2+nby3+nby4+nby5
                                                        +
                                                        740 
                                                        +
                                                        741  if(mod(nby3,2)/=0) call bort ('BUFRLIB: DXMINI - LENGTH OF SECTION 3 IS NOT A MULTIPLE OF 2')
                                                        +
                                                        742 
                                                        +
                                                        743  ! Section 0
                                                        +
                                                        744 
                                                        +
                                                        745  call pkc('BUFR' , 4 , mbay,mbit)
                                                        +
                                                        746  call pkb( mbyt , 24 , mbay,mbit)
                                                        +
                                                        747  call pkb( 3 , 8 , mbay,mbit)
                                                        +
                                                        748 
                                                        +
                                                        749  ! Section 1
                                                        +
                                                        750 
                                                        +
                                                        751  call pkb( nby1 , 24 , mbay,mbit)
                                                        +
                                                        752  call pkb( 0 , 8 , mbay,mbit)
                                                        +
                                                        753  call pkb( 3 , 8 , mbay,mbit)
                                                        +
                                                        754  call pkb( 7 , 8 , mbay,mbit)
                                                        +
                                                        755  call pkb( 0 , 8 , mbay,mbit)
                                                        +
                                                        756  call pkb( 0 , 8 , mbay,mbit)
                                                        +
                                                        757  call pkb( mtyp , 8 , mbay,mbit)
                                                        +
                                                        758  call pkb( msbt , 8 , mbay,mbit)
                                                        +
                                                        759  call pkb( 36 , 8 , mbay,mbit)
                                                        +
                                                        760  call pkb( idxv , 8 , mbay,mbit)
                                                        +
                                                        761  call pkb( iy , 8 , mbay,mbit)
                                                        +
                                                        762  call pkb( im , 8 , mbay,mbit)
                                                        +
                                                        763  call pkb( id , 8 , mbay,mbit)
                                                        +
                                                        764  call pkb( ih , 8 , mbay,mbit)
                                                        +
                                                        765  call pkb( 0 , 8 , mbay,mbit)
                                                        +
                                                        766  call pkb( 0 , 8 , mbay,mbit)
                                                        +
                                                        767 
                                                        +
                                                        768  ! Section 3
                                                        +
                                                        769 
                                                        +
                                                        770  call pkb( nby3 , 24 , mbay,mbit)
                                                        +
                                                        771  call pkb( 0 , 8 , mbay,mbit)
                                                        +
                                                        772  call pkb( 1 , 16 , mbay,mbit)
                                                        +
                                                        773  call pkb( 2**7 , 8 , mbay,mbit)
                                                        +
                                                        774  do i=1,ldxs
                                                        +
                                                        775  call pkb(iupm(dxstr(idxs)(i:i),8),8,mbay,mbit)
                                                        +
                                                        776  enddo
                                                        +
                                                        777  call pkb( 0 , 8 , mbay,mbit)
                                                        +
                                                        778 
                                                        +
                                                        779  ! Section 4
                                                        +
                                                        780 
                                                        +
                                                        781  mb4 = mbit/8+1
                                                        +
                                                        782  call pkb( nby4 , 24 , mbay,mbit)
                                                        +
                                                        783  call pkb( 0 , 8 , mbay,mbit)
                                                        +
                                                        784  mba = mbit/8+1
                                                        +
                                                        785  call pkb( 0 , 8 , mbay,mbit)
                                                        +
                                                        786  mbb = mbit/8+1
                                                        +
                                                        787  call pkb( 0 , 8 , mbay,mbit)
                                                        +
                                                        788  mbd = mbit/8+1
                                                        +
                                                        789  call pkb( 0 , 8 , mbay,mbit)
                                                        +
                                                        790 
                                                        +
                                                        791  if(mbit/8+nby5/=mbyt) then
                                                        +
                                                        792  write(bort_str,'("BUFRLIB: DXMINI - NUMBER OF BYTES STORED FOR '// &
                                                        +
                                                        793  'A MESSAGE (",I6,") IS NOT THE SAME AS FIRST CALCULATED, MBYT (",I6)') mbit/8+nby5,mbyt
                                                        +
                                                        794  call bort(bort_str)
                                                        +
                                                        795  endif
                                                        +
                                                        796 
                                                        +
                                                        797  return
                                                        +
                                                        798 end subroutine dxmini
                                                        +
                                                        799 
                                                        +
                                                        811 subroutine writdx(lunit,lun,lundx)
                                                        +
                                                        812 
                                                        +
                                                        813  implicit none
                                                        +
                                                        814 
                                                        +
                                                        815  integer, intent(in) :: lunit, lun, lundx
                                                        +
                                                        816 
                                                        +
                                                        817  character*128 bort_str
                                                        +
                                                        818 
                                                        +
                                                        819  ! The table must be coming from an input file
                                                        +
                                                        820 
                                                        +
                                                        821  if(lunit==lundx) then
                                                        +
                                                        822  write(bort_str,'("BUFRLIB: WRITDX - FILES CONTAINING BUFR DATA '// &
                                                        +
                                                        823  'AND DICTIONARY TABLE CANNOT BE THE SAME (HERE BOTH SHARE FORTRAN UNIT NUMBER ",I3,")")') lunit
                                                        +
                                                        824  call bort(bort_str)
                                                        +
                                                        825  endif
                                                        +
                                                        826 
                                                        +
                                                        827  ! Must first call readdx() to generate internal dictionary table arrays, before calling wrdxtb()
                                                        +
                                                        828 
                                                        +
                                                        829  call readdx(lunit,lun,lundx)
                                                        +
                                                        830  call wrdxtb(lunit,lunit)
                                                        +
                                                        831 
                                                        +
                                                        832  return
                                                        +
                                                        833 end subroutine writdx
                                                        +
                                                        834 
                                                        +
                                                        849 recursive subroutine wrdxtb(lundx,lunot)
                                                        +
                                                        850 
                                                        +
                                                        851  use modv_vars, only: im8b
                                                        +
                                                        852 
                                                        +
                                                        853  use moda_tababd
                                                        +
                                                        854  use moda_mgwa
                                                        +
                                                        855 
                                                        +
                                                        856  implicit none
                                                        +
                                                        857 
                                                        +
                                                        858  integer, intent(in) :: lundx, lunot
                                                        +
                                                        859  integer maxdx, idxv, nxstr, ldxa, ldxb, ldxd, ld30, my_lundx, my_lunot, ldx, lot, il, im, lda, ldb, ldd, l30, nseq, &
                                                        +
                                                        860  mbit, mbyt, mby4, mbya, mbyb, mbyd, i, j, jj, idn, lend, len0, len1, len2, l3, l4, l5, iupb, iupm
                                                        +
                                                        861 
                                                        +
                                                        862  common /dxtab/ maxdx, idxv, nxstr(10), ldxa(10), ldxb(10), ldxd(10), ld30(10), dxstr(10)
                                                        +
                                                        863 
                                                        +
                                                        864  character*56 dxstr
                                                        +
                                                        865  character*6 adn30
                                                        +
                                                        866 
                                                        +
                                                        867  logical msgfull
                                                        +
                                                        868 
                                                        +
                                                        869  ! Check for I8 integers
                                                        +
                                                        870 
                                                        +
                                                        871  if(im8b) then
                                                        +
                                                        872  im8b=.false.
                                                        +
                                                        873 
                                                        +
                                                        874  call x84(lundx,my_lundx,1)
                                                        +
                                                        875  call x84(lunot,my_lunot,1)
                                                        +
                                                        876  call wrdxtb(my_lundx,my_lunot)
                                                        +
                                                        877 
                                                        +
                                                        878  im8b=.true.
                                                        +
                                                        879  return
                                                        +
                                                        880  endif
                                                        +
                                                        881 
                                                        +
                                                        882  ! Check file statuses
                                                        +
                                                        883 
                                                        +
                                                        884  call status(lunot,lot,il,im)
                                                        +
                                                        885  if(il==0) call bort('BUFRLIB: WRDXTB - OUTPUT BUFR FILE IS CLOSED, IT MUST BE OPEN FOR OUTPUT')
                                                        +
                                                        886  if(il<0) call bort('BUFRLIB: WRDXTB - OUTPUT BUFR FILE IS OPEN FOR INPUT, IT MUST BE OPEN FOR OUTPUT')
                                                        +
                                                        887 
                                                        +
                                                        888  call status(lundx,ldx,il,im)
                                                        +
                                                        889  if(il==0) call bort('BUFRLIB: WRDXTB - DX TABLE FILE IS CLOSED, IT MUST BE OPEN')
                                                        +
                                                        890 
                                                        +
                                                        891  ! If files are different, copy internal table information from lundx to lunot
                                                        +
                                                        892 
                                                        +
                                                        893  if(lundx/=lunot) call cpbfdx(ldx,lot)
                                                        +
                                                        894 
                                                        +
                                                        895  ! Generate and write out BUFR dictionary messages to lunot
                                                        +
                                                        896 
                                                        +
                                                        897  call dxmini(mgwa,mbyt,mby4,mbya,mbyb,mbyd)
                                                        +
                                                        898 
                                                        +
                                                        899  lda = ldxa(idxv+1)
                                                        +
                                                        900  ldb = ldxb(idxv+1)
                                                        +
                                                        901  ldd = ldxd(idxv+1)
                                                        +
                                                        902  l30 = ld30(idxv+1)
                                                        +
                                                        903 
                                                        +
                                                        904  ! Table A information
                                                        +
                                                        905 
                                                        +
                                                        906  do i=1,ntba(lot)
                                                        +
                                                        907  if(msgfull(mbyt,lda,maxdx).or.(iupb(mgwa,mbya,8)==255)) then
                                                        +
                                                        908  call msgwrt(lunot,mgwa,mbyt)
                                                        +
                                                        909  call dxmini(mgwa,mbyt,mby4,mbya,mbyb,mbyd)
                                                        +
                                                        910  endif
                                                        +
                                                        911  mbit = 8*(mby4-1)
                                                        +
                                                        912  call pkb(iupb(mgwa,mby4,24)+lda,24,mgwa,mbit)
                                                        +
                                                        913  mbit = 8*(mbya-1)
                                                        +
                                                        914  call pkb(iupb(mgwa,mbya,8)+1,8,mgwa,mbit)
                                                        +
                                                        915  mbit = 8*(mbyb-1)
                                                        +
                                                        916  call pkc(taba(i,lot),lda,mgwa,mbit)
                                                        +
                                                        917  call pkb(0,8,mgwa,mbit)
                                                        +
                                                        918  call pkb(0,8,mgwa,mbit)
                                                        +
                                                        919  mbyt = mbyt+lda
                                                        +
                                                        920  mbyb = mbyb+lda
                                                        +
                                                        921  mbyd = mbyd+lda
                                                        +
                                                        922  enddo
                                                        +
                                                        923 
                                                        +
                                                        924  ! Table B information
                                                        +
                                                        925 
                                                        +
                                                        926  do i=1,ntbb(lot)
                                                        +
                                                        927  if(msgfull(mbyt,ldb,maxdx).or.(iupb(mgwa,mbyb,8)==255)) then
                                                        +
                                                        928  call msgwrt(lunot,mgwa,mbyt)
                                                        +
                                                        929  call dxmini(mgwa,mbyt,mby4,mbya,mbyb,mbyd)
                                                        +
                                                        930  endif
                                                        +
                                                        931  mbit = 8*(mby4-1)
                                                        +
                                                        932  call pkb(iupb(mgwa,mby4,24)+ldb,24,mgwa,mbit)
                                                        +
                                                        933  mbit = 8*(mbyb-1)
                                                        +
                                                        934  call pkb(iupb(mgwa,mbyb,8)+1,8,mgwa,mbit)
                                                        +
                                                        935  mbit = 8*(mbyd-1)
                                                        +
                                                        936  call pkc(tabb(i,lot),ldb,mgwa,mbit)
                                                        +
                                                        937  call pkb(0,8,mgwa,mbit)
                                                        +
                                                        938  mbyt = mbyt+ldb
                                                        +
                                                        939  mbyd = mbyd+ldb
                                                        +
                                                        940  enddo
                                                        +
                                                        941 
                                                        +
                                                        942  ! Table D information
                                                        +
                                                        943 
                                                        +
                                                        944  do i=1,ntbd(lot)
                                                        +
                                                        945  nseq = iupm(tabd(i,lot)(ldd+1:ldd+1),8)
                                                        +
                                                        946  lend = ldd+1 + l30*nseq
                                                        +
                                                        947  if(msgfull(mbyt,lend,maxdx).or.(iupb(mgwa,mbyd,8)==255)) then
                                                        +
                                                        948  call msgwrt(lunot,mgwa,mbyt)
                                                        +
                                                        949  call dxmini(mgwa,mbyt,mby4,mbya,mbyb,mbyd)
                                                        +
                                                        950  endif
                                                        +
                                                        951  mbit = 8*(mby4-1)
                                                        +
                                                        952  call pkb(iupb(mgwa,mby4,24)+lend,24,mgwa,mbit)
                                                        +
                                                        953  mbit = 8*(mbyd-1)
                                                        +
                                                        954  call pkb(iupb(mgwa,mbyd,8)+1,8,mgwa,mbit)
                                                        +
                                                        955  mbit = 8*(mbyt-4)
                                                        +
                                                        956  call pkc(tabd(i,lot),ldd,mgwa,mbit)
                                                        +
                                                        957  call pkb(nseq,8,mgwa,mbit)
                                                        +
                                                        958  do j=1,nseq
                                                        +
                                                        959  jj = ldd+2 + (j-1)*2
                                                        +
                                                        960  idn = iupm(tabd(i,lot)(jj:jj),16)
                                                        +
                                                        961  call pkc(adn30(idn,l30),l30,mgwa,mbit)
                                                        +
                                                        962  enddo
                                                        +
                                                        963  mbyt = mbyt+lend
                                                        +
                                                        964  enddo
                                                        +
                                                        965 
                                                        +
                                                        966  ! Write the unwritten (leftover) message.
                                                        +
                                                        967 
                                                        +
                                                        968  call msgwrt(lunot,mgwa,mbyt)
                                                        +
                                                        969 
                                                        +
                                                        970  ! Write out one additional (dummy) DX message containing zero subsets. This will serve as a delimiter for this set of
                                                        +
                                                        971  ! table messages within output unit lunot, just in case the next thing written to lunot ends up being another set of
                                                        +
                                                        972  ! table messages.
                                                        +
                                                        973 
                                                        +
                                                        974  call dxmini(mgwa,mbyt,mby4,mbya,mbyb,mbyd)
                                                        +
                                                        975  call getlens(mgwa,2,len0,len1,len2,l3,l4,l5)
                                                        +
                                                        976  mbit = (len0+len1+len2+4)*8
                                                        +
                                                        977  call pkb(0,16,mgwa,mbit)
                                                        +
                                                        978  call msgwrt(lunot,mgwa,mbyt)
                                                        +
                                                        979 
                                                        +
                                                        980  return
                                                        +
                                                        981 end subroutine wrdxtb
                                                        +
                                                        982 
                                                        +
                                                        989 subroutine stbfdx(lun,mesg)
                                                        +
                                                        990 
                                                        +
                                                        991  use modv_vars, only: maxcd
                                                        +
                                                        992 
                                                        +
                                                        993  use moda_tababd
                                                        +
                                                        994 
                                                        +
                                                        995  implicit none
                                                        +
                                                        996 
                                                        +
                                                        997  integer, intent(in) :: lun, mesg(*)
                                                        +
                                                        998  integer maxdx, idxv, nxstr, ldxa, ldxb, ldxd, ld30, ldxbd(10), ldxbe(10), ja, jb, idxs, i3, i, j, n, nd, ndd, idn, &
                                                        +
                                                        999  jbit, len0, len1, len2, len3, l4, l5, lda, ldb, ldd, ldbd, ldbe, l30, ia, la, ib, lb, id, ld, iret, &
                                                        +
                                                        1000  ifxy, iupb, iupbs01, igetntbi, idn30
                                                        +
                                                        1001 
                                                        +
                                                        1002  character*128 bort_str
                                                        +
                                                        1003  character*128 tabb1, tabb2
                                                        +
                                                        1004  character*56 dxstr
                                                        +
                                                        1005  character*55 cseq
                                                        +
                                                        1006  character*50 dxcmp
                                                        +
                                                        1007  character*24 unit
                                                        +
                                                        1008  character*8 nemo
                                                        +
                                                        1009  character*6 numb, cidn
                                                        +
                                                        1010 
                                                        +
                                                        1011  common /dxtab/ maxdx, idxv, nxstr(10), ldxa(10), ldxb(10), ldxd(10), ld30(10), dxstr(10)
                                                        +
                                                        1012 
                                                        +
                                                        1013  data ldxbd /38, 70, 8*0/
                                                        +
                                                        1014  data ldxbe /42, 42, 8*0/
                                                        +
                                                        1015 
                                                        +
                                                        1016  ! Statement functions
                                                        +
                                                        1017  ja(i) = ia+1+lda*(i-1)
                                                        +
                                                        1018  jb(i) = ib+1+ldb*(i-1)
                                                        +
                                                        1019 
                                                        +
                                                        1020  ! Get some preliminary information from the message
                                                        +
                                                        1021 
                                                        +
                                                        1022  idxs = iupbs01(mesg,'MSBT')+1
                                                        +
                                                        1023  if(idxs>idxv+1) idxs = iupbs01(mesg,'MTVL')+1
                                                        +
                                                        1024  if(ldxa(idxs)==0 .or. ldxb(idxs)==0 .or. ldxd(idxs)==0) call bort('BUFRLIB: STBFDX - UNEXPECTED DICTIONARY '// &
                                                        +
                                                        1025  'MESSAGE SUBTYPE OR LOCAL VERSION NUMBER (E.G., L.V.N. HIGHER THAN KNOWN)')
                                                        +
                                                        1026 
                                                        +
                                                        1027  call getlens(mesg,3,len0,len1,len2,len3,l4,l5)
                                                        +
                                                        1028  i3 = len0+len1+len2
                                                        +
                                                        1029  dxcmp = ' '
                                                        +
                                                        1030  jbit = 8*(i3+7)
                                                        +
                                                        1031  call upc(dxcmp,nxstr(idxs),mesg,jbit,.false.)
                                                        +
                                                        1032  if(dxcmp/=dxstr(idxs)) call bort('BUFRLIB: STBFDX - UNEXPECTED DICTIONARY MESSAGE CONTENTS')
                                                        +
                                                        1033 
                                                        +
                                                        1034  ! Section 4 - read definitions for Tables A, B and D
                                                        +
                                                        1035 
                                                        +
                                                        1036  lda = ldxa(idxs)
                                                        +
                                                        1037  ldb = ldxb(idxs)
                                                        +
                                                        1038  ldd = ldxd(idxs)
                                                        +
                                                        1039  ldbd = ldxbd(idxs)
                                                        +
                                                        1040  ldbe = ldxbe(idxs)
                                                        +
                                                        1041  l30 = ld30(idxs)
                                                        +
                                                        1042 
                                                        +
                                                        1043  ia = i3+len3+5
                                                        +
                                                        1044  la = iupb(mesg,ia,8)
                                                        +
                                                        1045  ib = ja(la+1)
                                                        +
                                                        1046  lb = iupb(mesg,ib,8)
                                                        +
                                                        1047  id = jb(lb+1)
                                                        +
                                                        1048  ld = iupb(mesg,id,8)
                                                        +
                                                        1049 
                                                        +
                                                        1050  ! Table A
                                                        +
                                                        1051 
                                                        +
                                                        1052  do i=1,la
                                                        +
                                                        1053  n = igetntbi(lun,'A')
                                                        +
                                                        1054  jbit = 8*(ja(i)-1)
                                                        +
                                                        1055  call upc(taba(n,lun),lda,mesg,jbit,.true.)
                                                        +
                                                        1056  numb = ' '//taba(n,lun)(1:3)
                                                        +
                                                        1057  nemo = taba(n,lun)(4:11)
                                                        +
                                                        1058  cseq = taba(n,lun)(13:67)
                                                        +
                                                        1059  call stntbia(n,lun,numb,nemo,cseq)
                                                        +
                                                        1060  enddo
                                                        +
                                                        1061 
                                                        +
                                                        1062  ! Table B
                                                        +
                                                        1063 
                                                        +
                                                        1064  do i=1,lb
                                                        +
                                                        1065  n = igetntbi(lun,'B')
                                                        +
                                                        1066  jbit = 8*(jb(i)-1)
                                                        +
                                                        1067  call upc(tabb1,ldbd,mesg,jbit,.true.)
                                                        +
                                                        1068  jbit = 8*(jb(i)+ldbd-1)
                                                        +
                                                        1069  call upc(tabb2,ldbe,mesg,jbit,.true.)
                                                        +
                                                        1070  tabb(n,lun) = tabb1(1:ldxbd(idxv+1))//tabb2(1:ldxbe(idxv+1))
                                                        +
                                                        1071  numb = tabb(n,lun)(1:6)
                                                        +
                                                        1072  nemo = tabb(n,lun)(7:14)
                                                        +
                                                        1073  call nenubd(nemo,numb,lun)
                                                        +
                                                        1074  idnb(n,lun) = ifxy(numb)
                                                        +
                                                        1075  unit = tabb(n,lun)(71:94)
                                                        +
                                                        1076  call capit(unit)
                                                        +
                                                        1077  tabb(n,lun)(71:94) = unit
                                                        +
                                                        1078  ntbb(lun) = n
                                                        +
                                                        1079  enddo
                                                        +
                                                        1080 
                                                        +
                                                        1081  ! Table D
                                                        +
                                                        1082 
                                                        +
                                                        1083  do i=1,ld
                                                        +
                                                        1084  n = igetntbi(lun,'D')
                                                        +
                                                        1085  jbit = 8*id
                                                        +
                                                        1086  call upc(tabd(n,lun),ldd,mesg,jbit,.true.)
                                                        +
                                                        1087  numb = tabd(n,lun)(1:6)
                                                        +
                                                        1088  nemo = tabd(n,lun)(7:14)
                                                        +
                                                        1089  call nenubd(nemo,numb,lun)
                                                        +
                                                        1090  idnd(n,lun) = ifxy(numb)
                                                        +
                                                        1091  nd = iupb(mesg,id+ldd+1,8)
                                                        +
                                                        1092  if(nd>maxcd) then
                                                        +
                                                        1093  write(bort_str,'("BUFRLIB: STBFDX - NUMBER OF DESCRIPTORS IN '// &
                                                        +
                                                        1094  'TABLE D ENTRY ",A," IN BUFR TABLE (",I4,") EXCEEDS THE LIMIT (",I4,")")') nemo,nd,maxcd
                                                        +
                                                        1095  call bort(bort_str)
                                                        +
                                                        1096  endif
                                                        +
                                                        1097  do j=1,nd
                                                        +
                                                        1098  ndd = id+ldd+2 + (j-1)*l30
                                                        +
                                                        1099  jbit = 8*(ndd-1)
                                                        +
                                                        1100  call upc(cidn,l30,mesg,jbit,.true.)
                                                        +
                                                        1101  idn = idn30(cidn,l30)
                                                        +
                                                        1102  call pktdd(n,lun,idn,iret)
                                                        +
                                                        1103  if(iret<0) call bort('BUFRLIB: STBFDX - BAD RETURN FROM BUFRLIB ROUTINE PKTDD, SEE PREVIOUS WARNING MESSAGE')
                                                        +
                                                        1104  enddo
                                                        +
                                                        1105  id = id+ldd+1 + nd*l30
                                                        +
                                                        1106  if(iupb(mesg,id+1,8)==0) id = id+1
                                                        +
                                                        1107  ntbd(lun) = n
                                                        +
                                                        1108  enddo
                                                        +
                                                        1109 
                                                        +
                                                        1110  return
                                                        +
                                                        1111 end subroutine stbfdx
                                                        +
                                                        1112 
                                                        +
                                                        1122 integer function idxmsg( mesg ) result( iret )
                                                        +
                                                        1123 
                                                        +
                                                        1124  implicit none
                                                        +
                                                        1125 
                                                        +
                                                        1126  integer, intent(in) :: mesg(*)
                                                        +
                                                        1127  integer iupbs01
                                                        +
                                                        1128 
                                                        +
                                                        1129  ! Note that the following test relies upon logic within subroutine dxmini() which zeroes out the Section 1 date of
                                                        +
                                                        1130  ! all DX dictionary messages.
                                                        +
                                                        1131 
                                                        +
                                                        1132  if ( (iupbs01(mesg,'MTYP')==11) .and. &
                                                        +
                                                        1133  (iupbs01(mesg,'MNTH')==0) .and. (iupbs01(mesg,'DAYS')==0) .and. (iupbs01(mesg,'HOUR')==0) ) then
                                                        +
                                                        1134  iret = 1
                                                        +
                                                        1135  else
                                                        +
                                                        1136  iret = 0
                                                        +
                                                        1137  end if
                                                        +
                                                        1138 
                                                        +
                                                        1139  return
                                                        +
                                                        1140 end function idxmsg
                                                        +
                                                        1141 
                                                        +
                                                        1152 integer function igetntbi ( lun, ctb ) result(iret)
                                                        +
                                                        1153 
                                                        +
                                                        1154  use moda_tababd
                                                        +
                                                        1155 
                                                        +
                                                        1156  implicit none
                                                        +
                                                        1157 
                                                        +
                                                        1158  integer, intent(in) :: lun
                                                        +
                                                        1159  integer imax
                                                        +
                                                        1160 
                                                        +
                                                        1161  character, intent(in) :: ctb
                                                        +
                                                        1162  character*128 bort_str
                                                        +
                                                        1163 
                                                        +
                                                        1164  if ( ctb == 'A' ) then
                                                        +
                                                        1165  iret = ntba(lun) + 1
                                                        +
                                                        1166  imax = ntba(0)
                                                        +
                                                        1167  else if ( ctb == 'B' ) then
                                                        +
                                                        1168  iret = ntbb(lun) + 1
                                                        +
                                                        1169  imax = ntbb(0)
                                                        +
                                                        1170  else ! ctb == 'D'
                                                        +
                                                        1171  iret = ntbd(lun) + 1
                                                        +
                                                        1172  imax = ntbd(0)
                                                        +
                                                        1173  endif
                                                        +
                                                        1174  if ( iret > imax ) then
                                                        +
                                                        1175  write(bort_str,'("BUFRLIB: IGETNTBI - NUMBER OF INTERNAL TABLE",A1," ENTRIES EXCEEDS THE LIMIT (",I4,")")') ctb, imax
                                                        +
                                                        1176  call bort(bort_str)
                                                        +
                                                        1177  endif
                                                        +
                                                        1178 
                                                        +
                                                        1179  return
                                                        +
                                                        1180 end function igetntbi
                                                        +
                                                        1181 
                                                        +
                                                        1196 subroutine nemtbax(lun,nemo,mtyp,msbt,inod)
                                                        +
                                                        1197 
                                                        +
                                                        1198  use moda_tababd
                                                        +
                                                        1199 
                                                        +
                                                        1200  implicit none
                                                        +
                                                        1201 
                                                        +
                                                        1202  integer, intent(in) :: lun
                                                        +
                                                        1203  integer, intent(out) :: mtyp, msbt, inod
                                                        +
                                                        1204  integer i
                                                        +
                                                        1205 
                                                        +
                                                        1206  character*(*), intent(in) :: nemo
                                                        +
                                                        1207  character*128 bort_str
                                                        +
                                                        1208 
                                                        +
                                                        1209  inod = 0
                                                        +
                                                        1210 
                                                        +
                                                        1211  ! Look for nemo in Table A
                                                        +
                                                        1212 
                                                        +
                                                        1213  do i=1,ntba(lun)
                                                        +
                                                        1214  if(taba(i,lun)(4:11)==nemo) then
                                                        +
                                                        1215  mtyp = idna(i,lun,1)
                                                        +
                                                        1216  msbt = idna(i,lun,2)
                                                        +
                                                        1217  inod = mtab(i,lun)
                                                        +
                                                        1218  if(mtyp<0 .or. mtyp>255) then
                                                        +
                                                        1219  write(bort_str,'("BUFRLIB: NEMTBAX - INVALID MESSAGE TYPE (",I4,") RETURNED FOR MENMONIC ",A)') mtyp, nemo
                                                        +
                                                        1220  call bort(bort_str)
                                                        +
                                                        1221  endif
                                                        +
                                                        1222  if(msbt<0 .or. msbt>255) then
                                                        +
                                                        1223  write(bort_str,'("BUFRLIB: NEMTBAX - INVALID MESSAGE SUBTYPE (",I4,") RETURNED FOR MENMONIC ",A)') msbt, nemo
                                                        +
                                                        1224  call bort(bort_str)
                                                        +
                                                        1225  endif
                                                        +
                                                        1226  exit
                                                        +
                                                        1227  endif
                                                        +
                                                        1228  enddo
                                                        +
                                                        1229 
                                                        +
                                                        1230  return
                                                        +
                                                        1231 end subroutine nemtbax
                                                        +
                                                        1232 
                                                        +
                                                        1246 subroutine nemtba(lun,nemo,mtyp,msbt,inod)
                                                        +
                                                        1247 
                                                        +
                                                        1248  implicit none
                                                        +
                                                        1249 
                                                        +
                                                        1250  integer, intent(in) :: lun
                                                        +
                                                        1251  integer, intent(out) :: mtyp, msbt, inod
                                                        +
                                                        1252 
                                                        +
                                                        1253  character*(*), intent(in) :: nemo
                                                        +
                                                        1254  character*128 bort_str
                                                        +
                                                        1255 
                                                        +
                                                        1256  ! Look for nemo in Table A
                                                        +
                                                        1257 
                                                        +
                                                        1258  call nemtbax(lun,nemo,mtyp,msbt,inod)
                                                        +
                                                        1259  if(inod==0) then
                                                        +
                                                        1260  write(bort_str,'("BUFRLIB: NEMTBA - CAN''T FIND MNEMONIC ",A)') nemo
                                                        +
                                                        1261  call bort(bort_str)
                                                        +
                                                        1262  endif
                                                        +
                                                        1263 
                                                        +
                                                        1264  return
                                                        +
                                                        1265 end subroutine nemtba
                                                        +
                                                        1266 
                                                        +
                                                        1277 subroutine nemtbb(lun,itab,unit,iscl,iref,ibit)
                                                        +
                                                        1278 
                                                        +
                                                        1279  use moda_tababd
                                                        +
                                                        1280 
                                                        +
                                                        1281  implicit none
                                                        +
                                                        1282 
                                                        +
                                                        1283  integer, intent(in) :: lun, itab
                                                        +
                                                        1284  integer, intent(out) :: iscl, iref, ibit
                                                        +
                                                        1285  integer idn, ierns
                                                        +
                                                        1286 
                                                        +
                                                        1287  character*128 bort_str
                                                        +
                                                        1288  character*24, intent(out) :: unit
                                                        +
                                                        1289  character*8 nemo
                                                        +
                                                        1290 
                                                        +
                                                        1291  if(itab<=0 .or. itab>ntbb(lun)) then
                                                        +
                                                        1292  write(bort_str,'("BUFRLIB: NEMTBB - ITAB (",I7,") NOT FOUND IN TABLE B")') itab
                                                        +
                                                        1293  call bort(bort_str)
                                                        +
                                                        1294  endif
                                                        +
                                                        1295 
                                                        +
                                                        1296  ! Pull out Table B information
                                                        +
                                                        1297 
                                                        +
                                                        1298  idn = idnb(itab,lun)
                                                        +
                                                        1299  nemo = tabb(itab,lun)( 7:14)
                                                        +
                                                        1300  unit = tabb(itab,lun)(71:94)
                                                        +
                                                        1301  call strnum(tabb(itab,lun)( 95: 98),iscl,ierns)
                                                        +
                                                        1302  call strnum(tabb(itab,lun)( 99:109),iref,ierns)
                                                        +
                                                        1303  call strnum(tabb(itab,lun)(110:112),ibit,ierns)
                                                        +
                                                        1304 
                                                        +
                                                        1305  ! Check Table B contents
                                                        +
                                                        1306 
                                                        +
                                                        1307  if(unit(1:5)/='CCITT' .and. ibit>32) then
                                                        +
                                                        1308  write(bort_str,'("BUFRLIB: NEMTBB - BIT WIDTH FOR NON-CHARACTER TABLE B MNEMONIC ",A," (",I7,") IS > 32")') nemo,ibit
                                                        +
                                                        1309  call bort(bort_str)
                                                        +
                                                        1310  endif
                                                        +
                                                        1311  if(unit(1:5)=='CCITT' .and. mod(ibit,8)/=0) then
                                                        +
                                                        1312  write(bort_str,'("BUFRLIB: NEMTBB - BIT WIDTH FOR CHARACTER TABLE B MNEMONIC ",A," (",I7,") IS NOT A MULTIPLE OF 8")') &
                                                        +
                                                        1313  nemo,ibit
                                                        +
                                                        1314  call bort(bort_str)
                                                        +
                                                        1315  endif
                                                        +
                                                        1316 
                                                        +
                                                        1317  return
                                                        +
                                                        1318 end subroutine nemtbb
                                                        +
                                                        1319 
                                                        +
                                                        1345 subroutine nemtbd(lun,itab,nseq,nems,irps,knts)
                                                        +
                                                        1346 
                                                        +
                                                        1347  use modv_vars, only: maxcd
                                                        +
                                                        1348 
                                                        +
                                                        1349  use moda_tababd
                                                        +
                                                        1350 
                                                        +
                                                        1351  implicit none
                                                        +
                                                        1352 
                                                        +
                                                        1353  integer, intent(in) :: lun, itab
                                                        +
                                                        1354  integer, intent(out) :: nseq, irps(*), knts(*)
                                                        +
                                                        1355  integer i, j, ndsc, idsc, iret
                                                        +
                                                        1356 
                                                        +
                                                        1357  character*128 bort_str
                                                        +
                                                        1358  character*8, intent(out) :: nems(*)
                                                        +
                                                        1359  character*8 nemo, nemt, nemf
                                                        +
                                                        1360  character tab
                                                        +
                                                        1361 
                                                        +
                                                        1362  if(itab<=0 .or. itab>ntbd(lun)) then
                                                        +
                                                        1363  write(bort_str,'("BUFRLIB: NEMTBD - ITAB (",I7,") NOT FOUND IN TABLE D")') itab
                                                        +
                                                        1364  call bort(bort_str)
                                                        +
                                                        1365  endif
                                                        +
                                                        1366 
                                                        +
                                                        1367  ! Clear the return values
                                                        +
                                                        1368 
                                                        +
                                                        1369  nseq = 0
                                                        +
                                                        1370 
                                                        +
                                                        1371  do i=1,maxcd
                                                        +
                                                        1372  nems(i) = ' '
                                                        +
                                                        1373  irps(i) = 0
                                                        +
                                                        1374  knts(i) = 0
                                                        +
                                                        1375  enddo
                                                        +
                                                        1376 
                                                        +
                                                        1377  ! Parse the Table D entry
                                                        +
                                                        1378 
                                                        +
                                                        1379  nemo = tabd(itab,lun)(7:14)
                                                        +
                                                        1380  idsc = idnd(itab,lun)
                                                        +
                                                        1381  call uptdd(itab,lun,0,ndsc)
                                                        +
                                                        1382 
                                                        +
                                                        1383  ! Loop through each child mnemonic
                                                        +
                                                        1384 
                                                        +
                                                        1385  do j=1,ndsc
                                                        +
                                                        1386  if(nseq+1>maxcd) then
                                                        +
                                                        1387  write(bort_str,'("BUFRLIB: NEMTBD - THERE ARE MORE THAN '// &
                                                        +
                                                        1388  '(",I4,") DESCRIPTORS (THE LIMIT) IN TABLE D SEQUENCE MNEMONIC ",A)') maxcd, nemo
                                                        +
                                                        1389  call bort(bort_str)
                                                        +
                                                        1390  endif
                                                        +
                                                        1391  call uptdd(itab,lun,j,idsc)
                                                        +
                                                        1392  call numtab(lun,idsc,nemt,tab,iret)
                                                        +
                                                        1393  if(tab=='R') then
                                                        +
                                                        1394  if(iret<0) then
                                                        +
                                                        1395  ! Regular (i.e. non-delayed) replication
                                                        +
                                                        1396  irps(nseq+1) = 1
                                                        +
                                                        1397  knts(nseq+1) = abs(iret)
                                                        +
                                                        1398  elseif(iret>0) then
                                                        +
                                                        1399  ! Delayed replication
                                                        +
                                                        1400  irps(nseq+1) = iret
                                                        +
                                                        1401  endif
                                                        +
                                                        1402  elseif(tab=='F') then
                                                        +
                                                        1403  ! Replication factor
                                                        +
                                                        1404  irps(nseq+1) = iret
                                                        +
                                                        1405  elseif(tab=='D'.or.tab=='C') then
                                                        +
                                                        1406  nseq = nseq+1
                                                        +
                                                        1407  nems(nseq) = nemt
                                                        +
                                                        1408  elseif(tab=='B') then
                                                        +
                                                        1409  nseq = nseq+1
                                                        +
                                                        1410  if((nemt(1:1)=='.').and.(j<ndsc)) then
                                                        +
                                                        1411  ! This is a "following value" mnemonic
                                                        +
                                                        1412  call uptdd(itab,lun,j+1,idsc)
                                                        +
                                                        1413  call numtab(lun,idsc,nemf,tab,iret)
                                                        +
                                                        1414  call rsvfvm(nemt,nemf)
                                                        +
                                                        1415  endif
                                                        +
                                                        1416  nems(nseq) = nemt
                                                        +
                                                        1417  endif
                                                        +
                                                        1418  enddo
                                                        +
                                                        1419 
                                                        +
                                                        1420  return
                                                        +
                                                        1421 end subroutine nemtbd
                                                        +
                                                        1422 
                                                        +
                                                        1445 recursive subroutine nemdefs ( lunit, nemo, celem, cunit, iret )
                                                        +
                                                        1446 
                                                        +
                                                        1447  use modv_vars, only: im8b
                                                        +
                                                        1448 
                                                        +
                                                        1449  use moda_tababd
                                                        +
                                                        1450 
                                                        +
                                                        1451  implicit none
                                                        +
                                                        1452 
                                                        +
                                                        1453  integer, intent(in) :: lunit
                                                        +
                                                        1454  integer, intent(out) :: iret
                                                        +
                                                        1455  integer my_lunit, lun, il, im, idn, iloc, ls
                                                        +
                                                        1456 
                                                        +
                                                        1457  character*(*), intent(in) :: nemo
                                                        +
                                                        1458  character*(*), intent(out) :: celem, cunit
                                                        +
                                                        1459  character tab
                                                        +
                                                        1460 
                                                        +
                                                        1461  ! Check for I8 integers.
                                                        +
                                                        1462 
                                                        +
                                                        1463  if(im8b) then
                                                        +
                                                        1464  im8b=.false.
                                                        +
                                                        1465  call x84 ( lunit, my_lunit, 1 )
                                                        +
                                                        1466  call nemdefs ( my_lunit, nemo, celem, cunit, iret )
                                                        +
                                                        1467  call x48 ( iret, iret, 1 )
                                                        +
                                                        1468  im8b=.true.
                                                        +
                                                        1469  return
                                                        +
                                                        1470  endif
                                                        +
                                                        1471 
                                                        +
                                                        1472  iret = -1
                                                        +
                                                        1473 
                                                        +
                                                        1474  ! Get lun from lunit.
                                                        +
                                                        1475 
                                                        +
                                                        1476  call status( lunit, lun, il, im )
                                                        +
                                                        1477  if ( il == 0 ) return
                                                        +
                                                        1478 
                                                        +
                                                        1479  ! Find the requested mnemonic in the internal Table B arrays.
                                                        +
                                                        1480 
                                                        +
                                                        1481  call nemtab( lun, nemo, idn, tab, iloc )
                                                        +
                                                        1482  if ( ( iloc == 0 ) .or. ( tab /= 'B' ) ) return
                                                        +
                                                        1483 
                                                        +
                                                        1484  ! Get the element name and units of the requested mnemonic.
                                                        +
                                                        1485 
                                                        +
                                                        1486  celem = ' '
                                                        +
                                                        1487  ls = min(len(celem),55)
                                                        +
                                                        1488  celem(1:ls) = tabb(iloc,lun)(16:15+ls)
                                                        +
                                                        1489 
                                                        +
                                                        1490  cunit = ' '
                                                        +
                                                        1491  ls = min(len(cunit),24)
                                                        +
                                                        1492  cunit(1:ls) = tabb(iloc,lun)(71:70+ls)
                                                        +
                                                        1493 
                                                        +
                                                        1494  iret = 0
                                                        +
                                                        1495 
                                                        +
                                                        1496  return
                                                        +
                                                        1497 end subroutine nemdefs
                                                        +
                                                        1498 
                                                        +
                                                        1513 subroutine nenubd(nemo,numb,lun)
                                                        +
                                                        1514 
                                                        +
                                                        1515  use moda_tababd
                                                        +
                                                        1516 
                                                        +
                                                        1517  implicit none
                                                        +
                                                        1518 
                                                        +
                                                        1519  character, intent(in) :: nemo*8, numb*6
                                                        +
                                                        1520  character*128 bort_str
                                                        +
                                                        1521 
                                                        +
                                                        1522  integer, intent(in) :: lun
                                                        +
                                                        1523  integer n
                                                        +
                                                        1524 
                                                        +
                                                        1525  do n=1,ntbb(lun)
                                                        +
                                                        1526  if(numb==tabb(n,lun)(1:6)) then
                                                        +
                                                        1527  write(bort_str,'("BUFRLIB: NENUBD - TABLE B FXY VALUE (",A,") HAS ALREADY BEEN DEFINED (DUPLICATE)")') numb
                                                        +
                                                        1528  call bort(bort_str)
                                                        +
                                                        1529  endif
                                                        +
                                                        1530  if(nemo==tabb(n,lun)(7:14)) then
                                                        +
                                                        1531  write(bort_str,'("BUFRLIB: NENUBD - TABLE B MNEMONIC (",A,") HAS ALREADY BEEN DEFINED (DUPLICATE)")') nemo
                                                        +
                                                        1532  call bort(bort_str)
                                                        +
                                                        1533  endif
                                                        +
                                                        1534  enddo
                                                        +
                                                        1535 
                                                        +
                                                        1536  do n=1,ntbd(lun)
                                                        +
                                                        1537  if(numb==tabd(n,lun)(1:6)) then
                                                        +
                                                        1538  write(bort_str,'("BUFRLIB: NENUBD - TABLE D FXY VALUE (",A,") HAS ALREADY BEEN DEFINED (DUPLICATE)")') numb
                                                        +
                                                        1539  call bort(bort_str)
                                                        +
                                                        1540  endif
                                                        +
                                                        1541  if(nemo==tabd(n,lun)(7:14)) then
                                                        +
                                                        1542  write(bort_str,'("BUFRLIB: NENUBD - TABLE D MNEMONIC (",A,") HAS ALREADY BEEN DEFINED (DUPLICATE)")') nemo
                                                        +
                                                        1543  call bort(bort_str)
                                                        +
                                                        1544  endif
                                                        +
                                                        1545  enddo
                                                        +
                                                        1546 
                                                        +
                                                        1547  return
                                                        +
                                                        1548 end subroutine nenubd
                                                        +
                                                        1549 
                                                        +
                                                        1559 subroutine stntbia ( n, lun, numb, nemo, celsq )
                                                        +
                                                        1560 
                                                        +
                                                        1561  use moda_tababd
                                                        +
                                                        1562 
                                                        +
                                                        1563  implicit none
                                                        +
                                                        1564 
                                                        +
                                                        1565  integer, intent(in) :: n, lun
                                                        +
                                                        1566  integer i, mtyp, msbt
                                                        +
                                                        1567 
                                                        +
                                                        1568  character*(*), intent(in) :: numb, nemo, celsq
                                                        +
                                                        1569  character*128 bort_str
                                                        +
                                                        1570 
                                                        +
                                                        1571  ! Confirm that neither nemo nor numb has already been defined within the internal BUFR Table A for the given lun.
                                                        +
                                                        1572 
                                                        +
                                                        1573  do i=1,ntba(lun)
                                                        +
                                                        1574  if(numb(4:6)==taba(i,lun)(1:3)) then
                                                        +
                                                        1575  write(bort_str,'("BUFRLIB: STNTBIA - TABLE A FXY VALUE (",A,") HAS ALREADY BEEN DEFINED (DUPLICATE)")') numb
                                                        +
                                                        1576  call bort(bort_str)
                                                        +
                                                        1577  endif
                                                        +
                                                        1578  if(nemo(1:8)==taba(i,lun)(4:11)) then
                                                        +
                                                        1579  write(bort_str,'("BUFRLIB: STNTBIA - TABLE A MNEMONIC (",A,") HAS ALREADY BEEN DEFINED (DUPLICATE)")') nemo
                                                        +
                                                        1580  call bort(bort_str)
                                                        +
                                                        1581  endif
                                                        +
                                                        1582  enddo
                                                        +
                                                        1583 
                                                        +
                                                        1584  ! Store the values within the internal BUFR Table A.
                                                        +
                                                        1585 
                                                        +
                                                        1586  taba(n,lun)(1:3) = numb(4:6)
                                                        +
                                                        1587  taba(n,lun)(4:11) = nemo(1:8)
                                                        +
                                                        1588  taba(n,lun)(13:67) = celsq(1:55)
                                                        +
                                                        1589 
                                                        +
                                                        1590  ! Decode and store the message type and subtype.
                                                        +
                                                        1591 
                                                        +
                                                        1592  if ( verify( nemo(3:8), '1234567890' ) == 0 ) then
                                                        +
                                                        1593  ! Message type & subtype obtained directly from Table A mnemonic
                                                        +
                                                        1594  read ( nemo,'(2X,2I3)') mtyp, msbt
                                                        +
                                                        1595  idna(n,lun,1) = mtyp
                                                        +
                                                        1596  idna(n,lun,2) = msbt
                                                        +
                                                        1597  else
                                                        +
                                                        1598  ! Message type obtained from Y value of Table A seq. descriptor
                                                        +
                                                        1599  read ( numb(4:6),'(I3)') idna(n,lun,1)
                                                        +
                                                        1600  ! Message subtype hardwired to zero
                                                        +
                                                        1601  idna(n,lun,2) = 0
                                                        +
                                                        1602  endif
                                                        +
                                                        1603 
                                                        +
                                                        1604  ! Update the count of internal Table A entries.
                                                        +
                                                        1605 
                                                        +
                                                        1606  ntba(lun) = n
                                                        +
                                                        1607 
                                                        +
                                                        1608  return
                                                        +
                                                        1609 end subroutine stntbia
                                                        +
                                                        1610 
                                                        +
                                                        1620 subroutine stntbi ( n, lun, numb, nemo, celsq )
                                                        +
                                                        1621 
                                                        +
                                                        1622  use moda_tababd
                                                        +
                                                        1623 
                                                        +
                                                        1624  implicit none
                                                        +
                                                        1625 
                                                        +
                                                        1626  integer, intent(in) :: n, lun
                                                        +
                                                        1627  integer ifxy
                                                        +
                                                        1628 
                                                        +
                                                        1629  character*(*), intent(in) :: numb, nemo, celsq
                                                        +
                                                        1630 
                                                        +
                                                        1631  call nenubd ( nemo, numb, lun )
                                                        +
                                                        1632 
                                                        +
                                                        1633  if ( numb(1:1) == '0') then
                                                        +
                                                        1634  idnb(n,lun) = ifxy(numb)
                                                        +
                                                        1635  tabb(n,lun)(1:6) = numb(1:6)
                                                        +
                                                        1636  tabb(n,lun)(7:14) = nemo(1:8)
                                                        +
                                                        1637  tabb(n,lun)(16:70) = celsq(1:55)
                                                        +
                                                        1638  ntbb(lun) = n
                                                        +
                                                        1639  else ! numb(1:1) == '3'
                                                        +
                                                        1640  idnd(n,lun) = ifxy(numb)
                                                        +
                                                        1641  tabd(n,lun)(1:6) = numb(1:6)
                                                        +
                                                        1642  tabd(n,lun)(7:14) = nemo(1:8)
                                                        +
                                                        1643  tabd(n,lun)(16:70) = celsq(1:55)
                                                        +
                                                        1644  ntbd(lun) = n
                                                        +
                                                        1645  endif
                                                        +
                                                        1646 
                                                        +
                                                        1647  return
                                                        +
                                                        1648 end subroutine stntbi
                                                        +
                                                        1649 
                                                        +
                                                        1665 subroutine pktdd(id,lun,idn,iret)
                                                        +
                                                        1666 
                                                        +
                                                        1667  use modv_vars, only: maxcd
                                                        +
                                                        1668 
                                                        +
                                                        1669  use moda_tababd
                                                        +
                                                        1670 
                                                        +
                                                        1671  implicit none
                                                        +
                                                        1672 
                                                        +
                                                        1673  integer, intent(in) :: id, lun, idn
                                                        +
                                                        1674  integer, intent(out) :: iret
                                                        +
                                                        1675  integer maxdx, idxv, nxstr, ldxa, ldxb, ldxd, ld30, iprt, ldd, nd, idm, iupm
                                                        +
                                                        1676 
                                                        +
                                                        1677  character*128 errstr
                                                        +
                                                        1678  character*56 dxstr
                                                        +
                                                        1679 
                                                        +
                                                        1680  common /dxtab/ maxdx, idxv, nxstr(10), ldxa(10), ldxb(10), ldxd(10), ld30(10), dxstr(10)
                                                        +
                                                        1681  common /quiet/ iprt
                                                        +
                                                        1682 
                                                        +
                                                        1683  ! ldd points to the byte within tabd(id,lun) which contains (in packed integer format) a count of the number of child
                                                        +
                                                        1684  ! mnemonics stored thus far for this parent mnemonic.
                                                        +
                                                        1685  ldd = ldxd(idxv+1)+1
                                                        +
                                                        1686 
                                                        +
                                                        1687  ! Zero the counter if idn is zero
                                                        +
                                                        1688  if(idn==0) then
                                                        +
                                                        1689  call ipkm(tabd(id,lun)(ldd:ldd),1,0)
                                                        +
                                                        1690  iret = 0
                                                        +
                                                        1691  return
                                                        +
                                                        1692  endif
                                                        +
                                                        1693 
                                                        +
                                                        1694  ! Update the stored descriptor count for this Table D entry. nd is the (unpacked) count of the number of child mnemonics
                                                        +
                                                        1695  ! stored thus far for this parent mnemonic.
                                                        +
                                                        1696  nd = iupm(tabd(id,lun)(ldd:ldd),8)
                                                        +
                                                        1697 
                                                        +
                                                        1698  if(nd<0 .or. nd==maxcd) then
                                                        +
                                                        1699  if(iprt>=0) then
                                                        +
                                                        1700  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        1701  if(nd<0) then
                                                        +
                                                        1702  write ( unit=errstr, fmt='(A,I4,A)' ) 'BUFRLIB: PKTDD - BAD COUNTER VALUE (=', nd, ') - RETURN WITH IRET = -1'
                                                        +
                                                        1703  else
                                                        +
                                                        1704  write ( unit=errstr, fmt='(A,I4,A,A)' ) 'BUFRLIB: PKTDD - MAXIMUM NUMBER OF CHILD MNEMONICS (=', &
                                                        +
                                                        1705  maxcd, ') ALREADY STORED FOR THIS PARENT - RETURN WITH IRET = -1'
                                                        +
                                                        1706  endif
                                                        +
                                                        1707  call errwrt(errstr)
                                                        +
                                                        1708  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        1709  call errwrt(' ')
                                                        +
                                                        1710  endif
                                                        +
                                                        1711  iret = -1
                                                        +
                                                        1712  return
                                                        +
                                                        1713  else
                                                        +
                                                        1714  nd = nd+1
                                                        +
                                                        1715  call ipkm(tabd(id,lun)(ldd:ldd),1,nd)
                                                        +
                                                        1716  iret = nd
                                                        +
                                                        1717  endif
                                                        +
                                                        1718 
                                                        +
                                                        1719  ! Pack and store the descriptor. idm points to the starting byte within tabd(id,lun) at which the idn value for this
                                                        +
                                                        1720  ! child mnemonic will be stored (as a packed integer of width = 2 bytes).
                                                        +
                                                        1721  idm = ldd+1 + (nd-1)*2
                                                        +
                                                        1722  call ipkm(tabd(id,lun)(idm:idm),2,idn)
                                                        +
                                                        1723 
                                                        +
                                                        1724  return
                                                        +
                                                        1725 end subroutine pktdd
                                                        +
                                                        1726 
                                                        +
                                                        1740 subroutine uptdd(id,lun,ient,iret)
                                                        +
                                                        1741 
                                                        +
                                                        1742  use moda_tababd
                                                        +
                                                        1743 
                                                        +
                                                        1744  implicit none
                                                        +
                                                        1745 
                                                        +
                                                        1746  integer, intent(in) :: id, lun, ient
                                                        +
                                                        1747  integer, intent(out) :: iret
                                                        +
                                                        1748  integer maxdx, idxv, nxstr, ldxa, ldxb, ldxd, ld30, ldd, ndsc, idsc, iupm
                                                        +
                                                        1749 
                                                        +
                                                        1750  character*128 bort_str
                                                        +
                                                        1751  character*56 dxstr
                                                        +
                                                        1752 
                                                        +
                                                        1753  common /dxtab/ maxdx, idxv, nxstr(10), ldxa(10), ldxb(10), ldxd(10), ld30(10), dxstr(10)
                                                        +
                                                        1754 
                                                        +
                                                        1755  ! Check if ient is in bounds
                                                        +
                                                        1756 
                                                        +
                                                        1757  ldd = ldxd(idxv+1)+1
                                                        +
                                                        1758  ndsc = iupm(tabd(id,lun)(ldd:ldd),8)
                                                        +
                                                        1759  if(ient==0) then
                                                        +
                                                        1760  iret = ndsc
                                                        +
                                                        1761  return
                                                        +
                                                        1762  elseif(ient<0 .or. ient>ndsc) then
                                                        +
                                                        1763  write(bort_str,'("BUFRLIB: UPTDD - VALUE OF THIRD ARGUMENT IENT (INPUT) IS OUT OF RANGE (IENT =",I4,")")') ient
                                                        +
                                                        1764  call bort(bort_str)
                                                        +
                                                        1765  endif
                                                        +
                                                        1766 
                                                        +
                                                        1767  ! Return the descriptor indicated by ient
                                                        +
                                                        1768 
                                                        +
                                                        1769  idsc = ldd+1 + (ient-1)*2
                                                        +
                                                        1770  iret = iupm(tabd(id,lun)(idsc:idsc),16)
                                                        +
                                                        1771 
                                                        +
                                                        1772  return
                                                        +
                                                        1773 end subroutine uptdd
                                                        +
                                                        1774 
                                                        +
                                                        1794 subroutine rsvfvm(nem1,nem2)
                                                        +
                                                        1795 
                                                        +
                                                        1796  implicit none
                                                        +
                                                        1797 
                                                        +
                                                        1798  character*8, intent(inout) :: nem1
                                                        +
                                                        1799  character*8, intent(in) :: nem2
                                                        +
                                                        1800 
                                                        +
                                                        1801  integer i, j
                                                        +
                                                        1802 
                                                        +
                                                        1803  do i=1,len(nem1)
                                                        +
                                                        1804  if(i==1) then
                                                        +
                                                        1805  ! Skip the initial ".", and initialize J.
                                                        +
                                                        1806  j = 1
                                                        +
                                                        1807  else
                                                        +
                                                        1808  if(nem1(i:i)=='.') then
                                                        +
                                                        1809  nem1(i:i) = nem2(j:j)
                                                        +
                                                        1810  j = j+1
                                                        +
                                                        1811  endif
                                                        +
                                                        1812  endif
                                                        +
                                                        1813  enddo
                                                        +
                                                        1814 
                                                        +
                                                        1815  return
                                                        +
                                                        1816 end subroutine rsvfvm
                                                        +
                                                        subroutine bort(str)
                                                        Log an error message, then abort the application program.
                                                        Definition: borts.F90:15
                                                        +
                                                        subroutine bort2(str1, str2)
                                                        Log two error messages, then abort the application program.
                                                        Definition: borts.F90:39
                                                        +
                                                        recursive integer function iupb(mbay, nbyt, nbit)
                                                        Decode an integer value from within a specified number of bits of an integer array,...
                                                        Definition: cidecode.F90:226
                                                        +
                                                        recursive integer function iupm(cbay, nbits)
                                                        Decode an integer value from within a specified number of bits of a character string,...
                                                        Definition: cidecode.F90:265
                                                        +
                                                        subroutine upc(chr, nchr, ibay, ibit, cnvnull)
                                                        Decode a character string from within a specified number of bytes of an integer array,...
                                                        Definition: cidecode.F90:26
                                                        +
                                                        subroutine pkc(chr, nchr, ibay, ibit)
                                                        Encode a character string within a specified number of bytes of an integer array, starting at the bit...
                                                        Definition: ciencode.F90:25
                                                        +
                                                        recursive subroutine ipkm(cbay, nbyt, n)
                                                        Encode an integer value within a specified number of bytes of a character string, up to a maximum of ...
                                                        Definition: ciencode.F90:194
                                                        +
                                                        subroutine pkb(nval, nbits, ibay, ibit)
                                                        Encode an integer value within a specified number of bits of an integer array, starting at the bit im...
                                                        Definition: ciencode.F90:140
                                                        +
                                                        subroutine cpbfdx(lud, lun)
                                                        Copy all of the DX BUFR table information from one unit to another within internal memory.
                                                        Definition: copydata.F90:678
                                                        +
                                                        subroutine elemdx(card, lun)
                                                        Decode the scale factor, reference value, bit width and units (i.e., the "elements") from a Table B m...
                                                        Definition: dxtable.F90:516
                                                        +
                                                        subroutine nemtbb(lun, itab, unit, iscl, iref, ibit)
                                                        Get information about a Table B descriptor from the internal DX BUFR tables.
                                                        Definition: dxtable.F90:1278
                                                        +
                                                        subroutine dxmini(mbay, mbyt, mb4, mba, mbb, mbd)
                                                        Initialize a DX BUFR tables (dictionary) message, writing all the preliminary information into Sectio...
                                                        Definition: dxtable.F90:697
                                                        +
                                                        subroutine nemtba(lun, nemo, mtyp, msbt, inod)
                                                        Get information about a Table A descriptor from the internal DX BUFR tables.
                                                        Definition: dxtable.F90:1247
                                                        +
                                                        subroutine rdusdx(lundx, lun)
                                                        Read and parse a file containing a user-supplied DX BUFR table in character format,...
                                                        Definition: dxtable.F90:197
                                                        +
                                                        subroutine rsvfvm(nem1, nem2)
                                                        Process a "following value" mnemonic.
                                                        Definition: dxtable.F90:1795
                                                        +
                                                        subroutine seqsdx(card, lun)
                                                        Decode the Table D sequence information from a mnemonic definition card that was previously read from...
                                                        Definition: dxtable.F90:333
                                                        +
                                                        recursive subroutine wrdxtb(lundx, lunot)
                                                        Generate one or more BUFR messages from the DX BUFR tables information associated with a given BUFR f...
                                                        Definition: dxtable.F90:850
                                                        +
                                                        subroutine nemtbax(lun, nemo, mtyp, msbt, inod)
                                                        Get information about a Table A descriptor from the internal DX BUFR tables.
                                                        Definition: dxtable.F90:1197
                                                        +
                                                        subroutine nemtbd(lun, itab, nseq, nems, irps, knts)
                                                        Get information about a Table D descriptor from the internal DX BUFR tables.
                                                        Definition: dxtable.F90:1346
                                                        +
                                                        subroutine stntbi(n, lun, numb, nemo, celsq)
                                                        Store a new entry within internal BUFR Table B or D.
                                                        Definition: dxtable.F90:1621
                                                        +
                                                        subroutine pktdd(id, lun, idn, iret)
                                                        Store information about a child mnemonic within the internal BUFR Table D.
                                                        Definition: dxtable.F90:1666
                                                        +
                                                        subroutine stntbia(n, lun, numb, nemo, celsq)
                                                        Store a new entry within internal BUFR Table A.
                                                        Definition: dxtable.F90:1560
                                                        +
                                                        subroutine stbfdx(lun, mesg)
                                                        Copy a DX BUFR tables message into the internal memory arrays in module moda_tababd.
                                                        Definition: dxtable.F90:990
                                                        +
                                                        subroutine writdx(lunit, lun, lundx)
                                                        Write DX BUFR table (dictionary) messages to the beginning of an output BUFR file in lunit.
                                                        Definition: dxtable.F90:812
                                                        +
                                                        recursive subroutine nemdefs(lunit, nemo, celem, cunit, iret)
                                                        Get the element name and units associated with a Table B descriptor.
                                                        Definition: dxtable.F90:1446
                                                        +
                                                        integer function igetntbi(lun, ctb)
                                                        Get the next available index for storing an entry within a specified internal DX BUFR table.
                                                        Definition: dxtable.F90:1153
                                                        +
                                                        subroutine readdx(lunit, lun, lundx)
                                                        Initialize modules moda_tababd and moda_msgcwd with DX BUFR (dictionary) tables.
                                                        Definition: dxtable.F90:29
                                                        +
                                                        subroutine dxinit(lun, ioi)
                                                        Clear out the internal arrays (in module moda_tababd) holding the DX BUFR table, then optionally init...
                                                        Definition: dxtable.F90:606
                                                        +
                                                        subroutine nenubd(nemo, numb, lun)
                                                        Confirm that a mnemonic and FXY value haven't already been defined.
                                                        Definition: dxtable.F90:1514
                                                        +
                                                        integer function idxmsg(mesg)
                                                        Check whether a BUFR message contains DX BUFR tables information that was generated by the NCEPLIBS-b...
                                                        Definition: dxtable.F90:1123
                                                        +
                                                        subroutine uptdd(id, lun, ient, iret)
                                                        Get the WMO bit-wise representation of the FXY value corresponding to a child mnemonic in a Table D s...
                                                        Definition: dxtable.F90:1741
                                                        +
                                                        subroutine rdbfdx(lunit, lun)
                                                        Beginning at the current file pointer location within lunit, read a complete DX BUFR table into inter...
                                                        Definition: dxtable.F90:121
                                                        +
                                                        subroutine errwrt(str)
                                                        Specify a custom location for the logging of error and diagnostic messages generated by the NCEPLIBS-...
                                                        Definition: errwrt.F90:32
                                                        +
                                                        subroutine nemtab(lun, nemo, idn, tab, iret)
                                                        Get information about a descriptor, based on a mnemonic.
                                                        Definition: fxy.F90:432
                                                        +
                                                        subroutine numtab(lun, idn, nemo, tab, iret)
                                                        Get information about a descriptor, based on the WMO bit-wise representation of an FXY value.
                                                        Definition: fxy.F90:357
                                                        +
                                                        character *(*) function adn30(idn, ldn)
                                                        Convert an FXY value from its WMO bit-wise representation to a character string of length 5 or 6.
                                                        Definition: fxy.F90:18
                                                        + + +
                                                        subroutine jstnum(str, sign, iret)
                                                        Left-justify a character string containing an encoded integer, by removing all leading blanks and any...
                                                        Definition: misc.F90:303
                                                        +
                                                        recursive subroutine strnum(str, num, iret)
                                                        Decode an integer from a character string.
                                                        Definition: misc.F90:177
                                                        +
                                                        subroutine capit(str)
                                                        Capitalize all of the alphabetic characters in a string.
                                                        Definition: misc.F90:355
                                                        +
                                                        Wrap C NCEPLIBS-bufr functions so they can be called from within the Fortran part of the library.
                                                        Definition: bufrlib.F90:11
                                                        +
                                                        Declare an array used by various subroutines and functions to hold a temporary working copy of a BUFR...
                                                        +
                                                        integer, dimension(:), allocatable mgwa
                                                        Temporary working copy of BUFR message.
                                                        +
                                                        Declare arrays and variables used to store DX BUFR tables internally for multiple file IDs.
                                                        +
                                                        integer, dimension(:), allocatable ntba
                                                        Number of Table A entries for each file ID (up to a maximum of maxtba, whose value is stored in array...
                                                        +
                                                        character *600, dimension(:,:), allocatable tabd
                                                        Table D entries for each file ID.
                                                        +
                                                        character *128, dimension(:,:), allocatable taba
                                                        Table A entries for each file ID.
                                                        +
                                                        integer, dimension(:,:), allocatable mtab
                                                        Entries within jump/link table corresponding to taba.
                                                        +
                                                        integer, dimension(:,:,:), allocatable idna
                                                        Message types (in array element 1) and subtypes (in array element 2) corresponding to taba.
                                                        +
                                                        integer, dimension(:), allocatable ntbd
                                                        Number of Table D entries for each file ID (up to a maximum of maxtbd, whose value is stored in array...
                                                        +
                                                        integer, dimension(:), allocatable ntbb
                                                        Number of Table B entries for each file ID (up to a maximum of maxtbb, whose value is stored in array...
                                                        +
                                                        integer, dimension(:,:), allocatable idnd
                                                        WMO bit-wise representations of the FXY values corresponding to tabd.
                                                        +
                                                        integer, dimension(:,:), allocatable idnb
                                                        WMO bit-wise representations of the FXY values corresponding to tabb.
                                                        +
                                                        character *128, dimension(:,:), allocatable tabb
                                                        Table B entries for each file ID.
                                                        +
                                                        recursive subroutine status(lunit, lun, il, im)
                                                        Check whether a specified Fortran logical unit number is currently connected to the NCEPLIBS-bufr sof...
                                                        +
                                                        logical function msgfull(msiz, itoadd, mxsiz)
                                                        Check whether the current data subset in the internal arrays will fit within the current BUFR message...
                                                        +
                                                        recursive subroutine getlens(mbay, ll, len0, len1, len2, len3, len4, len5)
                                                        Read the section lengths of a BUFR message, up to a specified point in the message.
                                                        +
                                                        subroutine rdmsgw(lunit, mesg, iret)
                                                        Read the next BUFR message from logical unit lunit as an array of integer words.
                                                        +
                                                        subroutine msgwrt(lunit, mesg, mgbyt)
                                                        Perform final checks and updates on a BUFR message before writing it to a specified Fortran logical u...
                                                        +
                                                        recursive integer function iupbs01(mbay, s01mnem)
                                                        Read a specified value from within Section 0 or Section 1 of a BUFR message.
                                                        Definition: s013vals.F90:247
                                                        +
                                                        subroutine parstr(str, tags, mtag, ntag, sep, limit80)
                                                        Parse a string containing one or more substrings into an array of substrings.
                                                        Definition: strings.F90:473
                                                        +
                                                        subroutine x48(iin4, iout8, nval)
                                                        Encode one or more 4-byte integer values as 8-byte integer values.
                                                        Definition: x4884.F90:18
                                                        +
                                                        subroutine x84(iin8, iout4, nval)
                                                        Encode one or more 8-byte integer values as 4-byte integer values.
                                                        Definition: x4884.F90:65
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/dynsections.js b/previous_versions/v12.1.0/dynsections.js new file mode 100644 index 000000000..88f2c27e6 --- /dev/null +++ b/previous_versions/v12.1.0/dynsections.js @@ -0,0 +1,128 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l + + + + + + +NCEPLIBS-bufr: errwrt.F90 File Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        errwrt.F90 File Reference
                                                        +
                                                        +
                                                        + +

                                                        Specify location for logging of error and diagnostic messages. +More...

                                                        + +

                                                        Go to the source code of this file.

                                                        + + + + + +

                                                        +Functions/Subroutines

                                                        subroutine errwrt (str)
                                                         Specify a custom location for the logging of error and diagnostic messages generated by the NCEPLIBS-bufr software. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Specify location for logging of error and diagnostic messages.

                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2009-04-21
                                                        + +

                                                        Definition in file errwrt.F90.

                                                        +

                                                        Function/Subroutine Documentation

                                                        + +

                                                        ◆ errwrt()

                                                        + +
                                                        +
                                                        + + + + + + + + +
                                                        subroutine errwrt (character*(*), intent(in) str)
                                                        +
                                                        + +

                                                        Specify a custom location for the logging of error and diagnostic messages generated by the NCEPLIBS-bufr software.

                                                        +

                                                        By default, all such messages are printed to standard output. However, if a user would like to direct such messages elsewhere, this can be done by providing an inline version of this subroutine, using the same calling sequence shown below, in order to override the default version of this subroutine contained within the NCEPLIBS-bufr distribution package. The user does not need to explicitly call this subroutine from within the application code, since the NCEPLIBS-bufr software automatically issues an internal call to errwrt when needed. Instead, the user simply needs to define his or her own version of this subroutine with the same name and calling sequence and include it within the compilation, and then the input string str can be logged or handled in any way of the user's choosing.

                                                        +
                                                        Parameters
                                                        + + +
                                                        str- Error message or other diagnostic to be printed to standard output (default) or to another location (if specified via an inline replacement version of this subroutine)
                                                        +
                                                        +
                                                        +
                                                        Remarks
                                                          +
                                                        • The amount and types of diagnostic messages generated for logging can be controlled via a separate call to subroutine openbf() with io = 'QUIET'.
                                                        • +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2009-04-21
                                                        + +

                                                        Definition at line 31 of file errwrt.F90.

                                                        + +

                                                        Referenced by arallocf(), bort(), bort2(), cktaba(), closbf(), cpdxmm(), cpyupd(), datebf(), dumpbf(), hold4wlc(), igetprm(), invcon(), invtag(), invwin(), ireadmt(), isetprm(), jstnum(), makestab(), maxout(), mrginv(), msgupd(), msgwrt(), mtfnam(), nvnwin(), openbf(), openbt(), pktdd(), rcstpl(), rdbfdx(), rdmemm(), rdmems(), rdmsgw(), readdx(), readerme(), readlc(), readmg(), reads3(), status(), ufbevn(), ufbin3(), ufbint(), ufbmem(), ufbmex(), ufbovr(), ufbrep(), ufbrms(), ufbrw(), ufbseq(), ufbstp(), ufbtab(), ufbtam(), usrtpl(), and writlc().

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/errwrt_8F90.js b/previous_versions/v12.1.0/errwrt_8F90.js new file mode 100644 index 000000000..8e92fbb41 --- /dev/null +++ b/previous_versions/v12.1.0/errwrt_8F90.js @@ -0,0 +1,4 @@ +var errwrt_8F90 = +[ + [ "errwrt", "errwrt_8F90.html#a9c4c22af6c77235db8ddd7f41594f543", null ] +]; \ No newline at end of file diff --git a/previous_versions/v12.1.0/errwrt_8F90_source.html b/previous_versions/v12.1.0/errwrt_8F90_source.html new file mode 100644 index 000000000..6b7597e87 --- /dev/null +++ b/previous_versions/v12.1.0/errwrt_8F90_source.html @@ -0,0 +1,112 @@ + + + + + + + +NCEPLIBS-bufr: errwrt.F90 Source File + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        +
                                                        errwrt.F90
                                                        +
                                                        +
                                                        +Go to the documentation of this file.
                                                        1 
                                                        +
                                                        5 
                                                        +
                                                        31 subroutine errwrt(str)
                                                        +
                                                        32 
                                                        +
                                                        33  implicit none
                                                        +
                                                        34 
                                                        +
                                                        35  character*(*), intent(in) :: str
                                                        +
                                                        36 
                                                        +
                                                        37  print'(1x,a)',str
                                                        +
                                                        38 
                                                        +
                                                        39  return
                                                        +
                                                        40 end subroutine errwrt
                                                        +
                                                        subroutine errwrt(str)
                                                        Specify a custom location for the logging of error and diagnostic messages generated by the NCEPLIBS-...
                                                        Definition: errwrt.F90:32
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/files.html b/previous_versions/v12.1.0/files.html new file mode 100644 index 000000000..23530e06c --- /dev/null +++ b/previous_versions/v12.1.0/files.html @@ -0,0 +1,158 @@ + + + + + + + +NCEPLIBS-bufr: File List + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        +
                                                        File List
                                                        +
                                                        +
                                                        +
                                                        Here is a list of all documented files with brief descriptions:
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                         apxdx.F90Append a specified DX BUFR table to a specified BUFR file
                                                         arallocc.cAllocate or deallocate C language arrays
                                                         arallocf.F90Allocate or deallocate Fortran language arrays
                                                         binv.F90Produce an inventory of subsets in a bufr file
                                                         bitmaps.F90Process bitmaps within BUFR messages
                                                         blocks.F90Block BUFR messages with IEEE Fortran control words
                                                         borts.F90Log one or more error messages and abort application program
                                                         bufr_c2f_interface.F90Enable a number of Fortran NCEPLIBS-bufr subprograms to be called from within C
                                                         bufr_interface.F90Enable a number of C NCEPLIBS-bufr functions to be called from within Fortran application programs
                                                         bufr_interface.hEnable a number of NCEPLIBS-bufr subprograms to be called from within C and C++ application programs
                                                         bufrlib.F90Enable a number of C NCEPLIBS-bufr functions to be called from within the Fortran part of the library
                                                         bufrlib.hEnable a number of NCEPLIBS-bufr subprograms to be called from within the C part of the library
                                                         cfe.cC language interface for processing master Code/Flag table entries
                                                         cftbvs.F90Convert between code or flag table values and actual data values
                                                         cidecode.F90Decode character strings and integer values
                                                         ciencode.F90Encode character strings and integer values
                                                         cmpbqm.F90Print inventory of observations from prepbufr file by variable, report type and quality mark
                                                         compress.F90Read or write compressed BUFR messages
                                                         copydata.F90Copy data between BUFR files or messages
                                                         cpmstabs.cCopy master Table B and Table D information from Fortran arrays to C arrays within internal memory
                                                         cread.cC language interface for reading or writing BUFR messages
                                                         cread.hDeclare variables for reading or writing BUFR messages via a C language interface
                                                         crwbmg.cC language interface for reading or writing BUFR messages
                                                         debufr.cC language code for debufr utility
                                                         debufr.F90Fortran language code for debufr utility
                                                         dumpdata.F90Print the contents of a data subset or DX BUFR table
                                                         dxtable.F90Read or write DX BUFR table information
                                                         errwrt.F90Specify location for logging of error and diagnostic messages
                                                         fxy.F90Process FXY values, including converting between character and WMO bit-wise representations
                                                         gettab.F90Read BUFR file containing embedded DX BUFR tables, and print the tables to stdout
                                                         icvidx.cCompute a unique 1-dimensional array index from 2-dimensional indices
                                                         jumplink.F90Read or write jump/link table information
                                                         mastertable.F90Read or write master table information
                                                         memmsgs.F90Read and process BUFR messages within internal memory arrays
                                                         misc.F90Miscellaneous subroutines and functions
                                                         missing.F90Test for "missing" data values
                                                         modules_arrs.F90Declare module arrays
                                                         modules_vars.F90Declare and initialize module variables
                                                         mstabs.hDeclare variables for internal storage of master Table B and Table D entries
                                                         openbt.F90Specify DX BUFR table file of last resort
                                                         openclosebf.F90Open or close a file to the library
                                                         readbp.F90Read PREPBUFR file containing embedded DX BUFR tables, and print each report one at a time
                                                         readmp.F90Read BUFR file containing embedded DX BUFR tables, and print each report one at a time
                                                         readwritemg.F90Read or write a BUFR message
                                                         readwritesb.F90Read or write a BUFR data subset
                                                         readwriteval.F90Read or write data values within a BUFR data subset
                                                         restd.cStandardize a local Table D descriptor
                                                         s013vals.F90Read and write data values within Sections 0, 1, and 3 of BUFR messages
                                                         sinv.F90Produces a BUFR file inventory by satellite type
                                                         split_by_subset.F90Split a BUFR file into separate BUFR files by subset type
                                                         standard.F90Write WMO-standard BUFR messages
                                                         strings.F90Process mnemonic strings
                                                         stseq.cStore information about a standard Table D descriptor within internal DX BUFR tables
                                                         tankrcpt.F90Read and write tank receipt times within BUFR messages
                                                         x4884.F90Convert between 4-byte integers and 8-byte integers
                                                         xbfmg.cSplit a BUFR file into separate BUFR files by message
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/files_dup.js b/previous_versions/v12.1.0/files_dup.js new file mode 100644 index 000000000..518500e4b --- /dev/null +++ b/previous_versions/v12.1.0/files_dup.js @@ -0,0 +1,84 @@ +var files_dup = +[ + [ "apxdx.F90", "apxdx_8F90.html", "apxdx_8F90" ], + [ "arallocc.c", "arallocc_8c.html", "arallocc_8c" ], + [ "arallocf.F90", "arallocf_8F90.html", "arallocf_8F90" ], + [ "binv.F90", "binv_8F90.html", "binv_8F90" ], + [ "bitmaps.F90", "bitmaps_8F90.html", "bitmaps_8F90" ], + [ "blocks.F90", "blocks_8F90.html", "blocks_8F90" ], + [ "borts.F90", "borts_8F90.html", "borts_8F90" ], + [ "bufr_c2f_interface.F90", "bufr__c2f__interface_8F90.html", "bufr__c2f__interface_8F90" ], + [ "bufr_interface.F90", "bufr__interface_8F90.html", [ + [ "ccbfl_c", "interfacebufr__interface_1_1ccbfl__c.html", "interfacebufr__interface_1_1ccbfl__c" ], + [ "cobfl_c", "interfacebufr__interface_1_1cobfl__c.html", "interfacebufr__interface_1_1cobfl__c" ], + [ "crbmg_c", "interfacebufr__interface_1_1crbmg__c.html", "interfacebufr__interface_1_1crbmg__c" ], + [ "cwbmg_c", "interfacebufr__interface_1_1cwbmg__c.html", "interfacebufr__interface_1_1cwbmg__c" ], + [ "dlloctbf_c", "interfacebufr__interface_1_1dlloctbf__c.html", "interfacebufr__interface_1_1dlloctbf__c" ] + ] ], + [ "bufr_interface.h", "bufr__interface_8h.html", "bufr__interface_8h" ], + [ "bufrlib.F90", "bufrlib_8F90.html", [ + [ "arallocc_c", "interfacebufrlib_1_1arallocc__c.html", "interfacebufrlib_1_1arallocc__c" ], + [ "ardllocc_c", "interfacebufrlib_1_1ardllocc__c.html", "interfacebufrlib_1_1ardllocc__c" ], + [ "backbufr_c", "interfacebufrlib_1_1backbufr__c.html", "interfacebufrlib_1_1backbufr__c" ], + [ "cewind_c", "interfacebufrlib_1_1cewind__c.html", "interfacebufrlib_1_1cewind__c" ], + [ "closfb_c", "interfacebufrlib_1_1closfb__c.html", "interfacebufrlib_1_1closfb__c" ], + [ "cpmstabs_c", "interfacebufrlib_1_1cpmstabs__c.html", "interfacebufrlib_1_1cpmstabs__c" ], + [ "crdbufr_c", "interfacebufrlib_1_1crdbufr__c.html", "interfacebufrlib_1_1crdbufr__c" ], + [ "cwrbufr_c", "interfacebufrlib_1_1cwrbufr__c.html", "interfacebufrlib_1_1cwrbufr__c" ], + [ "icvidx_c", "interfacebufrlib_1_1icvidx__c.html", "interfacebufrlib_1_1icvidx__c" ], + [ "inittbf_c", "interfacebufrlib_1_1inittbf__c.html", "interfacebufrlib_1_1inittbf__c" ], + [ "openab_c", "interfacebufrlib_1_1openab__c.html", "interfacebufrlib_1_1openab__c" ], + [ "openrb_c", "interfacebufrlib_1_1openrb__c.html", "interfacebufrlib_1_1openrb__c" ], + [ "openwb_c", "interfacebufrlib_1_1openwb__c.html", "interfacebufrlib_1_1openwb__c" ], + [ "restd_c", "interfacebufrlib_1_1restd__c.html", "interfacebufrlib_1_1restd__c" ], + [ "sorttbf_c", "interfacebufrlib_1_1sorttbf__c.html", "interfacebufrlib_1_1sorttbf__c" ], + [ "srchtbf_c", "interfacebufrlib_1_1srchtbf__c.html", "interfacebufrlib_1_1srchtbf__c" ], + [ "strtbfe_c", "interfacebufrlib_1_1strtbfe__c.html", "interfacebufrlib_1_1strtbfe__c" ], + [ "stseq_c", "interfacebufrlib_1_1stseq__c.html", "interfacebufrlib_1_1stseq__c" ] + ] ], + [ "bufrlib.h", "bufrlib_8h.html", "bufrlib_8h" ], + [ "cfe.c", "cfe_8c.html", "cfe_8c" ], + [ "cftbvs.F90", "cftbvs_8F90.html", "cftbvs_8F90" ], + [ "cidecode.F90", "cidecode_8F90.html", "cidecode_8F90" ], + [ "ciencode.F90", "ciencode_8F90.html", "ciencode_8F90" ], + [ "cmpbqm.F90", "cmpbqm_8F90.html", "cmpbqm_8F90" ], + [ "compress.F90", "compress_8F90.html", "compress_8F90" ], + [ "copydata.F90", "copydata_8F90.html", "copydata_8F90" ], + [ "cpmstabs.c", "cpmstabs_8c.html", "cpmstabs_8c" ], + [ "cread.c", "cread_8c.html", "cread_8c" ], + [ "cread.h", "cread_8h.html", "cread_8h" ], + [ "crwbmg.c", "crwbmg_8c.html", "crwbmg_8c" ], + [ "debufr.c", "debufr_8c.html", "debufr_8c" ], + [ "debufr.F90", "debufr_8F90.html", "debufr_8F90" ], + [ "dumpdata.F90", "dumpdata_8F90.html", "dumpdata_8F90" ], + [ "dxtable.F90", "dxtable_8F90.html", "dxtable_8F90" ], + [ "errwrt.F90", "errwrt_8F90.html", "errwrt_8F90" ], + [ "fxy.F90", "fxy_8F90.html", "fxy_8F90" ], + [ "gettab.F90", "gettab_8F90.html", "gettab_8F90" ], + [ "icvidx.c", "icvidx_8c.html", "icvidx_8c" ], + [ "jumplink.F90", "jumplink_8F90.html", "jumplink_8F90" ], + [ "mastertable.F90", "mastertable_8F90.html", "mastertable_8F90" ], + [ "memmsgs.F90", "memmsgs_8F90.html", "memmsgs_8F90" ], + [ "misc.F90", "misc_8F90.html", "misc_8F90" ], + [ "missing.F90", "missing_8F90.html", "missing_8F90" ], + [ "modules_arrs.F90", "modules__arrs_8F90.html", "modules__arrs_8F90" ], + [ "modules_vars.F90", "modules__vars_8F90.html", "modules__vars_8F90" ], + [ "mstabs.h", "mstabs_8h.html", "mstabs_8h" ], + [ "openbt.F90", "openbt_8F90.html", "openbt_8F90" ], + [ "openclosebf.F90", "openclosebf_8F90.html", "openclosebf_8F90" ], + [ "readbp.F90", "readbp_8F90.html", "readbp_8F90" ], + [ "readmp.F90", "readmp_8F90.html", "readmp_8F90" ], + [ "readwritemg.F90", "readwritemg_8F90.html", "readwritemg_8F90" ], + [ "readwritesb.F90", "readwritesb_8F90.html", "readwritesb_8F90" ], + [ "readwriteval.F90", "readwriteval_8F90.html", "readwriteval_8F90" ], + [ "restd.c", "restd_8c.html", "restd_8c" ], + [ "s013vals.F90", "s013vals_8F90.html", "s013vals_8F90" ], + [ "sinv.F90", "sinv_8F90.html", "sinv_8F90" ], + [ "split_by_subset.F90", "split__by__subset_8F90.html", "split__by__subset_8F90" ], + [ "standard.F90", "standard_8F90.html", "standard_8F90" ], + [ "strings.F90", "strings_8F90.html", "strings_8F90" ], + [ "stseq.c", "stseq_8c.html", "stseq_8c" ], + [ "tankrcpt.F90", "tankrcpt_8F90.html", "tankrcpt_8F90" ], + [ "x4884.F90", "x4884_8F90.html", "x4884_8F90" ], + [ "xbfmg.c", "xbfmg_8c.html", "xbfmg_8c" ] +]; \ No newline at end of file diff --git a/previous_versions/v12.1.0/folderclosed.png b/previous_versions/v12.1.0/folderclosed.png new file mode 100644 index 0000000000000000000000000000000000000000..bb8ab35edce8e97554e360005ee9fc5bffb36e66 GIT binary patch literal 616 zcmV-u0+;=XP)a9#ETzayK)T~Jw&MMH>OIr#&;dC}is*2Mqdf&akCc=O@`qC+4i z5Iu3w#1M@KqXCz8TIZd1wli&kkl2HVcAiZ8PUn5z_kG@-y;?yK06=cA0U%H0PH+kU zl6dp}OR(|r8-RG+YLu`zbI}5TlOU6ToR41{9=uz^?dGTNL;wIMf|V3`d1Wj3y!#6` zBLZ?xpKR~^2x}?~zA(_NUu3IaDB$tKma*XUdOZN~c=dLt_h_k!dbxm_*ibDM zlFX`g{k$X}yIe%$N)cn1LNu=q9_CS)*>A zsX_mM4L@`(cSNQKMFc$RtYbx{79#j-J7hk*>*+ZZhM4Hw?I?rsXCi#mRWJ=-0LGV5a-WR0Qgt<|Nqf)C-@80`5gIz45^_20000IqP)X=#(TiCT&PiIIVc55T}TU}EUh*{q$|`3@{d>{Tc9Bo>e= zfmF3!f>fbI9#GoEHh0f`i5)wkLpva0ztf%HpZneK?w-7AK@b4Itw{y|Zd3k!fH?q2 zlhckHd_V2M_X7+)U&_Xcfvtw60l;--DgZmLSw-Y?S>)zIqMyJ1#FwLU*%bl38ok+! zh78H87n`ZTS;uhzAR$M`zZ`bVhq=+%u9^$5jDplgxd44}9;IRqUH1YHH|@6oFe%z( zo4)_>E$F&^P-f(#)>(TrnbE>Pefs9~@iN=|)Rz|V`sGfHNrJ)0gJb8xx+SBmRf@1l zvuzt=vGfI)<-F9!o&3l?>9~0QbUDT(wFdnQPv%xdD)m*g%!20>Bc9iYmGAp<9YAa( z0QgYgTWqf1qN++Gqp z8@AYPTB3E|6s=WLG?xw0tm|U!o=&zd+H0oRYE;Dbx+Na9s^STqX|Gnq%H8s(nGDGJ j8vwW|`Ts`)fSK|Kx=IK@RG@g200000NkvXXu0mjfauFEA literal 0 HcmV?d00001 diff --git a/previous_versions/v12.1.0/functions.html b/previous_versions/v12.1.0/functions.html new file mode 100644 index 000000000..85aad7104 --- /dev/null +++ b/previous_versions/v12.1.0/functions.html @@ -0,0 +1,165 @@ + + + + + + + +NCEPLIBS-bufr: Data Fields + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        Here is a list of all documented data types members with links to the data structure documentation for each member
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/functions_func.html b/previous_versions/v12.1.0/functions_func.html new file mode 100644 index 000000000..68861eb46 --- /dev/null +++ b/previous_versions/v12.1.0/functions_func.html @@ -0,0 +1,165 @@ + + + + + + + +NCEPLIBS-bufr: Data Fields - Functions/Subroutines + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/fxy_8F90.html b/previous_versions/v12.1.0/fxy_8F90.html new file mode 100644 index 000000000..d7c0e0779 --- /dev/null +++ b/previous_versions/v12.1.0/fxy_8F90.html @@ -0,0 +1,655 @@ + + + + + + + +NCEPLIBS-bufr: fxy.F90 File Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        fxy.F90 File Reference
                                                        +
                                                        +
                                                        + +

                                                        Process FXY values, including converting between character and WMO bit-wise representations. +More...

                                                        + +

                                                        Go to the source code of this file.

                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                                                        +Functions/Subroutines

                                                        character *(*) function adn30 (idn, ldn)
                                                         Convert an FXY value from its WMO bit-wise representation to a character string of length 5 or 6. More...
                                                         
                                                        subroutine cadn30 (idn, adn)
                                                         Convert an FXY value from its WMO bit-wise representation to its 6 character representation. More...
                                                         
                                                        integer function idn30 (adn, ldn)
                                                         Convert an FXY value from a character string to the WMO bit-wise representation. More...
                                                         
                                                        integer function ifxy (adsc)
                                                         Convert an FXY value from its 6 character representation to its WMO bit-wise representation. More...
                                                         
                                                        integer function igetfxy (str, cfxy)
                                                         Search for and return a valid FXY number from within a character string. More...
                                                         
                                                        subroutine nemtab (lun, nemo, idn, tab, iret)
                                                         Get information about a descriptor, based on a mnemonic. More...
                                                         
                                                        integer function numbck (numb)
                                                         Check an FXY number for validity. More...
                                                         
                                                        subroutine numtab (lun, idn, nemo, tab, iret)
                                                         Get information about a descriptor, based on the WMO bit-wise representation of an FXY value. More...
                                                         
                                                        subroutine numtbd (lun, idn, nemo, tab, iret)
                                                         Get information about a Table B or Table D descriptor, based on the WMO bit-wise representation of an FXY value. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Process FXY values, including converting between character and WMO bit-wise representations.

                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2024-02-29
                                                        + +

                                                        Definition in file fxy.F90.

                                                        +

                                                        Function/Subroutine Documentation

                                                        + +

                                                        ◆ adn30()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        character*(*) function adn30 (integer, intent(in) idn,
                                                        integer, intent(in) ldn 
                                                        )
                                                        +
                                                        + +

                                                        Convert an FXY value from its WMO bit-wise representation to a character string of length 5 or 6.

                                                        +

                                                        For an description of the WMO bit-wise representation of the FXY value, see ifxy().

                                                        +

                                                        This function is the logical inverse of function idn30().

                                                        +
                                                        Parameters
                                                        + + + +
                                                        idn- WMO bit-wise representation of FXY value
                                                        ldn- Length of string to be returned; can be either 5 or 6 characters
                                                        +
                                                        +
                                                        +
                                                        Returns
                                                        adn30 - FXY character string
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 17 of file fxy.F90.

                                                        + +

                                                        References bort().

                                                        + +

                                                        Referenced by igetrfel(), istdesc(), ufbqcd(), upds3(), and wrdxtb().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ cadn30()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        subroutine cadn30 (integer, intent(in) idn,
                                                        character*(*), intent(out) adn 
                                                        )
                                                        +
                                                        + +

                                                        Convert an FXY value from its WMO bit-wise representation to its 6 character representation.

                                                        +

                                                        This subroutine is similar to function adn30(), except that it always returns 6 characters, and it always returns its output as a call parameter instead of a function value, which in turn allows it to be more easily called from within a C language function.

                                                        +

                                                        For a description of the WMO bit-wise representation of an FXY value, see ifxy().

                                                        +
                                                        Parameters
                                                        + + + +
                                                        idn- WMO bit-wise representation of FXY value
                                                        adn- FXY value
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2004-08-18
                                                        + +

                                                        Definition at line 64 of file fxy.F90.

                                                        + +

                                                        Referenced by bufr_c2f_interface::cadn30_c().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ idn30()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        integer function idn30 (character*(*), intent(in) adn,
                                                        integer, intent(in) ldn 
                                                        )
                                                        +
                                                        + +

                                                        Convert an FXY value from a character string to the WMO bit-wise representation.

                                                        +

                                                        For an description of the WMO bit-wise representation of the FXY value, see ifxy().

                                                        +

                                                        This function is the logical inverse of function adn30().

                                                        +
                                                        Parameters
                                                        + + + +
                                                        adn- FXY value; must be of length 5 or 6
                                                        ldn- Length of adn; can be either 5 or 6 characters
                                                        +
                                                        +
                                                        +
                                                        Returns
                                                        idn30 - WMO bit-wise representation of FXY value
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 90 of file fxy.F90.

                                                        + +

                                                        References bort(), and ifxy().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ ifxy()

                                                        + +
                                                        +
                                                        + + + + + + + + +
                                                        integer function ifxy (character*6, intent(in) adsc)
                                                        +
                                                        + +

                                                        Convert an FXY value from its 6 character representation to its WMO bit-wise representation.

                                                        +

                                                        Per the official WMO BUFR regulations, an FXY value can be represented as a bit-wise integer in 16 bits, ordered from left (most significant) to right (least significant), and where the F value occupies the first 2 bits, the X value occupies the next 6 bits, and the Y value occupies the last 8 bits.

                                                        For example, if ADSC = '063022'
                                                        +
                                                        +   F |     X     |      Y
                                                        +   0 |     63    |      22
                                                        +  0 0 1 1 1 1 1 1 0 0 0 1 0 1 1 0
                                                        +
                                                        +then the corresponding ifxy
                                                        +
                                                        +  = ( 2**13 + 2**12 + 2**11 + 2**10 + 2**9 + 2**8 +
                                                        +      2**4 + 2**2 + 2**1 )
                                                        +
                                                        +  = 16150
                                                        +
                                                        Parameters
                                                        + + +
                                                        adsc- FXY value
                                                        +
                                                        +
                                                        +
                                                        Returns
                                                        ifxy - WMO bit-wise representation of FXY value
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 151 of file fxy.F90.

                                                        + +

                                                        Referenced by getcfmng(), idn30(), bufr_c2f_interface::ifxy_c(), ireadmt(), and ufbqcp().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ igetfxy()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        integer function igetfxy (character*(*), intent(in) str,
                                                        character*6, intent(out) cfxy 
                                                        )
                                                        +
                                                        + +

                                                        Search for and return a valid FXY number from within a character string.

                                                        +

                                                        The FXY number may be in format of either FXXYYY or F-XX-YYY within the input string, but it is always returned in format FXXYYY upon output.

                                                        +
                                                        Parameters
                                                        + + + +
                                                        str- input string
                                                        cfxy- FXY number in format FXXYYY
                                                        +
                                                        +
                                                        +
                                                        Returns
                                                          +
                                                        • 0 normal return.
                                                        • +
                                                        • -1 could not find a valid FXY number in str
                                                        • +
                                                        +
                                                        +
                                                        Author
                                                        Ator
                                                        +
                                                        Date
                                                        2007-01-19
                                                        + +

                                                        Definition at line 178 of file fxy.F90.

                                                        + +

                                                        References numbck().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ nemtab()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        subroutine nemtab (integer, intent(in) lun,
                                                        character*(*), intent(in) nemo,
                                                        integer, intent(out) idn,
                                                        character, intent(out) tab,
                                                        integer, intent(out) iret 
                                                        )
                                                        +
                                                        + +

                                                        Get information about a descriptor, based on a mnemonic.

                                                        +
                                                        Parameters
                                                        + + + + + + +
                                                        lun- File ID associated with DX BUFR tables
                                                        nemo- Mnemonic
                                                        idn- WMO bit-wise representation of FXY value for descriptor for descriptor associated with nemo
                                                        tab- Type associated with idn:
                                                          +
                                                        • 'B' Table B descriptor.
                                                        • +
                                                        • 'D' Table D descriptor.
                                                        • +
                                                        • 'C' Table C operator.
                                                        • +
                                                        +
                                                        iret- Return code:
                                                          +
                                                        • Positional index of idn within internal Table B, if tab = 'B'
                                                        • +
                                                        • Positional index of idn within internal Table D, if tab = 'D'
                                                        • +
                                                        • The X portion of the FXY value in idn, if tab = 'C'.
                                                        • +
                                                        • 0, otherwise
                                                        • +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 431 of file fxy.F90.

                                                        + +

                                                        References moda_tababd::idnb, moda_tababd::idnd, moda_tababd::ntbb, moda_tababd::ntbd, moda_tababd::tabb, and moda_tababd::tabd.

                                                        + +

                                                        Referenced by chekstab(), cmsgini(), elemdx(), getcfmng(), igetrfel(), msgini(), nemdefs(), bufr_c2f_interface::nemtab_c(), seqsdx(), tabsub(), ufbdmp(), ufbqcd(), ufdump(), and upftbv().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ numbck()

                                                        + +
                                                        +
                                                        + + + + + + + + +
                                                        integer function numbck (character*6, intent(in) numb)
                                                        +
                                                        + +

                                                        Check an FXY number for validity.

                                                        +
                                                        Parameters
                                                        + + +
                                                        numb- FXY value
                                                        +
                                                        +
                                                        +
                                                        Returns
                                                        numbck - Indicator as to whether numb is valid:
                                                          +
                                                        • 0 = Yes
                                                        • +
                                                        • -1 = No, the first character ("F" value) is not '0', '1', '2', or '3'
                                                        • +
                                                        • -2 = No, characters 2-6 ("X" and "Y" values) are not all numeric
                                                        • +
                                                        • -3 = No, characters 2-3 ("X" value) are not between '00' and '63'
                                                        • +
                                                        • -4 = No, characters 4-6 ("Y" value) are not between '000' and '255'
                                                        • +
                                                        +
                                                        +
                                                        Author
                                                        Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 236 of file fxy.F90.

                                                        + +

                                                        Referenced by igetfxy().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ numtab()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        subroutine numtab (integer, intent(in) lun,
                                                        integer, intent(in) idn,
                                                        character*(*), intent(out) nemo,
                                                        character, intent(out) tab,
                                                        integer, intent(out) iret 
                                                        )
                                                        +
                                                        + +

                                                        Get information about a descriptor, based on the WMO bit-wise representation of an FXY value.

                                                        +

                                                        For a description of the WMO bit-wise representation of the FXY value, see ifxy().

                                                        +
                                                        Parameters
                                                        + + + + + + +
                                                        lun- File ID associated with DX BUFR tables
                                                        idn- WMO bit-wise representation of FXY value for descriptor
                                                        nemo- Mnemonic associated with idn
                                                        tab- Type associated with idn:
                                                          +
                                                        • 'B' Table B descriptor
                                                        • +
                                                        • 'D' Table D descriptor
                                                        • +
                                                        • 'C' Table C operator
                                                        • +
                                                        • 'R' Replication descriptor
                                                        • +
                                                        • 'F' Replication factor
                                                        • +
                                                        +
                                                        iret- Return code:
                                                          +
                                                        • Positional index of idn within internal Table B, if tab = 'B'
                                                        • +
                                                        • Positional index of idn within internal Table D, if tab = 'D'
                                                        • +
                                                        • The X portion of the FXY value in idn, if tab = 'C'
                                                        • +
                                                        • ((-1) * the Y portion of the FXY value in idn), if tab = 'R' and the replication is regular (i.e. non-delayed)
                                                        • +
                                                        • 5 if tab = 'R' or tab = 'F' and the replication is 1-bit delayed
                                                        • +
                                                        • 4 if tab = 'R' or tab = 'F' and the replication is 8-bit delayed (stack)
                                                        • +
                                                        • 3 if tab = 'R' or tab = 'F' and the replication is 8-bit delayed
                                                        • +
                                                        • 2 if tab = 'R' or tab = 'F' and the replication is 16-bit delayed
                                                        • +
                                                        • 0 otherwise
                                                        • +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 356 of file fxy.F90.

                                                        + +

                                                        References numtbd().

                                                        + +

                                                        Referenced by cktaba(), nemtbd(), seqsdx(), stndrd(), and ufbqcp().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ numtbd()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        subroutine numtbd (integer, intent(in) lun,
                                                        integer, intent(in) idn,
                                                        character*(*), intent(out) nemo,
                                                        character, intent(out) tab,
                                                        integer, intent(out) iret 
                                                        )
                                                        +
                                                        + +

                                                        Get information about a Table B or Table D descriptor, based on the WMO bit-wise representation of an FXY value.

                                                        +

                                                        For a description of the WMO bit-wise representation of the FXY value, see ifxy().

                                                        +
                                                        Parameters
                                                        + + + + + + +
                                                        lun- File ID associated with DX BUFR tables
                                                        idn- WMO bit-wise representation of FXY value for Table B or Table D descriptor
                                                        nemo- Mnemonic associated with idn
                                                        tab- Type associated with idn:
                                                          +
                                                        • 'B' Table B descriptor
                                                        • +
                                                        • 'D' Table D descriptor
                                                        • +
                                                        +
                                                        iret- Return code:
                                                          +
                                                        • Positional index of idn within internal Table B, if tab = 'B'
                                                        • +
                                                        • Positional index of idn within internal Table D, if tab = 'D'
                                                        • +
                                                        • 0 otherwise
                                                        • +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        2002-05-14
                                                        + +

                                                        Definition at line 289 of file fxy.F90.

                                                        + +

                                                        References moda_tababd::idnb, moda_tababd::idnd, moda_tababd::ntbb, moda_tababd::ntbd, moda_tababd::tabb, and moda_tababd::tabd.

                                                        + +

                                                        Referenced by getcfmng(), numtab(), bufr_c2f_interface::numtbd_c(), and ufdump().

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/fxy_8F90.js b/previous_versions/v12.1.0/fxy_8F90.js new file mode 100644 index 000000000..a82ac16a7 --- /dev/null +++ b/previous_versions/v12.1.0/fxy_8F90.js @@ -0,0 +1,12 @@ +var fxy_8F90 = +[ + [ "adn30", "fxy_8F90.html#af1ec2f8fc15418f1238413201f3e075c", null ], + [ "cadn30", "fxy_8F90.html#a438b8634d4f1308ee086a8f323662d2c", null ], + [ "idn30", "fxy_8F90.html#ac17b9bb050c7279594284b063390dc55", null ], + [ "ifxy", "fxy_8F90.html#ae3b70fcfea3c6201ad415fad4c4d375e", null ], + [ "igetfxy", "fxy_8F90.html#ad6db7a4654e1d26530c1fe4bdfb29ad9", null ], + [ "nemtab", "fxy_8F90.html#a01efa3bb871b451a8d53bd6d841bb297", null ], + [ "numbck", "fxy_8F90.html#a11357abe01c36dc3472be03e950e8fe3", null ], + [ "numtab", "fxy_8F90.html#ab6ec8c0148ab5d70923831667277b14e", null ], + [ "numtbd", "fxy_8F90.html#aca1fae67e284131dfd240d2336e3e77d", null ] +]; \ No newline at end of file diff --git a/previous_versions/v12.1.0/fxy_8F90_source.html b/previous_versions/v12.1.0/fxy_8F90_source.html new file mode 100644 index 000000000..d8abfce6f --- /dev/null +++ b/previous_versions/v12.1.0/fxy_8F90_source.html @@ -0,0 +1,469 @@ + + + + + + + +NCEPLIBS-bufr: fxy.F90 Source File + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        +
                                                        fxy.F90
                                                        +
                                                        +
                                                        +Go to the documentation of this file.
                                                        1 
                                                        +
                                                        5 
                                                        +
                                                        17 function adn30(idn,ldn)
                                                        +
                                                        18 
                                                        +
                                                        19  use modv_vars, only: nbitw
                                                        +
                                                        20 
                                                        +
                                                        21  implicit none
                                                        +
                                                        22 
                                                        +
                                                        23  integer, intent(in) :: idn, ldn
                                                        +
                                                        24 
                                                        +
                                                        25  integer i, idf, idx, idy
                                                        +
                                                        26 
                                                        +
                                                        27  character*(*) adn30
                                                        +
                                                        28  character*128 bort_str
                                                        +
                                                        29 
                                                        +
                                                        30  if(len(adn30)<ldn) call bort('BUFRLIB: ADN30 - FUNCTION RETURN STRING TOO SHORT')
                                                        +
                                                        31  if(idn<0 .or. idn>65535) call bort('BUFRLIB: ADN30 - INTEGER REPRESENTATION OF DESCRIPTOR OUT OF 16-BIT RANGE')
                                                        +
                                                        32 
                                                        +
                                                        33  if(ldn==5) then
                                                        +
                                                        34  write(adn30,'(i5)') idn
                                                        +
                                                        35  elseif(ldn==6) then
                                                        +
                                                        36  idf = ishft(idn,-14)
                                                        +
                                                        37  idx = ishft(ishft(idn,nbitw-14),-(nbitw-6))
                                                        +
                                                        38  idy = ishft(ishft(idn,nbitw- 8),-(nbitw-8))
                                                        +
                                                        39  write(adn30,'(i1,i2,i3)') idf,idx,idy
                                                        +
                                                        40  else
                                                        +
                                                        41  write(bort_str,'("BUFRLIB: ADN30 - CHARACTER LENGTH (",I4,") MUST BE EITHER 5 OR 6")') ldn
                                                        +
                                                        42  call bort(bort_str)
                                                        +
                                                        43  endif
                                                        +
                                                        44 
                                                        +
                                                        45  do i=1,ldn
                                                        +
                                                        46  if(adn30(i:i)==' ') adn30(i:i) = '0'
                                                        +
                                                        47  enddo
                                                        +
                                                        48 
                                                        +
                                                        49  return
                                                        +
                                                        50 end function adn30
                                                        +
                                                        51 
                                                        +
                                                        64 subroutine cadn30( idn, adn )
                                                        +
                                                        65 
                                                        +
                                                        66  implicit none
                                                        +
                                                        67 
                                                        +
                                                        68  integer, intent(in) :: idn
                                                        +
                                                        69 
                                                        +
                                                        70  character*(*), intent(out) :: adn
                                                        +
                                                        71 
                                                        +
                                                        72  character*6 adn30
                                                        +
                                                        73 
                                                        +
                                                        74  adn = adn30( idn, 6 )
                                                        +
                                                        75 
                                                        +
                                                        76  return
                                                        +
                                                        77 end subroutine cadn30
                                                        +
                                                        78 
                                                        +
                                                        90 integer function idn30(adn,ldn) result(iret)
                                                        +
                                                        91 
                                                        +
                                                        92  implicit none
                                                        +
                                                        93 
                                                        +
                                                        94  integer, intent(in) :: ldn
                                                        +
                                                        95 
                                                        +
                                                        96  character*(*), intent(in) :: adn
                                                        +
                                                        97 
                                                        +
                                                        98  character*128 bort_str
                                                        +
                                                        99 
                                                        +
                                                        100  integer ifxy
                                                        +
                                                        101 
                                                        +
                                                        102  if(len(adn)<ldn) then
                                                        +
                                                        103  write(bort_str,'("BUFRLIB: IDN30 - FUNCTION INPUT STRING ",A," CHARACTER LENGTH (",I4,") IS TOO SHORT (< LDN,",I5)') &
                                                        +
                                                        104  adn, len(adn), ldn
                                                        +
                                                        105  call bort(bort_str)
                                                        +
                                                        106  endif
                                                        +
                                                        107 
                                                        +
                                                        108  if(ldn==5) then
                                                        +
                                                        109  read(adn,'(i5)') iret
                                                        +
                                                        110  if(iret<0 .or. iret>65535) then
                                                        +
                                                        111  write(bort_str, &
                                                        +
                                                        112  '("BUFRLIB: IDN30 - DESCRIPTOR INTEGER REPRESENTATION, IDN30 (",I8,"), IS OUTSIDE 16-BIT RANGE (0-65535)")') iret
                                                        +
                                                        113  call bort(bort_str)
                                                        +
                                                        114  endif
                                                        +
                                                        115  elseif(ldn==6) then
                                                        +
                                                        116  iret = ifxy(adn)
                                                        +
                                                        117  else
                                                        +
                                                        118  write(bort_str,'("BUFRLIB: IDN30 - FUNCTION INPUT STRING ",A," CHARACTER LENGTH (",I4,") MUST BE EITHER 5 OR 6")') &
                                                        +
                                                        119  adn,ldn
                                                        +
                                                        120  call bort(bort_str)
                                                        +
                                                        121  endif
                                                        +
                                                        122 
                                                        +
                                                        123  return
                                                        +
                                                        124 end function idn30
                                                        +
                                                        125 
                                                        +
                                                        151 integer function ifxy(adsc) result(iret)
                                                        +
                                                        152 
                                                        +
                                                        153  implicit none
                                                        +
                                                        154 
                                                        +
                                                        155  integer if, ix, iy
                                                        +
                                                        156 
                                                        +
                                                        157  character*6, intent(in) :: adsc
                                                        +
                                                        158 
                                                        +
                                                        159  read(adsc,'(i1,i2,i3)') if,ix,iy
                                                        +
                                                        160  iret = if*2**14 + ix*2**8 + iy
                                                        +
                                                        161 
                                                        +
                                                        162  return
                                                        +
                                                        163 end function ifxy
                                                        +
                                                        164 
                                                        +
                                                        178 integer function igetfxy ( str, cfxy ) result ( iret )
                                                        +
                                                        179 
                                                        +
                                                        180  implicit none
                                                        +
                                                        181 
                                                        +
                                                        182  character*(*), intent(in) :: str
                                                        +
                                                        183  character*6, intent(out) :: cfxy
                                                        +
                                                        184 
                                                        +
                                                        185  integer, parameter :: lstr2 = 120
                                                        +
                                                        186  character*(lstr2) str2
                                                        +
                                                        187 
                                                        +
                                                        188  integer lstr, numbck
                                                        +
                                                        189 
                                                        +
                                                        190  iret = -1
                                                        +
                                                        191 
                                                        +
                                                        192  lstr = len( str )
                                                        +
                                                        193  if ( lstr < 6 ) return
                                                        +
                                                        194 
                                                        +
                                                        195  ! Left-justify a copy of the input string.
                                                        +
                                                        196 
                                                        +
                                                        197  if ( lstr > lstr2 ) then
                                                        +
                                                        198  str2(1:lstr2) = str(1:lstr2)
                                                        +
                                                        199  else
                                                        +
                                                        200  str2 = str
                                                        +
                                                        201  endif
                                                        +
                                                        202  str2 = adjustl( str2 )
                                                        +
                                                        203  if ( str2 == ' ' ) return
                                                        +
                                                        204 
                                                        +
                                                        205  ! Look for an FXY number.
                                                        +
                                                        206 
                                                        +
                                                        207  if ( index( str2, '-' ) /= 0 ) then
                                                        +
                                                        208  ! Format of field is F-XX-YYY.
                                                        +
                                                        209  cfxy(1:1) = str2(1:1)
                                                        +
                                                        210  cfxy(2:3) = str2(3:4)
                                                        +
                                                        211  cfxy(4:6) = str2(6:8)
                                                        +
                                                        212  else
                                                        +
                                                        213  ! Format of field is FXXYYY.
                                                        +
                                                        214  cfxy = str2(1:6)
                                                        +
                                                        215  endif
                                                        +
                                                        216 
                                                        +
                                                        217  ! Check that the FXY number is valid.
                                                        +
                                                        218 
                                                        +
                                                        219  if ( numbck( cfxy ) == 0 ) iret = 0
                                                        +
                                                        220 
                                                        +
                                                        221  return
                                                        +
                                                        222 end function igetfxy
                                                        +
                                                        223 
                                                        +
                                                        236 integer function numbck(numb) result(iret)
                                                        +
                                                        237 
                                                        +
                                                        238  implicit none
                                                        +
                                                        239 
                                                        +
                                                        240  character*6, intent(in) :: numb
                                                        +
                                                        241 
                                                        +
                                                        242  integer ix, iy
                                                        +
                                                        243 
                                                        +
                                                        244  ! Check the first character of numb.
                                                        +
                                                        245 
                                                        +
                                                        246  if( llt(numb(1:1),'0') .or. lgt(numb(1:1),'3') ) then
                                                        +
                                                        247  iret = -1
                                                        +
                                                        248  return
                                                        +
                                                        249  endif
                                                        +
                                                        250 
                                                        +
                                                        251  ! Check for a valid descriptor.
                                                        +
                                                        252 
                                                        +
                                                        253  if( verify(numb(2:6),'1234567890') == 0 ) then
                                                        +
                                                        254  read(numb,'(1x,i2,i3)') ix,iy
                                                        +
                                                        255  else
                                                        +
                                                        256  iret = -2
                                                        +
                                                        257  return
                                                        +
                                                        258  endif
                                                        +
                                                        259 
                                                        +
                                                        260  if(ix<0 .or. ix> 63) then
                                                        +
                                                        261  iret = -3
                                                        +
                                                        262  return
                                                        +
                                                        263  else if(iy<0 .or. iy>255) then
                                                        +
                                                        264  iret = -4
                                                        +
                                                        265  return
                                                        +
                                                        266  endif
                                                        +
                                                        267 
                                                        +
                                                        268  iret = 0
                                                        +
                                                        269 
                                                        +
                                                        270  return
                                                        +
                                                        271 end function numbck
                                                        +
                                                        272 
                                                        +
                                                        289 subroutine numtbd(lun,idn,nemo,tab,iret)
                                                        +
                                                        290 
                                                        +
                                                        291  use moda_tababd
                                                        +
                                                        292 
                                                        +
                                                        293  implicit none
                                                        +
                                                        294 
                                                        +
                                                        295  integer, intent(in) :: lun, idn
                                                        +
                                                        296  integer, intent(out) :: iret
                                                        +
                                                        297  integer i, ifxy
                                                        +
                                                        298 
                                                        +
                                                        299  character*(*), intent(out) :: nemo
                                                        +
                                                        300  character, intent(out) :: tab
                                                        +
                                                        301 
                                                        +
                                                        302  nemo = ' '
                                                        +
                                                        303  iret = 0
                                                        +
                                                        304  tab = ' '
                                                        +
                                                        305 
                                                        +
                                                        306  if(idn>=ifxy('300000')) then
                                                        +
                                                        307  ! Look for idn in Table D
                                                        +
                                                        308  do i=1,ntbd(lun)
                                                        +
                                                        309  if(idn==idnd(i,lun)) then
                                                        +
                                                        310  nemo = tabd(i,lun)(7:14)
                                                        +
                                                        311  tab = 'D'
                                                        +
                                                        312  iret = i
                                                        +
                                                        313  return
                                                        +
                                                        314  endif
                                                        +
                                                        315  enddo
                                                        +
                                                        316  else
                                                        +
                                                        317  ! Look for idn in Table B
                                                        +
                                                        318  do i=1,ntbb(lun)
                                                        +
                                                        319  if(idn==idnb(i,lun)) then
                                                        +
                                                        320  nemo = tabb(i,lun)(7:14)
                                                        +
                                                        321  tab = 'B'
                                                        +
                                                        322  iret = i
                                                        +
                                                        323  return
                                                        +
                                                        324  endif
                                                        +
                                                        325  enddo
                                                        +
                                                        326  endif
                                                        +
                                                        327 
                                                        +
                                                        328  return
                                                        +
                                                        329 end subroutine numtbd
                                                        +
                                                        330 
                                                        +
                                                        356 subroutine numtab(lun,idn,nemo,tab,iret)
                                                        +
                                                        357 
                                                        +
                                                        358  use modv_vars, only: idnr
                                                        +
                                                        359 
                                                        +
                                                        360  implicit none
                                                        +
                                                        361 
                                                        +
                                                        362  integer, intent(in) :: lun, idn
                                                        +
                                                        363  integer, intent(out) :: iret
                                                        +
                                                        364  integer i, iokoper
                                                        +
                                                        365 
                                                        +
                                                        366  character*(*), intent(out) :: nemo
                                                        +
                                                        367  character, intent(out) :: tab
                                                        +
                                                        368  character*6 adn30, cid
                                                        +
                                                        369 
                                                        +
                                                        370  nemo = ' '
                                                        +
                                                        371  iret = 0
                                                        +
                                                        372  tab = ' '
                                                        +
                                                        373 
                                                        +
                                                        374  ! Look for a replicator or a replication factor descriptor
                                                        +
                                                        375 
                                                        +
                                                        376  if(idn>=idnr(1) .and. idn<=idnr(6)) then
                                                        +
                                                        377  ! Note that the above test is checking whether idn is the bit-wise representation of a FXY (descriptor) value
                                                        +
                                                        378  ! denoting F=1 regular (i.e. non-delayed) replication, since, as was initialized within subroutine bfrini(),
                                                        +
                                                        379  ! idnr(1) = ifxy('101000'), and idnr(6) = ifxy('101255').
                                                        +
                                                        380  tab = 'R'
                                                        +
                                                        381  iret = -mod(idn,256)
                                                        +
                                                        382  return
                                                        +
                                                        383  endif
                                                        +
                                                        384 
                                                        +
                                                        385  do i=2,5
                                                        +
                                                        386  if(idn==idnr(i)) then
                                                        +
                                                        387  tab = 'R'
                                                        +
                                                        388  iret = i
                                                        +
                                                        389  return
                                                        +
                                                        390  elseif(idn==idnr(i+5)) then
                                                        +
                                                        391  tab = 'F'
                                                        +
                                                        392  iret = i
                                                        +
                                                        393  return
                                                        +
                                                        394  endif
                                                        +
                                                        395  enddo
                                                        +
                                                        396 
                                                        +
                                                        397  ! Look for idn in Table B and Table D
                                                        +
                                                        398 
                                                        +
                                                        399  call numtbd(lun,idn,nemo,tab,iret)
                                                        +
                                                        400  if(iret/=0) return
                                                        +
                                                        401 
                                                        +
                                                        402  ! Look for idn in Table C
                                                        +
                                                        403 
                                                        +
                                                        404  cid = adn30(idn,6)
                                                        +
                                                        405  if (iokoper(cid)==1) then
                                                        +
                                                        406  nemo = cid(1:6)
                                                        +
                                                        407  read(nemo,'(1X,I2)') iret
                                                        +
                                                        408  tab = 'C'
                                                        +
                                                        409  return
                                                        +
                                                        410  endif
                                                        +
                                                        411 
                                                        +
                                                        412  return
                                                        +
                                                        413 end subroutine numtab
                                                        +
                                                        414 
                                                        +
                                                        431 subroutine nemtab(lun,nemo,idn,tab,iret)
                                                        +
                                                        432 
                                                        +
                                                        433  use moda_tababd
                                                        +
                                                        434 
                                                        +
                                                        435  implicit none
                                                        +
                                                        436 
                                                        +
                                                        437  integer, intent(in) :: lun
                                                        +
                                                        438  integer, intent(out) :: idn, iret
                                                        +
                                                        439  integer i, j, ifxy, iokoper
                                                        +
                                                        440 
                                                        +
                                                        441  character*(*), intent(in) :: nemo
                                                        +
                                                        442  character, intent(out) :: tab
                                                        +
                                                        443  character*8 nemt
                                                        +
                                                        444 
                                                        +
                                                        445  logical folval
                                                        +
                                                        446 
                                                        +
                                                        447  folval = nemo(1:1)=='.'
                                                        +
                                                        448  iret = 0
                                                        +
                                                        449  tab = ' '
                                                        +
                                                        450 
                                                        +
                                                        451  ! Look for nemo in Table B
                                                        +
                                                        452 
                                                        +
                                                        453  outer: do i=1,ntbb(lun)
                                                        +
                                                        454  nemt = tabb(i,lun)(7:14)
                                                        +
                                                        455  if(nemt==nemo) then
                                                        +
                                                        456  idn = idnb(i,lun)
                                                        +
                                                        457  tab = 'B'
                                                        +
                                                        458  iret = i
                                                        +
                                                        459  return
                                                        +
                                                        460  elseif(folval.and.nemt(1:1)=='.') then
                                                        +
                                                        461  do j=2,len(nemt)
                                                        +
                                                        462  if(nemt(j:j)/='.' .and. nemt(j:j)/=nemo(j:j)) cycle outer
                                                        +
                                                        463  enddo
                                                        +
                                                        464  idn = idnb(i,lun)
                                                        +
                                                        465  tab = 'B'
                                                        +
                                                        466  iret = i
                                                        +
                                                        467  return
                                                        +
                                                        468  endif
                                                        +
                                                        469  enddo outer
                                                        +
                                                        470 
                                                        +
                                                        471  ! Don't look in Table D for following value-mnemonics
                                                        +
                                                        472 
                                                        +
                                                        473  if(folval) return
                                                        +
                                                        474 
                                                        +
                                                        475  ! Look in Table D if we got this far
                                                        +
                                                        476 
                                                        +
                                                        477  do i=1,ntbd(lun)
                                                        +
                                                        478  nemt = tabd(i,lun)(7:14)
                                                        +
                                                        479  if(nemt==nemo) then
                                                        +
                                                        480  idn = idnd(i,lun)
                                                        +
                                                        481  tab = 'D'
                                                        +
                                                        482  iret = i
                                                        +
                                                        483  return
                                                        +
                                                        484  endif
                                                        +
                                                        485  enddo
                                                        +
                                                        486 
                                                        +
                                                        487  ! If still nothing, check for Table C operator descriptors
                                                        +
                                                        488 
                                                        +
                                                        489  if (iokoper(nemo)==1) then
                                                        +
                                                        490  read(nemo,'(1X,I2)') iret
                                                        +
                                                        491  idn = ifxy(nemo)
                                                        +
                                                        492  tab = 'C'
                                                        +
                                                        493  return
                                                        +
                                                        494  endif
                                                        +
                                                        495 
                                                        +
                                                        496  return
                                                        +
                                                        497 end subroutine nemtab
                                                        +
                                                        subroutine bort(str)
                                                        Log an error message, then abort the application program.
                                                        Definition: borts.F90:15
                                                        +
                                                        subroutine nemtab(lun, nemo, idn, tab, iret)
                                                        Get information about a descriptor, based on a mnemonic.
                                                        Definition: fxy.F90:432
                                                        +
                                                        integer function numbck(numb)
                                                        Check an FXY number for validity.
                                                        Definition: fxy.F90:237
                                                        +
                                                        subroutine cadn30(idn, adn)
                                                        Convert an FXY value from its WMO bit-wise representation to its 6 character representation.
                                                        Definition: fxy.F90:65
                                                        +
                                                        subroutine numtab(lun, idn, nemo, tab, iret)
                                                        Get information about a descriptor, based on the WMO bit-wise representation of an FXY value.
                                                        Definition: fxy.F90:357
                                                        +
                                                        integer function idn30(adn, ldn)
                                                        Convert an FXY value from a character string to the WMO bit-wise representation.
                                                        Definition: fxy.F90:91
                                                        +
                                                        subroutine numtbd(lun, idn, nemo, tab, iret)
                                                        Get information about a Table B or Table D descriptor, based on the WMO bit-wise representation of an...
                                                        Definition: fxy.F90:290
                                                        +
                                                        integer function igetfxy(str, cfxy)
                                                        Search for and return a valid FXY number from within a character string.
                                                        Definition: fxy.F90:179
                                                        +
                                                        integer function ifxy(adsc)
                                                        Convert an FXY value from its 6 character representation to its WMO bit-wise representation.
                                                        Definition: fxy.F90:152
                                                        +
                                                        character *(*) function adn30(idn, ldn)
                                                        Convert an FXY value from its WMO bit-wise representation to a character string of length 5 or 6.
                                                        Definition: fxy.F90:18
                                                        +
                                                        Declare arrays and variables used to store DX BUFR tables internally for multiple file IDs.
                                                        +
                                                        character *600, dimension(:,:), allocatable tabd
                                                        Table D entries for each file ID.
                                                        +
                                                        integer, dimension(:), allocatable ntbd
                                                        Number of Table D entries for each file ID (up to a maximum of maxtbd, whose value is stored in array...
                                                        +
                                                        integer, dimension(:), allocatable ntbb
                                                        Number of Table B entries for each file ID (up to a maximum of maxtbb, whose value is stored in array...
                                                        +
                                                        integer, dimension(:,:), allocatable idnd
                                                        WMO bit-wise representations of the FXY values corresponding to tabd.
                                                        +
                                                        integer, dimension(:,:), allocatable idnb
                                                        WMO bit-wise representations of the FXY values corresponding to tabb.
                                                        +
                                                        character *128, dimension(:,:), allocatable tabb
                                                        Table B entries for each file ID.
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/gettab_8F90.html b/previous_versions/v12.1.0/gettab_8F90.html new file mode 100644 index 000000000..dd7029027 --- /dev/null +++ b/previous_versions/v12.1.0/gettab_8F90.html @@ -0,0 +1,143 @@ + + + + + + + +NCEPLIBS-bufr: gettab.F90 File Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        gettab.F90 File Reference
                                                        +
                                                        +
                                                        + +

                                                        Read BUFR file containing embedded DX BUFR tables, and print the tables to stdout. +More...

                                                        + +

                                                        Go to the source code of this file.

                                                        + + + + + +

                                                        +Functions/Subroutines

                                                        program gettab
                                                         Read BUFR file containing embedded DX BUFR tables, and print the tables to stdout. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Read BUFR file containing embedded DX BUFR tables, and print the tables to stdout.

                                                        +
                                                        Author
                                                        Woollen
                                                        +
                                                        Date
                                                        2000-01-01
                                                        + +

                                                        Definition in file gettab.F90.

                                                        +

                                                        Function/Subroutine Documentation

                                                        + +

                                                        ◆ gettab()

                                                        + +
                                                        +
                                                        + + + + +
                                                        program gettab
                                                        +
                                                        + +

                                                        Read BUFR file containing embedded DX BUFR tables, and print the tables to stdout.

                                                        +
                                                        Returns
                                                        0 for success, error code otherwise.
                                                        +
                                                        Author
                                                        Woollen
                                                        +
                                                        Date
                                                        2000-01-01
                                                        + +

                                                        Definition at line 13 of file gettab.F90.

                                                        + +

                                                        References closbf(), dxdump(), openbf(), and status().

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/gettab_8F90.js b/previous_versions/v12.1.0/gettab_8F90.js new file mode 100644 index 000000000..a8a4ff379 --- /dev/null +++ b/previous_versions/v12.1.0/gettab_8F90.js @@ -0,0 +1,4 @@ +var gettab_8F90 = +[ + [ "gettab", "gettab_8F90.html#ac9eda42ec8bf46baae0a4f34cd517813", null ] +]; \ No newline at end of file diff --git a/previous_versions/v12.1.0/gettab_8F90_source.html b/previous_versions/v12.1.0/gettab_8F90_source.html new file mode 100644 index 000000000..edbf0f749 --- /dev/null +++ b/previous_versions/v12.1.0/gettab_8F90_source.html @@ -0,0 +1,139 @@ + + + + + + + +NCEPLIBS-bufr: gettab.F90 Source File + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        +
                                                        gettab.F90
                                                        +
                                                        +
                                                        +Go to the documentation of this file.
                                                        1 
                                                        +
                                                        6 
                                                        +
                                                        13 program gettab
                                                        +
                                                        14 
                                                        +
                                                        15  implicit none
                                                        +
                                                        16 
                                                        +
                                                        17  character(len=255) :: file
                                                        +
                                                        18  integer, parameter :: lunit = 20
                                                        +
                                                        19  logical :: exist
                                                        +
                                                        20 
                                                        +
                                                        21 ! get the filename to open and read
                                                        +
                                                        22 
                                                        +
                                                        23  call get_command_argument(1,file); file=trim(adjustl(file))
                                                        +
                                                        24  if (file == '') then
                                                        +
                                                        25  print *,'Usage: gettab <bufrfile> will print the internal BUFR table'
                                                        +
                                                        26  call exit(2)
                                                        +
                                                        27  else
                                                        +
                                                        28  inquire(file=file,exist=exist)
                                                        +
                                                        29  if (.not.exist) then
                                                        +
                                                        30  print *,trim(file)//' does not exist'
                                                        +
                                                        31  call exit(3)
                                                        +
                                                        32  endif
                                                        +
                                                        33  endif
                                                        +
                                                        34 
                                                        +
                                                        35 ! open the file and dump the bufr table to standard outout
                                                        +
                                                        36 
                                                        +
                                                        37  open(lunit,file=file,status='old', form='unformatted')
                                                        +
                                                        38  call openbf(lunit, 'IN', lunit)
                                                        +
                                                        39  call dxdump(lunit, 6)
                                                        +
                                                        40  call closbf(lunit)
                                                        +
                                                        41  close(lunit)
                                                        +
                                                        42 
                                                        +
                                                        43  stop
                                                        +
                                                        44 end program gettab
                                                        +
                                                        45 
                                                        +
                                                        recursive subroutine dxdump(lunit, ldxot)
                                                        Print a copy of the DX BUFR table associated with a specified Fortran logical unit.
                                                        Definition: dumpdata.F90:580
                                                        +
                                                        program gettab
                                                        Read BUFR file containing embedded DX BUFR tables, and print the tables to stdout.
                                                        Definition: gettab.F90:13
                                                        +
                                                        recursive subroutine closbf(lunit)
                                                        Close the connection between logical unit lunit and the NCEPLIBS-bufr software.
                                                        +
                                                        recursive subroutine openbf(lunit, io, lundx)
                                                        Connect a new file to the NCEPLIBS-bufr software for input or output operations, or initialize the li...
                                                        +
                                                        recursive subroutine status(lunit, lun, il, im)
                                                        Check whether a specified Fortran logical unit number is currently connected to the NCEPLIBS-bufr sof...
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/globals.html b/previous_versions/v12.1.0/globals.html new file mode 100644 index 000000000..8d83e389d --- /dev/null +++ b/previous_versions/v12.1.0/globals.html @@ -0,0 +1,121 @@ + + + + + + + +NCEPLIBS-bufr: Globals + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
                                                        + +

                                                        - a -

                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/globals_b.html b/previous_versions/v12.1.0/globals_b.html new file mode 100644 index 000000000..8d8cf458b --- /dev/null +++ b/previous_versions/v12.1.0/globals_b.html @@ -0,0 +1,126 @@ + + + + + + + +NCEPLIBS-bufr: Globals + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
                                                        + +

                                                        - b -

                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/globals_c.html b/previous_versions/v12.1.0/globals_c.html new file mode 100644 index 000000000..245114ac9 --- /dev/null +++ b/previous_versions/v12.1.0/globals_c.html @@ -0,0 +1,238 @@ + + + + + + + +NCEPLIBS-bufr: Globals + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
                                                        + +

                                                        - c -

                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/globals_d.html b/previous_versions/v12.1.0/globals_d.html new file mode 100644 index 000000000..8cb1a5fe4 --- /dev/null +++ b/previous_versions/v12.1.0/globals_d.html @@ -0,0 +1,128 @@ + + + + + + + +NCEPLIBS-bufr: Globals + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
                                                        + +

                                                        - d -

                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/globals_defs.html b/previous_versions/v12.1.0/globals_defs.html new file mode 100644 index 000000000..a4adf0193 --- /dev/null +++ b/previous_versions/v12.1.0/globals_defs.html @@ -0,0 +1,126 @@ + + + + + + + +NCEPLIBS-bufr: Globals + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/globals_dup.js b/previous_versions/v12.1.0/globals_dup.js new file mode 100644 index 000000000..e893f3a43 --- /dev/null +++ b/previous_versions/v12.1.0/globals_dup.js @@ -0,0 +1,25 @@ +var globals_dup = +[ + [ "a", "globals.html", null ], + [ "b", "globals_b.html", null ], + [ "c", "globals_c.html", null ], + [ "d", "globals_d.html", null ], + [ "e", "globals_e.html", null ], + [ "f", "globals_f.html", null ], + [ "g", "globals_g.html", null ], + [ "h", "globals_h.html", null ], + [ "i", "globals_i.html", null ], + [ "j", "globals_j.html", null ], + [ "l", "globals_l.html", null ], + [ "m", "globals_m.html", null ], + [ "n", "globals_n.html", null ], + [ "o", "globals_o.html", null ], + [ "p", "globals_p.html", null ], + [ "r", "globals_r.html", null ], + [ "s", "globals_s.html", null ], + [ "t", "globals_t.html", null ], + [ "u", "globals_u.html", null ], + [ "v", "globals_v.html", null ], + [ "w", "globals_w.html", null ], + [ "x", "globals_x.html", null ] +]; \ No newline at end of file diff --git a/previous_versions/v12.1.0/globals_e.html b/previous_versions/v12.1.0/globals_e.html new file mode 100644 index 000000000..5037768b6 --- /dev/null +++ b/previous_versions/v12.1.0/globals_e.html @@ -0,0 +1,113 @@ + + + + + + + +NCEPLIBS-bufr: Globals + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
                                                        + +

                                                        - e -

                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/globals_f.html b/previous_versions/v12.1.0/globals_f.html new file mode 100644 index 000000000..2f9c723fc --- /dev/null +++ b/previous_versions/v12.1.0/globals_f.html @@ -0,0 +1,116 @@ + + + + + + + +NCEPLIBS-bufr: Globals + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
                                                        + +

                                                        - f -

                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/globals_func.html b/previous_versions/v12.1.0/globals_func.html new file mode 100644 index 000000000..3a61aa262 --- /dev/null +++ b/previous_versions/v12.1.0/globals_func.html @@ -0,0 +1,121 @@ + + + + + + + +NCEPLIBS-bufr: Globals + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +  + +

                                                        - a -

                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/globals_func.js b/previous_versions/v12.1.0/globals_func.js new file mode 100644 index 000000000..f1693e7c3 --- /dev/null +++ b/previous_versions/v12.1.0/globals_func.js @@ -0,0 +1,24 @@ +var globals_func = +[ + [ "a", "globals_func.html", null ], + [ "b", "globals_func_b.html", null ], + [ "c", "globals_func_c.html", null ], + [ "d", "globals_func_d.html", null ], + [ "e", "globals_func_e.html", null ], + [ "f", "globals_func_f.html", null ], + [ "g", "globals_func_g.html", null ], + [ "h", "globals_func_h.html", null ], + [ "i", "globals_func_i.html", null ], + [ "j", "globals_func_j.html", null ], + [ "l", "globals_func_l.html", null ], + [ "m", "globals_func_m.html", null ], + [ "n", "globals_func_n.html", null ], + [ "o", "globals_func_o.html", null ], + [ "p", "globals_func_p.html", null ], + [ "r", "globals_func_r.html", null ], + [ "s", "globals_func_s.html", null ], + [ "t", "globals_func_t.html", null ], + [ "u", "globals_func_u.html", null ], + [ "w", "globals_func_w.html", null ], + [ "x", "globals_func_x.html", null ] +]; \ No newline at end of file diff --git a/previous_versions/v12.1.0/globals_func_b.html b/previous_versions/v12.1.0/globals_func_b.html new file mode 100644 index 000000000..32f1a8db1 --- /dev/null +++ b/previous_versions/v12.1.0/globals_func_b.html @@ -0,0 +1,126 @@ + + + + + + + +NCEPLIBS-bufr: Globals + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +  + +

                                                        - b -

                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/globals_func_c.html b/previous_versions/v12.1.0/globals_func_c.html new file mode 100644 index 000000000..e90ee4d88 --- /dev/null +++ b/previous_versions/v12.1.0/globals_func_c.html @@ -0,0 +1,211 @@ + + + + + + + +NCEPLIBS-bufr: Globals + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +  + +

                                                        - c -

                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/globals_func_d.html b/previous_versions/v12.1.0/globals_func_d.html new file mode 100644 index 000000000..ff7c62cdc --- /dev/null +++ b/previous_versions/v12.1.0/globals_func_d.html @@ -0,0 +1,128 @@ + + + + + + + +NCEPLIBS-bufr: Globals + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +  + +

                                                        - d -

                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/globals_func_e.html b/previous_versions/v12.1.0/globals_func_e.html new file mode 100644 index 000000000..d7faf7856 --- /dev/null +++ b/previous_versions/v12.1.0/globals_func_e.html @@ -0,0 +1,113 @@ + + + + + + + +NCEPLIBS-bufr: Globals + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +  + +

                                                        - e -

                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/globals_func_f.html b/previous_versions/v12.1.0/globals_func_f.html new file mode 100644 index 000000000..92870c0fe --- /dev/null +++ b/previous_versions/v12.1.0/globals_func_f.html @@ -0,0 +1,113 @@ + + + + + + + +NCEPLIBS-bufr: Globals + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +  + +

                                                        - f -

                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/globals_func_g.html b/previous_versions/v12.1.0/globals_func_g.html new file mode 100644 index 000000000..36cee3324 --- /dev/null +++ b/previous_versions/v12.1.0/globals_func_g.html @@ -0,0 +1,167 @@ + + + + + + + +NCEPLIBS-bufr: Globals + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +  + +

                                                        - g -

                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/globals_func_h.html b/previous_versions/v12.1.0/globals_func_h.html new file mode 100644 index 000000000..0029025e0 --- /dev/null +++ b/previous_versions/v12.1.0/globals_func_h.html @@ -0,0 +1,101 @@ + + + + + + + +NCEPLIBS-bufr: Globals + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +  + +

                                                        - h -

                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/globals_func_i.html b/previous_versions/v12.1.0/globals_func_i.html new file mode 100644 index 000000000..80dbce038 --- /dev/null +++ b/previous_versions/v12.1.0/globals_func_i.html @@ -0,0 +1,273 @@ + + + + + + + +NCEPLIBS-bufr: Globals + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +  + +

                                                        - i -

                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/globals_func_j.html b/previous_versions/v12.1.0/globals_func_j.html new file mode 100644 index 000000000..7056a45b8 --- /dev/null +++ b/previous_versions/v12.1.0/globals_func_j.html @@ -0,0 +1,101 @@ + + + + + + + +NCEPLIBS-bufr: Globals + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +  + +

                                                        - j -

                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/globals_func_l.html b/previous_versions/v12.1.0/globals_func_l.html new file mode 100644 index 000000000..de2e5f3d1 --- /dev/null +++ b/previous_versions/v12.1.0/globals_func_l.html @@ -0,0 +1,107 @@ + + + + + + + +NCEPLIBS-bufr: Globals + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +  + +

                                                        - l -

                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/globals_func_m.html b/previous_versions/v12.1.0/globals_func_m.html new file mode 100644 index 000000000..9b1bd168b --- /dev/null +++ b/previous_versions/v12.1.0/globals_func_m.html @@ -0,0 +1,147 @@ + + + + + + + +NCEPLIBS-bufr: Globals + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +  + +

                                                        - m -

                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/globals_func_n.html b/previous_versions/v12.1.0/globals_func_n.html new file mode 100644 index 000000000..0e7535761 --- /dev/null +++ b/previous_versions/v12.1.0/globals_func_n.html @@ -0,0 +1,173 @@ + + + + + + + +NCEPLIBS-bufr: Globals + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +  + +

                                                        - n -

                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/globals_func_o.html b/previous_versions/v12.1.0/globals_func_o.html new file mode 100644 index 000000000..6107756a7 --- /dev/null +++ b/previous_versions/v12.1.0/globals_func_o.html @@ -0,0 +1,132 @@ + + + + + + + +NCEPLIBS-bufr: Globals + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +  + +

                                                        - o -

                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/globals_func_p.html b/previous_versions/v12.1.0/globals_func_p.html new file mode 100644 index 000000000..1ef050ead --- /dev/null +++ b/previous_versions/v12.1.0/globals_func_p.html @@ -0,0 +1,147 @@ + + + + + + + +NCEPLIBS-bufr: Globals + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +  + +

                                                        - p -

                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/globals_func_r.html b/previous_versions/v12.1.0/globals_func_r.html new file mode 100644 index 000000000..b54f52cc9 --- /dev/null +++ b/previous_versions/v12.1.0/globals_func_r.html @@ -0,0 +1,186 @@ + + + + + + + +NCEPLIBS-bufr: Globals + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +  + +

                                                        - r -

                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/globals_func_s.html b/previous_versions/v12.1.0/globals_func_s.html new file mode 100644 index 000000000..3b114844f --- /dev/null +++ b/previous_versions/v12.1.0/globals_func_s.html @@ -0,0 +1,192 @@ + + + + + + + +NCEPLIBS-bufr: Globals + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +  + +

                                                        - s -

                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/globals_func_t.html b/previous_versions/v12.1.0/globals_func_t.html new file mode 100644 index 000000000..1929b1df7 --- /dev/null +++ b/previous_versions/v12.1.0/globals_func_t.html @@ -0,0 +1,107 @@ + + + + + + + +NCEPLIBS-bufr: Globals + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +  + +

                                                        - t -

                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/globals_func_u.html b/previous_versions/v12.1.0/globals_func_u.html new file mode 100644 index 000000000..298460f97 --- /dev/null +++ b/previous_versions/v12.1.0/globals_func_u.html @@ -0,0 +1,221 @@ + + + + + + + +NCEPLIBS-bufr: Globals + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +  + +

                                                        - u -

                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/globals_func_w.html b/previous_versions/v12.1.0/globals_func_w.html new file mode 100644 index 000000000..7ccdbbf75 --- /dev/null +++ b/previous_versions/v12.1.0/globals_func_w.html @@ -0,0 +1,128 @@ + + + + + + + +NCEPLIBS-bufr: Globals + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +  + +

                                                        - w -

                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/globals_func_x.html b/previous_versions/v12.1.0/globals_func_x.html new file mode 100644 index 000000000..ad2fc04be --- /dev/null +++ b/previous_versions/v12.1.0/globals_func_x.html @@ -0,0 +1,104 @@ + + + + + + + +NCEPLIBS-bufr: Globals + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +  + +

                                                        - x -

                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/globals_g.html b/previous_versions/v12.1.0/globals_g.html new file mode 100644 index 000000000..441e9f298 --- /dev/null +++ b/previous_versions/v12.1.0/globals_g.html @@ -0,0 +1,167 @@ + + + + + + + +NCEPLIBS-bufr: Globals + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
                                                        + +

                                                        - g -

                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/globals_h.html b/previous_versions/v12.1.0/globals_h.html new file mode 100644 index 000000000..b26b48dc0 --- /dev/null +++ b/previous_versions/v12.1.0/globals_h.html @@ -0,0 +1,101 @@ + + + + + + + +NCEPLIBS-bufr: Globals + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
                                                        + +

                                                        - h -

                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/globals_i.html b/previous_versions/v12.1.0/globals_i.html new file mode 100644 index 000000000..150502f25 --- /dev/null +++ b/previous_versions/v12.1.0/globals_i.html @@ -0,0 +1,288 @@ + + + + + + + +NCEPLIBS-bufr: Globals + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
                                                        + +

                                                        - i -

                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/globals_j.html b/previous_versions/v12.1.0/globals_j.html new file mode 100644 index 000000000..d13a32048 --- /dev/null +++ b/previous_versions/v12.1.0/globals_j.html @@ -0,0 +1,101 @@ + + + + + + + +NCEPLIBS-bufr: Globals + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
                                                        + +

                                                        - j -

                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/globals_l.html b/previous_versions/v12.1.0/globals_l.html new file mode 100644 index 000000000..6d893d414 --- /dev/null +++ b/previous_versions/v12.1.0/globals_l.html @@ -0,0 +1,110 @@ + + + + + + + +NCEPLIBS-bufr: Globals + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
                                                        + +

                                                        - l -

                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/globals_m.html b/previous_versions/v12.1.0/globals_m.html new file mode 100644 index 000000000..90258a18e --- /dev/null +++ b/previous_versions/v12.1.0/globals_m.html @@ -0,0 +1,165 @@ + + + + + + + +NCEPLIBS-bufr: Globals + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
                                                        + +

                                                        - m -

                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/globals_n.html b/previous_versions/v12.1.0/globals_n.html new file mode 100644 index 000000000..3acb3d3a8 --- /dev/null +++ b/previous_versions/v12.1.0/globals_n.html @@ -0,0 +1,188 @@ + + + + + + + +NCEPLIBS-bufr: Globals + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
                                                        + +

                                                        - n -

                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/globals_o.html b/previous_versions/v12.1.0/globals_o.html new file mode 100644 index 000000000..5ca557263 --- /dev/null +++ b/previous_versions/v12.1.0/globals_o.html @@ -0,0 +1,132 @@ + + + + + + + +NCEPLIBS-bufr: Globals + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
                                                        + +

                                                        - o -

                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/globals_p.html b/previous_versions/v12.1.0/globals_p.html new file mode 100644 index 000000000..9ffdbbc0c --- /dev/null +++ b/previous_versions/v12.1.0/globals_p.html @@ -0,0 +1,153 @@ + + + + + + + +NCEPLIBS-bufr: Globals + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
                                                        + +

                                                        - p -

                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/globals_r.html b/previous_versions/v12.1.0/globals_r.html new file mode 100644 index 000000000..230bd16d0 --- /dev/null +++ b/previous_versions/v12.1.0/globals_r.html @@ -0,0 +1,186 @@ + + + + + + + +NCEPLIBS-bufr: Globals + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
                                                        + +

                                                        - r -

                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/globals_s.html b/previous_versions/v12.1.0/globals_s.html new file mode 100644 index 000000000..bca83d635 --- /dev/null +++ b/previous_versions/v12.1.0/globals_s.html @@ -0,0 +1,192 @@ + + + + + + + +NCEPLIBS-bufr: Globals + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
                                                        + +

                                                        - s -

                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/globals_t.html b/previous_versions/v12.1.0/globals_t.html new file mode 100644 index 000000000..91b26a3b9 --- /dev/null +++ b/previous_versions/v12.1.0/globals_t.html @@ -0,0 +1,107 @@ + + + + + + + +NCEPLIBS-bufr: Globals + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
                                                        + +

                                                        - t -

                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/globals_u.html b/previous_versions/v12.1.0/globals_u.html new file mode 100644 index 000000000..a096d83b0 --- /dev/null +++ b/previous_versions/v12.1.0/globals_u.html @@ -0,0 +1,224 @@ + + + + + + + +NCEPLIBS-bufr: Globals + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
                                                        + +

                                                        - u -

                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/globals_v.html b/previous_versions/v12.1.0/globals_v.html new file mode 100644 index 000000000..8a07449f0 --- /dev/null +++ b/previous_versions/v12.1.0/globals_v.html @@ -0,0 +1,101 @@ + + + + + + + +NCEPLIBS-bufr: Globals + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
                                                        + +

                                                        - v -

                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/globals_vars.html b/previous_versions/v12.1.0/globals_vars.html new file mode 100644 index 000000000..ec6e08ccd --- /dev/null +++ b/previous_versions/v12.1.0/globals_vars.html @@ -0,0 +1,159 @@ + + + + + + + +NCEPLIBS-bufr: Globals + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/globals_w.html b/previous_versions/v12.1.0/globals_w.html new file mode 100644 index 000000000..eca4406d0 --- /dev/null +++ b/previous_versions/v12.1.0/globals_w.html @@ -0,0 +1,128 @@ + + + + + + + +NCEPLIBS-bufr: Globals + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
                                                        + +

                                                        - w -

                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/globals_x.html b/previous_versions/v12.1.0/globals_x.html new file mode 100644 index 000000000..20f33b0f1 --- /dev/null +++ b/previous_versions/v12.1.0/globals_x.html @@ -0,0 +1,104 @@ + + + + + + + +NCEPLIBS-bufr: Globals + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
                                                        + +

                                                        - x -

                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/icvidx_8c.html b/previous_versions/v12.1.0/icvidx_8c.html new file mode 100644 index 000000000..655cc7c46 --- /dev/null +++ b/previous_versions/v12.1.0/icvidx_8c.html @@ -0,0 +1,172 @@ + + + + + + + +NCEPLIBS-bufr: icvidx.c File Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        icvidx.c File Reference
                                                        +
                                                        +
                                                        + +

                                                        Compute a unique 1-dimensional array index from 2-dimensional indices. +More...

                                                        + +

                                                        Go to the source code of this file.

                                                        + + + + + +

                                                        +Functions

                                                        int icvidx (int ii, int jj, int numjj)
                                                         Computes a unique 1-dimensional array index from 2-dimensional indices. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Compute a unique 1-dimensional array index from 2-dimensional indices.

                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2009-03-23
                                                        + +

                                                        Definition in file icvidx.c.

                                                        +

                                                        Function Documentation

                                                        + +

                                                        ◆ icvidx()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        int icvidx (int ii,
                                                        int jj,
                                                        int numjj 
                                                        )
                                                        +
                                                        + +

                                                        Computes a unique 1-dimensional array index from 2-dimensional indices.

                                                        +

                                                        This allows a 2-dimensional (row-by-column) array to be stored and accessed as a 1-dimensional array.

                                                        +
                                                        Parameters
                                                        + + + + +
                                                        ii- first (row) index
                                                        jj- second (column) index
                                                        numjj- maximum number of column indices
                                                        +
                                                        +
                                                        +
                                                        Returns
                                                        1-dimensional index.
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2009-03-23
                                                        + +

                                                        Definition at line 22 of file icvidx.c.

                                                        + +

                                                        Referenced by cpmstabs(), and stseq().

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/icvidx_8c.js b/previous_versions/v12.1.0/icvidx_8c.js new file mode 100644 index 000000000..6eff3da6f --- /dev/null +++ b/previous_versions/v12.1.0/icvidx_8c.js @@ -0,0 +1,4 @@ +var icvidx_8c = +[ + [ "icvidx", "icvidx_8c.html#ab3b665adb5a53a4c82d3c5caadbb2c38", null ] +]; \ No newline at end of file diff --git a/previous_versions/v12.1.0/icvidx_8c_source.html b/previous_versions/v12.1.0/icvidx_8c_source.html new file mode 100644 index 000000000..054eb4732 --- /dev/null +++ b/previous_versions/v12.1.0/icvidx_8c_source.html @@ -0,0 +1,106 @@ + + + + + + + +NCEPLIBS-bufr: icvidx.c Source File + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        +
                                                        icvidx.c
                                                        +
                                                        +
                                                        +Go to the documentation of this file.
                                                        1 
                                                        +
                                                        21 int
                                                        +
                                                        22 icvidx(int ii, int jj, int numjj)
                                                        +
                                                        23 {
                                                        +
                                                        24  return ( numjj * ii ) + jj;
                                                        +
                                                        25 }
                                                        +
                                                        int icvidx(int ii, int jj, int numjj)
                                                        Computes a unique 1-dimensional array index from 2-dimensional indices.
                                                        Definition: icvidx.c:22
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/index.html b/previous_versions/v12.1.0/index.html new file mode 100644 index 000000000..74d70261b --- /dev/null +++ b/previous_versions/v12.1.0/index.html @@ -0,0 +1,157 @@ + + + + + + + +NCEPLIBS-bufr: Main Page + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        +
                                                        NCEPLIBS-bufr Documentation
                                                        +
                                                        +
                                                        +

                                                        +Documentation for Previous Versions of NCEPLIBS-bufr

                                                        + +

                                                        +Documentation for the Python API for NCEPLIBS-bufr

                                                        + +

                                                        +Introduction

                                                        +

                                                        This library contains subroutines, functions and other utilities that can be used to read (decode) and write (encode) data in BUFR, which is a WMO standard format for the exchange of meteorological data.

                                                        +

                                                        +The BUFR Format

                                                        +

                                                        The BUFR format is officially documented in WMO Manual 306, Volume I.2. The latest edition of BUFR is edition 4, although edition 3 is still in use in many parts of the world. A complete BUFR message consists of the following sections:

                                                        + + + + + + + + + + + + + + + +
                                                        Section Number Name Contents
                                                        0 Indicator section "BUFR", length of message, edition number
                                                        1 Identification section Originating center and subcenter, data category and subcategory, master table and version number
                                                        2 (Optional) Local Use section (Optional) free-format additional information of potential interest to users
                                                        3 Data Description section Number of data subsets, compression indicator, and list of descriptors defining the content of each data subset
                                                        4 Data section One or more data subsets, each containing values corresponding to the list of descriptors defined within Section 3
                                                        5 End section "7777"
                                                        +

                                                        BUFR is a table-driven format, meaning that new descriptors can be encoded and decoded by adding them to tables which are read in by the software, rather than having to modify the software itself. To that end, WMO periodically releases new versions of their official WMO master BUFR tables, to facilitate the continued exchange of meteorological data throughout the global community.

                                                        +

                                                        NCEPLIBS-bufr can read (decode) and write (encode) data in both edition 3 and edition 4 of BUFR. It consists of more than 300 different subroutines and functions; however, a typical application program will never directly call more than 10 to 20 of them, and the rest are lower-level routines that the library uses to accomplish various underlying tasks, and which can therefore be considered as "black box" from a user perspective.

                                                        +

                                                        Whenever new versions of the official WMO master BUFR tables are released by WMO (as noted above), they are downloaded and reformatted as new NCEPLIBS-bufr master BUFR tables for use with the software and distributed with the next release of the library. However, users can also generate their own custom NCEPLIBS-bufr DX BUFR tables for use with the software as needed.

                                                        +

                                                        More details are available throughout the documentation, including sample utilities which demonstrate how to use many of the various library subroutines and functions to accomplish different tasks.

                                                        +

                                                        +NCEPLIBS-bufr Library Subroutines and Functions

                                                        +

                                                        It's important to understand the following hierarchy:

                                                        +
                                                          +
                                                        1. Any BUFR file can contain one or more BUFR messages.
                                                        2. +
                                                        3. Any BUFR message can contain one or more BUFR data subsets, which are akin to reports from individual observational stations at a particular time and location.
                                                        4. +
                                                        5. Any BUFR data subset can contain one or more BUFR data descriptors and corresponding data values.
                                                        6. +
                                                        +

                                                        This allows many of the most commonly used library subroutines and functions to be grouped based on which level of the hierarchy they operate at, and whether for reading/decoding BUFR data or writing/encoding BUFR data. In the following table, any routine with a _f suffix wraps a Fortran routine of the same name and should only be called from C application programs. Conversely, any routine with a _c suffix wraps a C function of the same name and should only be called from Fortran application programs.

                                                        + + + + + + + +
                                                        For working with: BUFR files BUFR messages BUFR data subsets BUFR data values
                                                        reading/decoding openbf() openbf_f() ufbmem() ufbmex() cobfl() cobfl_c() readmg() ireadmg() ireadmg_f() readerme() readns() ireadns() rdmemm() readmm() ireadmm() crbmg() crbmg_c() datelen() getlens() iupvs01() iupbs01() iupbs01_f() iupbs3() nmsub() rtrcpt() igetdate() readsb() ireadsb() ireadsb_f() readns() ireadns() rdmems() ufbmms() ufbmns() ufbpos() ufbint() ufbint_f() ufbrep() ufbrep_f() ufbseq() ufbstp() ufbrms() readlc() getvalnb() setbmiss() getbmiss() ibfms() icbfms()
                                                        writing/encoding openbf() openbf_f() closbf() closbf_f() copybf() cobfl() cobfl_c() openmb() openmg() closmg() copymg() cpymem() cwbmg() cwbmg_c() cmpmsg() stdmsg() cnved4() strcpt() setblock() maxout() pkvs01() pkbs1() minimg() writsb() writsa() writcp() copysb() icopysb() ufbint() ufbint_f() ufbrep() ufbrep_f() ufbseq() ufbstp() writlc() setvalnb() setbmiss()
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/interfacebufr__interface_1_1ccbfl__c.html b/previous_versions/v12.1.0/interfacebufr__interface_1_1ccbfl__c.html new file mode 100644 index 000000000..ea71eca66 --- /dev/null +++ b/previous_versions/v12.1.0/interfacebufr__interface_1_1ccbfl__c.html @@ -0,0 +1,136 @@ + + + + + + + +NCEPLIBS-bufr: bufr_interface::ccbfl_c Interface Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        bufr_interface::ccbfl_c Interface Reference
                                                        +
                                                        +
                                                        + + + + + +

                                                        +Public Member Functions

                                                        subroutine ccbfl_c ()
                                                         Close all files that were opened via previous calls to subroutine cobfl_c(). More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +
                                                        +

                                                        Definition at line 74 of file bufr_interface.F90.

                                                        +

                                                        Constructor & Destructor Documentation

                                                        + +

                                                        ◆ ccbfl_c()

                                                        + +
                                                        +
                                                        + + + + +
                                                        bufr_interface::ccbfl_c::ccbfl_c
                                                        +
                                                        + +

                                                        Close all files that were opened via previous calls to subroutine cobfl_c().

                                                        +

                                                        Wraps ccbfl() function.

                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2005-11-29
                                                        + +

                                                        Definition at line 74 of file bufr_interface.F90.

                                                        + +
                                                        +
                                                        +
                                                        The documentation for this interface was generated from the following file: +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/interfacebufr__interface_1_1ccbfl__c.js b/previous_versions/v12.1.0/interfacebufr__interface_1_1ccbfl__c.js new file mode 100644 index 000000000..79cbcef08 --- /dev/null +++ b/previous_versions/v12.1.0/interfacebufr__interface_1_1ccbfl__c.js @@ -0,0 +1,4 @@ +var interfacebufr__interface_1_1ccbfl__c = +[ + [ "ccbfl_c", "interfacebufr__interface_1_1ccbfl__c.html#a465bb0ca48168a8a39e63a8a6389fbe8", null ] +]; \ No newline at end of file diff --git a/previous_versions/v12.1.0/interfacebufr__interface_1_1cobfl__c.html b/previous_versions/v12.1.0/interfacebufr__interface_1_1cobfl__c.html new file mode 100644 index 000000000..0cdd0419b --- /dev/null +++ b/previous_versions/v12.1.0/interfacebufr__interface_1_1cobfl__c.html @@ -0,0 +1,157 @@ + + + + + + + +NCEPLIBS-bufr: bufr_interface::cobfl_c Interface Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        bufr_interface::cobfl_c Interface Reference
                                                        +
                                                        +
                                                        + + + + + +

                                                        +Public Member Functions

                                                        subroutine cobfl_c (bfl, io)
                                                         Open a new file for reading or writing BUFR messages via a C language interface. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +
                                                        +

                                                        Definition at line 24 of file bufr_interface.F90.

                                                        +

                                                        Constructor & Destructor Documentation

                                                        + +

                                                        ◆ cobfl_c()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        bufr_interface::cobfl_c::cobfl_c (character(kind=c_char), dimension(*), intent(in) bfl,
                                                        character(kind=c_char), intent(in), value io 
                                                        )
                                                        +
                                                        + +

                                                        Open a new file for reading or writing BUFR messages via a C language interface.

                                                        +

                                                        Wraps cobfl() function.

                                                        +
                                                        Parameters
                                                        + + + +
                                                        bfl- [path]/name of file to be opened
                                                        io- Flag indicating how bfl is to be opened
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2023-03-22
                                                        + +

                                                        Definition at line 24 of file bufr_interface.F90.

                                                        + +
                                                        +
                                                        +
                                                        The documentation for this interface was generated from the following file: +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/interfacebufr__interface_1_1cobfl__c.js b/previous_versions/v12.1.0/interfacebufr__interface_1_1cobfl__c.js new file mode 100644 index 000000000..69fc9737f --- /dev/null +++ b/previous_versions/v12.1.0/interfacebufr__interface_1_1cobfl__c.js @@ -0,0 +1,4 @@ +var interfacebufr__interface_1_1cobfl__c = +[ + [ "cobfl_c", "interfacebufr__interface_1_1cobfl__c.html#ae36eb00a741323dd644b1d59eaa2d20e", null ] +]; \ No newline at end of file diff --git a/previous_versions/v12.1.0/interfacebufr__interface_1_1crbmg__c.html b/previous_versions/v12.1.0/interfacebufr__interface_1_1crbmg__c.html new file mode 100644 index 000000000..16edb18f9 --- /dev/null +++ b/previous_versions/v12.1.0/interfacebufr__interface_1_1crbmg__c.html @@ -0,0 +1,171 @@ + + + + + + + +NCEPLIBS-bufr: bufr_interface::crbmg_c Interface Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        bufr_interface::crbmg_c Interface Reference
                                                        +
                                                        +
                                                        + + + + + +

                                                        +Public Member Functions

                                                        subroutine crbmg_c (bmg, mxmb, nmb, iret)
                                                         Read the next BUFR message from the file that was opened via the most recent call to subroutine cobfl_c() with io = 'r'. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +
                                                        +

                                                        Definition at line 43 of file bufr_interface.F90.

                                                        +

                                                        Constructor & Destructor Documentation

                                                        + +

                                                        ◆ crbmg_c()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        bufr_interface::crbmg_c::crbmg_c (character(kind=c_char), dimension(*), intent(out) bmg,
                                                        integer(c_int), intent(in), value mxmb,
                                                        integer(c_int), intent(out) nmb,
                                                        integer(c_int), intent(out) iret 
                                                        )
                                                        +
                                                        + +

                                                        Read the next BUFR message from the file that was opened via the most recent call to subroutine cobfl_c() with io = 'r'.

                                                        +

                                                        Wraps crbmg() function.

                                                        +
                                                        Parameters
                                                        + + + + + +
                                                        mxmb- Number of elements in bmg array; used by the function to ensure that it doesn't overflow the array.
                                                        bmg- BUFR message
                                                        nmb- Size of BUFR message in bmg array
                                                        iret- Return code 0 indicates success, any other value indicates failure
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2023-03-22
                                                        + +

                                                        Definition at line 43 of file bufr_interface.F90.

                                                        + +
                                                        +
                                                        +
                                                        The documentation for this interface was generated from the following file: +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/interfacebufr__interface_1_1crbmg__c.js b/previous_versions/v12.1.0/interfacebufr__interface_1_1crbmg__c.js new file mode 100644 index 000000000..c2f493d3e --- /dev/null +++ b/previous_versions/v12.1.0/interfacebufr__interface_1_1crbmg__c.js @@ -0,0 +1,4 @@ +var interfacebufr__interface_1_1crbmg__c = +[ + [ "crbmg_c", "interfacebufr__interface_1_1crbmg__c.html#a2032b00ac9a4d3230ce8f78b127f3311", null ] +]; \ No newline at end of file diff --git a/previous_versions/v12.1.0/interfacebufr__interface_1_1cwbmg__c.html b/previous_versions/v12.1.0/interfacebufr__interface_1_1cwbmg__c.html new file mode 100644 index 000000000..65139468e --- /dev/null +++ b/previous_versions/v12.1.0/interfacebufr__interface_1_1cwbmg__c.html @@ -0,0 +1,164 @@ + + + + + + + +NCEPLIBS-bufr: bufr_interface::cwbmg_c Interface Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        bufr_interface::cwbmg_c Interface Reference
                                                        +
                                                        +
                                                        + + + + + +

                                                        +Public Member Functions

                                                        subroutine cwbmg_c (bmg, nmb, iret)
                                                         Write a BUFR message to the file that was opened via the most recent call to subroutine cobfl_c() with io = 'w'. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +
                                                        +

                                                        Definition at line 61 of file bufr_interface.F90.

                                                        +

                                                        Constructor & Destructor Documentation

                                                        + +

                                                        ◆ cwbmg_c()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        bufr_interface::cwbmg_c::cwbmg_c (character(kind=c_char), dimension(*), intent(in) bmg,
                                                        integer(c_int), intent(in), value nmb,
                                                        integer(c_int), intent(out) iret 
                                                        )
                                                        +
                                                        + +

                                                        Write a BUFR message to the file that was opened via the most recent call to subroutine cobfl_c() with io = 'w'.

                                                        +

                                                        Wraps cwbmg() function.

                                                        +
                                                        Parameters
                                                        + + + + +
                                                        bmg- BUFR message
                                                        nmb- Size of BUFR message in bmg array
                                                        iret- Return code 0 indicates success, any other value indicates failure
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2005-11-29
                                                        + +

                                                        Definition at line 61 of file bufr_interface.F90.

                                                        + +
                                                        +
                                                        +
                                                        The documentation for this interface was generated from the following file: +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/interfacebufr__interface_1_1cwbmg__c.js b/previous_versions/v12.1.0/interfacebufr__interface_1_1cwbmg__c.js new file mode 100644 index 000000000..0b9bec2ac --- /dev/null +++ b/previous_versions/v12.1.0/interfacebufr__interface_1_1cwbmg__c.js @@ -0,0 +1,4 @@ +var interfacebufr__interface_1_1cwbmg__c = +[ + [ "cwbmg_c", "interfacebufr__interface_1_1cwbmg__c.html#a239dcd549ee24ca912e161e76619e113", null ] +]; \ No newline at end of file diff --git a/interfacebufr__interface_1_1dlloctbf__c.html b/previous_versions/v12.1.0/interfacebufr__interface_1_1dlloctbf__c.html similarity index 100% rename from interfacebufr__interface_1_1dlloctbf__c.html rename to previous_versions/v12.1.0/interfacebufr__interface_1_1dlloctbf__c.html diff --git a/interfacebufr__interface_1_1dlloctbf__c.js b/previous_versions/v12.1.0/interfacebufr__interface_1_1dlloctbf__c.js similarity index 100% rename from interfacebufr__interface_1_1dlloctbf__c.js rename to previous_versions/v12.1.0/interfacebufr__interface_1_1dlloctbf__c.js diff --git a/previous_versions/v12.1.0/interfacebufrlib_1_1arallocc__c.html b/previous_versions/v12.1.0/interfacebufrlib_1_1arallocc__c.html new file mode 100644 index 000000000..a418e2195 --- /dev/null +++ b/previous_versions/v12.1.0/interfacebufrlib_1_1arallocc__c.html @@ -0,0 +1,136 @@ + + + + + + + +NCEPLIBS-bufr: bufrlib::arallocc_c Interface Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        bufrlib::arallocc_c Interface Reference
                                                        +
                                                        +
                                                        + + + + + +

                                                        +Public Member Functions

                                                        subroutine arallocc_c ()
                                                         Dynamically allocate C language arrays. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +
                                                        +

                                                        Definition at line 164 of file bufrlib.F90.

                                                        +

                                                        Constructor & Destructor Documentation

                                                        + +

                                                        ◆ arallocc_c()

                                                        + +
                                                        +
                                                        + + + + +
                                                        bufrlib::arallocc_c::arallocc_c
                                                        +
                                                        + +

                                                        Dynamically allocate C language arrays.

                                                        +

                                                        Wraps arallocc() function.

                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2014-12-04
                                                        + +

                                                        Definition at line 164 of file bufrlib.F90.

                                                        + +
                                                        +
                                                        +
                                                        The documentation for this interface was generated from the following file: +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/interfacebufrlib_1_1arallocc__c.js b/previous_versions/v12.1.0/interfacebufrlib_1_1arallocc__c.js new file mode 100644 index 000000000..80b28fdae --- /dev/null +++ b/previous_versions/v12.1.0/interfacebufrlib_1_1arallocc__c.js @@ -0,0 +1,4 @@ +var interfacebufrlib_1_1arallocc__c = +[ + [ "arallocc_c", "interfacebufrlib_1_1arallocc__c.html#a59657ce8014f439d0bdd18713ee7788d", null ] +]; \ No newline at end of file diff --git a/previous_versions/v12.1.0/interfacebufrlib_1_1ardllocc__c.html b/previous_versions/v12.1.0/interfacebufrlib_1_1ardllocc__c.html new file mode 100644 index 000000000..30b456e73 --- /dev/null +++ b/previous_versions/v12.1.0/interfacebufrlib_1_1ardllocc__c.html @@ -0,0 +1,136 @@ + + + + + + + +NCEPLIBS-bufr: bufrlib::ardllocc_c Interface Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        bufrlib::ardllocc_c Interface Reference
                                                        +
                                                        +
                                                        + + + + + +

                                                        +Public Member Functions

                                                        subroutine ardllocc_c ()
                                                         Free all memory allocated via arallocc_c(). More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +
                                                        +

                                                        Definition at line 174 of file bufrlib.F90.

                                                        +

                                                        Constructor & Destructor Documentation

                                                        + +

                                                        ◆ ardllocc_c()

                                                        + +
                                                        +
                                                        + + + + +
                                                        bufrlib::ardllocc_c::ardllocc_c
                                                        +
                                                        + +

                                                        Free all memory allocated via arallocc_c().

                                                        +

                                                        Wraps ardllocc() function.

                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2014-12-04
                                                        + +

                                                        Definition at line 174 of file bufrlib.F90.

                                                        + +
                                                        +
                                                        +
                                                        The documentation for this interface was generated from the following file: +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/interfacebufrlib_1_1ardllocc__c.js b/previous_versions/v12.1.0/interfacebufrlib_1_1ardllocc__c.js new file mode 100644 index 000000000..6ef0e7000 --- /dev/null +++ b/previous_versions/v12.1.0/interfacebufrlib_1_1ardllocc__c.js @@ -0,0 +1,4 @@ +var interfacebufrlib_1_1ardllocc__c = +[ + [ "ardllocc_c", "interfacebufrlib_1_1ardllocc__c.html#a3ca3c885757d7df2b1837e46443b318e", null ] +]; \ No newline at end of file diff --git a/previous_versions/v12.1.0/interfacebufrlib_1_1backbufr__c.html b/previous_versions/v12.1.0/interfacebufrlib_1_1backbufr__c.html new file mode 100644 index 000000000..57773279d --- /dev/null +++ b/previous_versions/v12.1.0/interfacebufrlib_1_1backbufr__c.html @@ -0,0 +1,146 @@ + + + + + + + +NCEPLIBS-bufr: bufrlib::backbufr_c Interface Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        bufrlib::backbufr_c Interface Reference
                                                        +
                                                        +
                                                        + + + + + +

                                                        +Public Member Functions

                                                        subroutine backbufr_c (nfile)
                                                         Backspace a BUFR file by one BUFR message. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +
                                                        +

                                                        Definition at line 69 of file bufrlib.F90.

                                                        +

                                                        Constructor & Destructor Documentation

                                                        + +

                                                        ◆ backbufr_c()

                                                        + +
                                                        +
                                                        + + + + + + + + +
                                                        bufrlib::backbufr_c::backbufr_c (integer(c_int), intent(in), value nfile)
                                                        +
                                                        + +

                                                        Backspace a BUFR file by one BUFR message.

                                                        +

                                                        Wraps backbufr() function.

                                                        +
                                                        Parameters
                                                        + + +
                                                        nfile- File ID.
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2005-11-29
                                                        + +

                                                        Definition at line 69 of file bufrlib.F90.

                                                        + +
                                                        +
                                                        +
                                                        The documentation for this interface was generated from the following file: +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/interfacebufrlib_1_1backbufr__c.js b/previous_versions/v12.1.0/interfacebufrlib_1_1backbufr__c.js new file mode 100644 index 000000000..9bc094fb5 --- /dev/null +++ b/previous_versions/v12.1.0/interfacebufrlib_1_1backbufr__c.js @@ -0,0 +1,4 @@ +var interfacebufrlib_1_1backbufr__c = +[ + [ "backbufr_c", "interfacebufrlib_1_1backbufr__c.html#ad9e1b123389021319f06f8e95c34d832", null ] +]; \ No newline at end of file diff --git a/previous_versions/v12.1.0/interfacebufrlib_1_1cewind__c.html b/previous_versions/v12.1.0/interfacebufrlib_1_1cewind__c.html new file mode 100644 index 000000000..3171f52b1 --- /dev/null +++ b/previous_versions/v12.1.0/interfacebufrlib_1_1cewind__c.html @@ -0,0 +1,146 @@ + + + + + + + +NCEPLIBS-bufr: bufrlib::cewind_c Interface Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        bufrlib::cewind_c Interface Reference
                                                        +
                                                        +
                                                        + + + + + +

                                                        +Public Member Functions

                                                        subroutine cewind_c (nfile)
                                                         Rewind a BUFR file back to its beginning. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +
                                                        +

                                                        Definition at line 82 of file bufrlib.F90.

                                                        +

                                                        Constructor & Destructor Documentation

                                                        + +

                                                        ◆ cewind_c()

                                                        + +
                                                        +
                                                        + + + + + + + + +
                                                        bufrlib::cewind_c::cewind_c (integer(c_int), intent(in), value nfile)
                                                        +
                                                        + +

                                                        Rewind a BUFR file back to its beginning.

                                                        +

                                                        Wraps cewind() function.

                                                        +
                                                        Parameters
                                                        + + +
                                                        nfile- File ID.
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2005-11-29
                                                        + +

                                                        Definition at line 82 of file bufrlib.F90.

                                                        + +
                                                        +
                                                        +
                                                        The documentation for this interface was generated from the following file: +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/interfacebufrlib_1_1cewind__c.js b/previous_versions/v12.1.0/interfacebufrlib_1_1cewind__c.js new file mode 100644 index 000000000..8d46979a4 --- /dev/null +++ b/previous_versions/v12.1.0/interfacebufrlib_1_1cewind__c.js @@ -0,0 +1,4 @@ +var interfacebufrlib_1_1cewind__c = +[ + [ "cewind_c", "interfacebufrlib_1_1cewind__c.html#ade24db84a56b90d1c86b15e87191155b", null ] +]; \ No newline at end of file diff --git a/previous_versions/v12.1.0/interfacebufrlib_1_1closfb__c.html b/previous_versions/v12.1.0/interfacebufrlib_1_1closfb__c.html new file mode 100644 index 000000000..726918670 --- /dev/null +++ b/previous_versions/v12.1.0/interfacebufrlib_1_1closfb__c.html @@ -0,0 +1,146 @@ + + + + + + + +NCEPLIBS-bufr: bufrlib::closfb_c Interface Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        bufrlib::closfb_c Interface Reference
                                                        +
                                                        +
                                                        + + + + + +

                                                        +Public Member Functions

                                                        subroutine closfb_c (nfile)
                                                         Close a previously opened BUFR file. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +
                                                        +

                                                        Definition at line 95 of file bufrlib.F90.

                                                        +

                                                        Constructor & Destructor Documentation

                                                        + +

                                                        ◆ closfb_c()

                                                        + +
                                                        +
                                                        + + + + + + + + +
                                                        bufrlib::closfb_c::closfb_c (integer(c_int), intent(in), value nfile)
                                                        +
                                                        + +

                                                        Close a previously opened BUFR file.

                                                        +

                                                        Wraps closfb() function.

                                                        +
                                                        Parameters
                                                        + + +
                                                        nfile- File ID.
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2005-11-29
                                                        + +

                                                        Definition at line 95 of file bufrlib.F90.

                                                        + +
                                                        +
                                                        +
                                                        The documentation for this interface was generated from the following file: +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/interfacebufrlib_1_1closfb__c.js b/previous_versions/v12.1.0/interfacebufrlib_1_1closfb__c.js new file mode 100644 index 000000000..20cad13d8 --- /dev/null +++ b/previous_versions/v12.1.0/interfacebufrlib_1_1closfb__c.js @@ -0,0 +1,4 @@ +var interfacebufrlib_1_1closfb__c = +[ + [ "closfb_c", "interfacebufrlib_1_1closfb__c.html#ae18afec62d70c123a3224c75919c533f", null ] +]; \ No newline at end of file diff --git a/previous_versions/v12.1.0/interfacebufrlib_1_1cpmstabs__c.html b/previous_versions/v12.1.0/interfacebufrlib_1_1cpmstabs__c.html new file mode 100644 index 000000000..8178680e5 --- /dev/null +++ b/previous_versions/v12.1.0/interfacebufrlib_1_1cpmstabs__c.html @@ -0,0 +1,248 @@ + + + + + + + +NCEPLIBS-bufr: bufrlib::cpmstabs_c Interface Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        bufrlib::cpmstabs_c Interface Reference
                                                        +
                                                        +
                                                        + + + + + +

                                                        +Public Member Functions

                                                        subroutine cpmstabs_c (nmtb, ibfxyn, cbscl, cbsref, cbbw, cbunit, cbmnem, cbelem, nmtd, idfxyn, cdseq, cdmnem, ndelem, idefxy, maxcd)
                                                         Copy master Table B and Table D information. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +
                                                        +

                                                        Definition at line 201 of file bufrlib.F90.

                                                        +

                                                        Constructor & Destructor Documentation

                                                        + +

                                                        ◆ cpmstabs_c()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        bufrlib::cpmstabs_c::cpmstabs_c (integer(c_int), intent(in), value nmtb,
                                                        integer(c_int), dimension(*), intent(in) ibfxyn,
                                                        character(kind=c_char), dimension(4,*), intent(in) cbscl,
                                                        character(kind=c_char), dimension(12,*), intent(in) cbsref,
                                                        character(kind=c_char), dimension(4,*), intent(in) cbbw,
                                                        character(kind=c_char), dimension(24,*), intent(in) cbunit,
                                                        character(kind=c_char), dimension(8,*), intent(in) cbmnem,
                                                        character(kind=c_char), dimension(120,*), intent(in) cbelem,
                                                        integer(c_int), intent(in), value nmtd,
                                                        integer(c_int), dimension(*), intent(in) idfxyn,
                                                        character(kind=c_char), dimension(120,*), intent(in) cdseq,
                                                        character(kind=c_char), dimension(8,*), intent(in) cdmnem,
                                                        integer(c_int), dimension(*), intent(in) ndelem,
                                                        integer(c_int), dimension(*), intent(in) idefxy,
                                                        integer(c_int), intent(in), value maxcd 
                                                        )
                                                        +
                                                        + +

                                                        Copy master Table B and Table D information.

                                                        +

                                                        Wraps cpmstabs() function.

                                                        +
                                                        Parameters
                                                        + + + + + + + + + + + + + + + + +
                                                        nmtb- Number of master Table B entries.
                                                        ibfxyn- WMO bit-wise representations of master Table B FXY numbers.
                                                        cbscl- Master Table B scale factors.
                                                        cbsref- Master Table B reference values.
                                                        cbbw- Master Table B bit widths.
                                                        cbunit- Master Table B units.
                                                        cbmnem- Master Table B mnemonics.
                                                        cbelem- Master Table B element names.
                                                        nmtd- Number of master Table D entries.
                                                        idfxyn- WMO bit-wise representations of master Table D FXY numbers.
                                                        cdseq- Master Table D sequence names.
                                                        cdmnem- Master Table D mnemonics.
                                                        ndelem- Number of child descriptors for master Table D sequence.
                                                        idefxy- WMO bit-wise representations of child descriptors for master Table D sequence.
                                                        maxcd- Maximum number of child descriptors for a master Table D sequence.
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2005-11-29
                                                        + +

                                                        Definition at line 201 of file bufrlib.F90.

                                                        + +
                                                        +
                                                        +
                                                        The documentation for this interface was generated from the following file: +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/interfacebufrlib_1_1cpmstabs__c.js b/previous_versions/v12.1.0/interfacebufrlib_1_1cpmstabs__c.js new file mode 100644 index 000000000..b38e7da41 --- /dev/null +++ b/previous_versions/v12.1.0/interfacebufrlib_1_1cpmstabs__c.js @@ -0,0 +1,4 @@ +var interfacebufrlib_1_1cpmstabs__c = +[ + [ "cpmstabs_c", "interfacebufrlib_1_1cpmstabs__c.html#a92cd23a27aa89d15a186d93a87c3973d", null ] +]; \ No newline at end of file diff --git a/previous_versions/v12.1.0/interfacebufrlib_1_1crdbufr__c.html b/previous_versions/v12.1.0/interfacebufrlib_1_1crdbufr__c.html new file mode 100644 index 000000000..51ca71260 --- /dev/null +++ b/previous_versions/v12.1.0/interfacebufrlib_1_1crdbufr__c.html @@ -0,0 +1,170 @@ + + + + + + + +NCEPLIBS-bufr: bufrlib::crdbufr_c Interface Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        bufrlib::crdbufr_c Interface Reference
                                                        +
                                                        +
                                                        + + + + + +

                                                        +Public Member Functions

                                                        integer(c_int) function crdbufr_c (nfile, bufr, mxwrd)
                                                         Read the next message from a BUFR file that was previously opened for reading. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +
                                                        +

                                                        Definition at line 117 of file bufrlib.F90.

                                                        +

                                                        Constructor & Destructor Documentation

                                                        + +

                                                        ◆ crdbufr_c()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        bufrlib::crdbufr_c::crdbufr_c (integer(c_int), intent(in), value nfile,
                                                        integer(c_int), dimension(*), intent(out) bufr,
                                                        integer(c_int), intent(in), value mxwrd 
                                                        )
                                                        +
                                                        + +

                                                        Read the next message from a BUFR file that was previously opened for reading.

                                                        +

                                                        Wraps crdbufr() function.

                                                        +
                                                        Parameters
                                                        + + + + +
                                                        nfile- File ID.
                                                        bufr- BUFR message.
                                                        mxwrd- Number of elements in bufr array; used by the function to ensure that it doesn't overflow the array.
                                                        +
                                                        +
                                                        +

                                                        Return code:

                                                          +
                                                        • 0 = normal return
                                                        • +
                                                        • -1 = end-of-file encountered while reading
                                                        • +
                                                        • -2 = I/O error encountered while reading
                                                        • +
                                                        • -3 = overflow of bufr array
                                                        • +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2005-11-29
                                                        + +

                                                        Definition at line 117 of file bufrlib.F90.

                                                        + +
                                                        +
                                                        +
                                                        The documentation for this interface was generated from the following file: +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/interfacebufrlib_1_1crdbufr__c.js b/previous_versions/v12.1.0/interfacebufrlib_1_1crdbufr__c.js new file mode 100644 index 000000000..960f92da7 --- /dev/null +++ b/previous_versions/v12.1.0/interfacebufrlib_1_1crdbufr__c.js @@ -0,0 +1,4 @@ +var interfacebufrlib_1_1crdbufr__c = +[ + [ "crdbufr_c", "interfacebufrlib_1_1crdbufr__c.html#a76d41777024e3548a35d948dd9a1c5b9", null ] +]; \ No newline at end of file diff --git a/previous_versions/v12.1.0/interfacebufrlib_1_1cwrbufr__c.html b/previous_versions/v12.1.0/interfacebufrlib_1_1cwrbufr__c.html new file mode 100644 index 000000000..7b83a587a --- /dev/null +++ b/previous_versions/v12.1.0/interfacebufrlib_1_1cwrbufr__c.html @@ -0,0 +1,164 @@ + + + + + + + +NCEPLIBS-bufr: bufrlib::cwrbufr_c Interface Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        bufrlib::cwrbufr_c Interface Reference
                                                        +
                                                        +
                                                        + + + + + +

                                                        +Public Member Functions

                                                        subroutine cwrbufr_c (nfile, bufr, nwrd)
                                                         Write a BUFR message into a file that was previously opened for writing. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +
                                                        +

                                                        Definition at line 133 of file bufrlib.F90.

                                                        +

                                                        Constructor & Destructor Documentation

                                                        + +

                                                        ◆ cwrbufr_c()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        bufrlib::cwrbufr_c::cwrbufr_c (integer(c_int), intent(in), value nfile,
                                                        integer(c_int), dimension(*), intent(in) bufr,
                                                        integer(c_int), intent(in), value nwrd 
                                                        )
                                                        +
                                                        + +

                                                        Write a BUFR message into a file that was previously opened for writing.

                                                        +

                                                        Wraps cwrbufr() function.

                                                        +
                                                        Parameters
                                                        + + + + +
                                                        nfile- File ID.
                                                        bufr- BUFR message.
                                                        nwrd- Size of BUFR message.
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2005-11-29
                                                        + +

                                                        Definition at line 133 of file bufrlib.F90.

                                                        + +
                                                        +
                                                        +
                                                        The documentation for this interface was generated from the following file: +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/interfacebufrlib_1_1cwrbufr__c.js b/previous_versions/v12.1.0/interfacebufrlib_1_1cwrbufr__c.js new file mode 100644 index 000000000..aaf7b4c94 --- /dev/null +++ b/previous_versions/v12.1.0/interfacebufrlib_1_1cwrbufr__c.js @@ -0,0 +1,4 @@ +var interfacebufrlib_1_1cwrbufr__c = +[ + [ "cwrbufr_c", "interfacebufrlib_1_1cwrbufr__c.html#a1d2dfb6006e32a86cdfb81aab4693978", null ] +]; \ No newline at end of file diff --git a/previous_versions/v12.1.0/interfacebufrlib_1_1icvidx__c.html b/previous_versions/v12.1.0/interfacebufrlib_1_1icvidx__c.html new file mode 100644 index 000000000..8c83927d0 --- /dev/null +++ b/previous_versions/v12.1.0/interfacebufrlib_1_1icvidx__c.html @@ -0,0 +1,165 @@ + + + + + + + +NCEPLIBS-bufr: bufrlib::icvidx_c Interface Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        bufrlib::icvidx_c Interface Reference
                                                        +
                                                        +
                                                        + + + + + +

                                                        +Public Member Functions

                                                        integer(c_int) function icvidx_c (ii, jj, numjj)
                                                         Compute a 1-dimensional array index from 2-dimensional indices. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +
                                                        +

                                                        Definition at line 153 of file bufrlib.F90.

                                                        +

                                                        Constructor & Destructor Documentation

                                                        + +

                                                        ◆ icvidx_c()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        bufrlib::icvidx_c::icvidx_c (integer(c_int), intent(in), value ii,
                                                        integer(c_int), intent(in), value jj,
                                                        integer(c_int), intent(in), value numjj 
                                                        )
                                                        +
                                                        + +

                                                        Compute a 1-dimensional array index from 2-dimensional indices.

                                                        +

                                                        Wraps icvidx() function.

                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2022-09-01
                                                        +
                                                        Parameters
                                                        + + + + +
                                                        ii- First (row) index.
                                                        jj- Second (column) index.
                                                        numjj- Maximum number of column indices.
                                                        +
                                                        +
                                                        +

                                                        Returns 1-dimensional index.

                                                        + +

                                                        Definition at line 153 of file bufrlib.F90.

                                                        + +
                                                        +
                                                        +
                                                        The documentation for this interface was generated from the following file: +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/interfacebufrlib_1_1icvidx__c.js b/previous_versions/v12.1.0/interfacebufrlib_1_1icvidx__c.js new file mode 100644 index 000000000..84695f344 --- /dev/null +++ b/previous_versions/v12.1.0/interfacebufrlib_1_1icvidx__c.js @@ -0,0 +1,4 @@ +var interfacebufrlib_1_1icvidx__c = +[ + [ "icvidx_c", "interfacebufrlib_1_1icvidx__c.html#a9e16a712324edc13188f650d138f0ec0", null ] +]; \ No newline at end of file diff --git a/previous_versions/v12.1.0/interfacebufrlib_1_1inittbf__c.html b/previous_versions/v12.1.0/interfacebufrlib_1_1inittbf__c.html new file mode 100644 index 000000000..058275ce8 --- /dev/null +++ b/previous_versions/v12.1.0/interfacebufrlib_1_1inittbf__c.html @@ -0,0 +1,136 @@ + + + + + + + +NCEPLIBS-bufr: bufrlib::inittbf_c Interface Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        bufrlib::inittbf_c Interface Reference
                                                        +
                                                        +
                                                        + + + + + +

                                                        +Public Member Functions

                                                        subroutine inittbf_c ()
                                                         Initialize memory for internal storage of master Code/Flag table entries. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +
                                                        +

                                                        Definition at line 216 of file bufrlib.F90.

                                                        +

                                                        Constructor & Destructor Documentation

                                                        + +

                                                        ◆ inittbf_c()

                                                        + +
                                                        +
                                                        + + + + +
                                                        bufrlib::inittbf_c::inittbf_c
                                                        +
                                                        + +

                                                        Initialize memory for internal storage of master Code/Flag table entries.

                                                        +

                                                        Wraps inittbf() function.

                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2017-11-03
                                                        + +

                                                        Definition at line 216 of file bufrlib.F90.

                                                        + +
                                                        +
                                                        +
                                                        The documentation for this interface was generated from the following file: +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/interfacebufrlib_1_1inittbf__c.js b/previous_versions/v12.1.0/interfacebufrlib_1_1inittbf__c.js new file mode 100644 index 000000000..a5f5c42c8 --- /dev/null +++ b/previous_versions/v12.1.0/interfacebufrlib_1_1inittbf__c.js @@ -0,0 +1,4 @@ +var interfacebufrlib_1_1inittbf__c = +[ + [ "inittbf_c", "interfacebufrlib_1_1inittbf__c.html#af4870e73ac56c18850786a9c6f5d6ff8", null ] +]; \ No newline at end of file diff --git a/previous_versions/v12.1.0/interfacebufrlib_1_1openab__c.html b/previous_versions/v12.1.0/interfacebufrlib_1_1openab__c.html new file mode 100644 index 000000000..e0dfdc893 --- /dev/null +++ b/previous_versions/v12.1.0/interfacebufrlib_1_1openab__c.html @@ -0,0 +1,157 @@ + + + + + + + +NCEPLIBS-bufr: bufrlib::openab_c Interface Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        bufrlib::openab_c Interface Reference
                                                        +
                                                        +
                                                        + + + + + +

                                                        +Public Member Functions

                                                        subroutine openab_c (nfile, ufile)
                                                         Open a new file for appending BUFR messages. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +
                                                        +

                                                        Definition at line 55 of file bufrlib.F90.

                                                        +

                                                        Constructor & Destructor Documentation

                                                        + +

                                                        ◆ openab_c()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        bufrlib::openab_c::openab_c (integer(c_int), intent(in), value nfile,
                                                        character(kind=c_char), dimension(*), intent(in) ufile 
                                                        )
                                                        +
                                                        + +

                                                        Open a new file for appending BUFR messages.

                                                        +

                                                        Wraps openab() function.

                                                        +
                                                        Parameters
                                                        + + + +
                                                        nfile- File ID.
                                                        ufile- [path/]name of file to be opened.
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2005-11-29
                                                        + +

                                                        Definition at line 55 of file bufrlib.F90.

                                                        + +
                                                        +
                                                        +
                                                        The documentation for this interface was generated from the following file: +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/interfacebufrlib_1_1openab__c.js b/previous_versions/v12.1.0/interfacebufrlib_1_1openab__c.js new file mode 100644 index 000000000..6e965aeda --- /dev/null +++ b/previous_versions/v12.1.0/interfacebufrlib_1_1openab__c.js @@ -0,0 +1,4 @@ +var interfacebufrlib_1_1openab__c = +[ + [ "openab_c", "interfacebufrlib_1_1openab__c.html#a840a75512f0193e8b8538cfc9d6562c6", null ] +]; \ No newline at end of file diff --git a/previous_versions/v12.1.0/interfacebufrlib_1_1openrb__c.html b/previous_versions/v12.1.0/interfacebufrlib_1_1openrb__c.html new file mode 100644 index 000000000..fd07bc438 --- /dev/null +++ b/previous_versions/v12.1.0/interfacebufrlib_1_1openrb__c.html @@ -0,0 +1,157 @@ + + + + + + + +NCEPLIBS-bufr: bufrlib::openrb_c Interface Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        bufrlib::openrb_c Interface Reference
                                                        +
                                                        +
                                                        + + + + + +

                                                        +Public Member Functions

                                                        subroutine openrb_c (nfile, ufile)
                                                         Open a new file for reading BUFR messages. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +
                                                        +

                                                        Definition at line 25 of file bufrlib.F90.

                                                        +

                                                        Constructor & Destructor Documentation

                                                        + +

                                                        ◆ openrb_c()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        bufrlib::openrb_c::openrb_c (integer(c_int), intent(in), value nfile,
                                                        character(kind=c_char), dimension(*), intent(in) ufile 
                                                        )
                                                        +
                                                        + +

                                                        Open a new file for reading BUFR messages.

                                                        +

                                                        Wraps openrb() function.

                                                        +
                                                        Parameters
                                                        + + + +
                                                        nfile- File ID.
                                                        ufile- [path/]name of file to be opened.
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2005-11-29
                                                        + +

                                                        Definition at line 25 of file bufrlib.F90.

                                                        + +
                                                        +
                                                        +
                                                        The documentation for this interface was generated from the following file: +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/interfacebufrlib_1_1openrb__c.js b/previous_versions/v12.1.0/interfacebufrlib_1_1openrb__c.js new file mode 100644 index 000000000..4bda24a36 --- /dev/null +++ b/previous_versions/v12.1.0/interfacebufrlib_1_1openrb__c.js @@ -0,0 +1,4 @@ +var interfacebufrlib_1_1openrb__c = +[ + [ "openrb_c", "interfacebufrlib_1_1openrb__c.html#a705b951ea4f72a0aa1654e77a2379626", null ] +]; \ No newline at end of file diff --git a/previous_versions/v12.1.0/interfacebufrlib_1_1openwb__c.html b/previous_versions/v12.1.0/interfacebufrlib_1_1openwb__c.html new file mode 100644 index 000000000..16a708d10 --- /dev/null +++ b/previous_versions/v12.1.0/interfacebufrlib_1_1openwb__c.html @@ -0,0 +1,157 @@ + + + + + + + +NCEPLIBS-bufr: bufrlib::openwb_c Interface Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        bufrlib::openwb_c Interface Reference
                                                        +
                                                        +
                                                        + + + + + +

                                                        +Public Member Functions

                                                        subroutine openwb_c (nfile, ufile)
                                                         Open a new file for writing BUFR messages. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +
                                                        +

                                                        Definition at line 40 of file bufrlib.F90.

                                                        +

                                                        Constructor & Destructor Documentation

                                                        + +

                                                        ◆ openwb_c()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        bufrlib::openwb_c::openwb_c (integer(c_int), intent(in), value nfile,
                                                        character(kind=c_char), dimension(*), intent(in) ufile 
                                                        )
                                                        +
                                                        + +

                                                        Open a new file for writing BUFR messages.

                                                        +

                                                        Wraps openwb() function.

                                                        +
                                                        Parameters
                                                        + + + +
                                                        nfile- File ID.
                                                        ufile- [path/]name of file to be opened.
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2005-11-29
                                                        + +

                                                        Definition at line 40 of file bufrlib.F90.

                                                        + +
                                                        +
                                                        +
                                                        The documentation for this interface was generated from the following file: +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/interfacebufrlib_1_1openwb__c.js b/previous_versions/v12.1.0/interfacebufrlib_1_1openwb__c.js new file mode 100644 index 000000000..49eae96e5 --- /dev/null +++ b/previous_versions/v12.1.0/interfacebufrlib_1_1openwb__c.js @@ -0,0 +1,4 @@ +var interfacebufrlib_1_1openwb__c = +[ + [ "openwb_c", "interfacebufrlib_1_1openwb__c.html#a7859316c1cfa913d54d3fc36b619cb28", null ] +]; \ No newline at end of file diff --git a/previous_versions/v12.1.0/interfacebufrlib_1_1restd__c.html b/previous_versions/v12.1.0/interfacebufrlib_1_1restd__c.html new file mode 100644 index 000000000..09942b898 --- /dev/null +++ b/previous_versions/v12.1.0/interfacebufrlib_1_1restd__c.html @@ -0,0 +1,171 @@ + + + + + + + +NCEPLIBS-bufr: bufrlib::restd_c Interface Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        bufrlib::restd_c Interface Reference
                                                        +
                                                        +
                                                        + + + + + +

                                                        +Public Member Functions

                                                        subroutine restd_c (lun, tddesc, nctddesc, ctddesc)
                                                         Standardize a local Table D descriptor. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +
                                                        +

                                                        Definition at line 306 of file bufrlib.F90.

                                                        +

                                                        Constructor & Destructor Documentation

                                                        + +

                                                        ◆ restd_c()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        bufrlib::restd_c::restd_c (integer(c_int), intent(in), value lun,
                                                        integer(c_int), intent(in), value tddesc,
                                                        integer(c_int), intent(out) nctddesc,
                                                        integer(c_int), dimension(*), intent(out) ctddesc 
                                                        )
                                                        +
                                                        + +

                                                        Standardize a local Table D descriptor.

                                                        +

                                                        Wraps restd() function.

                                                        +
                                                        Parameters
                                                        + + + + + +
                                                        lun- File ID.
                                                        tddesc- WMO bit-wise representation of FXY value for local Table D descriptor.
                                                        nctddesc- Number of WMO-standard child descriptors returned in cttdesc.
                                                        ctddesc- Array of WMO-standard child descriptors equivalent to tddesc.
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2023-04-07
                                                        + +

                                                        Definition at line 306 of file bufrlib.F90.

                                                        + +
                                                        +
                                                        +
                                                        The documentation for this interface was generated from the following file: +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/interfacebufrlib_1_1restd__c.js b/previous_versions/v12.1.0/interfacebufrlib_1_1restd__c.js new file mode 100644 index 000000000..9f67f2720 --- /dev/null +++ b/previous_versions/v12.1.0/interfacebufrlib_1_1restd__c.js @@ -0,0 +1,4 @@ +var interfacebufrlib_1_1restd__c = +[ + [ "restd_c", "interfacebufrlib_1_1restd__c.html#a29d35bad7067374462ec58d70f489a8d", null ] +]; \ No newline at end of file diff --git a/previous_versions/v12.1.0/interfacebufrlib_1_1sorttbf__c.html b/previous_versions/v12.1.0/interfacebufrlib_1_1sorttbf__c.html new file mode 100644 index 000000000..9e5517f20 --- /dev/null +++ b/previous_versions/v12.1.0/interfacebufrlib_1_1sorttbf__c.html @@ -0,0 +1,136 @@ + + + + + + + +NCEPLIBS-bufr: bufrlib::sorttbf_c Interface Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        bufrlib::sorttbf_c Interface Reference
                                                        +
                                                        +
                                                        + + + + + +

                                                        +Public Member Functions

                                                        subroutine sorttbf_c ()
                                                         Sort entries within the master Code/Flag table. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +
                                                        +

                                                        Definition at line 248 of file bufrlib.F90.

                                                        +

                                                        Constructor & Destructor Documentation

                                                        + +

                                                        ◆ sorttbf_c()

                                                        + +
                                                        +
                                                        + + + + +
                                                        bufrlib::sorttbf_c::sorttbf_c
                                                        +
                                                        + +

                                                        Sort entries within the master Code/Flag table.

                                                        +

                                                        Wraps sorttbf() function.

                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2017-11-03
                                                        + +

                                                        Definition at line 248 of file bufrlib.F90.

                                                        + +
                                                        +
                                                        +
                                                        The documentation for this interface was generated from the following file: +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/interfacebufrlib_1_1sorttbf__c.js b/previous_versions/v12.1.0/interfacebufrlib_1_1sorttbf__c.js new file mode 100644 index 000000000..20147885e --- /dev/null +++ b/previous_versions/v12.1.0/interfacebufrlib_1_1sorttbf__c.js @@ -0,0 +1,4 @@ +var interfacebufrlib_1_1sorttbf__c = +[ + [ "sorttbf_c", "interfacebufrlib_1_1sorttbf__c.html#a32d698730c2323056301d57bf65265cb", null ] +]; \ No newline at end of file diff --git a/previous_versions/v12.1.0/interfacebufrlib_1_1srchtbf__c.html b/previous_versions/v12.1.0/interfacebufrlib_1_1srchtbf__c.html new file mode 100644 index 000000000..fc89b7b9d --- /dev/null +++ b/previous_versions/v12.1.0/interfacebufrlib_1_1srchtbf__c.html @@ -0,0 +1,215 @@ + + + + + + + +NCEPLIBS-bufr: bufrlib::srchtbf_c Interface Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        bufrlib::srchtbf_c Interface Reference
                                                        +
                                                        +
                                                        + + + + + +

                                                        +Public Member Functions

                                                        subroutine srchtbf_c (ifxyi, ivali, ifxyd, mxfxyd, ivald, meaning, mxmng, lnmng, iret)
                                                         Search for a specified master Code/Flag table entry. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +
                                                        +

                                                        Definition at line 287 of file bufrlib.F90.

                                                        +

                                                        Constructor & Destructor Documentation

                                                        + +

                                                        ◆ srchtbf_c()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        bufrlib::srchtbf_c::srchtbf_c (integer(c_int), intent(in), value ifxyi,
                                                        integer(c_int), intent(in), value ivali,
                                                        integer(c_int), intent(inout) ifxyd,
                                                        integer(c_int), intent(in), value mxfxyd,
                                                        integer(c_int), intent(in), value ivald,
                                                        character(kind=c_char), dimension(*), intent(out) meaning,
                                                        integer(c_int), intent(in), value mxmng,
                                                        integer(c_int), intent(out) lnmng,
                                                        integer(c_int), intent(out) iret 
                                                        )
                                                        +
                                                        + +

                                                        Search for a specified master Code/Flag table entry.

                                                        +

                                                        Wraps srchtbf() function.

                                                        +
                                                        Parameters
                                                        + + + + + + + + + + +
                                                        ifxyi- WMO bit-wise representation of FXY number to search for.
                                                        ivali- Value (code figure or bit number) associated with ifxyi.
                                                        ifxyd- Dependence indicator:
                                                          +
                                                        • On input, ifxyd[0] is set to the WMO bit-wise representation of the FXY number upon which ifxyi and ivali depend, or else set to (-1) if ifxyi and ivali do not depend on the value associated with any other FXY number.
                                                        • +
                                                        • On output, if the initial search of the master Code/Flag table was unsuccessful, and if ifxyd[0] and ivald were both set to (-1) on input, and if a second search of the table determines that the meaning of ifxyi and ivali indeed depends on one or more other FXY numbers, then the WMO bit-wise representations of those FXY numbers are returned within the first iret elements of ifxyd.
                                                        • +
                                                        +
                                                        ivald- Value (code figure or bit number) associated with the FXY number in ifxyd[0]; set to (-1) whenever ifxyd[0] is also set to (-1).
                                                        mxfxyd- Number of elements in ifxyd array; used by the function to ensure that it doesn't overflow the array.
                                                        mxmng- Number of elements in meaning array; used by the function to ensure that it doesn't overflow the string.
                                                        meaning- Meaning corresponding to ifxyi and ivali (and to ifxyd[0] and ivald, if specified on input).
                                                        lnmng- Length (in bytes) of string returned in CMEANG.
                                                        iret- Return code:
                                                          +
                                                        • 0 = Meaning found and stored in meaning string.
                                                        • +
                                                        • -1 = Meaning not found.
                                                        • +
                                                        • >0 = Meaning not found, and ifxyd[0] and ivald were both set to (-1) on input, and the meaning of ifxyi and ivali depends on the the value associated with one of the FXY numbers whose WMO bit-wise representation is stored in the first iret elements of ifxyd.
                                                        • +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2017-11-03
                                                        + +

                                                        Definition at line 287 of file bufrlib.F90.

                                                        + +
                                                        +
                                                        +
                                                        The documentation for this interface was generated from the following file: +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/interfacebufrlib_1_1srchtbf__c.js b/previous_versions/v12.1.0/interfacebufrlib_1_1srchtbf__c.js new file mode 100644 index 000000000..b8a161355 --- /dev/null +++ b/previous_versions/v12.1.0/interfacebufrlib_1_1srchtbf__c.js @@ -0,0 +1,4 @@ +var interfacebufrlib_1_1srchtbf__c = +[ + [ "srchtbf_c", "interfacebufrlib_1_1srchtbf__c.html#a81ef463e26669eaf234956ffd027b3dc", null ] +]; \ No newline at end of file diff --git a/previous_versions/v12.1.0/interfacebufrlib_1_1strtbfe__c.html b/previous_versions/v12.1.0/interfacebufrlib_1_1strtbfe__c.html new file mode 100644 index 000000000..bc171b8e5 --- /dev/null +++ b/previous_versions/v12.1.0/interfacebufrlib_1_1strtbfe__c.html @@ -0,0 +1,185 @@ + + + + + + + +NCEPLIBS-bufr: bufrlib::strtbfe_c Interface Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        bufrlib::strtbfe_c Interface Reference
                                                        +
                                                        +
                                                        + + + + + +

                                                        +Public Member Functions

                                                        subroutine strtbfe_c (ifxyn, ival, meaning, lmeaning, idfxy, idval)
                                                         Store a new master Code/Flag table entry. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +
                                                        +

                                                        Definition at line 236 of file bufrlib.F90.

                                                        +

                                                        Constructor & Destructor Documentation

                                                        + +

                                                        ◆ strtbfe_c()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        bufrlib::strtbfe_c::strtbfe_c (integer(c_int), intent(in), value ifxyn,
                                                        integer(c_int), intent(in), value ival,
                                                        character(kind=c_char), dimension(*), intent(in) meaning,
                                                        integer(c_int), intent(in), value lmeaning,
                                                        integer(c_int), intent(in), value idfxy,
                                                        integer(c_int), intent(in), value idval 
                                                        )
                                                        +
                                                        + +

                                                        Store a new master Code/Flag table entry.

                                                        +

                                                        Wraps strtbfe() function.

                                                        +
                                                        Parameters
                                                        + + + + + + + +
                                                        ifxyn- WMO bit-wise representation of FXY number for which ival is a defined code or flag table entry.
                                                        ival- Code figure or bit number.
                                                        meaning- Meaning associated with ifxyn and ival.
                                                        lmeaning- Length (in bytes) of meaning.
                                                        idfxy- WMO bit-wise representation of FXY number upon which ifxyn and ival depend (if any), or else set to a value of (-1).
                                                        idval- Code figure or bit number associated with idfxy and upon which ifxyn and ival depend (if any), or else set to (-1) whenever idfxy is also set to (-1).
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2017-11-03
                                                        + +

                                                        Definition at line 236 of file bufrlib.F90.

                                                        + +
                                                        +
                                                        +
                                                        The documentation for this interface was generated from the following file: +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/interfacebufrlib_1_1strtbfe__c.js b/previous_versions/v12.1.0/interfacebufrlib_1_1strtbfe__c.js new file mode 100644 index 000000000..cbb2ad293 --- /dev/null +++ b/previous_versions/v12.1.0/interfacebufrlib_1_1strtbfe__c.js @@ -0,0 +1,4 @@ +var interfacebufrlib_1_1strtbfe__c = +[ + [ "strtbfe_c", "interfacebufrlib_1_1strtbfe__c.html#ae5f703fa8d04510d2cb00d0ee8a22bc5", null ] +]; \ No newline at end of file diff --git a/previous_versions/v12.1.0/interfacebufrlib_1_1stseq__c.html b/previous_versions/v12.1.0/interfacebufrlib_1_1stseq__c.html new file mode 100644 index 000000000..920794e41 --- /dev/null +++ b/previous_versions/v12.1.0/interfacebufrlib_1_1stseq__c.html @@ -0,0 +1,192 @@ + + + + + + + +NCEPLIBS-bufr: bufrlib::stseq_c Interface Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        bufrlib::stseq_c Interface Reference
                                                        +
                                                        +
                                                        + + + + + +

                                                        +Public Member Functions

                                                        subroutine stseq_c (lun, irepct, idn, nemo, cseq, cdesc, ncdesc)
                                                         Store information about a standard Table D descriptor. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +
                                                        +

                                                        Definition at line 326 of file bufrlib.F90.

                                                        +

                                                        Constructor & Destructor Documentation

                                                        + +

                                                        ◆ stseq_c()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        bufrlib::stseq_c::stseq_c (integer(c_int), intent(in), value lun,
                                                        integer(c_int), intent(inout) irepct,
                                                        integer(c_int), intent(in), value idn,
                                                        character(kind=c_char), dimension(*), intent(in) nemo,
                                                        character(kind=c_char), dimension(*), intent(in) cseq,
                                                        integer(c_int), dimension(*), intent(out) cdesc,
                                                        integer(c_int), intent(in), value ncdesc 
                                                        )
                                                        +
                                                        + +

                                                        Store information about a standard Table D descriptor.

                                                        +

                                                        Wraps stseq() function.

                                                        +
                                                        Parameters
                                                        + + + + + + + + +
                                                        lun- File ID.
                                                        irepct- Replication sequence counter for the current master table.
                                                        idn- WMO bit-wise representation of FXY value for standard Table D descriptor.
                                                        nemo- Mnemonic corresponding to idn.
                                                        cseq- Description corresponding to idn.
                                                        cdesc- Array of WMO-standard child descriptors equivalent to idn.
                                                        ncdesc- Number of WMO-standard child descriptors in cdesc.
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2023-04-07
                                                        + +

                                                        Definition at line 326 of file bufrlib.F90.

                                                        + +
                                                        +
                                                        +
                                                        The documentation for this interface was generated from the following file: +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/interfacebufrlib_1_1stseq__c.js b/previous_versions/v12.1.0/interfacebufrlib_1_1stseq__c.js new file mode 100644 index 000000000..c2854408d --- /dev/null +++ b/previous_versions/v12.1.0/interfacebufrlib_1_1stseq__c.js @@ -0,0 +1,4 @@ +var interfacebufrlib_1_1stseq__c = +[ + [ "stseq_c", "interfacebufrlib_1_1stseq__c.html#aab86c1ca1259592cf56c72ac5f4f8870", null ] +]; \ No newline at end of file diff --git a/previous_versions/v12.1.0/jquery.js b/previous_versions/v12.1.0/jquery.js new file mode 100644 index 000000000..103c32d79 --- /dev/null +++ b/previous_versions/v12.1.0/jquery.js @@ -0,0 +1,35 @@ +/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"","
                                                        "],col:[2,"","
                                                        "],tr:[2,"","
                                                        "],td:[3,"","
                                                        "],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;nx",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="
                                                        ",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0a;a++)for(i in o[a])n=o[a][i],o[a].hasOwnProperty(i)&&void 0!==n&&(e[i]=t.isPlainObject(n)?t.isPlainObject(e[i])?t.widget.extend({},e[i],n):t.widget.extend({},n):n);return e},t.widget.bridge=function(e,i){var n=i.prototype.widgetFullName||e;t.fn[e]=function(o){var a="string"==typeof o,r=s.call(arguments,1),h=this;return a?this.length||"instance"!==o?this.each(function(){var i,s=t.data(this,n);return"instance"===o?(h=s,!1):s?t.isFunction(s[o])&&"_"!==o.charAt(0)?(i=s[o].apply(s,r),i!==s&&void 0!==i?(h=i&&i.jquery?h.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+o+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+o+"'")}):h=void 0:(r.length&&(o=t.widget.extend.apply(null,[o].concat(r))),this.each(function(){var e=t.data(this,n);e?(e.option(o||{}),e._init&&e._init()):t.data(this,n,new i(o,this))})),h}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"
                                                        ",options:{classes:{},disabled:!1,create:null},_createWidget:function(e,s){s=t(s||this.defaultElement||this)[0],this.element=t(s),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},s!==this&&(t.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===s&&this.destroy()}}),this.document=t(s.style?s.ownerDocument:s.document||s),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+o.eventNamespace,c=h[2];c?n.on(l,c,r):i.on(l,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,function(){function e(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function i(e,i){return parseInt(t.css(e,i),10)||0}function s(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}var n,o=Math.max,a=Math.abs,r=/left|center|right/,h=/top|center|bottom/,l=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,d=t.fn.position;t.position={scrollbarWidth:function(){if(void 0!==n)return n;var e,i,s=t("
                                                        "),o=s.children()[0];return t("body").append(s),e=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,e===i&&(i=s[0].clientWidth),s.remove(),n=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.widthi?"left":e>0?"right":"center",vertical:0>r?"top":s>0?"bottom":"middle"};l>p&&p>a(e+i)&&(u.horizontal="center"),c>f&&f>a(s+r)&&(u.vertical="middle"),u.important=o(a(e),a(i))>o(a(s),a(r))?"horizontal":"vertical",n.using.call(this,t,u)}),h.offset(t.extend(D,{using:r}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,h=n-r,l=r+e.collisionWidth-a-n;e.collisionWidth>a?h>0&&0>=l?(i=t.left+h+e.collisionWidth-a-n,t.left+=h-i):t.left=l>0&&0>=h?n:h>l?n+a-e.collisionWidth:n:h>0?t.left+=h:l>0?t.left-=l:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,h=n-r,l=r+e.collisionHeight-a-n;e.collisionHeight>a?h>0&&0>=l?(i=t.top+h+e.collisionHeight-a-n,t.top+=h-i):t.top=l>0&&0>=h?n:h>l?n+a-e.collisionHeight:n:h>0?t.top+=h:l>0?t.top-=l:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,r=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=t.left-e.collisionPosition.marginLeft,c=l-h,u=l+e.collisionWidth-r-h,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-r-o,(0>i||a(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-h,(s>0||u>a(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,r=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=t.top-e.collisionPosition.marginTop,c=l-h,u=l+e.collisionHeight-r-h,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,m=-2*e.offset[1];0>c?(s=t.top+p+f+m+e.collisionHeight-r-o,(0>s||a(c)>s)&&(t.top+=p+f+m)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+m-h,(i>0||u>a(i))&&(t.top+=p+f+m))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}}}(),t.ui.position,t.extend(t.expr[":"],{data:t.expr.createPseudo?t.expr.createPseudo(function(e){return function(i){return!!t.data(i,e)}}):function(e,i,s){return!!t.data(e,s[3])}}),t.fn.extend({disableSelection:function(){var t="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.on(t+".ui-disableSelection",function(t){t.preventDefault()})}}(),enableSelection:function(){return this.off(".ui-disableSelection")}}),t.ui.focusable=function(i,s){var n,o,a,r,h,l=i.nodeName.toLowerCase();return"area"===l?(n=i.parentNode,o=n.name,i.href&&o&&"map"===n.nodeName.toLowerCase()?(a=t("img[usemap='#"+o+"']"),a.length>0&&a.is(":visible")):!1):(/^(input|select|textarea|button|object)$/.test(l)?(r=!i.disabled,r&&(h=t(i).closest("fieldset")[0],h&&(r=!h.disabled))):r="a"===l?i.href||s:s,r&&t(i).is(":visible")&&e(t(i)))},t.extend(t.expr[":"],{focusable:function(e){return t.ui.focusable(e,null!=t.attr(e,"tabindex"))}}),t.ui.focusable,t.fn.form=function(){return"string"==typeof this[0].form?this.closest("form"):t(this[0].form)},t.ui.formResetMixin={_formResetHandler:function(){var e=t(this);setTimeout(function(){var i=e.data("ui-form-reset-instances");t.each(i,function(){this.refresh()})})},_bindFormResetHandler:function(){if(this.form=this.element.form(),this.form.length){var t=this.form.data("ui-form-reset-instances")||[];t.length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t)}},_unbindFormResetHandler:function(){if(this.form.length){var e=this.form.data("ui-form-reset-instances");e.splice(t.inArray(this,e),1),e.length?this.form.data("ui-form-reset-instances",e):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset")}}},"1.7"===t.fn.jquery.substring(0,3)&&(t.each(["Width","Height"],function(e,i){function s(e,i,s,o){return t.each(n,function(){i-=parseFloat(t.css(e,"padding"+this))||0,s&&(i-=parseFloat(t.css(e,"border"+this+"Width"))||0),o&&(i-=parseFloat(t.css(e,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],o=i.toLowerCase(),a={innerWidth:t.fn.innerWidth,innerHeight:t.fn.innerHeight,outerWidth:t.fn.outerWidth,outerHeight:t.fn.outerHeight};t.fn["inner"+i]=function(e){return void 0===e?a["inner"+i].call(this):this.each(function(){t(this).css(o,s(this,e)+"px")})},t.fn["outer"+i]=function(e,n){return"number"!=typeof e?a["outer"+i].call(this,e):this.each(function(){t(this).css(o,s(this,e,!0,n)+"px")})}}),t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.ui.escapeSelector=function(){var t=/([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g;return function(e){return e.replace(t,"\\$1")}}(),t.fn.labels=function(){var e,i,s,n,o;return this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(n=this.eq(0).parents("label"),s=this.attr("id"),s&&(e=this.eq(0).parents().last(),o=e.add(e.length?e.siblings():this.siblings()),i="label[for='"+t.ui.escapeSelector(s)+"']",n=n.add(o.find(i).addBack(i))),this.pushStack(n))},t.fn.scrollParent=function(e){var i=this.css("position"),s="absolute"===i,n=e?/(auto|scroll|hidden)/:/(auto|scroll)/,o=this.parents().filter(function(){var e=t(this);return s&&"static"===e.css("position")?!1:n.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(0);return"fixed"!==i&&o.length?o:t(this[0].ownerDocument||document)},t.extend(t.expr[":"],{tabbable:function(e){var i=t.attr(e,"tabindex"),s=null!=i;return(!s||i>=0)&&t.ui.focusable(e,s)}}),t.fn.extend({uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var n=!1;t(document).on("mouseup",function(){n=!1}),t.widget("ui.mouse",{version:"1.12.1",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(i){return!0===t.data(i.target,e.widgetName+".preventClickEvent")?(t.removeData(i.target,e.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(e){if(!n){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(e),this._mouseDownEvent=e;var i=this,s=1===e.which,o="string"==typeof this.options.cancel&&e.target.nodeName?t(e.target).closest(this.options.cancel).length:!1;return s&&!o&&this._mouseCapture(e)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(e)!==!1,!this._mouseStarted)?(e.preventDefault(),!0):(!0===t.data(e.target,this.widgetName+".preventClickEvent")&&t.removeData(e.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return i._mouseMove(t)},this._mouseUpDelegate=function(t){return i._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),e.preventDefault(),n=!0,!0)):!0}},_mouseMove:function(e){if(this._mouseMoved){if(t.ui.ie&&(!document.documentMode||9>document.documentMode)&&!e.button)return this._mouseUp(e);if(!e.which)if(e.originalEvent.altKey||e.originalEvent.ctrlKey||e.originalEvent.metaKey||e.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(e)}return(e.which||e.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,e)!==!1,this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,n=!1,e.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),t.ui.plugin={add:function(e,i,s){var n,o=t.ui[e].prototype;for(n in s)o.plugins[n]=o.plugins[n]||[],o.plugins[n].push([i,s[n]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;o.length>n;n++)t.options[o[n][0]]&&o[n][1].apply(t.element,i)}},t.widget("ui.resizable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(e,i){if("hidden"===t(e).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return e[s]>0?!0:(e[s]=1,n=e[s]>0,e[s]=0,n)},_create:function(){var e,i=this.options,s=this;this._addClass("ui-resizable"),t.extend(this,{_aspectRatio:!!i.aspectRatio,aspectRatio:i.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:i.helper||i.ghost||i.animate?i.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(t("
                                                        ").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,e={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(e),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(e),this._proportionallyResize()),this._setupHandles(),i.autoHide&&t(this.element).on("mouseenter",function(){i.disabled||(s._removeClass("ui-resizable-autohide"),s._handles.show())}).on("mouseleave",function(){i.disabled||s.resizing||(s._addClass("ui-resizable-autohide"),s._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy();var e,i=function(e){t(e).removeData("resizable").removeData("ui-resizable").off(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;default:}},_setupHandles:function(){var e,i,s,n,o,a=this.options,r=this;if(this.handles=a.handles||(t(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=t(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),s=this.handles.split(","),this.handles={},i=0;s.length>i;i++)e=t.trim(s[i]),n="ui-resizable-"+e,o=t("
                                                        "),this._addClass(o,"ui-resizable-handle "+n),o.css({zIndex:a.zIndex}),this.handles[e]=".ui-resizable-"+e,this.element.append(o);this._renderAxis=function(e){var i,s,n,o;e=e||this.element;for(i in this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=t(this.handles[i]),this._on(this.handles[i],{mousedown:r._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=t(this.handles[i],this.element),o=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),e.css(n,o),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){r.resizing||(this.className&&(o=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),r.axis=o&&o[1]?o[1]:"se")}),a.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._handles.remove()},_mouseCapture:function(e){var i,s,n=!1;for(i in this.handles)s=t(this.handles[i])[0],(s===e.target||t.contains(s,e.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(e){var i,s,n,o=this.options,a=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),o.containment&&(i+=t(o.containment).scrollLeft()||0,s+=t(o.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:a.width(),height:a.height()},this.originalSize=this._helper?{width:a.outerWidth(),height:a.outerHeight()}:{width:a.width(),height:a.height()},this.sizeDiff={width:a.outerWidth()-a.width(),height:a.outerHeight()-a.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:e.pageX,top:e.pageY},this.aspectRatio="number"==typeof o.aspectRatio?o.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=t(".ui-resizable-"+this.axis).css("cursor"),t("body").css("cursor","auto"===n?this.axis+"-resize":n),this._addClass("ui-resizable-resizing"),this._propagate("start",e),!0},_mouseDrag:function(e){var i,s,n=this.originalMousePosition,o=this.axis,a=e.pageX-n.left||0,r=e.pageY-n.top||0,h=this._change[o];return this._updatePrevProperties(),h?(i=h.apply(this,[e,a,r]),this._updateVirtualBoundaries(e.shiftKey),(this._aspectRatio||e.shiftKey)&&(i=this._updateRatio(i,e)),i=this._respectSize(i,e),this._updateCache(i),this._propagate("resize",e),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),t.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",e,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(e){this.resizing=!1;var i,s,n,o,a,r,h,l=this.options,c=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],"left")?0:c.sizeDiff.height,o=s?0:c.sizeDiff.width,a={width:c.helper.width()-o,height:c.helper.height()-n},r=parseFloat(c.element.css("left"))+(c.position.left-c.originalPosition.left)||null,h=parseFloat(c.element.css("top"))+(c.position.top-c.originalPosition.top)||null,l.animate||this.element.css(t.extend(a,{top:h,left:r})),c.helper.height(c.size.height),c.helper.width(c.size.width),this._helper&&!l.animate&&this._proportionallyResize()),t("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",e),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s,n,o,a=this.options;o={minWidth:this._isNumber(a.minWidth)?a.minWidth:0,maxWidth:this._isNumber(a.maxWidth)?a.maxWidth:1/0,minHeight:this._isNumber(a.minHeight)?a.minHeight:0,maxHeight:this._isNumber(a.maxHeight)?a.maxHeight:1/0},(this._aspectRatio||t)&&(e=o.minHeight*this.aspectRatio,s=o.minWidth/this.aspectRatio,i=o.maxHeight*this.aspectRatio,n=o.maxWidth/this.aspectRatio,e>o.minWidth&&(o.minWidth=e),s>o.minHeight&&(o.minHeight=s),o.maxWidth>i&&(o.maxWidth=i),o.maxHeight>n&&(o.maxHeight=n)),this._vBoundaries=o},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,i=this.size,s=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===s&&(t.left=e.left+(i.width-t.width),t.top=null),"nw"===s&&(t.top=e.top+(i.height-t.height),t.left=e.left+(i.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,i=this.axis,s=this._isNumber(t.width)&&e.maxWidth&&e.maxWidtht.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,h=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),c=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=r-e.minWidth),s&&l&&(t.left=r-e.maxWidth),a&&c&&(t.top=h-e.minHeight),n&&c&&(t.top=h-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];4>e;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;this._proportionallyResizeElements.length>e;e++)t=this._proportionallyResizeElements[e],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var e=this.element,i=this.options;this.elementOffset=e.offset(),this._helper?(this.helper=this.helper||t("
                                                        "),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element +},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize,s=this.originalPosition;return{left:s.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},sw:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,i,s]))},ne:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},nw:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,i,s]))}},_propagate:function(e,i){t.ui.plugin.call(this,e,[i,this.ui()]),"resize"!==e&&this._trigger(e,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),t.ui.plugin.add("resizable","animate",{stop:function(e){var i=t(this).resizable("instance"),s=i.options,n=i._proportionallyResizeElements,o=n.length&&/textarea/i.test(n[0].nodeName),a=o&&i._hasScroll(n[0],"left")?0:i.sizeDiff.height,r=o?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-a},l=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,c=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(t.extend(h,c&&l?{top:c,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};n&&n.length&&t(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",e)}})}}),t.ui.plugin.add("resizable","containment",{start:function(){var e,i,s,n,o,a,r,h=t(this).resizable("instance"),l=h.options,c=h.element,u=l.containment,d=u instanceof t?u.get(0):/parent/.test(u)?c.parent().get(0):u;d&&(h.containerElement=t(d),/document/.test(u)||u===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:t(document),left:0,top:0,width:t(document).width(),height:t(document).height()||document.body.parentNode.scrollHeight}):(e=t(d),i=[],t(["Top","Right","Left","Bottom"]).each(function(t,s){i[t]=h._num(e.css("padding"+s))}),h.containerOffset=e.offset(),h.containerPosition=e.position(),h.containerSize={height:e.innerHeight()-i[3],width:e.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,o=h.containerSize.width,a=h._hasScroll(d,"left")?d.scrollWidth:o,r=h._hasScroll(d)?d.scrollHeight:n,h.parentData={element:d,left:s.left,top:s.top,width:a,height:r}))},resize:function(e){var i,s,n,o,a=t(this).resizable("instance"),r=a.options,h=a.containerOffset,l=a.position,c=a._aspectRatio||e.shiftKey,u={top:0,left:0},d=a.containerElement,p=!0;d[0]!==document&&/static/.test(d.css("position"))&&(u=h),l.left<(a._helper?h.left:0)&&(a.size.width=a.size.width+(a._helper?a.position.left-h.left:a.position.left-u.left),c&&(a.size.height=a.size.width/a.aspectRatio,p=!1),a.position.left=r.helper?h.left:0),l.top<(a._helper?h.top:0)&&(a.size.height=a.size.height+(a._helper?a.position.top-h.top:a.position.top),c&&(a.size.width=a.size.height*a.aspectRatio,p=!1),a.position.top=a._helper?h.top:0),n=a.containerElement.get(0)===a.element.parent().get(0),o=/relative|absolute/.test(a.containerElement.css("position")),n&&o?(a.offset.left=a.parentData.left+a.position.left,a.offset.top=a.parentData.top+a.position.top):(a.offset.left=a.element.offset().left,a.offset.top=a.element.offset().top),i=Math.abs(a.sizeDiff.width+(a._helper?a.offset.left-u.left:a.offset.left-h.left)),s=Math.abs(a.sizeDiff.height+(a._helper?a.offset.top-u.top:a.offset.top-h.top)),i+a.size.width>=a.parentData.width&&(a.size.width=a.parentData.width-i,c&&(a.size.height=a.size.width/a.aspectRatio,p=!1)),s+a.size.height>=a.parentData.height&&(a.size.height=a.parentData.height-s,c&&(a.size.width=a.size.height*a.aspectRatio,p=!1)),p||(a.position.left=a.prevPosition.left,a.position.top=a.prevPosition.top,a.size.width=a.prevSize.width,a.size.height=a.prevSize.height)},stop:function(){var e=t(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.containerPosition,o=e.containerElement,a=t(e.helper),r=a.offset(),h=a.outerWidth()-e.sizeDiff.width,l=a.outerHeight()-e.sizeDiff.height;e._helper&&!i.animate&&/relative/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l}),e._helper&&!i.animate&&/static/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),t.ui.plugin.add("resizable","alsoResize",{start:function(){var e=t(this).resizable("instance"),i=e.options;t(i.alsoResize).each(function(){var e=t(this);e.data("ui-resizable-alsoresize",{width:parseFloat(e.width()),height:parseFloat(e.height()),left:parseFloat(e.css("left")),top:parseFloat(e.css("top"))})})},resize:function(e,i){var s=t(this).resizable("instance"),n=s.options,o=s.originalSize,a=s.originalPosition,r={height:s.size.height-o.height||0,width:s.size.width-o.width||0,top:s.position.top-a.top||0,left:s.position.left-a.left||0};t(n.alsoResize).each(function(){var e=t(this),s=t(this).data("ui-resizable-alsoresize"),n={},o=e.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];t.each(o,function(t,e){var i=(s[e]||0)+(r[e]||0);i&&i>=0&&(n[e]=i||null)}),e.css(n)})},stop:function(){t(this).removeData("ui-resizable-alsoresize")}}),t.ui.plugin.add("resizable","ghost",{start:function(){var e=t(this).resizable("instance"),i=e.size;e.ghost=e.originalElement.clone(),e.ghost.css({opacity:.25,display:"block",position:"relative",height:i.height,width:i.width,margin:0,left:0,top:0}),e._addClass(e.ghost,"ui-resizable-ghost"),t.uiBackCompat!==!1&&"string"==typeof e.options.ghost&&e.ghost.addClass(this.options.ghost),e.ghost.appendTo(e.helper)},resize:function(){var e=t(this).resizable("instance");e.ghost&&e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})},stop:function(){var e=t(this).resizable("instance");e.ghost&&e.helper&&e.helper.get(0).removeChild(e.ghost.get(0))}}),t.ui.plugin.add("resizable","grid",{resize:function(){var e,i=t(this).resizable("instance"),s=i.options,n=i.size,o=i.originalSize,a=i.originalPosition,r=i.axis,h="number"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,c=h[1]||1,u=Math.round((n.width-o.width)/l)*l,d=Math.round((n.height-o.height)/c)*c,p=o.width+u,f=o.height+d,m=s.maxWidth&&p>s.maxWidth,g=s.maxHeight&&f>s.maxHeight,_=s.minWidth&&s.minWidth>p,v=s.minHeight&&s.minHeight>f;s.grid=h,_&&(p+=l),v&&(f+=c),m&&(p-=l),g&&(f-=c),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=a.top-d):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=a.left-u):((0>=f-c||0>=p-l)&&(e=i._getPaddingPlusBorderDimensions(this)),f-c>0?(i.size.height=f,i.position.top=a.top-d):(f=c-e.height,i.size.height=f,i.position.top=a.top+o.height-f),p-l>0?(i.size.width=p,i.position.left=a.left-u):(p=l-e.width,i.size.width=p,i.position.left=a.left+o.width-p))}}),t.ui.resizable});/** + * Copyright (c) 2007 Ariel Flesler - aflesler ○ gmail • com | https://github.com/flesler + * Licensed under MIT + * @author Ariel Flesler + * @version 2.1.2 + */ +;(function(f){"use strict";"function"===typeof define&&define.amd?define(["jquery"],f):"undefined"!==typeof module&&module.exports?module.exports=f(require("jquery")):f(jQuery)})(function($){"use strict";function n(a){return!a.nodeName||-1!==$.inArray(a.nodeName.toLowerCase(),["iframe","#document","html","body"])}function h(a){return $.isFunction(a)||$.isPlainObject(a)?a:{top:a,left:a}}var p=$.scrollTo=function(a,d,b){return $(window).scrollTo(a,d,b)};p.defaults={axis:"xy",duration:0,limit:!0};$.fn.scrollTo=function(a,d,b){"object"=== typeof d&&(b=d,d=0);"function"===typeof b&&(b={onAfter:b});"max"===a&&(a=9E9);b=$.extend({},p.defaults,b);d=d||b.duration;var u=b.queue&&1=f[g]?0:Math.min(f[g],n));!a&&1-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 + * http://www.smartmenus.org/ + * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
                                                        ').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); \ No newline at end of file diff --git a/previous_versions/v12.1.0/jumplink_8F90.html b/previous_versions/v12.1.0/jumplink_8F90.html new file mode 100644 index 000000000..27b1e2c9b --- /dev/null +++ b/previous_versions/v12.1.0/jumplink_8F90.html @@ -0,0 +1,1403 @@ + + + + + + + +NCEPLIBS-bufr: jumplink.F90 File Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        jumplink.F90 File Reference
                                                        +
                                                        +
                                                        + +

                                                        Read or write jump/link table information. +More...

                                                        + +

                                                        Go to the source code of this file.

                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                                                        +Functions/Subroutines

                                                        subroutine chekstab (lun)
                                                         Check that an internal BUFR table representation is self-consistent and fully defined. More...
                                                         
                                                        subroutine conwin (lun, inc1, inc2)
                                                         Search consecutive subset buffer segments for a conditional node. More...
                                                         
                                                        subroutine drstpl (inod, lun, inv1, inv2, invn)
                                                         Search for a specified mnemonic within unexpanded sequences of the internal jump/link table. More...
                                                         
                                                        subroutine fstag (lun, utag, nutag, nin, nout, iret)
                                                         Search for a specified occurrence of a specified mnemonic within a data subset definition, starting from a specified location. More...
                                                         
                                                        recursive subroutine gettagpr (lunit, tagch, ntagch, tagpr, iret)
                                                         Get the parent for a specified occurrence of a Table B or Table D mnemonic within a data subset definition. More...
                                                         
                                                        subroutine getwin (node, lun, iwin, jwin)
                                                         Look for a window containing a specified node within the internal jump/link table. More...
                                                         
                                                        integer function icmpdx (lud, lun)
                                                         Check whether the full set of associated DX BUFR Table information is identical between two Fortran logical units. More...
                                                         
                                                        subroutine inctab (atag, atyp, node)
                                                         Get the next available positional index for writing into the internal jump/link table in module moda_tables, and also use that index to store atag and atyp within, respectively, the internal jump/link table arrays tag(*) and typ(*). More...
                                                         
                                                        integer function invcon (nc, lun, inv1, inv2)
                                                         Search a specified window for a conditional node. More...
                                                         
                                                        integer function invtag (node, lun, inv1, inv2)
                                                         Search for a specified mnemonic within a specified portion of the current data subset. More...
                                                         
                                                        integer function invwin (node, lun, inv1, inv2)
                                                         Search for a specified node within a specified portion of the current data subset. More...
                                                         
                                                        integer function ishrdx (lud, lun)
                                                         Check whether the same DX BUFR Table is being shared between two Fortran logical units. More...
                                                         
                                                        integer function lstjpb (node, lun, jbtyp)
                                                         Search backwards, beginning from a given node within the jump/link table, until finding the most recent node of type jbtyp. More...
                                                         
                                                        subroutine makestab
                                                         Build the entire internal jump/link table within module moda_tables, using all of the internal BUFR table array information from module moda_tababd for all of the file IDs that are currently defined to the library in module moda_stbfr. More...
                                                         
                                                        recursive subroutine nemspecs (lunit, nemo, nnemo, nscl, nref, nbts, iret)
                                                         Get the scale factor, reference value and bit width associated with a specified occurrence of a Table B mnemonic. More...
                                                         
                                                        subroutine newwin (lun, iwin, jwin)
                                                         Compute the ending index of the window. More...
                                                         
                                                        integer function nvnwin (node, lun, inv1, inv2, invn, nmax)
                                                         Search for all occurrences of a specified node within a specified portion of the current data subset. More...
                                                         
                                                        subroutine nxtwin (lun, iwin, jwin)
                                                         Compute the start and end indices of the next window. More...
                                                         
                                                        subroutine tabent (lun, nemo, tab, itab, irep, iknt, jum0)
                                                         Build and store an entry for a Table B or Table D mnemonic within the internal jump/link table. More...
                                                         
                                                        subroutine tabsub (lun, nemo)
                                                         Build and store the entire jump/link tree (including recursively resolving all "child" mnemonics) for a Table A mnemonic within the internal jump/link table. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Read or write jump/link table information.

                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition in file jumplink.F90.

                                                        +

                                                        Function/Subroutine Documentation

                                                        + +

                                                        ◆ chekstab()

                                                        + +
                                                        +
                                                        + + + + + + + + +
                                                        subroutine chekstab (integer, intent(in) lun)
                                                        +
                                                        + +

                                                        Check that an internal BUFR table representation is self-consistent and fully defined.

                                                        +

                                                        If any errors are found, then make an appropriate call to NCEPLIBS-bufr subroutine bort().

                                                        +
                                                        Parameters
                                                        + + +
                                                        lun- File ID
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 279 of file jumplink.F90.

                                                        + +

                                                        References bort(), moda_nmikrp::irp, moda_nmikrp::krp, moda_nmikrp::nem, nemtab(), nemtbb(), nemtbd(), moda_tababd::ntba, moda_tababd::ntbb, moda_tababd::ntbd, and moda_tababd::taba.

                                                        + +

                                                        Referenced by makestab().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ conwin()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        subroutine conwin (integer, intent(in) lun,
                                                        integer, intent(out) inc1,
                                                        integer, intent(out) inc2 
                                                        )
                                                        +
                                                        + +

                                                        Search consecutive subset buffer segments for a conditional node.

                                                        +

                                                        Search consecutive subset buffer segments for an element identified in the user string as a conditional node. A conditional node is an element which must meet a condition in order to be read from or written to a data subset. If a conditional element is found and it conforms to the condition, then return the internal subset buffer indices of the "window" (see below).

                                                        +

                                                        The four conditions which can be exercised are:

                                                          +
                                                        • '<' - less than
                                                        • +
                                                        • '>' - greater than
                                                        • +
                                                        • '=' - equal
                                                        • +
                                                        • '!' - not equal
                                                        • +
                                                        +

                                                        Each condition in a string is applied to one element, and all conditions are 'and'ed to evaluate an outcome. For example, if the condition string is: "POB<500 TOB>30 TQM<4" then the only levels of data read or written are those with pressure less than 500 mb, temperature greater than 30 degrees, and temperature quality mark less than 4.

                                                        +

                                                        See the docblock in subroutine getwin() for an explanation of "windows" within the context of a BUFR data subset.

                                                        +

                                                        Subroutine conwin() works with function invcon() to identify subset buffer segments which conform to the set of conditions.

                                                        +
                                                        Parameters
                                                        + + + + +
                                                        lun- File ID
                                                        inc1- Subset buffer start index
                                                        inc2- Subset buffer ending index
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 1382 of file jumplink.F90.

                                                        + +

                                                        References getwin(), and moda_usrint::nval.

                                                        + +

                                                        Referenced by ufbevn(), ufbin3(), and ufbrw().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ drstpl()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        subroutine drstpl (integer, intent(in) inod,
                                                        integer, intent(in) lun,
                                                        integer, intent(in) inv1,
                                                        integer, intent(inout) inv2,
                                                        integer, intent(out) invn 
                                                        )
                                                        +
                                                        + +

                                                        Search for a specified mnemonic within unexpanded sequences of the internal jump/link table.

                                                        +

                                                        This subroutine is called internally by subroutine ufbrw() whenever it can't find a mnemonic it wants to write within the current subset buffer. It looks for the mnemonic within any unexpanded "DRS" (stack) or "DRB" (1-bit delayed replication) sequences inside of the portion of the subset buffer bounded by the indices inv1 and inv2. If found, it expands the applicable "DRS" or "DRB" sequence to the point where the mnemonic in question now appears in the subset buffer, and in doing so it will also return a new value for inv2.

                                                        +
                                                        Parameters
                                                        + + + + + + +
                                                        inod- Jump/link table index of mnemonic to look for
                                                        lun- File ID
                                                        inv1- Starting index of the portion of the subset buffer currently being processed by ufbrw()
                                                        inv2- Ending index
                                                          +
                                                        • On input, ending index of the portion of the subset buffer currently being processed by ufbrw()
                                                        • +
                                                        • On output, if invn = 0 then inv2 is unchanged from its input value. Otherwise, it contains the redefined ending index of the portion of the subset buffer currently being processed by ufbrw(), since expanding a delayed replication sequence will have necessarily increased the size of this buffer.
                                                        • +
                                                        +
                                                        invn- Location index of inod within subset buffer
                                                          +
                                                        • 0 = Not found
                                                        • +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 897 of file jumplink.F90.

                                                        + +

                                                        References moda_tables::jmpb, newwin(), moda_tables::typ, and usrtpl().

                                                        + +

                                                        Referenced by ufbrw().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ fstag()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        subroutine fstag (integer, intent(in) lun,
                                                        character*(*), intent(in) utag,
                                                        integer, intent(in) nutag,
                                                        integer, intent(in) nin,
                                                        integer, intent(out) nout,
                                                        integer, intent(out) iret 
                                                        )
                                                        +
                                                        + +

                                                        Search for a specified occurrence of a specified mnemonic within a data subset definition, starting from a specified location.

                                                        +

                                                        Search for the (nutag)th occurrence of mnemonic utag within the current overall subset definition, starting from parameter #(nin) within the subset. The subroutine searches forward from nin if nutag is positive or else backward if nutag is negative.

                                                        +
                                                        Parameters
                                                        + + + + + + + +
                                                        lun- File ID
                                                        utag- Mnemonic
                                                        nutag- Ordinal occurrence of utag to search for within the overall subset definition, counting from parameter #(nin) within the subset. The subroutine will search in a forward direction from parameter #(nin) if nutag is positive or else in a backward direction if nutag is negative.
                                                        nin- Location within the overall subset definition from which to begin searching for utag
                                                        nout- Location of (nutag)th occurrence of utag
                                                        iret- Return code:
                                                          +
                                                        • 0 = Normal return
                                                        • +
                                                        • -1 = Requested mnemonic could not be found, or some other error occurred
                                                        • +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2014-10-02
                                                        + +

                                                        Definition at line 1064 of file jumplink.F90.

                                                        + +

                                                        References moda_usrint::inv, moda_usrint::nval, parstr(), and moda_tables::tag.

                                                        + +

                                                        Referenced by gettagpr(), gettagre(), getvalnb(), nemspecs(), setvalnb(), and ufdump().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ gettagpr()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        recursive subroutine gettagpr (integer, intent(in) lunit,
                                                        character*(*), intent(in) tagch,
                                                        integer, intent(in) ntagch,
                                                        character*(*), intent(out) tagpr,
                                                        integer, intent(out) iret 
                                                        )
                                                        +
                                                        + +

                                                        Get the parent for a specified occurrence of a Table B or Table D mnemonic within a data subset definition.

                                                        +
                                                        Parameters
                                                        + + + + + + +
                                                        lunit- Fortran logical unit number for BUFR file
                                                        tagch- Table B or Table D mnemonic
                                                        ntagch- Ordinal occurrence of TAGCH for which the parent Table D mnemonic is to be returned, counting from the beginning of the overall subset definition
                                                        tagpr- Table D mnemonic corresponding to parent sequence of (ntagch)th occurrence of tagch
                                                        iret- Return code
                                                          +
                                                        • 0 = normal return
                                                        • +
                                                        • -1 = tagpr could not be found, or some other error occurred
                                                        • +
                                                        +
                                                        +
                                                        +
                                                        +

                                                        A data subset must already be in scope within the NCEPLIBS-bufr internal arrays for LUNIT, either via a previous call to one of the subset-reading subroutines (when reading BUFR data subsets) or via a previous call to one of the message-writing subroutines (when writing BUFR data subsets).

                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2012-09-12
                                                        + +

                                                        Definition at line 1125 of file jumplink.F90.

                                                        + +

                                                        References fstag(), moda_msgcwd::inode, moda_usrint::inv, moda_tables::jmpb, status(), moda_tables::tag, x48(), and x84().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ getwin()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        subroutine getwin (integer, intent(in) node,
                                                        integer, intent(in) lun,
                                                        integer, intent(out) iwin,
                                                        integer, intent(out) jwin 
                                                        )
                                                        +
                                                        + +

                                                        Look for a window containing a specified node within the internal jump/link table.

                                                        +

                                                        Given a node index within the internal jump/link table, this subroutine looks within the current subset buffer for a "window" (see below remarks) which contains this node. If found, it returns the starting and ending indices of this window within the current subset buffer. For example, if the node is found within the subset but is not part of a delayed replication sequence, then the returned indices define the start and end of the entire subset buffer. Otherwise, the returned indices define the start and end of the next available delayed replication sequence iteration which contains the node. If no further iterations of the sequence can be found, then the starting index is returned with a value of zero.

                                                        +
                                                        Note
                                                        This is one of a number of subroutines which operate on "windows" (i.e. contiguous portions) of the internal subset buffer. The subset buffer is an array of values arranged according to the overall template definition for a subset. A window can be any contiguous portion of the subset buffer up to and including the entire subset buffer itself. For the purposes of these "window + operator" subroutines, a window essentially consists of all of the elements within a particular delayed replication group, since such groups effectively define the dimensions within a BUFR subset for subroutines such as ufbint(), ufbin3(), etc. which read/write individual data values. A BUFR subset with no delayed replication groups is considered to have only one dimension, and therefore only one "window" which spans the entire subset. On the other hand, each delayed replication sequence within a BUFR subset consists of some number of "windows", which are a de-facto second dimension of the subset and where the number of windows is the delayed descriptor replication factor (i.e. the number of iterations) of the sequence. If nested delayed replication is used, then there may be three or more dimensions within the subset.
                                                        +
                                                        Parameters
                                                        + + + + + +
                                                        node- Jump/link table index of mnemonic to look for
                                                        lun- File ID
                                                        iwin- Starting index of the current window iteration which contains node
                                                          +
                                                        • 0 = Not found or no more iterations available
                                                        • +
                                                        +
                                                        jwin- Ending index of the current window iteration which contains node
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 1313 of file jumplink.F90.

                                                        + +

                                                        References bort(), moda_usrint::nval, and moda_usrint::val.

                                                        + +

                                                        Referenced by conwin(), ufbevn(), ufbin3(), and ufbrw().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ icmpdx()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        integer function icmpdx (integer, intent(in) lud,
                                                        integer, intent(in) lun 
                                                        )
                                                        +
                                                        + +

                                                        Check whether the full set of associated DX BUFR Table information is identical between two Fortran logical units.

                                                        +

                                                        Note that two different logical units can have identical DX BUFR Table information associated with them even if they aren't actually sharing the same DX BUFR table.

                                                        +
                                                        Parameters
                                                        + + + +
                                                        lud- File ID for first BUFR file
                                                        lun- File ID for second BUFR file
                                                        +
                                                        +
                                                        +
                                                        Returns
                                                        icmpdx - Flag indicating whether the BUFR file associated with lud and the BUFR file associated with lun have the same DX BUFR table information
                                                          +
                                                        • 0 = No
                                                        • +
                                                        • 1 = Yes
                                                        • +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2009-06-18
                                                        + +

                                                        Definition at line 831 of file jumplink.F90.

                                                        + +

                                                        References moda_tababd::idna, moda_tababd::idnb, moda_tababd::idnd, ishrdx(), moda_tababd::ntba, moda_tababd::ntbb, moda_tababd::ntbd, moda_tababd::taba, moda_tababd::tabb, and moda_tababd::tabd.

                                                        + +

                                                        Referenced by iok2cpy().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ inctab()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        subroutine inctab (character*(*), intent(in) atag,
                                                        character*(*), intent(in) atyp,
                                                        integer, intent(out) node 
                                                        )
                                                        +
                                                        + +

                                                        Get the next available positional index for writing into the internal jump/link table in module moda_tables, and also use that index to store atag and atyp within, respectively, the internal jump/link table arrays tag(*) and typ(*).

                                                        +

                                                        If there is no more room for additional entries within the internal jump/link table, then an appropriate call is made to subroutine bort().

                                                        +
                                                        Parameters
                                                        + + + + +
                                                        atag- Mnemonic name
                                                        atyp- Mnemonic type
                                                        node- Next available positional index for writing into the internal jump/link table
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 695 of file jumplink.F90.

                                                        + +

                                                        References bort(), moda_tables::ntab, moda_tables::tag, and moda_tables::typ.

                                                        + +

                                                        Referenced by tabent(), and tabsub().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ invcon()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        integer function invcon (integer, intent(in) nc,
                                                        integer, intent(in) lun,
                                                        integer, intent(in) inv1,
                                                        integer, intent(in) inv2 
                                                        )
                                                        +
                                                        + +

                                                        Search a specified window for a conditional node.

                                                        +

                                                        Search a "window" (see below remarks) for an element identified in the user string as a conditional node. A conditional node is an element which must meet a condition in order to be read from or written to a data subset. If a conditional element is found and it conforms to the condition, then the index of the element within the window is returned; otherwise a value of zero is returned.

                                                        +

                                                        See the docblock in subroutine getwin() for an explanation of "windows" within the context of a BUFR data subset.

                                                        +
                                                        Parameters
                                                        + + + + + +
                                                        nc- Condition code:
                                                          +
                                                        • 1 = '=' (equal)
                                                        • +
                                                        • 2 = '!' (not equal)
                                                        • +
                                                        • 3 = '<' (less than)
                                                        • +
                                                        • 4 = '>' (greater than)
                                                        • +
                                                        +
                                                        lun- File ID
                                                        inv1- First index of window to search
                                                        inv2- Last index of window to search
                                                        +
                                                        +
                                                        +
                                                        Returns
                                                        integer: index within window of conditional node conforming to specified condition.
                                                          +
                                                        • 0 none found.
                                                        • +
                                                        +
                                                        +
                                                        Author
                                                        Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 1440 of file jumplink.F90.

                                                        + +

                                                        References errwrt(), moda_usrint::inv, moda_usrint::nval, and moda_usrint::val.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ invtag()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        integer function invtag (integer, intent(in) node,
                                                        integer, intent(in) lun,
                                                        integer, intent(in) inv1,
                                                        integer, intent(in) inv2 
                                                        )
                                                        +
                                                        + +

                                                        Search for a specified mnemonic within a specified portion of the current data subset.

                                                        +

                                                        This function is similar to function invwin(), except that invwin() searches based on the actual node within the internal jump/link table, rather than on the mnemonic corresponding to that node.

                                                        +
                                                        Parameters
                                                        + + + + + +
                                                        node- Jump/link table index of mnemonic to look for
                                                        lun- File ID
                                                        inv1- Starting index of the portion of the subset buffer in which to look
                                                        inv2- Ending index of the portion of the subset buffer in which to look
                                                        +
                                                        +
                                                        +
                                                        Returns
                                                        - Location index of node within specified portion of subset buffer:
                                                          +
                                                        • 0 = Not found
                                                        • +
                                                        +
                                                        +
                                                        Author
                                                        Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 1190 of file jumplink.F90.

                                                        + +

                                                        References errwrt(), moda_usrint::inv, and moda_tables::tag.

                                                        + +

                                                        Referenced by ufbseq().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ invwin()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        integer function invwin (integer, intent(in) node,
                                                        integer, intent(in) lun,
                                                        integer, intent(in) inv1,
                                                        integer, intent(in) inv2 
                                                        )
                                                        +
                                                        + +

                                                        Search for a specified node within a specified portion of the current data subset.

                                                        +

                                                        This function is similar to function invtag(), except that invtag() searches based on the mnemonic corresponding to the node.

                                                        +
                                                        Parameters
                                                        + + + + + +
                                                        node- Jump/link table index to look for
                                                        lun- File ID
                                                        inv1- Starting index of the portion of the subset buffer in which to look
                                                        inv2- Ending index of the portion of the subset buffer in which to look
                                                        +
                                                        +
                                                        +
                                                        Returns
                                                        - Location index of node within specified portion of subset buffer:
                                                          +
                                                        • 0 = Not found
                                                        • +
                                                        +
                                                        +
                                                        Author
                                                        Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 1238 of file jumplink.F90.

                                                        + +

                                                        References errwrt(), and moda_usrint::inv.

                                                        + +

                                                        Referenced by nevn(), ufbget(), and ufbseq().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ ishrdx()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        integer function ishrdx (integer, intent(in) lud,
                                                        integer, intent(in) lun 
                                                        )
                                                        +
                                                        + +

                                                        Check whether the same DX BUFR Table is being shared between two Fortran logical units.

                                                        +
                                                        Parameters
                                                        + + + +
                                                        lud- File ID for first BUFR file
                                                        lun- File ID for second BUFR file
                                                        +
                                                        +
                                                        +
                                                        Returns
                                                        ishrdx - Flag indicating whether the same DX BUFR table is being shared between the BUFR file associated with lud and the BUFR file associated with lun
                                                          +
                                                        • 0 = No
                                                        • +
                                                        • 1 = Yes
                                                        • +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2009-06-18
                                                        + +

                                                        Definition at line 786 of file jumplink.F90.

                                                        + +

                                                        References moda_tababd::mtab, and moda_tababd::ntba.

                                                        + +

                                                        Referenced by icmpdx().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ lstjpb()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        integer function lstjpb (integer, intent(in) node,
                                                        integer, intent(in) lun,
                                                        character*(*), intent(in) jbtyp 
                                                        )
                                                        +
                                                        + +

                                                        Search backwards, beginning from a given node within the jump/link table, until finding the most recent node of type jbtyp.

                                                        +

                                                        The internal jmpb array is used to jump backwards within the jump/link table, and the function returns the table index of the found node. If the input node itself is of type jbtyp, then the function simply returns the index of that same node.

                                                        +
                                                        Note
                                                        See module moda_tables for an explanation of the various node types present within an internal jump/link table.
                                                        +
                                                        Parameters
                                                        + + + + +
                                                        node- Jump/link table index of entry to begin searching backwards from
                                                        lun- File ID
                                                        jbtyp- Type of node for which to search
                                                        +
                                                        +
                                                        +
                                                        Returns
                                                        - Index of first node of type jbtyp found by jumping backwards from input node
                                                          +
                                                        • 0 no such node found
                                                        • +
                                                        +
                                                        +
                                                        Author
                                                        Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 740 of file jumplink.F90.

                                                        + +

                                                        References bort(), moda_msgcwd::inode, moda_tables::isc, moda_tables::jmpb, and moda_tables::typ.

                                                        + +

                                                        Referenced by igetrfel(), and nevn().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ makestab()

                                                        + +
                                                        +
                                                        + + + + +
                                                        subroutine makestab
                                                        +
                                                        + +

                                                        Build the entire internal jump/link table within module moda_tables, using all of the internal BUFR table array information from module moda_tababd for all of the file IDs that are currently defined to the library in module moda_stbfr.

                                                        +

                                                        The entire jump/link table will always be completely reconstructed from scratch, even if some of the information within the internal BUFR table arrays already existed there at the time of the previous call to this subroutine, because there may have been other events that have taken place since the previous call to this subroutine and which haven't yet been reflected within the internal jump/link table. For example, a file ID may have recently been unlinked from the library via an internal call to subroutine closbf(), or the DX BUFR tables associated with a file ID may have changed.

                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 22 of file jumplink.F90.

                                                        + +

                                                        References bort(), chekstab(), closmg(), cpbfdx(), errwrt(), moda_tables::ibt, moda_usrint::inv, moda_stbfr::iolun, moda_stbfr::iomsg, moda_tables::irf, moda_tables::isc, moda_tables::iseq, moda_tables::itp, moda_tables::jmpb, moda_tables::jseq, moda_tables::jump, moda_tables::knt, moda_tables::knti, moda_tables::link, moda_lushr::lus, moda_tababd::mtab, moda_nrv203::nnrv, moda_tables::ntab, moda_bitmaps::ntamc, moda_tababd::ntba, moda_usrint::nval, strcln(), moda_tababd::taba, tabsub(), moda_tables::tag, moda_tables::typ, moda_tables::vali, wrdxtb(), and moda_xtab::xtab.

                                                        + +

                                                        Referenced by rdbfdx(), rdmemm(), rdusdx(), readdx(), readerme(), and reads3().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ nemspecs()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        recursive subroutine nemspecs (integer, intent(in) lunit,
                                                        character*(*), intent(in) nemo,
                                                        integer, intent(in) nnemo,
                                                        integer, intent(out) nscl,
                                                        integer, intent(out) nref,
                                                        integer, intent(out) nbts,
                                                        integer, intent(out) iret 
                                                        )
                                                        +
                                                        + +

                                                        Get the scale factor, reference value and bit width associated with a specified occurrence of a Table B mnemonic.

                                                        +

                                                        Given a Table B mnemonic defined within a data subset, this subroutine returns the scale factor, reference value and bit width of a specified occurrence of that mnemonic within the overall data subset definition, counting from the beginning of the subset.

                                                        +

                                                        The values returned include the application of any Table C operators (e.g. 2-01-YYY, 2-02-YYY, 2-03-YYY, 2-07-YYY, 2-08-YYY) which may be in effect for the specified occurrence of the mnemonic.

                                                        +
                                                        Parameters
                                                        + + + + + + + + +
                                                        lunit- Fortran logical unit number for BUFR file
                                                        nemo- Table B mnemonic
                                                        nnemo- Ordinal occurrence of nemo for which information is to be returned, counting from the beginning of the overall subset definition
                                                        nscl- Scale factor in effect for (nnemo)th occurrence of nemo
                                                        nref- Reference value in effect for (nnemo)th occurrence of nemo
                                                        nbts- Bit width in effect for (nnemo)th occurrence of nemo
                                                        iret- Return code
                                                          +
                                                        • 0 = normal return
                                                        • +
                                                        • -1 = nemo could not be found, or some other error occurred
                                                        • +
                                                        +
                                                        +
                                                        +
                                                        +

                                                        A data subset must already be in scope within the NCEPLIBS-bufr internal arrays for lunit, either via a previous call to one of the subset-reading subroutines (when reading BUFR data subsets) or via a previous call to one of the message-writing subroutines (when writing BUFR data subsets).

                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2014-10-02
                                                        + +

                                                        Definition at line 961 of file jumplink.F90.

                                                        + +

                                                        References fstag(), moda_tables::ibt, moda_nrv203::ienrv, moda_msgcwd::inode, moda_nrv203::inodnrv, moda_usrint::inv, moda_tables::irf, moda_tables::isc, moda_nrv203::isnrv, moda_nrv203::nnrv, moda_nrv203::nrv, status(), strsuc(), moda_nrv203::tagnrv, moda_tables::typ, x48(), and x84().

                                                        + +

                                                        Referenced by bufr_c2f_interface::nemspecs_c().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ newwin()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        subroutine newwin (integer, intent(in) lun,
                                                        integer, intent(in) iwin,
                                                        integer, intent(out) jwin 
                                                        )
                                                        +
                                                        + +

                                                        Compute the ending index of the window.

                                                        +

                                                        Given an index within the internal jump/link table which points to the start of an "RPC" window (which is the iteration of an 8-bit or 16-bit delayed replication sequence), this subroutine computes the ending index of the window. Alternatively, if the given index points to the start of a "SUB" window (which is the first node of a subset), then the subroutine returns the index of the last node.

                                                        +

                                                        See the docblock in subroutine getwin() for an explanation of "windows" within the context of a BUFR data subset.

                                                        +
                                                        Parameters
                                                        + + + + +
                                                        lun- File ID
                                                        iwin- Starting index of window iteration
                                                        jwin- Ending index of window iteration
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 1490 of file jumplink.F90.

                                                        + +

                                                        References bort(), moda_usrint::inv, moda_usrint::nval, and moda_usrint::val.

                                                        + +

                                                        Referenced by drstpl(), and ufbrw().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ nvnwin()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        integer function nvnwin (integer, intent(in) node,
                                                        integer, intent(in) lun,
                                                        integer, intent(in) inv1,
                                                        integer, intent(in) inv2,
                                                        integer, dimension(*), intent(out) invn,
                                                        integer, intent(in) nmax 
                                                        )
                                                        +
                                                        + +

                                                        Search for all occurrences of a specified node within a specified portion of the current data subset.

                                                        +

                                                        Search for and return all occurrences of a specified node within the portion of the current subset buffer bounded by the indices inv1 and inv2. The resulting list is a stack of "event" indices for the requested node.

                                                        +
                                                        Parameters
                                                        + + + + + + + +
                                                        node- Jump/link table index to look for
                                                        lun- File ID
                                                        inv1- Starting index of the portion of the subset buffer in which to look
                                                        inv2- Ending index of the portion of the subset buffer in which to look
                                                        invn- Array of stack "event" indices for node
                                                        nmax- Dimensioned size of invn; used by the function to ensure that it doesn't overflow the invn array
                                                        +
                                                        +
                                                        +
                                                        Returns
                                                        - Number of indices within invn.
                                                        +
                                                        Author
                                                        Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 1588 of file jumplink.F90.

                                                        + +

                                                        References bort(), errwrt(), and moda_usrint::inv.

                                                        + +

                                                        Referenced by ufbevn().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ nxtwin()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        subroutine nxtwin (integer, intent(in) lun,
                                                        integer, intent(inout) iwin,
                                                        integer, intent(inout) jwin 
                                                        )
                                                        +
                                                        + +

                                                        Compute the start and end indices of the next window.

                                                        +

                                                        Given indices within the internal jump/link table which point to the start and end of an "RPC" window (which is an iteration of an 8-bit or 16-bit delayed replication sequence), this subroutine computes the start and end indices of the next sequential window.

                                                        +

                                                        See the docblock in subroutine getwin() for an explanation of "windows" within the context of a BUFR data subset.

                                                        +
                                                        Parameters
                                                        + + + + +
                                                        lun- File ID
                                                        iwin- Starting index:
                                                          +
                                                        • On input, contains starting index of current window iteration.
                                                        • +
                                                        • On output, contains starting index of next window iteration.
                                                        • +
                                                        +
                                                        jwin- Ending index:
                                                          +
                                                        • On input, contains ending index of current window iteration.
                                                        • +
                                                        • On output, contains ending index of next window iteration.
                                                        • +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 1538 of file jumplink.F90.

                                                        + +

                                                        References bort(), moda_usrint::inv, moda_usrint::nval, and moda_usrint::val.

                                                        + +

                                                        Referenced by ufbevn(), ufbin3(), and ufbrw().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ tabent()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        subroutine tabent (integer, intent(in) lun,
                                                        character*8, intent(in) nemo,
                                                        character, intent(in) tab,
                                                        integer, intent(in) itab,
                                                        integer, intent(in) irep,
                                                        integer, intent(in) iknt,
                                                        integer, intent(in) jum0 
                                                        )
                                                        +
                                                        + +

                                                        Build and store an entry for a Table B or Table D mnemonic within the internal jump/link table.

                                                        +
                                                        Parameters
                                                        + + + + + + + + +
                                                        lun- File ID
                                                        nemo- Table B or D mnemonic to store in jump/link table
                                                        tab- Internal BUFR table array ('B' or 'D') in which nemo is defined
                                                        itab- Positional index of nemo within TAB
                                                        irep- Positional index within internal arrays, for use when nemo is replicated:
                                                          +
                                                        • 0, if nemo is not replicated
                                                        • +
                                                        +
                                                        iknt- Number of replications, for use when nemo is replicated using F=1 regular (i.e., non-delayed) replication:
                                                          +
                                                        • 0, if nemo is not replicated using F=1 regular (i.e., non-delayed) replication
                                                        • +
                                                        +
                                                        jum0- Index value to be stored for nemo within internal jump/link table array jmpb(*)
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 585 of file jumplink.F90.

                                                        + +

                                                        References bort(), moda_tables::ibt, moda_nrv203::ibtnrv, inctab(), moda_nrv203::inodnrv, moda_nrv203::ipfnrv, moda_tables::irf, moda_tables::isc, moda_nrv203::isnrv, moda_tables::jmpb, moda_tables::jump, moda_tables::link, nemtbb(), moda_nrv203::nnrv, and moda_nrv203::tagnrv.

                                                        + +

                                                        Referenced by tabsub().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ tabsub()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        subroutine tabsub (integer, intent(in) lun,
                                                        character*8, intent(in) nemo 
                                                        )
                                                        +
                                                        + +

                                                        Build and store the entire jump/link tree (including recursively resolving all "child" mnemonics) for a Table A mnemonic within the internal jump/link table.

                                                        +
                                                        Parameters
                                                        + + + +
                                                        lun- File ID
                                                        nemo- Table A mnemonic
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 333 of file jumplink.F90.

                                                        + +

                                                        References bort(), moda_bitmaps::ctco, moda_tables::ibt, moda_nrv203::ibtnrv, moda_nrv203::ienrv, inctab(), moda_bitmaps::inodtamc, moda_bitmaps::inodtco, moda_nrv203::ipfnrv, moda_tables::irf, moda_nmikrp::irp, moda_tables::isc, moda_tables::jmpb, moda_tables::jump, moda_nmikrp::krp, moda_tables::link, moda_nmikrp::nem, nemtab(), nemtbd(), moda_nrv203::nnrv, moda_tables::ntab, moda_bitmaps::ntamc, moda_bitmaps::ntco, and tabent().

                                                        + +

                                                        Referenced by makestab().

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/jumplink_8F90.js b/previous_versions/v12.1.0/jumplink_8F90.js new file mode 100644 index 000000000..e512f9c64 --- /dev/null +++ b/previous_versions/v12.1.0/jumplink_8F90.js @@ -0,0 +1,23 @@ +var jumplink_8F90 = +[ + [ "chekstab", "jumplink_8F90.html#aca151bb247903f60a7b1a76578db1ed5", null ], + [ "conwin", "jumplink_8F90.html#ac33dc42cbccbf054fa1c72b4bed5e90e", null ], + [ "drstpl", "jumplink_8F90.html#a1f74d80135fda2ac50f57d99645d2853", null ], + [ "fstag", "jumplink_8F90.html#a1587e1818caf4b04f1afc556c5c9813b", null ], + [ "gettagpr", "jumplink_8F90.html#aff303b3e9951ce71da6c66ae5e0d76bf", null ], + [ "getwin", "jumplink_8F90.html#af10a8f5f84135d80474c70f06be65b73", null ], + [ "icmpdx", "jumplink_8F90.html#aa8ae055da512a9259d4f248b3ccdb5e8", null ], + [ "inctab", "jumplink_8F90.html#a5459f5cd4813acaa5e695c650a77eeca", null ], + [ "invcon", "jumplink_8F90.html#a44e33584f368731a2373831f207a527d", null ], + [ "invtag", "jumplink_8F90.html#a77a6346a03867a7e65e984ee34de3d91", null ], + [ "invwin", "jumplink_8F90.html#ab4cc1160c451fcd8709a46f32515ca3c", null ], + [ "ishrdx", "jumplink_8F90.html#af13fb1da5f3cb8bafd2c305b6c7234db", null ], + [ "lstjpb", "jumplink_8F90.html#a46ebb8c05619d2580397218ff36f4a9b", null ], + [ "makestab", "jumplink_8F90.html#ad12d047119fdcdeb97ffbced0696b9fb", null ], + [ "nemspecs", "jumplink_8F90.html#a6ec2d1015cdc1315eb384ea92223e620", null ], + [ "newwin", "jumplink_8F90.html#ab082ab8ef32893928cb10a2876d73af0", null ], + [ "nvnwin", "jumplink_8F90.html#a32fa4aca38700d53dd9899f93b9b3636", null ], + [ "nxtwin", "jumplink_8F90.html#a8a7a4ff46107f36ae57dd76442bd2447", null ], + [ "tabent", "jumplink_8F90.html#a68d977aaaf6f7869b2048ca79723c838", null ], + [ "tabsub", "jumplink_8F90.html#af1d16fa71d84a333e3448d1081214d2f", null ] +]; \ No newline at end of file diff --git a/previous_versions/v12.1.0/jumplink_8F90_source.html b/previous_versions/v12.1.0/jumplink_8F90_source.html new file mode 100644 index 000000000..6dee6904d --- /dev/null +++ b/previous_versions/v12.1.0/jumplink_8F90_source.html @@ -0,0 +1,1447 @@ + + + + + + + +NCEPLIBS-bufr: jumplink.F90 Source File + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        +
                                                        jumplink.F90
                                                        +
                                                        +
                                                        +Go to the documentation of this file.
                                                        1 
                                                        +
                                                        5 
                                                        +
                                                        22 subroutine makestab
                                                        +
                                                        23 
                                                        +
                                                        24  use modv_vars, only: bmiss, maxjl, nfiles
                                                        +
                                                        25 
                                                        +
                                                        26  use moda_usrint
                                                        +
                                                        27  use moda_stbfr
                                                        +
                                                        28  use moda_lushr
                                                        +
                                                        29  use moda_xtab
                                                        +
                                                        30  use moda_tababd
                                                        +
                                                        31  use moda_tables
                                                        +
                                                        32  use moda_nrv203
                                                        +
                                                        33  use moda_bitmaps
                                                        +
                                                        34 
                                                        +
                                                        35  implicit none
                                                        +
                                                        36 
                                                        +
                                                        37  integer iprt, lunit, lundx, lun, lum, k, n, itba, inc, newn, noda, node, inod, icmpdx, ishrdx
                                                        +
                                                        38 
                                                        +
                                                        39  character*128 bort_str, errstr
                                                        +
                                                        40  character*8 nemo
                                                        +
                                                        41 
                                                        +
                                                        42  logical expand
                                                        +
                                                        43 
                                                        +
                                                        44  common /quiet/ iprt
                                                        +
                                                        45 
                                                        +
                                                        46  ! Reset pointer table and string cache.
                                                        +
                                                        47 
                                                        +
                                                        48  ntab = 0
                                                        +
                                                        49  nnrv = 0
                                                        +
                                                        50  ntamc = 0
                                                        +
                                                        51  call strcln
                                                        +
                                                        52 
                                                        +
                                                        53  ! Figure out which units share tables.
                                                        +
                                                        54 
                                                        +
                                                        55  ! The lus array is static between calls to this subroutine, and it keeps track of which logical units share dictionary
                                                        +
                                                        56  ! table information:
                                                        +
                                                        57  ! if lus(i) = 0, then iolun(i) does not share dictionary table information with any other logical unit
                                                        +
                                                        58  ! if lus(i) > 0, then iolun(i) shares dictionary table information with logical unit iolun(lus(i))
                                                        +
                                                        59  ! if lus(i) < 0, then iolun(i) does not now, but at one point in the past, shared dictionary table information
                                                        +
                                                        60  ! with logical unit iolun(abs(lus(i)))
                                                        +
                                                        61 
                                                        +
                                                        62  ! The xtab array is non-static and is recomputed within the below loop during each call to this subroutine:
                                                        +
                                                        63  ! if xtab(i) = .true., then the dictionary table information has changed for iolun(i) since the last call to this subroutine
                                                        +
                                                        64  ! if xtab(i) = .false., then the dictionary table information has not changed for iolun(i) since the last call to this subroutine
                                                        +
                                                        65 
                                                        +
                                                        66  do lun=1,nfiles
                                                        +
                                                        67  xtab(lun) = .false.
                                                        +
                                                        68  if(iolun(lun)==0) then
                                                        +
                                                        69  ! Logical unit iolun(lun) is not defined to NCEPLIBS-bufr.
                                                        +
                                                        70  lus(lun) = 0
                                                        +
                                                        71  else if(mtab(1,lun)==0) then
                                                        +
                                                        72  ! New dictionary table information has been read for logical unit iolun(lun) since the last call to this subroutine.
                                                        +
                                                        73  xtab(lun) = .true.
                                                        +
                                                        74  if(lus(lun)/=0) then
                                                        +
                                                        75  if(iolun(abs(lus(lun)))==0) then
                                                        +
                                                        76  lus(lun) = 0
                                                        +
                                                        77  else if(lus(lun)>0) then
                                                        +
                                                        78  ! iolun(lun) was sharing table information with logical unit iolun(lus(lun)), so check whether the table information
                                                        +
                                                        79  ! has really changed. If not, then iolun(lun) just re-read a copy of the exact same table information as before,
                                                        +
                                                        80  ! and therefore it can continue to share with logical unit iolun(lus(lun)).
                                                        +
                                                        81  if(icmpdx(lus(lun),lun)==1) then
                                                        +
                                                        82  xtab(lun) = .false.
                                                        +
                                                        83  call cpbfdx(lus(lun),lun)
                                                        +
                                                        84  else
                                                        +
                                                        85  lus(lun) = (-1)*lus(lun)
                                                        +
                                                        86  endif
                                                        +
                                                        87  else if(icmpdx(abs(lus(lun)),lun)==1) then
                                                        +
                                                        88  ! iolun(lun) was not sharing table information with logical unit iolun(lus(lun)), but it did at one point in the past
                                                        +
                                                        89  ! and now once again has the same table information as that logical unit. Since the two units shared table
                                                        +
                                                        90  ! information at one point in the past, allow them to do so again.
                                                        +
                                                        91  xtab(lun) = .false.
                                                        +
                                                        92  lus(lun) = abs(lus(lun))
                                                        +
                                                        93  call cpbfdx(lus(lun),lun)
                                                        +
                                                        94  endif
                                                        +
                                                        95  endif
                                                        +
                                                        96  else if(lus(lun)>0) then
                                                        +
                                                        97  ! Logical unit iolun(lun) is sharing table information with logical unit iolun(lus(lun)), so make sure that the latter
                                                        +
                                                        98  ! unit is still defined to NCEPLIBS-bufr.
                                                        +
                                                        99  if(iolun(lus(lun))==0) then
                                                        +
                                                        100  lus(lun) = 0
                                                        +
                                                        101  else if( xtab(lus(lun)) .and. (icmpdx(lus(lun),lun)==0) ) then
                                                        +
                                                        102  ! The table information for logical unit iolun(lus(lun)) just changed (in midstream). If iolun(lun) is an output
                                                        +
                                                        103  ! file, then we will have to update it with the new table information later on in this subroutine. Otherwise,
                                                        +
                                                        104  ! iolun(lun) is an input file and is no longer sharing tables with iolun(lus(lun)).
                                                        +
                                                        105  if(iolun(lun)<0) lus(lun) = (-1)*lus(lun)
                                                        +
                                                        106  endif
                                                        +
                                                        107  else
                                                        +
                                                        108  ! Determine whether logical unit iolun(lun) is sharing table information with any other logical units.
                                                        +
                                                        109  lum = 1
                                                        +
                                                        110  do while ((lum<lun).and.(lus(lun)==0))
                                                        +
                                                        111  if(ishrdx(lum,lun)==1) then
                                                        +
                                                        112  lus(lun) = lum
                                                        +
                                                        113  else
                                                        +
                                                        114  lum = lum+1
                                                        +
                                                        115  endif
                                                        +
                                                        116  enddo
                                                        +
                                                        117  endif
                                                        +
                                                        118  enddo
                                                        +
                                                        119 
                                                        +
                                                        120  ! Initialize jump/link tables with subsets/sequences/elements.
                                                        +
                                                        121 
                                                        +
                                                        122  do lun=1,nfiles
                                                        +
                                                        123  if(iolun(lun)/=0 .and. ntba(lun)>0) then
                                                        +
                                                        124  ! Reset any existing inventory pointers.
                                                        +
                                                        125  if(iomsg(lun)/=0) then
                                                        +
                                                        126  if(lus(lun)<=0) then
                                                        +
                                                        127  inc = (ntab+1)-mtab(1,lun)
                                                        +
                                                        128  else
                                                        +
                                                        129  inc = mtab(1,lus(lun))-mtab(1,lun)
                                                        +
                                                        130  endif
                                                        +
                                                        131  do n=1,nval(lun)
                                                        +
                                                        132  inv(n,lun) = inv(n,lun)+inc
                                                        +
                                                        133  enddo
                                                        +
                                                        134  endif
                                                        +
                                                        135  if(lus(lun)<=0) then
                                                        +
                                                        136  ! The dictionary table information corresponding to logical unit iolun(lun) has not yet been written into the internal
                                                        +
                                                        137  ! jump/link table, so add it in now.
                                                        +
                                                        138  call chekstab(lun)
                                                        +
                                                        139  do itba=1,ntba(lun)
                                                        +
                                                        140  inod = ntab+1
                                                        +
                                                        141  nemo = taba(itba,lun)(4:11)
                                                        +
                                                        142  call tabsub(lun,nemo)
                                                        +
                                                        143  mtab(itba,lun) = inod
                                                        +
                                                        144  isc(inod) = ntab
                                                        +
                                                        145  enddo
                                                        +
                                                        146  else if( xtab(lus(lun)) .and. (icmpdx(lus(lun),lun)==0) ) then
                                                        +
                                                        147  ! Logical unit iolun(lun) is an output file that is sharing table information with logical unit iolun(lus(lun)) whose
                                                        +
                                                        148  ! table just changed (in midstream). Flush any existing data messages from iolun(lun), then update the table information
                                                        +
                                                        149  ! for this logical unit with the corresponding new table information from iolun(lus(lun)), then update iolun(lun) itself
                                                        +
                                                        150  ! with a copy of the new table information.
                                                        +
                                                        151  lunit = abs(iolun(lun))
                                                        +
                                                        152  if(iomsg(lun)/=0) call closmg(lunit)
                                                        +
                                                        153  call cpbfdx(lus(lun),lun)
                                                        +
                                                        154  lundx = abs(iolun(lus(lun)))
                                                        +
                                                        155  call wrdxtb(lundx,lunit)
                                                        +
                                                        156  endif
                                                        +
                                                        157  endif
                                                        +
                                                        158  enddo
                                                        +
                                                        159 
                                                        +
                                                        160  ! Store types and initial values and counts
                                                        +
                                                        161 
                                                        +
                                                        162  do node=1,ntab
                                                        +
                                                        163  if(typ(node)=='SUB') then
                                                        +
                                                        164  vali(node) = 0
                                                        +
                                                        165  knti(node) = 1
                                                        +
                                                        166  itp(node) = 0
                                                        +
                                                        167  elseif(typ(node)=='SEQ') then
                                                        +
                                                        168  vali(node) = 0
                                                        +
                                                        169  knti(node) = 1
                                                        +
                                                        170  itp(node) = 0
                                                        +
                                                        171  elseif(typ(node)=='RPC') then
                                                        +
                                                        172  vali(node) = 0
                                                        +
                                                        173  knti(node) = 0
                                                        +
                                                        174  itp(node) = 0
                                                        +
                                                        175  elseif(typ(node)=='RPS') then
                                                        +
                                                        176  vali(node) = 0
                                                        +
                                                        177  knti(node) = 0
                                                        +
                                                        178  itp(node) = 0
                                                        +
                                                        179  elseif(typ(node)=='REP') then
                                                        +
                                                        180  vali(node) = bmiss
                                                        +
                                                        181  knti(node) = irf(node)
                                                        +
                                                        182  itp(node) = 0
                                                        +
                                                        183  elseif(typ(node)=='DRS') then
                                                        +
                                                        184  vali(node) = 0
                                                        +
                                                        185  knti(node) = 1
                                                        +
                                                        186  itp(node) = 1
                                                        +
                                                        187  elseif(typ(node)=='DRP') then
                                                        +
                                                        188  vali(node) = 0
                                                        +
                                                        189  knti(node) = 1
                                                        +
                                                        190  itp(node) = 1
                                                        +
                                                        191  elseif(typ(node)=='DRB') then
                                                        +
                                                        192  vali(node) = 0
                                                        +
                                                        193  knti(node) = 0
                                                        +
                                                        194  itp(node) = 1
                                                        +
                                                        195  elseif(typ(node)=='NUM') then
                                                        +
                                                        196  vali(node) = bmiss
                                                        +
                                                        197  knti(node) = 1
                                                        +
                                                        198  itp(node) = 2
                                                        +
                                                        199  else ! typ(node)=='CHR'
                                                        +
                                                        200  vali(node) = bmiss
                                                        +
                                                        201  knti(node) = 1
                                                        +
                                                        202  itp(node) = 3
                                                        +
                                                        203  endif
                                                        +
                                                        204  enddo
                                                        +
                                                        205 
                                                        +
                                                        206  ! Set up expansion segments for type 'SUB', 'DRP', and 'DRS' nodes.
                                                        +
                                                        207 
                                                        +
                                                        208  newn = 0
                                                        +
                                                        209 
                                                        +
                                                        210  do n=1,ntab
                                                        +
                                                        211  iseq(n,1) = 0
                                                        +
                                                        212  iseq(n,2) = 0
                                                        +
                                                        213  expand = typ(n)=='SUB' .or. typ(n)=='DRP' .or. typ(n)=='DRS' .or. typ(n)=='REP' .or. typ(n)=='DRB'
                                                        +
                                                        214  if(expand) then
                                                        +
                                                        215  iseq(n,1) = newn+1
                                                        +
                                                        216  noda = n
                                                        +
                                                        217  node = n+1
                                                        +
                                                        218  do k=1,maxjl
                                                        +
                                                        219  knt(k) = 0
                                                        +
                                                        220  enddo
                                                        +
                                                        221  if(typ(noda)=='REP') then
                                                        +
                                                        222  knt(node) = knti(noda)
                                                        +
                                                        223  else
                                                        +
                                                        224  knt(node) = 1
                                                        +
                                                        225  endif
                                                        +
                                                        226 
                                                        +
                                                        227  outer: do while (.true.)
                                                        +
                                                        228  newn = newn+1
                                                        +
                                                        229  if(newn>maxjl) then
                                                        +
                                                        230  write(bort_str,'("BUFRLIB: MAKESTAB - NUMBER OF JSEQ ENTRIES IN JUMP/LINK TABLE EXCEEDS THE LIMIT (",I6,")")') maxjl
                                                        +
                                                        231  call bort(bort_str)
                                                        +
                                                        232  endif
                                                        +
                                                        233  jseq(newn) = node
                                                        +
                                                        234  knt(node) = max(knti(node),knt(node))
                                                        +
                                                        235  inner: do while (.true.)
                                                        +
                                                        236  if(jump(node)*knt(node)>0) then
                                                        +
                                                        237  node = jump(node)
                                                        +
                                                        238  cycle outer
                                                        +
                                                        239  else if(link(node)>0) then
                                                        +
                                                        240  node = link(node)
                                                        +
                                                        241  cycle outer
                                                        +
                                                        242  else
                                                        +
                                                        243  node = jmpb(node)
                                                        +
                                                        244  if(node==noda) exit outer
                                                        +
                                                        245  if(node==0) then
                                                        +
                                                        246  write(bort_str,'("BUFRLIB: MAKESTAB - NODE IS ZERO, FAILED TO CIRCULATE (TAG IS ",A,")")') tag(n)
                                                        +
                                                        247  call bort(bort_str)
                                                        +
                                                        248  endif
                                                        +
                                                        249  knt(node) = max(knt(node)-1,0)
                                                        +
                                                        250  endif
                                                        +
                                                        251  enddo inner
                                                        +
                                                        252  enddo outer
                                                        +
                                                        253  iseq(n,2) = newn
                                                        +
                                                        254  endif
                                                        +
                                                        255  enddo
                                                        +
                                                        256 
                                                        +
                                                        257  ! Print the sequence tables
                                                        +
                                                        258 
                                                        +
                                                        259  if(iprt>=2) then
                                                        +
                                                        260  call errwrt('++++++++++++++BUFR ARCHIVE LIBRARY+++++++++++++++++')
                                                        +
                                                        261  do n=1,ntab
                                                        +
                                                        262  write ( unit=errstr, fmt='(A,I5,2X,A10,A5,6I8)' ) &
                                                        +
                                                        263  'BUFRLIB: MAKESTAB ', n, tag(n), typ(n), jmpb(n), jump(n), link(n), ibt(n), irf(n), isc(n)
                                                        +
                                                        264  call errwrt(errstr)
                                                        +
                                                        265  enddo
                                                        +
                                                        266  call errwrt('++++++++++++++BUFR ARCHIVE LIBRARY+++++++++++++++++')
                                                        +
                                                        267  call errwrt(' ')
                                                        +
                                                        268  endif
                                                        +
                                                        269 
                                                        +
                                                        270  return
                                                        +
                                                        271 end subroutine makestab
                                                        +
                                                        272 
                                                        +
                                                        279 subroutine chekstab(lun)
                                                        +
                                                        280 
                                                        +
                                                        281  use moda_tababd
                                                        +
                                                        282  use moda_nmikrp
                                                        +
                                                        283 
                                                        +
                                                        284  implicit none
                                                        +
                                                        285 
                                                        +
                                                        286  integer, intent(in) :: lun
                                                        +
                                                        287  integer itab, idn, iret, iscl, iref, ibit, nseq
                                                        +
                                                        288 
                                                        +
                                                        289  character*128 bort_str
                                                        +
                                                        290  character*24 unit
                                                        +
                                                        291  character*8 nemo
                                                        +
                                                        292  character*1 tab
                                                        +
                                                        293 
                                                        +
                                                        294  ! There must be entries in Tables A, B, and D
                                                        +
                                                        295 
                                                        +
                                                        296  if(ntba(lun)==0) call bort ('BUFRLIB: CHEKSTAB - EMPTY TABLE A IN INTERNAL BUFR TABLES')
                                                        +
                                                        297  if(ntbb(lun)==0) call bort ('BUFRLIB: CHEKSTAB - EMPTY TABLE B IN INTERNAL BUFR TABLES')
                                                        +
                                                        298  if(ntbd(lun)==0) call bort ('BUFRLIB: CHEKSTAB - EMPTY TABLE D IN INTERNAL BUFR TABLES')
                                                        +
                                                        299 
                                                        +
                                                        300  ! Make sure each Table A entry is defined as a sequence
                                                        +
                                                        301 
                                                        +
                                                        302  do itab=1,ntba(lun)
                                                        +
                                                        303  nemo = taba(itab,lun)(4:11)
                                                        +
                                                        304  call nemtab(lun,nemo,idn,tab,iret)
                                                        +
                                                        305  if(tab/='D') then
                                                        +
                                                        306  write(bort_str,'("BUFRLIB: CHEKSTAB - TABLE A ENTRY: ",A," NOT DEFINED AS A SEQUENCE")') nemo
                                                        +
                                                        307  call bort(bort_str)
                                                        +
                                                        308  endif
                                                        +
                                                        309  enddo
                                                        +
                                                        310 
                                                        +
                                                        311  ! Check Table B contents
                                                        +
                                                        312 
                                                        +
                                                        313  do itab=1,ntbb(lun)
                                                        +
                                                        314  call nemtbb(lun,itab,unit,iscl,iref,ibit)
                                                        +
                                                        315  enddo
                                                        +
                                                        316 
                                                        +
                                                        317  ! Check Table D contents
                                                        +
                                                        318 
                                                        +
                                                        319  do itab=1,ntbd(lun)
                                                        +
                                                        320  call nemtbd(lun,itab,nseq,nem(1,1),irp(1,1),krp(1,1))
                                                        +
                                                        321  enddo
                                                        +
                                                        322 
                                                        +
                                                        323  return
                                                        +
                                                        324 end subroutine chekstab
                                                        +
                                                        325 
                                                        +
                                                        333 subroutine tabsub(lun,nemo)
                                                        +
                                                        334 
                                                        +
                                                        335  use modv_vars, only: mxtamc, mxtco
                                                        +
                                                        336 
                                                        +
                                                        337  use moda_tables
                                                        +
                                                        338  use moda_nmikrp
                                                        +
                                                        339  use moda_nrv203
                                                        +
                                                        340  use moda_bitmaps
                                                        +
                                                        341 
                                                        +
                                                        342  implicit none
                                                        +
                                                        343 
                                                        +
                                                        344  integer, intent(in) :: lun
                                                        +
                                                        345  integer jmp0(10), nodl(10), ntag(10,2), icdw, icsc, icrv, incw, maxlim, node, idn, itab, nseq, limb, n, jj, iyyy, &
                                                        +
                                                        346  irep, iknt, jum0, iokoper
                                                        +
                                                        347 
                                                        +
                                                        348  character*128 bort_str
                                                        +
                                                        349  character*8, intent(in) :: nemo
                                                        +
                                                        350  character*8 nems
                                                        +
                                                        351  character*1 tab
                                                        +
                                                        352 
                                                        +
                                                        353  logical drop(10), ltamc
                                                        +
                                                        354 
                                                        +
                                                        355  common /tabccc/ icdw, icsc, icrv, incw
                                                        +
                                                        356 
                                                        +
                                                        357  data maxlim /10/
                                                        +
                                                        358 
                                                        +
                                                        359  ! Check the mnemonic
                                                        +
                                                        360 
                                                        +
                                                        361  ! Note that Table A mnemonics, in addition to being stored within internal BUFR Table A array taba(*,lun), are also stored as
                                                        +
                                                        362  ! Table D mnemonics within internal BUFR Table D array tabd(*,lun). So the following test is valid.
                                                        +
                                                        363 
                                                        +
                                                        364  call nemtab(lun,nemo,idn,tab,itab)
                                                        +
                                                        365  if(tab/='D') then
                                                        +
                                                        366  write(bort_str,'("BUFRLIB: TABSUB - SUBSET NODE NOT IN TABLE D (TAB=",A,") FOR INPUT MNEMONIC ",A)') tab,nemo
                                                        +
                                                        367  call bort(bort_str)
                                                        +
                                                        368  endif
                                                        +
                                                        369 
                                                        +
                                                        370  ! Store a subset node and jump/link the tree
                                                        +
                                                        371 
                                                        +
                                                        372  call inctab(nemo,'SUB',node)
                                                        +
                                                        373  jump(node) = node+1
                                                        +
                                                        374  jmpb(node) = 0
                                                        +
                                                        375  link(node) = 0
                                                        +
                                                        376  ibt(node) = 0
                                                        +
                                                        377  irf(node) = 0
                                                        +
                                                        378  isc(node) = 0
                                                        +
                                                        379 
                                                        +
                                                        380  call nemtbd(lun,itab,nseq,nem(1,1),irp(1,1),krp(1,1))
                                                        +
                                                        381  ntag(1,1) = 1
                                                        +
                                                        382  ntag(1,2) = nseq
                                                        +
                                                        383  jmp0(1) = node
                                                        +
                                                        384  nodl(1) = node
                                                        +
                                                        385  limb = 1
                                                        +
                                                        386 
                                                        +
                                                        387  icdw = 0
                                                        +
                                                        388  icsc = 0
                                                        +
                                                        389  icrv = 1
                                                        +
                                                        390  incw = 0
                                                        +
                                                        391 
                                                        +
                                                        392  ibtnrv = 0
                                                        +
                                                        393  ipfnrv = 0
                                                        +
                                                        394 
                                                        +
                                                        395  if(ntamc+1>mxtamc) call bort('BUFRLIB: TABSUB - MXTAMC OVERFLOW')
                                                        +
                                                        396  inodtamc(ntamc+1) = node
                                                        +
                                                        397  ntco(ntamc+1) = 0
                                                        +
                                                        398  ltamc = .false.
                                                        +
                                                        399 
                                                        +
                                                        400  ! The following loop resolves all entities in the subset by emulating recursion via explicit goto statements.
                                                        +
                                                        401 
                                                        +
                                                        402  11 do n=ntag(limb,1),ntag(limb,2)
                                                        +
                                                        403 
                                                        +
                                                        404  ntag(limb,1) = n+1
                                                        +
                                                        405  drop(limb) = n==ntag(limb,2)
                                                        +
                                                        406 
                                                        +
                                                        407  call nemtab(lun,nem(n,limb),idn,tab,itab)
                                                        +
                                                        408  nems = nem(n,limb)
                                                        +
                                                        409 
                                                        +
                                                        410  if(tab=='C') then
                                                        +
                                                        411  ! Special treatment for certain operator descriptors.
                                                        +
                                                        412  read(nems,'(3X,I3)') iyyy
                                                        +
                                                        413  if(itab==1) then
                                                        +
                                                        414  if(iyyy/=0) then
                                                        +
                                                        415  if(icdw/=0) then
                                                        +
                                                        416  write(bort_str,'("BUFRLIB: TABSUB - THERE ARE TWO SIMULTANEOUS '// &
                                                        +
                                                        417  'CHANGE DATA WIDTH OPERATIONS IN THE TREE BUILT FROM INPUT MNEMONIC ",A)') nemo
                                                        +
                                                        418  call bort(bort_str)
                                                        +
                                                        419  endif
                                                        +
                                                        420  icdw = iyyy-128
                                                        +
                                                        421  else
                                                        +
                                                        422  icdw = 0
                                                        +
                                                        423  endif
                                                        +
                                                        424  elseif(itab==2) then
                                                        +
                                                        425  if(iyyy/=0) then
                                                        +
                                                        426  if(icsc/=0) then
                                                        +
                                                        427  write(bort_str,'("BUFRLIB: TABSUB - THERE ARE TWO SIMULTANEOUS '// &
                                                        +
                                                        428  'CHANGE DATA SCALE OPERATIONS IN THE TREE BUILT FROM INPUT MNEMONIC ",A)') nemo
                                                        +
                                                        429  call bort(bort_str)
                                                        +
                                                        430  endif
                                                        +
                                                        431  icsc = iyyy-128
                                                        +
                                                        432  else
                                                        +
                                                        433  icsc = 0
                                                        +
                                                        434  endif
                                                        +
                                                        435  elseif(itab==3) then
                                                        +
                                                        436  if(iyyy==0) then
                                                        +
                                                        437  ! Stop applying new reference values to subset nodes. Instead, revert to the use of standard Table B values.
                                                        +
                                                        438  if(ipfnrv==0) then
                                                        +
                                                        439  write(bort_str,'("BUFRLIB: TABSUB - A 2-03-000 OPERATOR WAS '// &
                                                        +
                                                        440  'ENCOUNTERED WITHOUT ANY PRIOR 2-03-YYY OPERATOR FOR INPUT MNEMONIC ",A)') nemo
                                                        +
                                                        441  call bort(bort_str)
                                                        +
                                                        442  endif
                                                        +
                                                        443  do jj=ipfnrv,nnrv
                                                        +
                                                        444  ienrv(jj) = ntab
                                                        +
                                                        445  enddo
                                                        +
                                                        446  ipfnrv = 0
                                                        +
                                                        447  elseif(iyyy==255) then
                                                        +
                                                        448  ! End the definition of new reference values.
                                                        +
                                                        449  ibtnrv = 0
                                                        +
                                                        450  else
                                                        +
                                                        451  ! Begin the definition of new reference values.
                                                        +
                                                        452  if(ibtnrv/=0) then
                                                        +
                                                        453  write(bort_str,'("BUFRLIB: TABSUB - THERE ARE TWO SIMULTANEOUS '// &
                                                        +
                                                        454  'CHANGE REF VALUE OPERATIONS IN THE TREE BUILT FROM INPUT MNEMONIC ",A)') nemo
                                                        +
                                                        455  call bort(bort_str)
                                                        +
                                                        456  endif
                                                        +
                                                        457  ibtnrv = iyyy
                                                        +
                                                        458  endif
                                                        +
                                                        459  elseif(itab==7) then
                                                        +
                                                        460  if(iyyy>0) then
                                                        +
                                                        461  if(icdw/=0) then
                                                        +
                                                        462  write(bort_str,'("BUFRLIB: TABSUB - THERE ARE TWO SIMULTANEOUS '// &
                                                        +
                                                        463  'CHANGE DATA WIDTH OPERATIONS IN THE TREE BUILT FROM INPUT MNEMONIC ",A)') nemo
                                                        +
                                                        464  call bort(bort_str)
                                                        +
                                                        465  endif
                                                        +
                                                        466  if(icsc/=0) then
                                                        +
                                                        467  write(bort_str,'("BUFRLIB: TABSUB - THERE ARE TWO SIMULTANEOUS '// &
                                                        +
                                                        468  'CHANGE DATA SCALE OPERATIONS IN THE TREE BUILT FROM INPUT MNEMONIC ",A)') nemo
                                                        +
                                                        469  call bort(bort_str)
                                                        +
                                                        470  endif
                                                        +
                                                        471  icdw = ((10*iyyy)+2)/3
                                                        +
                                                        472  icsc = iyyy
                                                        +
                                                        473  icrv = 10**iyyy
                                                        +
                                                        474  else
                                                        +
                                                        475  icsc = 0
                                                        +
                                                        476  icdw = 0
                                                        +
                                                        477  icrv = 1
                                                        +
                                                        478  endif
                                                        +
                                                        479  elseif(itab==8) then
                                                        +
                                                        480  incw = iyyy
                                                        +
                                                        481  elseif((itab>=21).and.(iokoper(nems)==1)) then
                                                        +
                                                        482  ! Save the location of this operator within the jump/link table, for possible later use.
                                                        +
                                                        483  if(.not.ltamc) then
                                                        +
                                                        484  ltamc = .true.
                                                        +
                                                        485  ntamc = ntamc+1
                                                        +
                                                        486  end if
                                                        +
                                                        487  if(ntco(ntamc)+1>mxtco) call bort('BUFRLIB: TABSUB - MXTCO OVERFLOW')
                                                        +
                                                        488  ntco(ntamc) = ntco(ntamc)+1
                                                        +
                                                        489  ctco(ntamc,ntco(ntamc)) = nems(1:6)
                                                        + +
                                                        491  endif
                                                        +
                                                        492  else
                                                        +
                                                        493  nodl(limb) = ntab+1
                                                        +
                                                        494  irep = irp(n,limb)
                                                        +
                                                        495  iknt = krp(n,limb)
                                                        +
                                                        496  jum0 = jmp0(limb)
                                                        +
                                                        497  call tabent(lun,nems,tab,itab,irep,iknt,jum0)
                                                        +
                                                        498  endif
                                                        +
                                                        499 
                                                        +
                                                        500  if(tab=='D') then
                                                        +
                                                        501  ! Note here how a new tree "limb" is created (and is then immediately recursively resolved) whenever a Table D mnemonic
                                                        +
                                                        502  ! contains another Table D mnemonic as one of its children.
                                                        +
                                                        503  limb = limb+1
                                                        +
                                                        504  if(limb>maxlim) then
                                                        +
                                                        505  write(bort_str,'("BUFRLIB: TABSUB - THERE ARE TOO MANY NESTED '// &
                                                        +
                                                        506  'TABLE D SEQUENCES (TREES) WITHIN INPUT MNEMONIC ",A," - THE LIMIT IS",I4)') nemo,maxlim
                                                        +
                                                        507  call bort(bort_str)
                                                        +
                                                        508  endif
                                                        +
                                                        509  call nemtbd(lun,itab,nseq,nem(1,limb),irp(1,limb),krp(1,limb))
                                                        +
                                                        510  ntag(limb,1) = 1
                                                        +
                                                        511  ntag(limb,2) = nseq
                                                        +
                                                        512  jmp0(limb) = ntab
                                                        +
                                                        513  goto 11
                                                        +
                                                        514  elseif(drop(limb)) then
                                                        +
                                                        515  do while (.true.)
                                                        +
                                                        516  link(nodl(limb)) = 0
                                                        +
                                                        517  limb = limb-1
                                                        +
                                                        518  if(limb==0) then
                                                        +
                                                        519  if(icrv/=1) then
                                                        +
                                                        520  write(bort_str,'("BUFRLIB: TABSUB - A 2-07-YYY OPERATOR WAS '// &
                                                        +
                                                        521  'NOT CANCELLED IN THE TREE BUILT FROM INPUT MNEMONIC ",A)') nemo
                                                        +
                                                        522  call bort(bort_str)
                                                        +
                                                        523  endif
                                                        +
                                                        524  if(icdw/=0) then
                                                        +
                                                        525  write(bort_str,'("BUFRLIB: TABSUB - A 2-01-YYY OPERATOR WAS '// &
                                                        +
                                                        526  'NOT CANCELLED IN THE TREE BUILT FROM INPUT MNEMONIC ",A)') nemo
                                                        +
                                                        527  call bort(bort_str)
                                                        +
                                                        528  endif
                                                        +
                                                        529  if(icsc/=0) then
                                                        +
                                                        530  write(bort_str,'("BUFRLIB: TABSUB - A 2-02-YYY OPERATOR WAS '// &
                                                        +
                                                        531  'NOT CANCELLED IN THE TREE BUILT FROM INPUT MNEMONIC ",A)') nemo
                                                        +
                                                        532  call bort(bort_str)
                                                        +
                                                        533  endif
                                                        +
                                                        534  if(incw/=0) then
                                                        +
                                                        535  write(bort_str,'("BUFRLIB: TABSUB - A 2-08-YYY OPERATOR WAS '// &
                                                        +
                                                        536  'NOT CANCELLED IN THE TREE BUILT FROM INPUT MNEMONIC ",A)') nemo
                                                        +
                                                        537  call bort(bort_str)
                                                        +
                                                        538  endif
                                                        +
                                                        539  if(ibtnrv/=0) then
                                                        +
                                                        540  write(bort_str,'("BUFRLIB: TABSUB - A 2-03-YYY OPERATOR WAS '// &
                                                        +
                                                        541  'APPLIED WITHOUT ANY SUBSEQUENT 2-03-255 OPERATOR FOR INPUT MNEMONIC ",A)') nemo
                                                        +
                                                        542  call bort(bort_str)
                                                        +
                                                        543  endif
                                                        +
                                                        544  if(ipfnrv/=0) then
                                                        +
                                                        545  ! One or more new reference values were defined for this subset, but there was no subsequent 2-03-000 operator,
                                                        +
                                                        546  ! so set all IENRV(*) values for this subset to point to the last element of the subset within the jump/link table.
                                                        +
                                                        547  ! Note that, if there had been a subsequent 2-03-000 operator, then these IENRV(*) values would have already been
                                                        +
                                                        548  ! properly set above.
                                                        +
                                                        549  do jj=ipfnrv,nnrv
                                                        +
                                                        550  ienrv(jj) = ntab
                                                        +
                                                        551  enddo
                                                        +
                                                        552  endif
                                                        +
                                                        553  return
                                                        +
                                                        554  endif
                                                        +
                                                        555  if(.not.drop(limb)) exit
                                                        +
                                                        556  enddo
                                                        +
                                                        557  link(nodl(limb)) = ntab+1
                                                        +
                                                        558  goto 11
                                                        +
                                                        559  elseif(tab/='C') then
                                                        +
                                                        560  link(nodl(limb)) = ntab+1
                                                        +
                                                        561  endif
                                                        +
                                                        562 
                                                        +
                                                        563  enddo
                                                        +
                                                        564 
                                                        +
                                                        565  write(bort_str,'("BUFRLIB: TABSUB - ENTITIES WERE NOT SUCCESSFULLY RESOLVED (BY EMULATING RESURSION) FOR SUBSET '// &
                                                        +
                                                        566  'DEFINED BY TBL A MNEM. ",A)') nemo
                                                        +
                                                        567  call bort(bort_str)
                                                        +
                                                        568 
                                                        +
                                                        569  return
                                                        +
                                                        570 end subroutine tabsub
                                                        +
                                                        571 
                                                        +
                                                        585 subroutine tabent(lun,nemo,tab,itab,irep,iknt,jum0)
                                                        +
                                                        586 
                                                        +
                                                        587  use modv_vars, only: mxnrv, typs, reps, lens
                                                        +
                                                        588 
                                                        +
                                                        589  use moda_tables
                                                        +
                                                        590  use moda_nrv203
                                                        +
                                                        591 
                                                        +
                                                        592  implicit none
                                                        +
                                                        593 
                                                        +
                                                        594  integer, intent(in) :: lun, itab, irep, iknt, jum0
                                                        +
                                                        595  integer icdw, icsc, icrv, incw, i, jm0, node, iscl, iref, ibit
                                                        +
                                                        596 
                                                        +
                                                        597  character*24 unit
                                                        +
                                                        598  character*10 rtag
                                                        +
                                                        599  character*8, intent(in) :: nemo
                                                        +
                                                        600  character, intent(in) :: tab
                                                        +
                                                        601  character*3 typt
                                                        +
                                                        602 
                                                        +
                                                        603  common /tabccc/ icdw, icsc, icrv, incw
                                                        +
                                                        604 
                                                        +
                                                        605  jm0 = jum0
                                                        +
                                                        606 
                                                        +
                                                        607  ! Make a jump/link table entry for a replicator
                                                        +
                                                        608 
                                                        +
                                                        609  if(irep/=0) then
                                                        +
                                                        610  rtag = reps(irep)//nemo
                                                        +
                                                        611  do i=1,10
                                                        +
                                                        612  if(rtag(i:i)==' ') then
                                                        +
                                                        613  rtag(i:i) = reps(irep+5)
                                                        +
                                                        614  call inctab(rtag,typs(irep),node)
                                                        +
                                                        615  jump(node) = node+1
                                                        +
                                                        616  jmpb(node) = jm0
                                                        +
                                                        617  link(node) = 0
                                                        +
                                                        618  ibt(node) = lens(irep)
                                                        +
                                                        619  irf(node) = 0
                                                        +
                                                        620  isc(node) = 0
                                                        +
                                                        621  if(irep==1) irf(node) = iknt
                                                        +
                                                        622  jm0 = node
                                                        +
                                                        623  exit
                                                        +
                                                        624  endif
                                                        +
                                                        625  enddo
                                                        +
                                                        626  endif
                                                        +
                                                        627 
                                                        +
                                                        628  ! Make a jump/link entry for an element or a sequence
                                                        +
                                                        629 
                                                        +
                                                        630  if(tab=='B') then
                                                        +
                                                        631  call nemtbb(lun,itab,unit,iscl,iref,ibit)
                                                        +
                                                        632  if(unit(1:5)=='CCITT') then
                                                        +
                                                        633  typt = 'CHR'
                                                        +
                                                        634  else
                                                        +
                                                        635  typt = 'NUM'
                                                        +
                                                        636  endif
                                                        +
                                                        637  call inctab(nemo,typt,node)
                                                        +
                                                        638  jump(node) = 0
                                                        +
                                                        639  jmpb(node) = jm0
                                                        +
                                                        640  link(node) = 0
                                                        +
                                                        641  ibt(node) = ibit
                                                        +
                                                        642  irf(node) = iref
                                                        +
                                                        643  isc(node) = iscl
                                                        +
                                                        644  if(unit(1:4)=='CODE') then
                                                        +
                                                        645  typt = 'COD'
                                                        +
                                                        646  elseif(unit(1:4)=='FLAG') then
                                                        +
                                                        647  typt = 'FLG'
                                                        +
                                                        648  endif
                                                        +
                                                        649  if( (typt=='NUM') .and. (ibtnrv/=0) ) then
                                                        +
                                                        650  ! This node contains a new (redefined) reference value.
                                                        +
                                                        651  if(nnrv+1>mxnrv) call bort('BUFRLIB: TABENT - MXNRV OVERFLOW')
                                                        +
                                                        652  nnrv = nnrv+1
                                                        +
                                                        653  tagnrv(nnrv) = nemo
                                                        +
                                                        654  inodnrv(nnrv) = node
                                                        +
                                                        655  isnrv(nnrv) = node+1
                                                        +
                                                        656  ibt(node) = ibtnrv
                                                        +
                                                        657  if(ipfnrv==0) ipfnrv = nnrv
                                                        +
                                                        658  elseif( (typt=='NUM') .and. (nemo(1:3)/='204') ) then
                                                        +
                                                        659  ibt(node) = ibt(node) + icdw
                                                        +
                                                        660  isc(node) = isc(node) + icsc
                                                        +
                                                        661  irf(node) = irf(node) * icrv
                                                        +
                                                        662  elseif( (typt=='CHR') .and. (incw>0) ) then
                                                        +
                                                        663  ibt(node) = incw * 8
                                                        +
                                                        664  endif
                                                        +
                                                        665  else ! tab=='D'
                                                        +
                                                        666  if(irep==0) then
                                                        +
                                                        667  typt = 'SEQ'
                                                        +
                                                        668  else
                                                        +
                                                        669  typt = typs(irep+5)
                                                        +
                                                        670  endif
                                                        +
                                                        671  call inctab(nemo,typt,node)
                                                        +
                                                        672  jump(node) = node+1
                                                        +
                                                        673  jmpb(node) = jm0
                                                        +
                                                        674  link(node) = 0
                                                        +
                                                        675  ibt(node) = 0
                                                        +
                                                        676  irf(node) = 0
                                                        +
                                                        677  isc(node) = 0
                                                        +
                                                        678  endif
                                                        +
                                                        679 
                                                        +
                                                        680  return
                                                        +
                                                        681 end subroutine tabent
                                                        +
                                                        682 
                                                        +
                                                        695 subroutine inctab(atag,atyp,node)
                                                        +
                                                        696 
                                                        +
                                                        697  use modv_vars, only: maxjl
                                                        +
                                                        698 
                                                        +
                                                        699  use moda_tables
                                                        +
                                                        700 
                                                        +
                                                        701  implicit none
                                                        +
                                                        702 
                                                        +
                                                        703  integer, intent(out) :: node
                                                        +
                                                        704 
                                                        +
                                                        705  character*(*), intent(in) :: atag, atyp
                                                        +
                                                        706  character*128 bort_str
                                                        +
                                                        707 
                                                        +
                                                        708  ntab = ntab+1
                                                        +
                                                        709  if(ntab>maxjl) then
                                                        +
                                                        710  write(bort_str,'("BUFRLIB: INCTAB - THE NUMBER OF JUMP/LINK TABLE ENTRIES EXCEEDS THE LIMIT, MAXJL (",I7,")")') maxjl
                                                        +
                                                        711  call bort(bort_str)
                                                        +
                                                        712  endif
                                                        +
                                                        713  tag(ntab) = atag
                                                        +
                                                        714  typ(ntab) = atyp
                                                        +
                                                        715  node = ntab
                                                        +
                                                        716 
                                                        +
                                                        717  return
                                                        +
                                                        718 end subroutine inctab
                                                        +
                                                        719 
                                                        +
                                                        740 integer function lstjpb(node,lun,jbtyp) result(iret)
                                                        +
                                                        741 
                                                        +
                                                        742  use moda_msgcwd
                                                        +
                                                        743  use moda_tables
                                                        +
                                                        744 
                                                        +
                                                        745  implicit none
                                                        +
                                                        746 
                                                        +
                                                        747  integer, intent(in) :: node, lun
                                                        +
                                                        748  integer nod
                                                        +
                                                        749 
                                                        +
                                                        750  character*(*), intent(in) :: jbtyp
                                                        +
                                                        751  character*128 bort_str
                                                        +
                                                        752 
                                                        +
                                                        753  if(node<inode(lun)) then
                                                        +
                                                        754  write(bort_str,'("BUFRLIB: LSTJPB - TABLE NODE (",I7,") IS OUT OF BOUNDS, < LOWER BOUNDS (",I7,")")') node,inode(lun)
                                                        +
                                                        755  call bort(bort_str)
                                                        +
                                                        756  endif
                                                        +
                                                        757  if(node>isc(inode(lun))) then
                                                        +
                                                        758  write(bort_str,'("BUFRLIB: LSTJPB - TABLE NODE (",I7,") IS OUT OF BOUNDS, > UPPER BOUNDS (",I7,")")') node,isc(inode(lun))
                                                        +
                                                        759  call bort(bort_str)
                                                        +
                                                        760  endif
                                                        +
                                                        761 
                                                        +
                                                        762  nod = node
                                                        +
                                                        763 
                                                        +
                                                        764  ! Find this or the previous node of type jbtyp
                                                        +
                                                        765 
                                                        +
                                                        766  do while (nod/=0)
                                                        +
                                                        767  if(typ(nod)==jbtyp) exit
                                                        +
                                                        768  nod = jmpb(nod)
                                                        +
                                                        769  enddo
                                                        +
                                                        770 
                                                        +
                                                        771  iret = nod
                                                        +
                                                        772 
                                                        +
                                                        773  return
                                                        +
                                                        774 end function lstjpb
                                                        +
                                                        775 
                                                        +
                                                        786 integer function ishrdx(lud,lun) result(iret)
                                                        +
                                                        787 
                                                        +
                                                        788  use moda_tababd
                                                        +
                                                        789 
                                                        +
                                                        790  implicit none
                                                        +
                                                        791 
                                                        +
                                                        792  integer, intent(in) :: lud, lun
                                                        +
                                                        793  integer ii
                                                        +
                                                        794 
                                                        +
                                                        795  ! Note that, for any file ID luX, the mtab(*,luX) array contains pointer indices into the internal jump/link table
                                                        +
                                                        796  ! for each of the Table A mnemonics that is currently defined for that luX value. Thus, if all of these indices are
                                                        +
                                                        797  ! identical for two different luX values, then the associated logical units are sharing table information.
                                                        +
                                                        798 
                                                        +
                                                        799  if ( ( ntba(lud) >= 1 ) .and. ( ntba(lud) == ntba(lun) ) ) then
                                                        +
                                                        800  ii = 1
                                                        +
                                                        801  iret = 1
                                                        +
                                                        802  do while ( ( ii <= ntba(lud) ) .and. ( iret == 1 ) )
                                                        +
                                                        803  if ( ( mtab(ii,lud) /= 0 ) .and. ( mtab(ii,lud) == mtab(ii,lun) ) ) then
                                                        +
                                                        804  ii = ii + 1
                                                        +
                                                        805  else
                                                        +
                                                        806  iret = 0
                                                        +
                                                        807  endif
                                                        +
                                                        808  enddo
                                                        +
                                                        809  else
                                                        +
                                                        810  iret = 0
                                                        +
                                                        811  endif
                                                        +
                                                        812 
                                                        +
                                                        813  return
                                                        +
                                                        814 end function ishrdx
                                                        +
                                                        815 
                                                        +
                                                        831 integer function icmpdx(lud,lun) result(iret)
                                                        +
                                                        832 
                                                        +
                                                        833  use moda_tababd
                                                        +
                                                        834 
                                                        +
                                                        835  implicit none
                                                        +
                                                        836 
                                                        +
                                                        837  integer, intent(in) :: lud, lun
                                                        +
                                                        838  integer ishrdx, i
                                                        +
                                                        839 
                                                        +
                                                        840  ! First, check whether the two units are actually sharing tables.
                                                        +
                                                        841  ! If so, then they obviously have the same table information.
                                                        +
                                                        842 
                                                        +
                                                        843  iret = ishrdx(lud,lun)
                                                        +
                                                        844  if ( iret == 1 ) return
                                                        +
                                                        845 
                                                        +
                                                        846  ! Otherwise, check whether the internal Table A, B and D entries are all identical between the two units.
                                                        +
                                                        847 
                                                        +
                                                        848  if ( ( ntba(lud) == 0 ) .or. ( ntba(lun) /= ntba(lud) ) ) return
                                                        +
                                                        849  do i = 1, ntba(lud)
                                                        +
                                                        850  if ( idna(i,lun,1) /= idna(i,lud,1) ) return
                                                        +
                                                        851  if ( idna(i,lun,2) /= idna(i,lud,2) ) return
                                                        +
                                                        852  if ( taba(i,lun) /= taba(i,lud) ) return
                                                        +
                                                        853  enddo
                                                        +
                                                        854 
                                                        +
                                                        855  if ( ( ntbb(lud) == 0 ) .or. ( ntbb(lun) /= ntbb(lud) ) ) return
                                                        +
                                                        856  do i = 1, ntbb(lud)
                                                        +
                                                        857  if ( idnb(i,lun) /= idnb(i,lud) ) return
                                                        +
                                                        858  if ( tabb(i,lun) /= tabb(i,lud) ) return
                                                        +
                                                        859  enddo
                                                        +
                                                        860 
                                                        +
                                                        861  if ( ( ntbd(lud) == 0 ) .or. ( ntbd(lun) /= ntbd(lud) ) ) return
                                                        +
                                                        862  do i = 1, ntbd(lud)
                                                        +
                                                        863  if ( idnd(i,lun) /= idnd(i,lud) ) return
                                                        +
                                                        864  if ( tabd(i,lun) /= tabd(i,lud) ) return
                                                        +
                                                        865  enddo
                                                        +
                                                        866 
                                                        +
                                                        867  iret = 1
                                                        +
                                                        868 
                                                        +
                                                        869  return
                                                        +
                                                        870 end function icmpdx
                                                        +
                                                        871 
                                                        +
                                                        897 subroutine drstpl(inod,lun,inv1,inv2,invn)
                                                        +
                                                        898 
                                                        +
                                                        899  use moda_tables
                                                        +
                                                        900 
                                                        +
                                                        901  implicit none
                                                        +
                                                        902 
                                                        +
                                                        903  integer, intent(in) :: inod, lun, inv1
                                                        +
                                                        904  integer, intent(inout) :: inv2
                                                        +
                                                        905  integer, intent(out) :: invn
                                                        +
                                                        906  integer node, invwin
                                                        +
                                                        907 
                                                        +
                                                        908  do while (.true.)
                                                        +
                                                        909  node = inod
                                                        +
                                                        910  do while (.true.)
                                                        +
                                                        911  node = jmpb(node)
                                                        +
                                                        912  if(node==0) return
                                                        +
                                                        913  if(typ(node)=='DRS' .or. typ(node)=='DRB') then
                                                        +
                                                        914  invn = invwin(node,lun,inv1,inv2)
                                                        +
                                                        915  if(invn>0) then
                                                        +
                                                        916  call usrtpl(lun,invn,1)
                                                        +
                                                        917  call newwin(lun,inv1,inv2)
                                                        +
                                                        918  invn = invwin(inod,lun,invn,inv2)
                                                        +
                                                        919  if(invn>0) return
                                                        +
                                                        920  exit
                                                        +
                                                        921  endif
                                                        +
                                                        922  endif
                                                        +
                                                        923  enddo
                                                        +
                                                        924  enddo
                                                        +
                                                        925 
                                                        +
                                                        926  return
                                                        +
                                                        927 end subroutine drstpl
                                                        +
                                                        928 
                                                        +
                                                        961 recursive subroutine nemspecs ( lunit, nemo, nnemo, nscl, nref, nbts, iret )
                                                        +
                                                        962 
                                                        +
                                                        963  use modv_vars, only: im8b
                                                        +
                                                        964 
                                                        +
                                                        965  use moda_usrint
                                                        +
                                                        966  use moda_msgcwd
                                                        +
                                                        967  use moda_tables
                                                        +
                                                        968  use moda_nrv203
                                                        +
                                                        969 
                                                        +
                                                        970  implicit none
                                                        +
                                                        971 
                                                        +
                                                        972  integer, intent(in) :: lunit, nnemo
                                                        +
                                                        973  integer, intent(out) :: nscl, nref, nbts, iret
                                                        +
                                                        974  integer my_lunit, my_nnemo, lun, il, im, nidx, ierfst, node, ltn, jj
                                                        +
                                                        975 
                                                        +
                                                        976  character*(*), intent(in) :: nemo
                                                        +
                                                        977  character*10 tagn
                                                        +
                                                        978 
                                                        +
                                                        979  ! Check for I8 integers.
                                                        +
                                                        980 
                                                        +
                                                        981  if(im8b) then
                                                        +
                                                        982  im8b=.false.
                                                        +
                                                        983 
                                                        +
                                                        984  call x84(lunit,my_lunit,1)
                                                        +
                                                        985  call x84(nnemo,my_nnemo,1)
                                                        +
                                                        986  call nemspecs(my_lunit,nemo,my_nnemo,nscl,nref,nbts,iret)
                                                        +
                                                        987  call x48(nscl,nscl,1)
                                                        +
                                                        988  call x48(nref,nref,1)
                                                        +
                                                        989  call x48(nbts,nbts,1)
                                                        +
                                                        990  call x48(iret,iret,1)
                                                        +
                                                        991 
                                                        +
                                                        992  im8b=.true.
                                                        +
                                                        993  return
                                                        +
                                                        994  endif
                                                        +
                                                        995 
                                                        +
                                                        996  iret = -1
                                                        +
                                                        997 
                                                        +
                                                        998  ! Get lun from lunit.
                                                        +
                                                        999 
                                                        +
                                                        1000  call status( lunit, lun, il, im )
                                                        +
                                                        1001  if ( il == 0 ) return
                                                        +
                                                        1002  if ( inode(lun) /= inv(1,lun) ) return
                                                        +
                                                        1003 
                                                        +
                                                        1004  ! Starting from the beginning of the subset, locate the (nnemo)th occurrence of nemo.
                                                        +
                                                        1005 
                                                        +
                                                        1006  call fstag( lun, nemo, nnemo, 1, nidx, ierfst )
                                                        +
                                                        1007  if ( ierfst /= 0 ) return
                                                        +
                                                        1008 
                                                        +
                                                        1009  ! Confirm that nemo is a Table B mnemonic.
                                                        +
                                                        1010 
                                                        +
                                                        1011  node = inv(nidx,lun)
                                                        +
                                                        1012  if ( ( typ(node) /= 'NUM' ) .and. ( typ(node) /= 'CHR' ) ) return
                                                        +
                                                        1013 
                                                        +
                                                        1014  ! Get the scale factor, reference value and bit width, including accounting for any Table C operators which may be in
                                                        +
                                                        1015  ! scope for this particular occurrence of nemo.
                                                        +
                                                        1016 
                                                        +
                                                        1017  iret = 0
                                                        +
                                                        1018 
                                                        +
                                                        1019  nscl = isc(node)
                                                        +
                                                        1020  nbts = ibt(node)
                                                        +
                                                        1021  nref = irf(node)
                                                        +
                                                        1022 
                                                        +
                                                        1023  if ( nnrv > 0 ) then
                                                        +
                                                        1024 
                                                        +
                                                        1025  ! There are nodes containing redefined reference values (from one or more 2-03-YYY operators) in the jump/link table,
                                                        +
                                                        1026  ! so we need to check if this node is one of them.
                                                        +
                                                        1027 
                                                        +
                                                        1028  tagn = ' '
                                                        +
                                                        1029  call strsuc( nemo, tagn, ltn )
                                                        +
                                                        1030  if ( ( ltn <= 0 ) .or. ( ltn > 8 ) ) return
                                                        +
                                                        1031 
                                                        +
                                                        1032  do jj = 1, nnrv
                                                        +
                                                        1033  if ( ( node /= inodnrv(jj) ) .and. ( tagn(1:8) == tagnrv(jj) ) .and. &
                                                        +
                                                        1034  ( node >= isnrv(jj) ) .and. ( node <= ienrv(jj) ) ) then
                                                        +
                                                        1035  nref = int(nrv(jj))
                                                        +
                                                        1036  return
                                                        +
                                                        1037  end if
                                                        +
                                                        1038  end do
                                                        +
                                                        1039 
                                                        +
                                                        1040  end if
                                                        +
                                                        1041 
                                                        +
                                                        1042  return
                                                        +
                                                        1043 end subroutine nemspecs
                                                        +
                                                        1044 
                                                        +
                                                        1064 subroutine fstag ( lun, utag, nutag, nin, nout, iret )
                                                        +
                                                        1065 
                                                        +
                                                        1066  use moda_usrint
                                                        +
                                                        1067  use moda_tables
                                                        +
                                                        1068 
                                                        +
                                                        1069  implicit none
                                                        +
                                                        1070 
                                                        +
                                                        1071  integer, intent(in) :: lun, nutag, nin
                                                        +
                                                        1072  integer, intent(out) :: nout, iret
                                                        +
                                                        1073  integer, parameter :: maxtg = 15
                                                        +
                                                        1074  integer ntg, istep, itagct
                                                        +
                                                        1075 
                                                        +
                                                        1076  character*(*), intent(in) :: utag
                                                        +
                                                        1077  character*10 tgs(maxtg)
                                                        +
                                                        1078 
                                                        +
                                                        1079  iret = -1
                                                        +
                                                        1080 
                                                        +
                                                        1081  ! Confirm that there's only one mnemonic in the input string.
                                                        +
                                                        1082 
                                                        +
                                                        1083  call parstr( utag, tgs, maxtg, ntg, ' ', .true. )
                                                        +
                                                        1084  if ( ntg /= 1 ) return
                                                        +
                                                        1085 
                                                        +
                                                        1086  ! Starting from nin, search either forward or backward for the (nutag)th occurrence of utag.
                                                        +
                                                        1087 
                                                        +
                                                        1088  if ( nutag == 0 ) return
                                                        +
                                                        1089  istep = isign( 1, nutag )
                                                        +
                                                        1090  itagct = 0
                                                        +
                                                        1091  nout = nin + istep
                                                        +
                                                        1092  do while ( ( nout >= 1 ) .and. ( nout <= nval(lun) ) )
                                                        +
                                                        1093  if ( tgs(1) == tag(inv(nout,lun)) ) then
                                                        +
                                                        1094  itagct = itagct + 1
                                                        +
                                                        1095  if ( itagct == iabs(nutag) ) then
                                                        +
                                                        1096  iret = 0
                                                        +
                                                        1097  return
                                                        +
                                                        1098  endif
                                                        +
                                                        1099  endif
                                                        +
                                                        1100  nout = nout + istep
                                                        +
                                                        1101  enddo
                                                        +
                                                        1102 
                                                        +
                                                        1103  return
                                                        +
                                                        1104 end subroutine fstag
                                                        +
                                                        1105 
                                                        +
                                                        1125 recursive subroutine gettagpr ( lunit, tagch, ntagch, tagpr, iret )
                                                        +
                                                        1126 
                                                        +
                                                        1127  use modv_vars, only: im8b
                                                        +
                                                        1128 
                                                        +
                                                        1129  use moda_usrint
                                                        +
                                                        1130  use moda_msgcwd
                                                        +
                                                        1131  use moda_tables
                                                        +
                                                        1132 
                                                        +
                                                        1133  implicit none
                                                        +
                                                        1134 
                                                        +
                                                        1135  integer, intent(in) :: lunit, ntagch
                                                        +
                                                        1136  integer, intent(out) :: iret
                                                        +
                                                        1137  integer my_lunit, my_ntagch, lun, il, im, nch
                                                        +
                                                        1138 
                                                        +
                                                        1139  character*(*), intent(in) :: tagch
                                                        +
                                                        1140  character*(*), intent(out) :: tagpr
                                                        +
                                                        1141 
                                                        +
                                                        1142  ! Check for I8 integers.
                                                        +
                                                        1143 
                                                        +
                                                        1144  if(im8b) then
                                                        +
                                                        1145  im8b=.false.
                                                        +
                                                        1146 
                                                        +
                                                        1147  call x84 ( lunit, my_lunit, 1 )
                                                        +
                                                        1148  call x84 ( ntagch, my_ntagch, 1 )
                                                        +
                                                        1149  call gettagpr ( my_lunit, tagch, my_ntagch, tagpr, iret )
                                                        +
                                                        1150  call x48 ( iret, iret, 1 )
                                                        +
                                                        1151 
                                                        +
                                                        1152  im8b=.true.
                                                        +
                                                        1153  return
                                                        +
                                                        1154  endif
                                                        +
                                                        1155 
                                                        +
                                                        1156  iret = -1
                                                        +
                                                        1157 
                                                        +
                                                        1158  ! Get lun from lunit.
                                                        +
                                                        1159 
                                                        +
                                                        1160  call status( lunit, lun, il, im )
                                                        +
                                                        1161  if ( il == 0 ) return
                                                        +
                                                        1162  if ( inode(lun) /= inv(1,lun) ) return
                                                        +
                                                        1163 
                                                        +
                                                        1164  ! Get tagpr from the (ntagch)th occurrence of tagch.
                                                        +
                                                        1165 
                                                        +
                                                        1166  call fstag( lun, tagch, ntagch, 1, nch, iret )
                                                        +
                                                        1167  if ( iret /= 0 ) return
                                                        +
                                                        1168 
                                                        +
                                                        1169  tagpr = tag(jmpb(inv(nch,lun)))
                                                        +
                                                        1170 
                                                        +
                                                        1171  return
                                                        +
                                                        1172 end subroutine gettagpr
                                                        +
                                                        1173 
                                                        +
                                                        1190 integer function invtag(node,lun,inv1,inv2) result(iret)
                                                        +
                                                        1191 
                                                        +
                                                        1192  use moda_usrint
                                                        +
                                                        1193  use moda_tables
                                                        +
                                                        1194 
                                                        +
                                                        1195  implicit none
                                                        +
                                                        1196 
                                                        +
                                                        1197  integer, intent(in) :: node, lun, inv1, inv2
                                                        +
                                                        1198  integer iprt
                                                        +
                                                        1199 
                                                        +
                                                        1200  character*10 tagn
                                                        +
                                                        1201 
                                                        +
                                                        1202  common /quiet/ iprt
                                                        +
                                                        1203 
                                                        +
                                                        1204  if(node/=0) then
                                                        +
                                                        1205  tagn = tag(node)
                                                        +
                                                        1206  ! Search between inv1 and inv2
                                                        +
                                                        1207  do iret=inv1,inv2
                                                        +
                                                        1208  if(tag(inv(iret,lun))==tagn) return
                                                        +
                                                        1209  enddo
                                                        +
                                                        1210  endif
                                                        +
                                                        1211 
                                                        +
                                                        1212  iret = 0
                                                        +
                                                        1213 
                                                        +
                                                        1214  if(iprt>=2) then
                                                        +
                                                        1215  call errwrt('++++++++++++++BUFR ARCHIVE LIBRARY+++++++++++++++++')
                                                        +
                                                        1216  call errwrt('BUFRLIB: INVTAG - RETURNING WITH A VALUE OF 0')
                                                        +
                                                        1217  call errwrt('++++++++++++++BUFR ARCHIVE LIBRARY+++++++++++++++++')
                                                        +
                                                        1218  call errwrt(' ')
                                                        +
                                                        1219  endif
                                                        +
                                                        1220 
                                                        +
                                                        1221  return
                                                        +
                                                        1222 end function invtag
                                                        +
                                                        1223 
                                                        +
                                                        1238 integer function invwin(node,lun,inv1,inv2) result(iret)
                                                        +
                                                        1239 
                                                        +
                                                        1240  use moda_usrint
                                                        +
                                                        1241 
                                                        +
                                                        1242  implicit none
                                                        +
                                                        1243 
                                                        +
                                                        1244  integer, intent(in) :: node, lun, inv1, inv2
                                                        +
                                                        1245  integer iprt, idx
                                                        +
                                                        1246 
                                                        +
                                                        1247  character*80 errstr
                                                        +
                                                        1248 
                                                        +
                                                        1249  common /quiet/ iprt
                                                        +
                                                        1250 
                                                        +
                                                        1251  iret = 0
                                                        +
                                                        1252  if(node/=0) then
                                                        +
                                                        1253  ! Search between inv1 and inv2
                                                        +
                                                        1254  do idx=inv1,inv2
                                                        +
                                                        1255  if(inv(idx,lun)==node) then
                                                        +
                                                        1256  iret = idx
                                                        +
                                                        1257  exit
                                                        +
                                                        1258  endif
                                                        +
                                                        1259  enddo
                                                        +
                                                        1260  endif
                                                        +
                                                        1261 
                                                        +
                                                        1262  if(iprt>=3) then
                                                        +
                                                        1263  write(errstr,'(a,3i8)') 'invwin i1,i2,in ', inv1, inv2, iret
                                                        +
                                                        1264  call errwrt(errstr)
                                                        +
                                                        1265  endif
                                                        +
                                                        1266 
                                                        +
                                                        1267  return
                                                        +
                                                        1268 end function invwin
                                                        +
                                                        1269 
                                                        +
                                                        1313 subroutine getwin(node,lun,iwin,jwin)
                                                        +
                                                        1314 
                                                        +
                                                        1315  use moda_usrint
                                                        +
                                                        1316 
                                                        +
                                                        1317  implicit none
                                                        +
                                                        1318 
                                                        +
                                                        1319  integer, intent(in) :: node, lun
                                                        +
                                                        1320  integer, intent(out) :: iwin, jwin
                                                        +
                                                        1321  integer irpc, lstjpb, invwin
                                                        +
                                                        1322 
                                                        +
                                                        1323  character*128 bort_str
                                                        +
                                                        1324 
                                                        +
                                                        1325  irpc = lstjpb(node,lun,'RPC')
                                                        +
                                                        1326 
                                                        +
                                                        1327  if(irpc==0) then
                                                        +
                                                        1328  iwin = invwin(node,lun,jwin,nval(lun))
                                                        +
                                                        1329  if(iwin==0 .and. jwin>1) return
                                                        +
                                                        1330  iwin = 1
                                                        +
                                                        1331  jwin = nval(lun)
                                                        +
                                                        1332  return
                                                        +
                                                        1333  else
                                                        +
                                                        1334  iwin = invwin(irpc,lun,jwin,nval(lun))
                                                        +
                                                        1335  if(iwin==0) return
                                                        +
                                                        1336  if(val(iwin,lun)==0.) then
                                                        +
                                                        1337  iwin = 0
                                                        +
                                                        1338  return
                                                        +
                                                        1339  endif
                                                        +
                                                        1340  endif
                                                        +
                                                        1341 
                                                        +
                                                        1342  jwin = invwin(irpc,lun,iwin+1,nval(lun))
                                                        +
                                                        1343  if(jwin==0) then
                                                        +
                                                        1344  write(bort_str,'("BUFRLIB: GETWIN - SEARCHED BETWEEN",I5," AND",I5,", MISSING BRACKET")') iwin+1, nval(lun)
                                                        +
                                                        1345  call bort(bort_str)
                                                        +
                                                        1346  endif
                                                        +
                                                        1347 
                                                        +
                                                        1348  return
                                                        +
                                                        1349 end subroutine getwin
                                                        +
                                                        1350 
                                                        +
                                                        1382 subroutine conwin(lun,inc1,inc2)
                                                        +
                                                        1383 
                                                        +
                                                        1384  use moda_usrint
                                                        +
                                                        1385 
                                                        +
                                                        1386  implicit none
                                                        +
                                                        1387 
                                                        +
                                                        1388  integer, intent(in) :: lun
                                                        +
                                                        1389  integer, intent(out) :: inc1, inc2
                                                        +
                                                        1390  integer nnod, ncon, nods, nodc, ivls, kons, nc, invcon
                                                        +
                                                        1391 
                                                        +
                                                        1392  common /usrstr/ nnod, ncon, nods(20), nodc(10), ivls(10), kons(10)
                                                        +
                                                        1393 
                                                        +
                                                        1394  if(ncon==0) then
                                                        +
                                                        1395  ! There are no condition nodes in the string
                                                        +
                                                        1396  inc1 = 1
                                                        +
                                                        1397  inc2 = nval(lun)
                                                        +
                                                        1398  return
                                                        +
                                                        1399  endif
                                                        +
                                                        1400 
                                                        +
                                                        1401  outer: do while (.true.)
                                                        +
                                                        1402  call getwin(nodc(1),lun,inc1,inc2)
                                                        +
                                                        1403  if(inc1>0) then
                                                        +
                                                        1404  do nc=1,ncon
                                                        +
                                                        1405  if(invcon(nc,lun,inc1,inc2)==0) cycle outer
                                                        +
                                                        1406  enddo
                                                        +
                                                        1407  endif
                                                        +
                                                        1408  exit
                                                        +
                                                        1409  enddo outer
                                                        +
                                                        1410 
                                                        +
                                                        1411  return
                                                        +
                                                        1412 end subroutine conwin
                                                        +
                                                        1413 
                                                        +
                                                        1440 integer function invcon(nc,lun,inv1,inv2) result(iret)
                                                        +
                                                        1441 
                                                        +
                                                        1442  use moda_usrint
                                                        +
                                                        1443 
                                                        +
                                                        1444  implicit none
                                                        +
                                                        1445 
                                                        +
                                                        1446  integer, intent(in) :: nc, lun, inv1, inv2
                                                        +
                                                        1447  integer nnod, ncon, nods, nodc, ivls, kons, iprt
                                                        +
                                                        1448 
                                                        +
                                                        1449  common /usrstr/ nnod, ncon, nods(20), nodc(10), ivls(10), kons(10)
                                                        +
                                                        1450  common /quiet/ iprt
                                                        +
                                                        1451 
                                                        +
                                                        1452  if(inv1>0 .and. inv1<=nval(lun) .and. inv2>0 .and. inv2<=nval(lun)) then
                                                        +
                                                        1453  do iret=inv1,inv2
                                                        +
                                                        1454  if(inv(iret,lun)==nodc(nc)) then
                                                        +
                                                        1455  if(kons(nc)==1 .and. val(iret,lun)==ivls(nc)) return
                                                        +
                                                        1456  if(kons(nc)==2 .and. val(iret,lun)/=ivls(nc)) return
                                                        +
                                                        1457  if(kons(nc)==3 .and. val(iret,lun)<ivls(nc)) return
                                                        +
                                                        1458  if(kons(nc)==4 .and. val(iret,lun)>ivls(nc)) return
                                                        +
                                                        1459  endif
                                                        +
                                                        1460  enddo
                                                        +
                                                        1461  endif
                                                        +
                                                        1462 
                                                        +
                                                        1463  iret = 0
                                                        +
                                                        1464  if(iprt>=2) then
                                                        +
                                                        1465  call errwrt('++++++++++++++BUFR ARCHIVE LIBRARY+++++++++++++++++')
                                                        +
                                                        1466  call errwrt('BUFRLIB: INVCON - RETURNING WITH A VALUE OF 0')
                                                        +
                                                        1467  call errwrt('++++++++++++++BUFR ARCHIVE LIBRARY+++++++++++++++++')
                                                        +
                                                        1468  call errwrt(' ')
                                                        +
                                                        1469  endif
                                                        +
                                                        1470 
                                                        +
                                                        1471  return
                                                        +
                                                        1472 end function invcon
                                                        +
                                                        1473 
                                                        +
                                                        1490 subroutine newwin(lun,iwin,jwin)
                                                        +
                                                        1491 
                                                        +
                                                        1492  use moda_usrint
                                                        +
                                                        1493 
                                                        +
                                                        1494  implicit none
                                                        +
                                                        1495 
                                                        +
                                                        1496  integer, intent(in) :: lun, iwin
                                                        +
                                                        1497  integer, intent(out) :: jwin
                                                        +
                                                        1498  integer node, lstjpb
                                                        +
                                                        1499 
                                                        +
                                                        1500  character*128 bort_str
                                                        +
                                                        1501 
                                                        +
                                                        1502  if(iwin==1) then
                                                        +
                                                        1503  ! This is a "SUB" (subset) node, so return jwin as pointing to the last value of the entire subset.
                                                        +
                                                        1504  jwin = nval(lun)
                                                        +
                                                        1505  return
                                                        +
                                                        1506  endif
                                                        +
                                                        1507 
                                                        +
                                                        1508  ! Confirm that iwin points to an "RPC" node and then compute jwin.
                                                        +
                                                        1509  node = inv(iwin,lun)
                                                        +
                                                        1510  if(lstjpb(node,lun,'RPC')/=node) then
                                                        +
                                                        1511  write(bort_str,'("BUFRLIB: NEWWIN - LSTJPB FOR NODE",I6,'// &
                                                        +
                                                        1512  '" (LSTJPB=",I5,") DOES NOT EQUAL VALUE OF NODE, NOT RPC (IWIN =",I8,")")') node, lstjpb(node,lun,'RPC'), iwin
                                                        +
                                                        1513  call bort(bort_str)
                                                        +
                                                        1514  endif
                                                        +
                                                        1515  jwin = iwin+nint(val(iwin,lun))
                                                        +
                                                        1516 
                                                        +
                                                        1517  return
                                                        +
                                                        1518 end subroutine newwin
                                                        +
                                                        1519 
                                                        +
                                                        1538 subroutine nxtwin(lun,iwin,jwin)
                                                        +
                                                        1539 
                                                        +
                                                        1540  use moda_usrint
                                                        +
                                                        1541 
                                                        +
                                                        1542  implicit none
                                                        +
                                                        1543 
                                                        +
                                                        1544  integer, intent(in) :: lun
                                                        +
                                                        1545  integer, intent(inout) :: iwin, jwin
                                                        +
                                                        1546  integer node, lstjpb
                                                        +
                                                        1547 
                                                        +
                                                        1548  character*128 bort_str
                                                        +
                                                        1549 
                                                        +
                                                        1550  if(jwin==nval(lun)) then
                                                        +
                                                        1551  iwin = 0
                                                        +
                                                        1552  return
                                                        +
                                                        1553  endif
                                                        +
                                                        1554 
                                                        +
                                                        1555  node = inv(iwin,lun)
                                                        +
                                                        1556  if(lstjpb(node,lun,'RPC')/=node) then
                                                        +
                                                        1557  write(bort_str,'("BUFRLIB: NXTWIN - LSTJPB FOR NODE",I6," '// &
                                                        +
                                                        1558  '(LSTJPB=",I5,") DOES NOT EQUAL VALUE OF NODE, NOT RPC (IWIN =",I8,")")') node, lstjpb(node,lun,'RPC'), iwin
                                                        +
                                                        1559  call bort(bort_str)
                                                        +
                                                        1560  endif
                                                        +
                                                        1561  if(val(jwin,lun)==0) then
                                                        +
                                                        1562  iwin = 0
                                                        +
                                                        1563  else
                                                        +
                                                        1564  iwin = jwin
                                                        +
                                                        1565  jwin = iwin+nint(val(iwin,lun))
                                                        +
                                                        1566  endif
                                                        +
                                                        1567 
                                                        +
                                                        1568  return
                                                        +
                                                        1569 end subroutine nxtwin
                                                        +
                                                        1570 
                                                        +
                                                        1588 integer function nvnwin(node,lun,inv1,inv2,invn,nmax) result(iret)
                                                        +
                                                        1589 
                                                        +
                                                        1590  use moda_usrint
                                                        +
                                                        1591 
                                                        +
                                                        1592  implicit none
                                                        +
                                                        1593 
                                                        +
                                                        1594  integer, intent(in) :: node, lun, inv1, inv2, nmax
                                                        +
                                                        1595  integer, intent(out) :: invn(*)
                                                        +
                                                        1596  integer iprt, i, n
                                                        +
                                                        1597 
                                                        +
                                                        1598  character*128 bort_str
                                                        +
                                                        1599 
                                                        +
                                                        1600  common /quiet/ iprt
                                                        +
                                                        1601 
                                                        +
                                                        1602  iret = 0
                                                        +
                                                        1603 
                                                        +
                                                        1604  if(node==0) then
                                                        +
                                                        1605  if(iprt>=1) then
                                                        +
                                                        1606  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        1607  call errwrt('BUFRLIB: NVNWIN - NODE=0, IMMEDIATE RETURN')
                                                        +
                                                        1608  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        1609  call errwrt(' ')
                                                        +
                                                        1610  endif
                                                        +
                                                        1611  return
                                                        +
                                                        1612  endif
                                                        +
                                                        1613 
                                                        +
                                                        1614  do i=1,nmax
                                                        +
                                                        1615  invn(i) = 1e9
                                                        +
                                                        1616  enddo
                                                        +
                                                        1617 
                                                        +
                                                        1618  ! Search between inv1 and inv2
                                                        +
                                                        1619 
                                                        +
                                                        1620  do n=inv1,inv2
                                                        +
                                                        1621  if(inv(n,lun)==node) then
                                                        +
                                                        1622  if(iret+1>nmax) then
                                                        +
                                                        1623  write(bort_str,'("BUFRLIB: NVNWIN - THE NUMBER OF EVENTS EXCEEDS THE LIMIT NMAX (",I5,")")') nmax
                                                        +
                                                        1624  call bort(bort_str)
                                                        +
                                                        1625  endif
                                                        +
                                                        1626  iret = iret+1
                                                        +
                                                        1627  invn(iret) = n
                                                        +
                                                        1628  endif
                                                        +
                                                        1629  enddo
                                                        +
                                                        1630 
                                                        +
                                                        1631  return
                                                        +
                                                        1632 end function nvnwin
                                                        +
                                                        subroutine bort(str)
                                                        Log an error message, then abort the application program.
                                                        Definition: borts.F90:15
                                                        +
                                                        subroutine cpbfdx(lud, lun)
                                                        Copy all of the DX BUFR table information from one unit to another within internal memory.
                                                        Definition: copydata.F90:678
                                                        +
                                                        subroutine nemtbb(lun, itab, unit, iscl, iref, ibit)
                                                        Get information about a Table B descriptor from the internal DX BUFR tables.
                                                        Definition: dxtable.F90:1278
                                                        +
                                                        recursive subroutine wrdxtb(lundx, lunot)
                                                        Generate one or more BUFR messages from the DX BUFR tables information associated with a given BUFR f...
                                                        Definition: dxtable.F90:850
                                                        +
                                                        subroutine nemtbd(lun, itab, nseq, nems, irps, knts)
                                                        Get information about a Table D descriptor from the internal DX BUFR tables.
                                                        Definition: dxtable.F90:1346
                                                        +
                                                        subroutine errwrt(str)
                                                        Specify a custom location for the logging of error and diagnostic messages generated by the NCEPLIBS-...
                                                        Definition: errwrt.F90:32
                                                        +
                                                        subroutine nemtab(lun, nemo, idn, tab, iret)
                                                        Get information about a descriptor, based on a mnemonic.
                                                        Definition: fxy.F90:432
                                                        + + + + + + + + + + + + + + + + + + + + +
                                                        subroutine strsuc(str1, str2, lens)
                                                        Remove leading and trailing blanks from a character string.
                                                        Definition: misc.F90:220
                                                        +
                                                        Declare arrays and variables used to store bitmaps internally within a data subset definition.
                                                        +
                                                        integer, dimension(:,:), allocatable inodtco
                                                        Entries within jump/link table which contain Table C operators.
                                                        +
                                                        integer ntamc
                                                        Number of Table A mnemonics in jump/link table (up to a maximum of mxtamc) which contain at least one...
                                                        +
                                                        integer, dimension(:), allocatable inodtamc
                                                        Entries within jump/link table which contain Table A mnemonics.
                                                        +
                                                        character *6, dimension(:,:), allocatable ctco
                                                        Table C operators corresponding to inodtco.
                                                        +
                                                        integer, dimension(:), allocatable ntco
                                                        Number of Table C operators (with an XX value of 21 or greater) within the data subset definition of ...
                                                        +
                                                        Declare an array used by subroutine makestab() to keep track of which logical units share DX BUFR tab...
                                                        +
                                                        integer, dimension(:), allocatable lus
                                                        Tracking index for each file ID.
                                                        +
                                                        Declare arrays used to store information about the current BUFR message that is in the process of bei...
                                                        +
                                                        integer, dimension(:), allocatable inode
                                                        Table A mnemonic for type of BUFR message.
                                                        +
                                                        Declare arrays used by various subroutines to hold information about Table D sequences.
                                                        +
                                                        integer, dimension(:,:), allocatable krp
                                                        Replication counts corresponding to nem:
                                                        +
                                                        integer, dimension(:,:), allocatable irp
                                                        Replication indicators corresponding to nem:
                                                        +
                                                        character *8, dimension(:,:), allocatable nem
                                                        Child mnemonics within Table D sequences.
                                                        +
                                                        Declare arrays and variables for use with any 2-03-YYY (change reference value) operators present wit...
                                                        +
                                                        integer, dimension(:), allocatable ienrv
                                                        End of entry range in jump/link table, within which the corresponding new reference value in nrv will...
                                                        +
                                                        character *8, dimension(:), allocatable tagnrv
                                                        Table B mnemonic to which the corresponding new reference value in nrv applies.
                                                        +
                                                        integer, dimension(:), allocatable isnrv
                                                        Start of entry range in jump/link table, within which the corresponding new reference value in nrv wi...
                                                        +
                                                        integer nnrv
                                                        Number of entries in the jump/link table which contain new reference values (up to a maximum of mxnrv...
                                                        +
                                                        integer *8, dimension(:), allocatable nrv
                                                        New reference values corresponding to inodnrv.
                                                        +
                                                        integer ipfnrv
                                                        A number between 1 and nnrv, denoting the first entry within the module arrays which applies to the c...
                                                        +
                                                        integer, dimension(:), allocatable inodnrv
                                                        Entries within jump/link table which contain new reference values.
                                                        +
                                                        integer ibtnrv
                                                        Number of bits in Section 4 occupied by each new reference value for the current 2-03-YYY operator in...
                                                        +
                                                        Declare arrays used to store file and message status indicators for all logical units that have been ...
                                                        +
                                                        integer, dimension(:), allocatable iolun
                                                        File status indicators.
                                                        +
                                                        integer, dimension(:), allocatable iomsg
                                                        Message status indicator corresponding to iolun, denoting whether a BUFR message is currently open wi...
                                                        +
                                                        Declare arrays and variables used to store DX BUFR tables internally for multiple file IDs.
                                                        +
                                                        integer, dimension(:), allocatable ntba
                                                        Number of Table A entries for each file ID (up to a maximum of maxtba, whose value is stored in array...
                                                        +
                                                        character *600, dimension(:,:), allocatable tabd
                                                        Table D entries for each file ID.
                                                        +
                                                        character *128, dimension(:,:), allocatable taba
                                                        Table A entries for each file ID.
                                                        +
                                                        integer, dimension(:,:), allocatable mtab
                                                        Entries within jump/link table corresponding to taba.
                                                        +
                                                        integer, dimension(:,:,:), allocatable idna
                                                        Message types (in array element 1) and subtypes (in array element 2) corresponding to taba.
                                                        +
                                                        integer, dimension(:), allocatable ntbd
                                                        Number of Table D entries for each file ID (up to a maximum of maxtbd, whose value is stored in array...
                                                        +
                                                        integer, dimension(:), allocatable ntbb
                                                        Number of Table B entries for each file ID (up to a maximum of maxtbb, whose value is stored in array...
                                                        +
                                                        integer, dimension(:,:), allocatable idnd
                                                        WMO bit-wise representations of the FXY values corresponding to tabd.
                                                        +
                                                        integer, dimension(:,:), allocatable idnb
                                                        WMO bit-wise representations of the FXY values corresponding to tabb.
                                                        +
                                                        character *128, dimension(:,:), allocatable tabb
                                                        Table B entries for each file ID.
                                                        +
                                                        Declare arrays and variables used to store the internal jump/link table.
                                                        +
                                                        integer, dimension(:), allocatable jseq
                                                        Temporary storage used in expanding sequences.
                                                        +
                                                        integer, dimension(:), allocatable irf
                                                        Reference values corresponding to tag and typ:
                                                        +
                                                        integer, dimension(:,:), allocatable iseq
                                                        Temporary storage used in expanding sequences.
                                                        +
                                                        integer, dimension(:), allocatable isc
                                                        Scale factors corresponding to tag and typ:
                                                        +
                                                        integer, dimension(:), allocatable ibt
                                                        Bit widths corresponding to tag and typ:
                                                        +
                                                        integer, dimension(:), allocatable knt
                                                        Temporary storage used in calculating delayed replication counts.
                                                        +
                                                        real *8, dimension(:), allocatable vali
                                                        Initialized data values corresponding to typ:
                                                        +
                                                        character *3, dimension(:), allocatable typ
                                                        Type indicators corresponding to tag:
                                                        +
                                                        integer, dimension(:), allocatable jmpb
                                                        Jump backward indices corresponding to tag and typ:
                                                        +
                                                        character *10, dimension(:), allocatable tag
                                                        Mnemonics in the jump/link table.
                                                        +
                                                        integer ntab
                                                        Number of entries in the jump/link table.
                                                        +
                                                        integer, dimension(:), allocatable jump
                                                        Jump forward indices corresponding to tag and typ:
                                                        +
                                                        integer, dimension(:), allocatable itp
                                                        Integer type values corresponding to typ:
                                                        +
                                                        integer, dimension(:), allocatable link
                                                        Link indices corresponding to tag, typ and jmpb:
                                                        +
                                                        integer, dimension(:), allocatable knti
                                                        Initialized replication counts corresponding to typ and jump:
                                                        +
                                                        Declare arrays used to store data values and associated metadata for the current BUFR data subset in ...
                                                        +
                                                        integer, dimension(:), allocatable nval
                                                        Number of data values in BUFR data subset.
                                                        +
                                                        real *8, dimension(:,:), allocatable, target val
                                                        Data values.
                                                        +
                                                        integer, dimension(:,:), allocatable, target inv
                                                        Inventory pointer which links each data value to its corresponding node in the internal jump/link tab...
                                                        +
                                                        Declare an array used to track, for each file ID, whether the DX BUFR table associated with the corre...
                                                        +
                                                        logical, dimension(:), allocatable xtab
                                                        Tracking index for each file ID.
                                                        +
                                                        recursive subroutine status(lunit, lun, il, im)
                                                        Check whether a specified Fortran logical unit number is currently connected to the NCEPLIBS-bufr sof...
                                                        +
                                                        recursive subroutine closmg(lunin)
                                                        Close the BUFR message that is currently open for writing within internal arrays associated with logi...
                                                        +
                                                        subroutine usrtpl(lun, invn, nbmp)
                                                        Expand a subset template within internal arrays.
                                                        +
                                                        subroutine strcln
                                                        Reset the internal mnemonic string cache.
                                                        Definition: strings.F90:116
                                                        +
                                                        subroutine parstr(str, tags, mtag, ntag, sep, limit80)
                                                        Parse a string containing one or more substrings into an array of substrings.
                                                        Definition: strings.F90:473
                                                        +
                                                        subroutine x48(iin4, iout8, nval)
                                                        Encode one or more 4-byte integer values as 8-byte integer values.
                                                        Definition: x4884.F90:18
                                                        +
                                                        subroutine x84(iin8, iout4, nval)
                                                        Encode one or more 8-byte integer values as 4-byte integer values.
                                                        Definition: x4884.F90:65
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/mastertable_8F90.html b/previous_versions/v12.1.0/mastertable_8F90.html new file mode 100644 index 000000000..953f561bd --- /dev/null +++ b/previous_versions/v12.1.0/mastertable_8F90.html @@ -0,0 +1,1365 @@ + + + + + + + +NCEPLIBS-bufr: mastertable.F90 File Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        mastertable.F90 File Reference
                                                        +
                                                        +
                                                        + +

                                                        Read or write master table information. +More...

                                                        + +

                                                        Go to the source code of this file.

                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                                                        +Functions/Subroutines

                                                        subroutine codflg (cf)
                                                         Specify whether or not code and flag table information should be included during all future reads of master BUFR tables. More...
                                                         
                                                        subroutine getntbe (lunt, ifxyn, line, iret)
                                                         Read the first line of the next entry from the specified ASCII master table B, table D or table F (Code/Flag) file. More...
                                                         
                                                        subroutine gettbh (luns, lunl, tab, imt, imtv, iogce, iltv)
                                                         Read the header lines from two separate ASCII files (one standard and one local) containing master table B, table D, or Code/Flag table information. More...
                                                         
                                                        integer function igetntbl (lunt, line)
                                                         Read the next line from an ASCII master table B, table D or Code/Flag table file, ignoring any blank lines or comment lines in the process. More...
                                                         
                                                        integer function igettdi (iflag)
                                                         Depending on the value of the input flag, either return the next usable scratch Table D index for the current master table, or else reset the index back to its minimum value. More...
                                                         
                                                        integer function ireadmt (lun)
                                                         Check the most recent BUFR message that was read via a call to one of the message-reading subroutines and determine whether the appropriate corresponding BUFR master tables have already been read into internal memory. More...
                                                         
                                                        subroutine mtfnam (imt, imtv, iogce, imtvl, tbltyp, stdfil, locfil)
                                                         Based on the input arguments, determine the names of the corresponding standard and local master table files. More...
                                                         
                                                        recursive subroutine mtinfo (cmtdir, lunmt1, lunmt2)
                                                         Specify the directory location and Fortran logical unit numbers to be used when reading master BUFR tables on the local file system. More...
                                                         
                                                        integer function nemock (nemo)
                                                         Check a mnemonic for validity. More...
                                                         
                                                        subroutine rdmtbb (lunstb, lunltb, mxmtbb, imt, imtv, iogce, iltv, nmtbb, imfxyn, cmscl, cmsref, cmbw, cmunit, cmmnem, cmdsc, cmelem)
                                                         Read master Table B information from two separate ASCII files (one standard and one local) and then merge the output into a single set of arrays. More...
                                                         
                                                        subroutine rdmtbd (lunstd, lunltd, mxmtbd, mxelem, imt, imtv, iogce, iltv, nmtbd, imfxyn, cmmnem, cmdsc, cmseq, nmelem, iefxyn, ceelem)
                                                         Read master Table D information from two separate ASCII files (one standard and one local) and then merge the output into a single set of arrays. More...
                                                         
                                                        subroutine rdmtbf (lunstf, lunltf)
                                                         Read master Code/Flag table information from two separate ASCII files (one standard and one local) and then merge the output into a single set of arrays. More...
                                                         
                                                        subroutine sntbbe (ifxyn, line, mxmtbb, nmtbb, imfxyn, cmscl, cmsref, cmbw, cmunit, cmmnem, cmdsc, cmelem)
                                                         Store an entry that was previously read from an ASCII master Table B file into a set of merged Fortran arrays. More...
                                                         
                                                        subroutine sntbde (lunt, ifxyn, line, mxmtbd, mxelem, nmtbd, imfxyn, cmmnem, cmdsc, cmseq, nmelem, iefxyn, ceelem)
                                                         Store the first line of an entry that was previously read from an ASCII master Table D file into a set of merged Fortran arrays, then read and store all remaining lines of that same entry into the same merged Fortran arrays. More...
                                                         
                                                        subroutine sntbestr (hestr, ifxyn, estr)
                                                         Generate an error-reporting string containing an FXY number. More...
                                                         
                                                        subroutine sntbfe (lunt, ifxyn)
                                                         Read an entire entry from a previously-opened ASCII master Code/Flag table file, then store the information into an internal memory structure. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Read or write master table information.

                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2009-03-23
                                                        + +

                                                        Definition in file mastertable.F90.

                                                        +

                                                        Function/Subroutine Documentation

                                                        + +

                                                        ◆ codflg()

                                                        + +
                                                        +
                                                        + + + + + + + + +
                                                        subroutine codflg (character, intent(in) cf)
                                                        +
                                                        + +

                                                        Specify whether or not code and flag table information should be included during all future reads of master BUFR tables.

                                                        +
                                                        Parameters
                                                        + + +
                                                        cf- Flag indicating whether or not to include code and flag table information during all future reads of master BUFR tables:
                                                          +
                                                        • 'N' = No (the default)
                                                        • +
                                                        • 'Y' = Yes
                                                        • +
                                                        +
                                                        +
                                                        +
                                                        +

                                                        See Master BUFR Tables for more information about master BUFR tables. In particlar, note that Table B and Table D files are always read whenever master BUFR tables are being used, but the reading of Code/Flag table files is optional and should only be included if the user intends to make one or more future calls to subroutine getcfmng(); otherwise, the reading of Code/Flag table files will result in the unnecessary use of memory and other system resources.

                                                        +

                                                        If Code/Flag tables are to be read and used, they must reside in the same directory as the master Table B and Table D files on the local filesystem, as specified within a separate call to subroutine mtinfo().

                                                        +

                                                        The specified value for cf will remain in effect for all future reads of master BUFR tables, unless a subsequent call is made to this subroutine to reset the value of cf again. If this subroutine is never called, a default value of 'N' is used for cf.

                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2017-10-13
                                                        + +

                                                        Definition at line 1208 of file mastertable.F90.

                                                        + +

                                                        References bort(), capit(), and moda_tablef::cdmf.

                                                        + +

                                                        Referenced by fdebufr_c(), and sinv().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ getntbe()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        subroutine getntbe (integer, intent(in) lunt,
                                                        integer, intent(out) ifxyn,
                                                        character*(*), intent(out) line,
                                                        integer, intent(out) iret 
                                                        )
                                                        +
                                                        + +

                                                        Read the first line of the next entry from the specified ASCII master table B, table D or table F (Code/Flag) file.

                                                        +

                                                        This line contains, among other things, the FXY number corresponding to this entry.

                                                        +
                                                        Parameters
                                                        + + + + + +
                                                        lunt- Fortran logical unit number of master table B, table D or Code/Flag table file
                                                        ifxyn- WMO bit-wise representation of FXY number for next table entry
                                                        line- First line of next table entry
                                                        iret- Return code
                                                          +
                                                        • 0 = normal return
                                                        • +
                                                        • -1 = end-of-file encountered while reading from lunt
                                                        • +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2007-01-19
                                                        + +

                                                        Definition at line 1147 of file mastertable.F90.

                                                        + +

                                                        References bort2(), and parstr().

                                                        + +

                                                        Referenced by rdmtbb(), rdmtbd(), and rdmtbf().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ gettbh()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        subroutine gettbh (integer, intent(in) luns,
                                                        integer, intent(in) lunl,
                                                        character, intent(in) tab,
                                                        integer, intent(out) imt,
                                                        integer, intent(out) imtv,
                                                        integer, intent(out) iogce,
                                                        integer, intent(out) iltv 
                                                        )
                                                        +
                                                        + +

                                                        Read the header lines from two separate ASCII files (one standard and one local) containing master table B, table D, or Code/Flag table information.

                                                        +
                                                        Parameters
                                                        + + + + + + + + +
                                                        luns- Fortran logical unit number for ASCII file containing standard table information
                                                        lunl- Fortran logical unit number for ASCII file containing local table information
                                                        tab- Type of table:
                                                          +
                                                        • 'B' = Table B
                                                        • +
                                                        • 'D' = Table D
                                                        • +
                                                        • 'F' = Code/Flag table
                                                        • +
                                                        +
                                                        imt- Master table
                                                          +
                                                        • This value is read from both ASCII files and must be identical between them
                                                        • +
                                                        +
                                                        imtv- Version number of master table
                                                          +
                                                        • This value is read from the standard ASCII file
                                                        • +
                                                        +
                                                        iogce- Originating center
                                                          +
                                                        • This value is read from the local ASCII file
                                                        • +
                                                        +
                                                        iltv- Version number of local table
                                                          +
                                                        • This value is read from the local ASCII file
                                                        • +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2007-01-19
                                                        + +

                                                        Definition at line 1071 of file mastertable.F90.

                                                        + +

                                                        References bort(), parstr(), and strnum().

                                                        + +

                                                        Referenced by rdmtbb(), rdmtbd(), and rdmtbf().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ igetntbl()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        integer function igetntbl (integer, intent(in) lunt,
                                                        character*(*), intent(out) line 
                                                        )
                                                        +
                                                        + +

                                                        Read the next line from an ASCII master table B, table D or Code/Flag table file, ignoring any blank lines or comment lines in the process.

                                                        +
                                                        Parameters
                                                        + + + +
                                                        lunt- Fortran logical unit number for ASCII file containing table information
                                                        line- Next non-blank, non-comment line that was read from lunt
                                                        +
                                                        +
                                                        +
                                                        Returns
                                                        igetntbl:
                                                          +
                                                        • 0 = normal return
                                                        • +
                                                        • -1 = end-of-file encountered while reading from lunt
                                                        • +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2007-01-19
                                                        + +

                                                        Definition at line 992 of file mastertable.F90.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ igettdi()

                                                        + +
                                                        +
                                                        + + + + + + + + +
                                                        integer function igettdi (integer, intent(in) iflag)
                                                        +
                                                        + +

                                                        Depending on the value of the input flag, either return the next usable scratch Table D index for the current master table, or else reset the index back to its minimum value.

                                                        +
                                                        Parameters
                                                        + + +
                                                        iflag- Flag:
                                                          +
                                                        • if set to 0, then the function will reset the scratch Table D index back to its minimum value
                                                        • +
                                                        • otherwise, the function will return the next usable scratch Table D index for the current master table
                                                        • +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        Returns
                                                        - igettdi:
                                                          +
                                                        • -1 if function was called with iflag = 0
                                                        • +
                                                        • otherwise, the next usable scratch Table D index for the current master table
                                                        • +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2009-03-23
                                                        + +

                                                        Definition at line 1027 of file mastertable.F90.

                                                        + +

                                                        References bort().

                                                        + +

                                                        Referenced by bufr_c2f_interface::igettdi_c().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ ireadmt()

                                                        + +
                                                        +
                                                        + + + + + + + + +
                                                        integer function ireadmt (integer, intent(in) lun)
                                                        +
                                                        + +

                                                        Check the most recent BUFR message that was read via a call to one of the message-reading subroutines and determine whether the appropriate corresponding BUFR master tables have already been read into internal memory.

                                                        +

                                                        If not, then open the appropriate master BUFR tables on the local file system and read the contents into internal memory, clearing any previous master BUFR table information that may have previously been stored there.

                                                        +
                                                        Parameters
                                                        + + +
                                                        lun- File ID
                                                        +
                                                        +
                                                        +
                                                        Returns
                                                        ireadmt - Flag indicating whether new master BUFR tables needed to be read into internal memory:
                                                          +
                                                        • 0 = No
                                                        • +
                                                        • 1 = Yes
                                                        • +
                                                        +
                                                        +

                                                        Information about the location of master BUFR tables on the local file system is obtained from the most recent call to subroutine mtinfo(), or else from subroutine bfrini() if subroutine mtinfo() was never called, and in which case Fortran logical unit numbers 98 and 99 will be used by this function for opening and reading master BUFR table files.

                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2009-03-23
                                                        + +

                                                        Definition at line 177 of file mastertable.F90.

                                                        + +

                                                        References bort2(), moda_mstabs::cbbw, moda_mstabs::cbelem, moda_mstabs::cbmnem, moda_mstabs::cbscl, moda_mstabs::cbsref, moda_mstabs::cbunit, moda_tablef::cdmf, moda_mstabs::cdmnem, moda_s3list::cds3, moda_mstabs::cdseq, moda_rdmtb::ceelem, moda_rdmtb::cmdscb, moda_rdmtb::cmdscd, errwrt(), moda_mstabs::ibfxyn, moda_mstabs::idefxy, moda_mstabs::idfxyn, moda_rdmtb::iefxyn, ifxy(), moda_sc3bfr::isc3, istdesc(), iupbs01(), moda_bitbuf::mbay, mtfnam(), moda_mstabs::ndelem, moda_mstabs::nmtb, moda_mstabs::nmtd, rdmtbb(), rdmtbd(), rdmtbf(), and upds3().

                                                        + +

                                                        Referenced by getcfmng(), and ufdump().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ mtfnam()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        subroutine mtfnam (integer, intent(in) imt,
                                                        integer, intent(in) imtv,
                                                        integer, intent(in) iogce,
                                                        integer, intent(in) imtvl,
                                                        character*(*), intent(in) tbltyp,
                                                        character*(*), intent(out) stdfil,
                                                        character*(*), intent(out) locfil 
                                                        )
                                                        +
                                                        + +

                                                        Based on the input arguments, determine the names of the corresponding standard and local master table files.

                                                        +

                                                        After determining the corresponding file names, this subroutine then confirms the existence of those files on the filesystem, using additional information obtained from the most recent call to subroutine mtinfo(), or else as defined within subroutine bfrini() if subroutine mtinfo() was never called.

                                                        +
                                                        Parameters
                                                        + + + + + + + + +
                                                        imt- Master table number
                                                        imtv- Master table version number
                                                        iogce- Originating center
                                                        imtvl- Local table version number
                                                        tbltyp- Table type:
                                                          +
                                                        • 'TableB' = Table B
                                                        • +
                                                        • 'TableD' = Table D
                                                        • +
                                                        • 'CodeFlag' = Code and Flag Tables
                                                        • +
                                                        +
                                                        stdfil- Standard master table path/filename
                                                        locfil- Local master table path/filename
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        Ator
                                                        +
                                                        Date
                                                        2017-10-16
                                                        + +

                                                        Definition at line 86 of file mastertable.F90.

                                                        + +

                                                        References bort2(), errwrt(), and strsuc().

                                                        + +

                                                        Referenced by ireadmt().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ mtinfo()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        recursive subroutine mtinfo (character*(*), intent(in) cmtdir,
                                                        integer, intent(in) lunmt1,
                                                        integer, intent(in) lunmt2 
                                                        )
                                                        +
                                                        + +

                                                        Specify the directory location and Fortran logical unit numbers to be used when reading master BUFR tables on the local file system.

                                                        +
                                                        Parameters
                                                        + + + + +
                                                        cmtdir- Directory location of master BUFR tables on local file system (up to 240 characters)
                                                        lunmt1- First Fortran logical unit number to use when reading master BUFR tables on local file system
                                                        lunmt2- Second Fortran logical unit number to use when reading master BUFR tables on local file system
                                                        +
                                                        +
                                                        +

                                                        See Master BUFR Tables for more information about master BUFR tables. In particular, note that this subroutine is normally only ever called after a prior call has been made to subroutine openbf() with io = 'SEC3'. But in such cases, any call to this subroutine must be made prior to any subsequent calls to any of the BUFR message-reading subroutines for the associated BUFR file; otherwise, default values for cmtdir, lunmt1 and lunmt2 will be used as defined within subroutine bfrini().

                                                        +

                                                        For cmtdir, any full or relative directory pathname that is legal on the local filesystem is permissible, up to a total maximum length of 240 characters. The library will then automatically search within this directory for any necessary master table files and open and read them as needed.

                                                        +

                                                        The logical unit numbers lunmt1 and lunmt2 should be distinct from each other but should not already be assigned to any files on the local system.

                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2009-03-23
                                                        + +

                                                        Definition at line 34 of file mastertable.F90.

                                                        + +

                                                        References strsuc(), and x84().

                                                        + +

                                                        Referenced by bfrini(), fdebufr_c(), bufr_c2f_interface::mtinfo_c(), and sinv().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ nemock()

                                                        + +
                                                        +
                                                        + + + + + + + + +
                                                        integer function nemock (character*(*), intent(in) nemo)
                                                        +
                                                        + +

                                                        Check a mnemonic for validity.

                                                        +

                                                        For a mnemonic to be valid, it must have a length of between 1 and 8 characters, and it must only contain characters from the allowable character set.

                                                        +
                                                        Parameters
                                                        + + +
                                                        nemo- Mnemonic
                                                        +
                                                        +
                                                        +
                                                        Returns
                                                        nemock - Indicator as to whether nemo is valid:
                                                          +
                                                        • 0 = Yes
                                                        • +
                                                        • -1 = No, the length is not between 1 and 8 characters
                                                        • +
                                                        • -2 = No, it contains characters from outside of the allowable character set
                                                        • +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 1240 of file mastertable.F90.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ rdmtbb()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        subroutine rdmtbb (integer, intent(in) lunstb,
                                                        integer, intent(in) lunltb,
                                                        integer, intent(in) mxmtbb,
                                                        integer, intent(out) imt,
                                                        integer, intent(out) imtv,
                                                        integer, intent(out) iogce,
                                                        integer, intent(out) iltv,
                                                        integer, intent(out) nmtbb,
                                                        integer, dimension(*), intent(out) imfxyn,
                                                        character, dimension(4,*), intent(out) cmscl,
                                                        character, dimension(12,*), intent(out) cmsref,
                                                        character, dimension(4,*), intent(out) cmbw,
                                                        character, dimension(24,*), intent(out) cmunit,
                                                        character, dimension(8,*), intent(out) cmmnem,
                                                        character, dimension(*), intent(out) cmdsc,
                                                        character, dimension(120,*), intent(out) cmelem 
                                                        )
                                                        +
                                                        + +

                                                        Read master Table B information from two separate ASCII files (one standard and one local) and then merge the output into a single set of arrays.

                                                        +

                                                        Each of the two ASCII files must already be individually sorted in ascending order with respect to the FXY numbers.

                                                        +
                                                        Parameters
                                                        + + + + + + + + + + + + + + + + + +
                                                        lunstb- Fortran logical unit number for ASCII file containing standard Table B information
                                                        lunltb- Fortran logical unit number for ASCII file containing local Table B information
                                                        mxmtbb- Dimensioned size (in integers) of merged output arrays; used by the subroutine to ensure that it doesn't overflow these arrays
                                                        imt- Master table
                                                          +
                                                        • This value is read from both ASCII files and must be identical between them
                                                        • +
                                                        +
                                                        imtv- Version number of master table
                                                          +
                                                        • This value is read from the standard ASCII file
                                                        • +
                                                        +
                                                        iogce- Originating center
                                                          +
                                                        • This value is read from the local ASCII file
                                                        • +
                                                        +
                                                        iltv- Version number of local table
                                                          +
                                                        • This value is read from the local ASCII file
                                                        • +
                                                        +
                                                        nmtbb- Number of entries in merged output arrays
                                                        imfxyn- Merged array containing WMO bit-wise representations of FXY numbers
                                                        cmscl- Merged array containing scale factors
                                                        cmsref- Merged array containing reference values
                                                        cmbw- Merged array containing bit widths
                                                        cmunit- Merged array containing units
                                                        cmmnem- Merged array containing mnemonics
                                                        cmdsc- Merged array containing descriptor codes
                                                        cmelem- Merged array containing element names
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2007-01-19
                                                        + +

                                                        Definition at line 370 of file mastertable.F90.

                                                        + +

                                                        References bort(), getntbe(), gettbh(), and sntbbe().

                                                        + +

                                                        Referenced by ireadmt().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ rdmtbd()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        subroutine rdmtbd (integer, intent(in) lunstd,
                                                        integer, intent(in) lunltd,
                                                        integer, intent(in) mxmtbd,
                                                        integer, intent(in) mxelem,
                                                        integer, intent(out) imt,
                                                        integer, intent(out) imtv,
                                                        integer, intent(out) iogce,
                                                        integer, intent(out) iltv,
                                                        integer, intent(out) nmtbd,
                                                        integer, dimension(*), intent(out) imfxyn,
                                                        character, dimension(8,*), intent(out) cmmnem,
                                                        character, dimension(*), intent(out) cmdsc,
                                                        character, dimension(120,*), intent(out) cmseq,
                                                        integer, dimension(*), intent(out) nmelem,
                                                        integer, dimension(mxmtbd,mxelem), intent(out) iefxyn,
                                                        character, dimension(mxmtbd,mxelem), intent(out) ceelem 
                                                        )
                                                        +
                                                        + +

                                                        Read master Table D information from two separate ASCII files (one standard and one local) and then merge the output into a single set of arrays.

                                                        +

                                                        Each of the two ASCII files must already be individually sorted in ascending order with respect to the FXY numbers.

                                                        +
                                                        Parameters
                                                        + + + + + + + + + + + + + + + + + +
                                                        lunstd- Fortran logical unit number for ASCII file containing standard Table D information
                                                        lunltd- Fortran logical unit number for ASCII file containing local Table D information
                                                        mxmtbd- Dimensioned size (in integers) of merged output arrays; used by the subroutine to ensure that it doesn't overflow these arrays
                                                        mxelem- Maximum number of elements to be stored per Table D sequence within merged output arrays; used by the subroutine to ensure that it doesn't overflow these arrays
                                                        imt- Master table
                                                          +
                                                        • This value is read from both ASCII files and must be identical between them
                                                        • +
                                                        +
                                                        imtv- Version number of master table
                                                          +
                                                        • This value is read from the standard ASCII file
                                                        • +
                                                        +
                                                        iogce- Originating center
                                                          +
                                                        • This value is read from the local ASCII file
                                                        • +
                                                        +
                                                        iltv- Version number of local table
                                                          +
                                                        • This value is read from the local ASCII file
                                                        • +
                                                        +
                                                        nmtbd- Number of entries in merged output arrays
                                                        imfxyn- Merged array containing WMO bit-wise representations of FXY numbers
                                                        cmmnem- Merged array containing mnemonics
                                                        cmdsc- Merged array containing descriptor codes
                                                        cmseq- Merged array containing sequence names
                                                        nmelem- Merged array containing number of elements stored for each sequence
                                                        iefxyn- Merged array containing WMO bit-wise representations of element FXY numbers
                                                        ceelem- Merged array containing element names
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2007-01-19
                                                        + +

                                                        Definition at line 448 of file mastertable.F90.

                                                        + +

                                                        References bort(), getntbe(), gettbh(), and sntbde().

                                                        + +

                                                        Referenced by ireadmt().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ rdmtbf()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        subroutine rdmtbf (integer, intent(in) lunstf,
                                                        integer, intent(in) lunltf 
                                                        )
                                                        +
                                                        + +

                                                        Read master Code/Flag table information from two separate ASCII files (one standard and one local) and then merge the output into a single set of arrays.

                                                        +

                                                        Each of the two ASCII files must already be individually sorted in ascending order with respect to the FXY numbers.

                                                        +
                                                        Parameters
                                                        + + + +
                                                        lunstf- Fortran logical unit number for ASCII file containing standard Code/Flag table information
                                                        lunltf- Fortran logical unit number for ASCII file containing local Code/Flag table information
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2017-10-17
                                                        + +

                                                        Definition at line 507 of file mastertable.F90.

                                                        + +

                                                        References bort(), getntbe(), gettbh(), and sntbfe().

                                                        + +

                                                        Referenced by ireadmt().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ sntbbe()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        subroutine sntbbe (integer, intent(in) ifxyn,
                                                        character*(*), intent(in) line,
                                                        integer, intent(in) mxmtbb,
                                                        integer, intent(out) nmtbb,
                                                        integer, dimension(*), intent(out) imfxyn,
                                                        character, dimension(4,*), intent(out) cmscl,
                                                        character, dimension(12,*), intent(out) cmsref,
                                                        character, dimension(4,*), intent(out) cmbw,
                                                        character, dimension(24,*), intent(out) cmunit,
                                                        character, dimension(8,*), intent(out) cmmnem,
                                                        character, dimension(*), intent(out) cmdsc,
                                                        character, dimension(120,*), intent(out) cmelem 
                                                        )
                                                        +
                                                        + +

                                                        Store an entry that was previously read from an ASCII master Table B file into a set of merged Fortran arrays.

                                                        +
                                                        Parameters
                                                        + + + + + + + + + + + + + +
                                                        ifxyn- WMO bit-wise representation of FXY number
                                                        line- Table B entry
                                                        mxmtbb- Dimensioned size (in integers) of merged output arrays; used by the subroutine to ensure that it doesn't overflow these arrays
                                                        nmtbb- Number of entries in merged output arrays
                                                        imfxyn- Merged array containing WMO bit-wise representations of FXY numbers
                                                        cmscl- Merged array containing scale factors
                                                        cmsref- Merged array containing reference values
                                                        cmbw- Merged array containing bit widths
                                                        cmunit- Merged array containing units
                                                        cmmnem- Merged array containing mnemonics
                                                        cmdsc- Merged array containing descriptor codes
                                                        cmelem- Merged array containing element names
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2007-01-19
                                                        + +

                                                        Definition at line 579 of file mastertable.F90.

                                                        + +

                                                        References bort(), bort2(), parstr(), and sntbestr().

                                                        + +

                                                        Referenced by rdmtbb().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ sntbde()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        subroutine sntbde (integer, intent(in) lunt,
                                                        integer, intent(in) ifxyn,
                                                        character*(*), intent(in) line,
                                                        integer, intent(in) mxmtbd,
                                                        integer, intent(in) mxelem,
                                                        integer, intent(out) nmtbd,
                                                        integer, dimension(*), intent(out) imfxyn,
                                                        character, dimension(8,*), intent(out) cmmnem,
                                                        character, dimension(*), intent(out) cmdsc,
                                                        character, dimension(120,*), intent(out) cmseq,
                                                        integer, dimension(*), intent(out) nmelem,
                                                        integer, dimension(mxmtbd,mxelem), intent(out) iefxyn,
                                                        character, dimension(mxmtbd,mxelem), intent(out) ceelem 
                                                        )
                                                        +
                                                        + +

                                                        Store the first line of an entry that was previously read from an ASCII master Table D file into a set of merged Fortran arrays, then read and store all remaining lines of that same entry into the same merged Fortran arrays.

                                                        +
                                                        Parameters
                                                        + + + + + + + + + + + + + + +
                                                        lunt- Fortran logical unit number for ASCII file containing Table D information
                                                        ifxyn- WMO bit-wise representation of FXY number
                                                        line- First line of Table D entry
                                                        mxmtbd- Dimensioned size (in integers) of merged output arrays; used by the subroutine to ensure that it doesn't overflow these arrays
                                                        mxelem- Maximum number of elements to be stored per Table D sequence within merged output arrays; used by the subroutine to ensure that it doesn't overflow these arrays
                                                        nmtbd- Number of entries in merged output arrays
                                                        imfxyn- Merged array containing WMO bit-wise representations of FXY numbers
                                                        cmmnem- Merged array containing mnemonics
                                                        cmdsc- Merged array containing descriptor codes
                                                        cmseq- Merged array containing sequence names
                                                        nmelem- Merged array containing number of elements stored for each sequence
                                                        iefxyn- Merged array containing WMO bit-wise representations of element FXY numbers
                                                        ceelem- Merged array containing element names
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2007-01-19
                                                        + +

                                                        Definition at line 723 of file mastertable.F90.

                                                        + +

                                                        References bort(), bort2(), parstr(), and sntbestr().

                                                        + +

                                                        Referenced by rdmtbd().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ sntbestr()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        subroutine sntbestr (character*(*), intent(in) hestr,
                                                        integer, intent(in) ifxyn,
                                                        character*(*), intent(out) estr 
                                                        )
                                                        +
                                                        + +

                                                        Generate an error-reporting string containing an FXY number.

                                                        +
                                                        Parameters
                                                        + + + + +
                                                        hestr- Head portion of error-reporting string
                                                        ifxyn- WMO bit-wise representation of FXY number
                                                        estr- Error-reporting string
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2024-04-15
                                                        + +

                                                        Definition at line 966 of file mastertable.F90.

                                                        + +

                                                        Referenced by sntbbe(), sntbde(), and sntbfe().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ sntbfe()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        subroutine sntbfe (integer, intent(in) lunt,
                                                        integer, intent(in) ifxyn 
                                                        )
                                                        +
                                                        + +

                                                        Read an entire entry from a previously-opened ASCII master Code/Flag table file, then store the information into an internal memory structure.

                                                        +
                                                        Parameters
                                                        + + + +
                                                        lunt- Fortran logical unit number for ASCII file containing Code/Flag table information
                                                        ifxyn- WMO bit-wise representation of FXY number
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2017-11-02
                                                        + +

                                                        Definition at line 835 of file mastertable.F90.

                                                        + +

                                                        References bort2(), parstr(), sntbestr(), and strnum().

                                                        + +

                                                        Referenced by rdmtbf().

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/mastertable_8F90.js b/previous_versions/v12.1.0/mastertable_8F90.js new file mode 100644 index 000000000..6a9a482fc --- /dev/null +++ b/previous_versions/v12.1.0/mastertable_8F90.js @@ -0,0 +1,19 @@ +var mastertable_8F90 = +[ + [ "codflg", "mastertable_8F90.html#a4721c745ebeb6be54c825cd1f53ec107", null ], + [ "getntbe", "mastertable_8F90.html#a57b7efae38f8e79ba76fe5c8fff18f2a", null ], + [ "gettbh", "mastertable_8F90.html#ab8f682eb706037e99550eeedb3e8c963", null ], + [ "igetntbl", "mastertable_8F90.html#a8d9fae4a86fb1a4db715788bd73071cf", null ], + [ "igettdi", "mastertable_8F90.html#a5ef341975ece8b54885d7518d30d7a99", null ], + [ "ireadmt", "mastertable_8F90.html#adde6acff18af3673cd9ef45b7ec12833", null ], + [ "mtfnam", "mastertable_8F90.html#a3c167cbcb11e3c1ec0a9abc584e27a57", null ], + [ "mtinfo", "mastertable_8F90.html#abf69490965212318f1dfee9b0bc4890c", null ], + [ "nemock", "mastertable_8F90.html#a4bb75d7258bc23294546f956cfbe2d36", null ], + [ "rdmtbb", "mastertable_8F90.html#a62d8d7c9946282d7797030e67c737543", null ], + [ "rdmtbd", "mastertable_8F90.html#a2def0dba3a44cc77e6dd716ad8aa238f", null ], + [ "rdmtbf", "mastertable_8F90.html#acc76006ba6b47ca59a5343caacb12af9", null ], + [ "sntbbe", "mastertable_8F90.html#a4bc18eda6239cb2cd797dc63e12060d6", null ], + [ "sntbde", "mastertable_8F90.html#a07132e14b98ae1942199d2f9f89f1dfd", null ], + [ "sntbestr", "mastertable_8F90.html#a1a035df49f8cbaee159153af0d3fb818", null ], + [ "sntbfe", "mastertable_8F90.html#a13fd8c1d3695fab378b46cd2a6c23d4c", null ] +]; \ No newline at end of file diff --git a/previous_versions/v12.1.0/mastertable_8F90_source.html b/previous_versions/v12.1.0/mastertable_8F90_source.html new file mode 100644 index 000000000..97fca5002 --- /dev/null +++ b/previous_versions/v12.1.0/mastertable_8F90_source.html @@ -0,0 +1,1151 @@ + + + + + + + +NCEPLIBS-bufr: mastertable.F90 Source File + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        +
                                                        mastertable.F90
                                                        +
                                                        +
                                                        +Go to the documentation of this file.
                                                        1 
                                                        +
                                                        5 
                                                        +
                                                        34 recursive subroutine mtinfo ( cmtdir, lunmt1, lunmt2 )
                                                        +
                                                        35 
                                                        +
                                                        36  use modv_vars, only: im8b
                                                        +
                                                        37 
                                                        +
                                                        38  implicit none
                                                        +
                                                        39 
                                                        +
                                                        40  integer, intent(in) :: lunmt1, lunmt2
                                                        +
                                                        41  integer my_lunmt1, my_lunmt2, lun1, lun2, lmtd
                                                        +
                                                        42 
                                                        +
                                                        43  character*(*), intent(in) :: cmtdir
                                                        +
                                                        44  character*240 mtdir
                                                        +
                                                        45 
                                                        +
                                                        46  common /mstinf/ lun1, lun2, lmtd, mtdir
                                                        +
                                                        47 
                                                        +
                                                        48  ! Check for I8 integers
                                                        +
                                                        49  if(im8b) then
                                                        +
                                                        50  im8b=.false.
                                                        +
                                                        51 
                                                        +
                                                        52  call x84 ( lunmt1, my_lunmt1, 1 )
                                                        +
                                                        53  call x84 ( lunmt2, my_lunmt2, 1 )
                                                        +
                                                        54  call mtinfo ( cmtdir, my_lunmt1, my_lunmt2 )
                                                        +
                                                        55 
                                                        +
                                                        56  im8b=.true.
                                                        +
                                                        57  return
                                                        +
                                                        58  endif
                                                        +
                                                        59 
                                                        +
                                                        60  call strsuc ( cmtdir, mtdir, lmtd )
                                                        +
                                                        61 
                                                        +
                                                        62  lun1 = lunmt1
                                                        +
                                                        63  lun2 = lunmt2
                                                        +
                                                        64 
                                                        +
                                                        65  return
                                                        +
                                                        66 end subroutine mtinfo
                                                        +
                                                        67 
                                                        +
                                                        86 subroutine mtfnam ( imt, imtv, iogce, imtvl, tbltyp, stdfil, locfil )
                                                        +
                                                        87 
                                                        +
                                                        88  implicit none
                                                        +
                                                        89 
                                                        +
                                                        90  integer, intent(in) :: imt, imtv, iogce, imtvl
                                                        +
                                                        91  integer iprt, lun1, lun2, lmtd, ltbt, isize
                                                        +
                                                        92 
                                                        +
                                                        93  character*(*), intent(in) :: tbltyp
                                                        +
                                                        94  character*(*), intent(out) :: stdfil, locfil
                                                        +
                                                        95 
                                                        +
                                                        96  character*16 tbltyp2
                                                        +
                                                        97  character*20 fmtf
                                                        +
                                                        98  character*240 mtdir
                                                        +
                                                        99  character*128 bort_str
                                                        +
                                                        100 
                                                        +
                                                        101  logical found
                                                        +
                                                        102 
                                                        +
                                                        103  common /quiet/ iprt
                                                        +
                                                        104  common /mstinf/ lun1, lun2, lmtd, mtdir
                                                        +
                                                        105 
                                                        +
                                                        106  call strsuc ( tbltyp, tbltyp2, ltbt )
                                                        +
                                                        107 
                                                        +
                                                        108  ! Determine the standard master table path/filename.
                                                        +
                                                        109 
                                                        +
                                                        110  if ( ( imt == 0 ) .and. ( imtv <= 13 ) ) then
                                                        +
                                                        111  ! For master table 0, version 13 is a superset of all earlier versions.
                                                        +
                                                        112  stdfil = mtdir(1:lmtd) // '/bufrtab.' // tbltyp2(1:ltbt) // '_STD_0_13'
                                                        +
                                                        113  else
                                                        +
                                                        114  write ( fmtf, '(A,I1,A,I1,A)' ) '(4A,I', isize(imt), ',A,I', isize(imtv), ')'
                                                        +
                                                        115  write ( stdfil, fmtf ) mtdir(1:lmtd), '/bufrtab.', tbltyp2(1:ltbt), '_STD_', imt, '_', imtv
                                                        +
                                                        116  endif
                                                        +
                                                        117  if ( iprt >= 2 ) then
                                                        +
                                                        118  call errwrt('Standard ' // tbltyp2(1:ltbt) // ':')
                                                        +
                                                        119  call errwrt(stdfil)
                                                        +
                                                        120  endif
                                                        +
                                                        121  inquire ( file = stdfil, exist = found )
                                                        +
                                                        122  if ( .not. found ) then
                                                        +
                                                        123  bort_str = 'BUFRLIB: MTFNAM - COULD NOT FIND STANDARD FILE:'
                                                        +
                                                        124  call bort2(bort_str, stdfil)
                                                        +
                                                        125  endif
                                                        +
                                                        126 
                                                        +
                                                        127  ! Now determine the local master table path/filename.
                                                        +
                                                        128 
                                                        +
                                                        129  ! Use the local table corresponding to the originating center and local table version number, if such a table exists.
                                                        +
                                                        130  ! Otherwise use the local table from NCEP.
                                                        +
                                                        131 
                                                        +
                                                        132  write ( fmtf, '(A,I1,A,I1,A,I1,A)' ) '(4A,I', isize(imt), ',A,I', isize(iogce), ',A,I', isize(imtvl), ')'
                                                        +
                                                        133  write ( locfil, fmtf ) mtdir(1:lmtd), '/bufrtab.', tbltyp2(1:ltbt), '_LOC_', imt, '_', iogce, '_', imtvl
                                                        +
                                                        134  if ( iprt >= 2 ) then
                                                        +
                                                        135  call errwrt('Local ' // tbltyp2(1:ltbt) // ':')
                                                        +
                                                        136  call errwrt(locfil)
                                                        +
                                                        137  endif
                                                        +
                                                        138  inquire ( file = locfil, exist = found )
                                                        +
                                                        139  if ( .not. found ) then
                                                        +
                                                        140  ! Use the local table from NCEP.
                                                        +
                                                        141  locfil = mtdir(1:lmtd) // '/bufrtab.' // tbltyp2(1:ltbt) // '_LOC_0_7_1'
                                                        +
                                                        142  if ( iprt >= 2 ) then
                                                        +
                                                        143  call errwrt('Local ' // tbltyp2(1:ltbt) // ' not found, so using:')
                                                        +
                                                        144  call errwrt(locfil)
                                                        +
                                                        145  endif
                                                        +
                                                        146  inquire ( file = locfil, exist = found )
                                                        +
                                                        147  if ( .not. found ) then
                                                        +
                                                        148  bort_str = 'BUFRLIB: MTFNAM - COULD NOT FIND LOCAL FILE:'
                                                        +
                                                        149  call bort2(bort_str, locfil)
                                                        +
                                                        150  endif
                                                        +
                                                        151  endif
                                                        +
                                                        152 
                                                        +
                                                        153  return
                                                        +
                                                        154 end subroutine mtfnam
                                                        +
                                                        155 
                                                        +
                                                        177 integer function ireadmt ( lun ) result ( iret )
                                                        +
                                                        178 
                                                        +
                                                        179  use bufrlib
                                                        +
                                                        180 
                                                        +
                                                        181  use modv_vars, only: maxnc, maxcd, mxmtbb, mxmtbd
                                                        +
                                                        182 
                                                        +
                                                        183  use moda_mstabs
                                                        +
                                                        184  use moda_bitbuf
                                                        +
                                                        185  use moda_rdmtb
                                                        +
                                                        186  use moda_sc3bfr
                                                        +
                                                        187  use moda_s3list
                                                        +
                                                        188  use moda_tablef
                                                        +
                                                        189 
                                                        +
                                                        190  implicit none
                                                        +
                                                        191 
                                                        +
                                                        192  integer, intent(in) :: lun
                                                        +
                                                        193  integer iprt, lun1, lun2, lmtd, lmt, lmtv, logce, lmtvl, imt, imtv, iogce, imtvl, ii, jj, idx, ncds3, ier, &
                                                        +
                                                        194  ibmt, ibmtv, ibogce, ibltv, idmt, idmtv, idogce, idltv, iupbs01, ifxy, istdesc
                                                        +
                                                        195 
                                                        +
                                                        196  character*(*), parameter :: bort_str1 = 'BUFRLIB: IREADMT - COULD NOT OPEN STANDARD FILE:'
                                                        +
                                                        197  character*(*), parameter :: bort_str2 = 'BUFRLIB: IREADMT - COULD NOT OPEN LOCAL FILE:'
                                                        +
                                                        198  character*275 stdfil,locfil
                                                        +
                                                        199  character*240 mtdir
                                                        +
                                                        200 
                                                        +
                                                        201  logical allstd
                                                        +
                                                        202 
                                                        +
                                                        203  common /quiet/ iprt
                                                        +
                                                        204  common /mstinf/ lun1, lun2, lmtd, mtdir
                                                        +
                                                        205 
                                                        +
                                                        206  ! Initializing the following value ensures that new master tables are read during the first call to this subroutine.
                                                        +
                                                        207 
                                                        +
                                                        208  data lmt /-99/
                                                        +
                                                        209 
                                                        +
                                                        210  save lmt, lmtv, logce, lmtvl
                                                        +
                                                        211 
                                                        +
                                                        212  iret = 0
                                                        +
                                                        213 
                                                        +
                                                        214  ! Unpack some Section 1 information from the message that was most recently read.
                                                        +
                                                        215 
                                                        +
                                                        216  imt = iupbs01( mbay(1,lun), 'BMT' )
                                                        +
                                                        217  imtv = iupbs01( mbay(1,lun), 'MTV' )
                                                        +
                                                        218  iogce = iupbs01( mbay(1,lun), 'OGCE' )
                                                        +
                                                        219  imtvl = iupbs01( mbay(1,lun), 'MTVL' )
                                                        +
                                                        220 
                                                        +
                                                        221  ! Compare the master table and master table version numbers from this message to those from the message that was
                                                        +
                                                        222  ! processed during the previous call to this subroutine.
                                                        +
                                                        223 
                                                        +
                                                        224  if ( ( imt /= lmt ) .or. ( ( imt /= 0 ) .and. ( imtv /= lmtv ) ) .or. &
                                                        +
                                                        225  ( ( imt == 0 ) .and. ( imtv /= lmtv ) .and. ( ( imtv > 13 ) .or. ( lmtv > 13 ) ) ) ) then
                                                        +
                                                        226  ! Either the master table number has changed
                                                        +
                                                        227  ! OR
                                                        +
                                                        228  ! The master table number hasn't changed, but it isn't 0, and the table version number has changed
                                                        +
                                                        229  ! OR
                                                        +
                                                        230  ! The master table number hasn't changed and is 0, but the table version number has changed, and at least one of the
                                                        +
                                                        231  ! table version numbers (i.e. the current or the previous) is greater than 13 (which is the last version that was a
                                                        +
                                                        232  ! superset of all earlier versions of master table 0!)
                                                        +
                                                        233 
                                                        +
                                                        234  ! In any of these cases, we need to read in new tables!
                                                        +
                                                        235  iret = 1
                                                        +
                                                        236 
                                                        +
                                                        237  else
                                                        +
                                                        238 
                                                        +
                                                        239  ! Unpack the list of Section 3 descriptors from the message and determine if any of them are local descriptors.
                                                        +
                                                        240  call upds3 ( mbay(1,lun), maxnc, cds3, ncds3 )
                                                        +
                                                        241  ii = 1
                                                        +
                                                        242  allstd = .true.
                                                        +
                                                        243  do while ( (allstd) .and. (ii<=ncds3) )
                                                        +
                                                        244  if ( istdesc(ifxy(cds3(ii))) == 0 ) then
                                                        +
                                                        245  allstd = .false.
                                                        +
                                                        246  else
                                                        +
                                                        247  ii = ii + 1
                                                        +
                                                        248  endif
                                                        +
                                                        249  enddo
                                                        +
                                                        250 
                                                        +
                                                        251  ! If there was at least one local (i.e. non-standard) descriptor, and if either the originating center or local table
                                                        +
                                                        252  ! version number are different than those from the message that was processed during the previous call to this subroutine,
                                                        +
                                                        253  ! then we need to read in new tables.
                                                        +
                                                        254  if ( ( .not. allstd ) .and. ( ( iogce /= logce ) .or. ( imtvl /= lmtvl ) ) ) iret = 1
                                                        +
                                                        255 
                                                        +
                                                        256  endif
                                                        +
                                                        257 
                                                        +
                                                        258  if ( iret == 0 ) return
                                                        +
                                                        259 
                                                        +
                                                        260  lmt = imt
                                                        +
                                                        261  lmtv = imtv
                                                        +
                                                        262  logce = iogce
                                                        +
                                                        263  lmtvl = imtvl
                                                        +
                                                        264 
                                                        +
                                                        265  if ( iprt >= 2 ) then
                                                        +
                                                        266  call errwrt(' ')
                                                        +
                                                        267  call errwrt('+++++++++++++++++++++++++++++++++++++++++++++++++')
                                                        +
                                                        268  call errwrt('BUFRLIB: IREADMT - OPENING/READING MASTER TABLES')
                                                        +
                                                        269  endif
                                                        +
                                                        270 
                                                        +
                                                        271  if ( isc3(lun) /= 0 ) then
                                                        +
                                                        272 
                                                        +
                                                        273  ! Locate and open the master Table B files. There should be one file of standard descriptors and one file of local
                                                        +
                                                        274  ! descriptors.
                                                        +
                                                        275  call mtfnam ( imt, imtv, iogce, imtvl, 'TableB', stdfil, locfil )
                                                        +
                                                        276  open ( unit = lun1, file = stdfil, iostat = ier )
                                                        +
                                                        277  if ( ier /= 0 ) call bort2(bort_str1, stdfil)
                                                        +
                                                        278  open ( unit = lun2, file = locfil, iostat = ier )
                                                        +
                                                        279  if ( ier /= 0 ) call bort2(bort_str2, locfil)
                                                        +
                                                        280 
                                                        +
                                                        281  ! Read the master Table B files.
                                                        +
                                                        282  call rdmtbb ( lun1, lun2, mxmtbb, ibmt, ibmtv, ibogce, ibltv, nmtb, ibfxyn, cbscl, cbsref, cbbw, &
                                                        + +
                                                        284 
                                                        +
                                                        285  ! Close the master Table B files.
                                                        +
                                                        286  close ( unit = lun1 )
                                                        +
                                                        287  close ( unit = lun2 )
                                                        +
                                                        288 
                                                        +
                                                        289  ! Locate and open the master Table D files. There should be one file of standard descriptors and one file of local
                                                        +
                                                        290  ! descriptors.
                                                        +
                                                        291  call mtfnam ( imt, imtv, iogce, imtvl, 'TableD', stdfil, locfil )
                                                        +
                                                        292  open ( unit = lun1, file = stdfil, iostat = ier )
                                                        +
                                                        293  if ( ier /= 0 ) call bort2(bort_str1, stdfil)
                                                        +
                                                        294  open ( unit = lun2, file = locfil, iostat = ier )
                                                        +
                                                        295  if ( ier /= 0 ) call bort2(bort_str2, locfil)
                                                        +
                                                        296 
                                                        +
                                                        297  ! Read the master Table D files.
                                                        +
                                                        298  call rdmtbd ( lun1, lun2, mxmtbd, maxcd, idmt, idmtv, idogce, idltv, nmtd, idfxyn, cdmnem, cmdscd, cdseq, &
                                                        +
                                                        299  ndelem, iefxyn, ceelem )
                                                        +
                                                        300  do ii = 1, nmtd
                                                        +
                                                        301  do jj = 1, ndelem(ii)
                                                        +
                                                        302  idx = icvidx_c( ii-1, jj-1, maxcd ) + 1
                                                        +
                                                        303  idefxy(idx) = iefxyn(ii,jj)
                                                        +
                                                        304  enddo
                                                        +
                                                        305  enddo
                                                        +
                                                        306 
                                                        +
                                                        307  ! Close the master Table D files.
                                                        +
                                                        308  close ( unit = lun1 )
                                                        +
                                                        309  close ( unit = lun2 )
                                                        +
                                                        310 
                                                        +
                                                        311  ! Copy master table B and D information into internal C arrays.
                                                        + +
                                                        313  ndelem, idefxy, maxcd )
                                                        +
                                                        314  endif
                                                        +
                                                        315 
                                                        +
                                                        316  if ( cdmf == 'Y' ) then
                                                        +
                                                        317 
                                                        +
                                                        318  ! Locate and open the master code and flag table files. There should be one file corresponding to the standard Table B
                                                        +
                                                        319  ! descriptors, and one file corresponding to the local Table B descriptors.
                                                        +
                                                        320  call mtfnam ( imt, imtv, iogce, imtvl, 'CodeFlag', stdfil, locfil )
                                                        +
                                                        321  open ( unit = lun1, file = stdfil, iostat = ier )
                                                        +
                                                        322  if ( ier /= 0 ) call bort2(bort_str1, stdfil)
                                                        +
                                                        323  open ( unit = lun2, file = locfil, iostat = ier )
                                                        +
                                                        324  if ( ier /= 0 ) call bort2(bort_str2, locfil)
                                                        +
                                                        325 
                                                        +
                                                        326  ! Read the master code and flag table files.
                                                        +
                                                        327  call rdmtbf ( lun1, lun2 )
                                                        +
                                                        328 
                                                        +
                                                        329  ! Close the master code and flag table files.
                                                        +
                                                        330  close ( unit = lun1 )
                                                        +
                                                        331  close ( unit = lun2 )
                                                        +
                                                        332  endif
                                                        +
                                                        333 
                                                        +
                                                        334  if ( iprt >= 2 ) then
                                                        +
                                                        335  call errwrt('+++++++++++++++++++++++++++++++++++++++++++++++++')
                                                        +
                                                        336  call errwrt(' ')
                                                        +
                                                        337  endif
                                                        +
                                                        338 
                                                        +
                                                        339  return
                                                        +
                                                        340 end function ireadmt
                                                        +
                                                        341 
                                                        +
                                                        370 subroutine rdmtbb ( lunstb, lunltb, mxmtbb, imt, imtv, iogce, iltv, nmtbb, imfxyn, cmscl, cmsref, cmbw, &
                                                        +
                                                        371  cmunit, cmmnem, cmdsc, cmelem )
                                                        +
                                                        372 
                                                        +
                                                        373  implicit none
                                                        +
                                                        374 
                                                        +
                                                        375  integer, intent(in) :: lunstb, lunltb, mxmtbb
                                                        +
                                                        376  integer, intent(out) :: imt, imtv, iogce, iltv, nmtbb, imfxyn(*)
                                                        +
                                                        377  integer isfxyn, ilfxyn, iers, ierl
                                                        +
                                                        378 
                                                        +
                                                        379  character, intent(out) :: cmelem(120,*), cmunit(24,*), cmsref(12,*), cmmnem(8,*), cmscl(4,*), cmbw(4,*), cmdsc(*)*4
                                                        +
                                                        380  character*200 stline, ltline
                                                        +
                                                        381  character*128 bort_str
                                                        +
                                                        382  character*6 cmatch, adn30
                                                        +
                                                        383 
                                                        +
                                                        384  ! Read and parse the header lines of both files.
                                                        +
                                                        385 
                                                        +
                                                        386  call gettbh ( lunstb, lunltb, 'B', imt, imtv, iogce, iltv )
                                                        +
                                                        387 
                                                        +
                                                        388  ! Read through the remainder of both files, merging the contents into a unified set of master Table B arrays.
                                                        +
                                                        389 
                                                        +
                                                        390  nmtbb = 0
                                                        +
                                                        391  call getntbe ( lunstb, isfxyn, stline, iers )
                                                        +
                                                        392  call getntbe ( lunltb, ilfxyn, ltline, ierl )
                                                        +
                                                        393  do while ( ( iers == 0 ) .or. ( ierl == 0 ) )
                                                        +
                                                        394  if ( ( iers == 0 ) .and. ( ierl == 0 ) ) then
                                                        +
                                                        395  if ( isfxyn == ilfxyn ) then
                                                        +
                                                        396  cmatch = adn30( isfxyn, 6 )
                                                        +
                                                        397  write(bort_str,'("BUFRLIB: RDMTBB - STANDARD AND LOCAL '// &
                                                        +
                                                        398  'TABLE B FILES BOTH CONTAIN SAME FXY NUMBER: ",5A)') cmatch(1:1), '-', cmatch(2:3), '-', cmatch(4:6)
                                                        +
                                                        399  call bort(bort_str)
                                                        +
                                                        400  else if ( isfxyn < ilfxyn ) then
                                                        +
                                                        401  call sntbbe ( isfxyn, stline, mxmtbb, nmtbb, imfxyn, cmscl, cmsref, cmbw, cmunit, cmmnem, cmdsc, cmelem )
                                                        +
                                                        402  call getntbe ( lunstb, isfxyn, stline, iers )
                                                        +
                                                        403  else
                                                        +
                                                        404  call sntbbe ( ilfxyn, ltline, mxmtbb, nmtbb, imfxyn, cmscl, cmsref, cmbw, cmunit, cmmnem, cmdsc, cmelem )
                                                        +
                                                        405  call getntbe ( lunltb, ilfxyn, ltline, ierl )
                                                        +
                                                        406  endif
                                                        +
                                                        407  else if ( iers == 0 ) then
                                                        +
                                                        408  call sntbbe ( isfxyn, stline, mxmtbb, nmtbb, imfxyn, cmscl, cmsref, cmbw, cmunit, cmmnem, cmdsc, cmelem )
                                                        +
                                                        409  call getntbe ( lunstb, isfxyn, stline, iers )
                                                        +
                                                        410  else
                                                        +
                                                        411  call sntbbe ( ilfxyn, ltline, mxmtbb, nmtbb, imfxyn, cmscl, cmsref, cmbw, cmunit, cmmnem, cmdsc, cmelem )
                                                        +
                                                        412  call getntbe ( lunltb, ilfxyn, ltline, ierl )
                                                        +
                                                        413  endif
                                                        +
                                                        414  enddo
                                                        +
                                                        415 
                                                        +
                                                        416  return
                                                        +
                                                        417 end subroutine rdmtbb
                                                        +
                                                        418 
                                                        +
                                                        448 subroutine rdmtbd ( lunstd, lunltd, mxmtbd, mxelem, imt, imtv, iogce, iltv, nmtbd, imfxyn, cmmnem, cmdsc, cmseq, &
                                                        +
                                                        449  nmelem, iefxyn, ceelem )
                                                        +
                                                        450 
                                                        +
                                                        451  implicit none
                                                        +
                                                        452 
                                                        +
                                                        453  integer, intent(in) :: lunstd, lunltd, mxmtbd, mxelem
                                                        +
                                                        454  integer, intent(out) :: imt, imtv, iogce, iltv, nmtbd, imfxyn(*), nmelem(*), iefxyn(mxmtbd,mxelem)
                                                        +
                                                        455  integer isfxyn, ilfxyn, iers, ierl
                                                        +
                                                        456 
                                                        +
                                                        457  character, intent(out) :: cmseq(120,*), cmmnem(8,*), cmdsc(*)*4, ceelem(mxmtbd,mxelem)*120
                                                        +
                                                        458 
                                                        +
                                                        459  character*200 stline, ltline
                                                        +
                                                        460  character*128 bort_str
                                                        +
                                                        461  character*6 cmatch, adn30
                                                        +
                                                        462 
                                                        +
                                                        463  ! Read and parse the header lines of both files.
                                                        +
                                                        464 
                                                        +
                                                        465  call gettbh ( lunstd, lunltd, 'D', imt, imtv, iogce, iltv )
                                                        +
                                                        466 
                                                        +
                                                        467  ! Read through the remainder of both files, merging the contents into a unified set of master Table D arrays.
                                                        +
                                                        468 
                                                        +
                                                        469  nmtbd = 0
                                                        +
                                                        470  call getntbe ( lunstd, isfxyn, stline, iers )
                                                        +
                                                        471  call getntbe ( lunltd, ilfxyn, ltline, ierl )
                                                        +
                                                        472  do while ( ( iers == 0 ) .or. ( ierl == 0 ) )
                                                        +
                                                        473  if ( ( iers == 0 ) .and. ( ierl == 0 ) ) then
                                                        +
                                                        474  if ( isfxyn == ilfxyn ) then
                                                        +
                                                        475  cmatch = adn30( isfxyn, 6 )
                                                        +
                                                        476  write(bort_str,'("BUFRLIB: RDMTBD - STANDARD AND LOCAL '// &
                                                        +
                                                        477  'TABLE D FILES BOTH CONTAIN SAME FXY NUMBER: ",5A)') cmatch(1:1), '-', cmatch(2:3), '-', cmatch(4:6)
                                                        +
                                                        478  call bort(bort_str)
                                                        +
                                                        479  else if ( isfxyn < ilfxyn ) then
                                                        +
                                                        480  call sntbde ( lunstd, isfxyn, stline, mxmtbd, mxelem, nmtbd, imfxyn, cmmnem, cmdsc, cmseq, nmelem, iefxyn, ceelem )
                                                        +
                                                        481  call getntbe ( lunstd, isfxyn, stline, iers )
                                                        +
                                                        482  else
                                                        +
                                                        483  call sntbde ( lunltd, ilfxyn, ltline, mxmtbd, mxelem, nmtbd, imfxyn, cmmnem, cmdsc, cmseq, nmelem, iefxyn, ceelem )
                                                        +
                                                        484  call getntbe ( lunltd, ilfxyn, ltline, ierl )
                                                        +
                                                        485  endif
                                                        +
                                                        486  else if ( iers == 0 ) then
                                                        +
                                                        487  call sntbde ( lunstd, isfxyn, stline, mxmtbd, mxelem, nmtbd, imfxyn, cmmnem, cmdsc, cmseq, nmelem, iefxyn, ceelem )
                                                        +
                                                        488  call getntbe ( lunstd, isfxyn, stline, iers )
                                                        +
                                                        489  else
                                                        +
                                                        490  call sntbde ( lunltd, ilfxyn, ltline, mxmtbd, mxelem, nmtbd, imfxyn, cmmnem, cmdsc, cmseq, nmelem, iefxyn, ceelem )
                                                        +
                                                        491  call getntbe ( lunltd, ilfxyn, ltline, ierl )
                                                        +
                                                        492  endif
                                                        +
                                                        493  enddo
                                                        +
                                                        494 
                                                        +
                                                        495  return
                                                        +
                                                        496 end subroutine rdmtbd
                                                        +
                                                        497 
                                                        +
                                                        507 subroutine rdmtbf ( lunstf, lunltf )
                                                        +
                                                        508 
                                                        +
                                                        509  use bufrlib
                                                        +
                                                        510 
                                                        +
                                                        511  implicit none
                                                        +
                                                        512 
                                                        +
                                                        513  integer, intent(in) :: lunstf, lunltf
                                                        +
                                                        514  integer imt, imtv, iogce, iltv, isfxyn, ilfxyn, iers, ierl
                                                        +
                                                        515 
                                                        +
                                                        516  character*160 stline, ltline
                                                        +
                                                        517  character*128 bort_str
                                                        +
                                                        518  character*6 cmatch, adn30
                                                        +
                                                        519 
                                                        +
                                                        520  ! Initialize the internal memory structure, including allocating space for it in case this hasn't already been done.
                                                        +
                                                        521 
                                                        +
                                                        522  call inittbf_c
                                                        +
                                                        523 
                                                        +
                                                        524  ! Read and parse the header lines of both files.
                                                        +
                                                        525 
                                                        +
                                                        526  call gettbh ( lunstf, lunltf, 'F', imt, imtv, iogce, iltv )
                                                        +
                                                        527 
                                                        +
                                                        528  ! Read through the remainder of both files, merging the contents into a unified internal memory structure.
                                                        +
                                                        529 
                                                        +
                                                        530  call getntbe ( lunstf, isfxyn, stline, iers )
                                                        +
                                                        531  call getntbe ( lunltf, ilfxyn, ltline, ierl )
                                                        +
                                                        532  do while ( ( iers == 0 ) .or. ( ierl == 0 ) )
                                                        +
                                                        533  if ( ( iers == 0 ) .and. ( ierl == 0 ) ) then
                                                        +
                                                        534  if ( isfxyn == ilfxyn ) then
                                                        +
                                                        535  cmatch = adn30( isfxyn, 6 )
                                                        +
                                                        536  write(bort_str,'("BUFRLIB: RDMTBF - STANDARD AND LOCAL '// &
                                                        +
                                                        537  'CODE/FLAG TABLE FILES BOTH CONTAIN SAME FXY NUMBER: ",5A)') cmatch(1:1), '-', cmatch(2:3), '-', cmatch(4:6)
                                                        +
                                                        538  call bort(bort_str)
                                                        +
                                                        539  else if ( isfxyn < ilfxyn ) then
                                                        +
                                                        540  call sntbfe ( lunstf, isfxyn )
                                                        +
                                                        541  call getntbe ( lunstf, isfxyn, stline, iers )
                                                        +
                                                        542  else
                                                        +
                                                        543  call sntbfe ( lunltf, ilfxyn )
                                                        +
                                                        544  call getntbe ( lunltf, ilfxyn, ltline, ierl )
                                                        +
                                                        545  endif
                                                        +
                                                        546  else if ( iers == 0 ) then
                                                        +
                                                        547  call sntbfe ( lunstf, isfxyn )
                                                        +
                                                        548  call getntbe ( lunstf, isfxyn, stline, iers )
                                                        +
                                                        549  else
                                                        +
                                                        550  call sntbfe ( lunltf, ilfxyn )
                                                        +
                                                        551  call getntbe ( lunltf, ilfxyn, ltline, ierl )
                                                        +
                                                        552  endif
                                                        +
                                                        553  enddo
                                                        +
                                                        554 
                                                        +
                                                        555  ! Sort the contents of the internal memory structure.
                                                        +
                                                        556 
                                                        +
                                                        557  call sorttbf_c
                                                        +
                                                        558 
                                                        +
                                                        559  return
                                                        +
                                                        560 end subroutine rdmtbf
                                                        +
                                                        561 
                                                        +
                                                        579 subroutine sntbbe ( ifxyn, line, mxmtbb, nmtbb, imfxyn, cmscl, cmsref, cmbw, cmunit, cmmnem, cmdsc, cmelem )
                                                        +
                                                        580 
                                                        +
                                                        581  implicit none
                                                        +
                                                        582 
                                                        +
                                                        583  integer, intent(in) :: ifxyn, mxmtbb
                                                        +
                                                        584  integer, intent(out) :: nmtbb, imfxyn(*)
                                                        +
                                                        585  integer ntag, ii, nemock
                                                        +
                                                        586 
                                                        +
                                                        587  character, intent(out) :: cmelem(120,*), cmunit(24,*), cmsref(12,*), cmmnem(8,*), cmscl(4,*), cmbw(4,*), cmdsc(*)*4
                                                        +
                                                        588  character*(*), intent(in) :: line
                                                        +
                                                        589  character*(*), parameter :: bort_str1_head = 'BUFRLIB: SNTBBE - TABLE B ENTRY FOR ELEMENT DESCRIPTOR: '
                                                        +
                                                        590  character*200 tags(10), wktag
                                                        +
                                                        591  character*128 bort_str1, bort_str2
                                                        +
                                                        592 
                                                        +
                                                        593  if ( nmtbb >= mxmtbb ) call bort('BUFRLIB: SNTBBE - OVERFLOW OF MERGED ARRAYS')
                                                        +
                                                        594  nmtbb = nmtbb + 1
                                                        +
                                                        595 
                                                        +
                                                        596  ! Store the FXY number. This is the element descriptor.
                                                        +
                                                        597 
                                                        +
                                                        598  imfxyn( nmtbb ) = ifxyn
                                                        +
                                                        599 
                                                        +
                                                        600  ! Parse the table entry.
                                                        +
                                                        601 
                                                        +
                                                        602  call parstr ( line, tags, 10, ntag, '|', .false. )
                                                        +
                                                        603  if ( ntag < 4 ) then
                                                        +
                                                        604  call sntbestr(bort_str1_head, ifxyn, bort_str1)
                                                        +
                                                        605  bort_str2 = ' HAS TOO FEW FIELDS'
                                                        +
                                                        606  call bort2(bort_str1, bort_str2)
                                                        +
                                                        607  endif
                                                        +
                                                        608 
                                                        +
                                                        609  ! Scale factor.
                                                        +
                                                        610 
                                                        +
                                                        611  tags(2) = adjustl( tags(2) )
                                                        +
                                                        612  if ( tags(2) == ' ' ) then
                                                        +
                                                        613  call sntbestr(bort_str1_head, ifxyn, bort_str1)
                                                        +
                                                        614  bort_str2 = ' HAS MISSING SCALE FACTOR'
                                                        +
                                                        615  call bort2(bort_str1, bort_str2)
                                                        +
                                                        616  endif
                                                        +
                                                        617  tags(2)(1:4) = adjustr( tags(2)(1:4) )
                                                        +
                                                        618  do ii = 1, 4
                                                        +
                                                        619  cmscl( ii, nmtbb ) = tags(2)(ii:ii)
                                                        +
                                                        620  enddo
                                                        +
                                                        621 
                                                        +
                                                        622  ! Reference value.
                                                        +
                                                        623 
                                                        +
                                                        624  tags(3) = adjustl( tags(3) )
                                                        +
                                                        625  if ( tags(3) == ' ' ) then
                                                        +
                                                        626  call sntbestr(bort_str1_head, ifxyn, bort_str1)
                                                        +
                                                        627  bort_str2 = ' HAS MISSING REFERENCE VALUE'
                                                        +
                                                        628  call bort2(bort_str1, bort_str2)
                                                        +
                                                        629  endif
                                                        +
                                                        630  tags(3)(1:12) = adjustr( tags(3)(1:12) )
                                                        +
                                                        631  do ii = 1, 12
                                                        +
                                                        632  cmsref( ii, nmtbb ) = tags(3)(ii:ii)
                                                        +
                                                        633  enddo
                                                        +
                                                        634 
                                                        +
                                                        635  ! Bit width.
                                                        +
                                                        636 
                                                        +
                                                        637  tags(4) = adjustl( tags(4) )
                                                        +
                                                        638  if ( tags(4) == ' ' ) then
                                                        +
                                                        639  call sntbestr(bort_str1_head, ifxyn, bort_str1)
                                                        +
                                                        640  bort_str2 = ' HAS MISSING BIT WIDTH'
                                                        +
                                                        641  call bort2(bort_str1, bort_str2)
                                                        +
                                                        642  endif
                                                        +
                                                        643  tags(4)(1:4) = adjustr( tags(4)(1:4) )
                                                        +
                                                        644  do ii = 1, 4
                                                        +
                                                        645  cmbw( ii, nmtbb ) = tags(4)(ii:ii)
                                                        +
                                                        646  end do
                                                        +
                                                        647 
                                                        +
                                                        648  ! Units. Note that this field is allowed to be blank.
                                                        +
                                                        649 
                                                        +
                                                        650  if ( ntag > 4 ) then
                                                        +
                                                        651  tags(5) = adjustl( tags(5) )
                                                        +
                                                        652  do ii = 1, 24
                                                        +
                                                        653  cmunit( ii, nmtbb ) = tags(5)(ii:ii)
                                                        +
                                                        654  enddo
                                                        +
                                                        655  else
                                                        +
                                                        656  do ii = 1, 24
                                                        +
                                                        657  cmunit( ii, nmtbb ) = ' '
                                                        +
                                                        658  enddo
                                                        +
                                                        659  endif
                                                        +
                                                        660 
                                                        +
                                                        661  ! Comment (additional) fields. Any of these fields may be blank.
                                                        +
                                                        662 
                                                        +
                                                        663  cmdsc( nmtbb ) = ' '
                                                        +
                                                        664  do ii = 1, 8
                                                        +
                                                        665  cmmnem( ii, nmtbb ) = ' '
                                                        +
                                                        666  enddo
                                                        +
                                                        667  do ii = 1, 120
                                                        +
                                                        668  cmelem( ii, nmtbb ) = ' '
                                                        +
                                                        669  enddo
                                                        +
                                                        670  if ( ntag > 5 ) then
                                                        +
                                                        671  wktag = tags(6)
                                                        +
                                                        672  call parstr ( wktag, tags, 10, ntag, ';', .false. )
                                                        +
                                                        673  if ( ntag > 0 ) then
                                                        +
                                                        674  ! The first additional field contains the mnemonic.
                                                        +
                                                        675  tags(1) = adjustl( tags(1) )
                                                        +
                                                        676  ! If there is a mnemonic, then make sure it's legal.
                                                        +
                                                        677  if ( ( tags(1) /= ' ' ) .and. ( nemock( tags(1) ) /= 0 ) ) then
                                                        +
                                                        678  call sntbestr(bort_str1_head, ifxyn, bort_str1)
                                                        +
                                                        679  bort_str2 = ' HAS ILLEGAL MNEMONIC'
                                                        +
                                                        680  call bort2(bort_str1, bort_str2)
                                                        +
                                                        681  endif
                                                        +
                                                        682  do ii = 1, 8
                                                        +
                                                        683  cmmnem( ii, nmtbb ) = tags(1)(ii:ii)
                                                        +
                                                        684  enddo
                                                        +
                                                        685  endif
                                                        +
                                                        686  if ( ntag > 1 ) then
                                                        +
                                                        687  ! The second additional field contains descriptor codes.
                                                        +
                                                        688  tags(2) = adjustl( tags(2) )
                                                        +
                                                        689  cmdsc( nmtbb ) = tags(2)(1:4)
                                                        +
                                                        690  endif
                                                        +
                                                        691  if ( ntag > 2 ) then
                                                        +
                                                        692  ! The third additional field contains the element name.
                                                        +
                                                        693  tags(3) = adjustl( tags(3) )
                                                        +
                                                        694  do ii = 1, 120
                                                        +
                                                        695  cmelem( ii, nmtbb ) = tags(3)(ii:ii)
                                                        +
                                                        696  enddo
                                                        +
                                                        697  endif
                                                        +
                                                        698  endif
                                                        +
                                                        699 
                                                        +
                                                        700  return
                                                        +
                                                        701 end subroutine sntbbe
                                                        +
                                                        702 
                                                        +
                                                        723 subroutine sntbde ( lunt, ifxyn, line, mxmtbd, mxelem, nmtbd, imfxyn, cmmnem, cmdsc, cmseq, nmelem, iefxyn, ceelem )
                                                        +
                                                        724 
                                                        +
                                                        725  implicit none
                                                        +
                                                        726 
                                                        +
                                                        727  integer, intent(in) :: lunt, ifxyn, mxmtbd, mxelem
                                                        +
                                                        728  integer, intent(out) :: nmtbd, imfxyn(*), nmelem(*), iefxyn(mxmtbd,mxelem)
                                                        +
                                                        729  integer ii, ipt, ntag, nelem, nemock, ifxy, igetfxy, igetntbl
                                                        +
                                                        730 
                                                        +
                                                        731  character*(*), intent(in) :: line
                                                        +
                                                        732  character*(*), parameter :: bort_str1_head = 'BUFRLIB: SNTBDE - TABLE D ENTRY FOR SEQUENCE DESCRIPTOR: '
                                                        +
                                                        733  character, intent(out) :: cmseq(120,*), cmmnem(8,*), cmdsc(*)*4, ceelem(mxmtbd,mxelem)*120
                                                        +
                                                        734  character*200 tags(10), cline
                                                        +
                                                        735  character*128 bort_str1, bort_str2
                                                        +
                                                        736  character*6 adsc
                                                        +
                                                        737 
                                                        +
                                                        738  logical done
                                                        +
                                                        739 
                                                        +
                                                        740  if ( nmtbd >= mxmtbd ) call bort('BUFRLIB: SNTBDE - OVERFLOW OF MERGED ARRAYS')
                                                        +
                                                        741  nmtbd = nmtbd + 1
                                                        +
                                                        742 
                                                        +
                                                        743  ! Store the FXY number. This is the sequence descriptor.
                                                        +
                                                        744 
                                                        +
                                                        745  imfxyn( nmtbd ) = ifxyn
                                                        +
                                                        746 
                                                        +
                                                        747  ! Is there any other information within the first line of the table entry? If so, it follows a "|" separator.
                                                        +
                                                        748 
                                                        +
                                                        749  do ii = 1, 8
                                                        +
                                                        750  cmmnem( ii, nmtbd ) = ' '
                                                        +
                                                        751  enddo
                                                        +
                                                        752  cmdsc( nmtbd ) = ' '
                                                        +
                                                        753  do ii = 1, 120
                                                        +
                                                        754  cmseq( ii, nmtbd ) = ' '
                                                        +
                                                        755  enddo
                                                        +
                                                        756  ipt = index( line, '|' )
                                                        +
                                                        757  if ( ipt /= 0 ) then
                                                        +
                                                        758  ! Parse the rest of the line. Any of the fields may be blank.
                                                        +
                                                        759  call parstr ( line(ipt+1:), tags, 10, ntag, ';', .false. )
                                                        +
                                                        760  if ( ntag > 0 ) then
                                                        +
                                                        761  ! The first additional field contains the mnemonic.
                                                        +
                                                        762  tags(1) = adjustl( tags(1) )
                                                        +
                                                        763  ! If there is a mnemonic, then make sure it's legal.
                                                        +
                                                        764  if ( ( tags(1) /= ' ' ) .and. ( nemock( tags(1) ) /= 0 ) ) then
                                                        +
                                                        765  call sntbestr(bort_str1_head, ifxyn, bort_str1)
                                                        +
                                                        766  bort_str2 = ' HAS ILLEGAL MNEMONIC'
                                                        +
                                                        767  call bort2(bort_str1, bort_str2)
                                                        +
                                                        768  endif
                                                        +
                                                        769  do ii = 1, 8
                                                        +
                                                        770  cmmnem( ii, nmtbd ) = tags(1)(ii:ii)
                                                        +
                                                        771  enddo
                                                        +
                                                        772  endif
                                                        +
                                                        773  if ( ntag > 1 ) then
                                                        +
                                                        774  ! The second additional field contains descriptor codes.
                                                        +
                                                        775  tags(2) = adjustl( tags(2) )
                                                        +
                                                        776  cmdsc( nmtbd ) = tags(2)(1:4)
                                                        +
                                                        777  endif
                                                        +
                                                        778  if ( ntag > 2 ) then
                                                        +
                                                        779  ! The third additional field contains the sequence name.
                                                        +
                                                        780  tags(3) = adjustl( tags(3) )
                                                        +
                                                        781  do ii = 1, 120
                                                        +
                                                        782  cmseq( ii, nmtbd ) = tags(3)(ii:ii)
                                                        +
                                                        783  enddO
                                                        +
                                                        784  endif
                                                        +
                                                        785  endif
                                                        +
                                                        786 
                                                        +
                                                        787  ! Now, read and parse all remaining lines from this table entry. Each line should contain an element descriptor for
                                                        +
                                                        788  ! the sequence represented by the current sequence descriptor.
                                                        +
                                                        789 
                                                        +
                                                        790  nelem = 0
                                                        +
                                                        791  done = .false.
                                                        +
                                                        792  do while ( .not. done )
                                                        +
                                                        793  if ( igetntbl( lunt, cline ) /= 0 ) then
                                                        +
                                                        794  call sntbestr(bort_str1_head, ifxyn, bort_str1)
                                                        +
                                                        795  bort_str2 = ' IS INCOMPLETE'
                                                        +
                                                        796  call bort2(bort_str1, bort_str2)
                                                        +
                                                        797  endif
                                                        +
                                                        798  call parstr ( cline, tags, 10, ntag, '|', .false. )
                                                        +
                                                        799  if ( ntag < 2 ) then
                                                        +
                                                        800  call sntbestr(bort_str1_head, ifxyn, bort_str1)
                                                        +
                                                        801  bort_str2 = ' HAS BAD ELEMENT CARD'
                                                        +
                                                        802  call bort2(bort_str1, bort_str2)
                                                        +
                                                        803  endif
                                                        +
                                                        804  ! The second field contains the FXY number for this element.
                                                        +
                                                        805  if ( igetfxy( tags(2), adsc ) /= 0 ) then
                                                        +
                                                        806  call sntbestr(bort_str1_head, ifxyn, bort_str1)
                                                        +
                                                        807  bort_str2 = ' HAS BAD OR MISSING ELEMENT FXY NUMBER'
                                                        +
                                                        808  call bort2(bort_str1, bort_str2)
                                                        +
                                                        809  endif
                                                        +
                                                        810  if ( nelem >= mxelem ) CALL bort('BUFRLIB: SNTBDE - OVERFLOW OF MERGED ARRAYS')
                                                        +
                                                        811  nelem = nelem + 1
                                                        +
                                                        812  iefxyn( nmtbd, nelem ) = ifxy( adsc )
                                                        +
                                                        813  ! The third field (if it exists) contains the element name.
                                                        +
                                                        814  if ( ntag > 2 ) then
                                                        +
                                                        815  tags(3) = adjustl( tags(3) )
                                                        +
                                                        816  ceelem( nmtbd, nelem ) = tags(3)(1:120)
                                                        +
                                                        817  else
                                                        +
                                                        818  ceelem( nmtbd, nelem ) = ' '
                                                        +
                                                        819  endif
                                                        +
                                                        820  ! Is this the last line for this table entry?
                                                        +
                                                        821  if ( index( tags(2), ' >' ) == 0 ) done = .true.
                                                        +
                                                        822  enddo
                                                        +
                                                        823  nmelem( nmtbd ) = nelem
                                                        +
                                                        824 
                                                        +
                                                        825  return
                                                        +
                                                        826 end subroutine sntbde
                                                        +
                                                        827 
                                                        +
                                                        835 subroutine sntbfe ( lunt, ifxyn )
                                                        +
                                                        836 
                                                        +
                                                        837  use bufrlib
                                                        +
                                                        838 
                                                        +
                                                        839  implicit none
                                                        +
                                                        840 
                                                        +
                                                        841  integer, intent(in) :: lunt, ifxyn
                                                        +
                                                        842  integer idfxy(10), idval(25), nidfxy, nidval, ntag, ii, jj, ival, ier, ipt, lt3, ifxy, igetfxy, igetntbl
                                                        +
                                                        843 
                                                        +
                                                        844  character*160 cline, tags(4), cdstr(2), adsc(10), cval(25)
                                                        +
                                                        845  character*(*), parameter :: bort_str1_head = 'BUFRLIB: SNTBFE - TABLE F ENTRY FOR ELEMENT DESCRIPTOR: '
                                                        +
                                                        846  character*128 bort_str1, bort_str2
                                                        +
                                                        847  character*6 cdsc
                                                        +
                                                        848 
                                                        +
                                                        849  logical done, lstnblk
                                                        +
                                                        850 
                                                        +
                                                        851  ! We already have the FXY number. Now we need to read and parse all of the remaining lines from the table entry for this
                                                        +
                                                        852  ! FXY number. The information for each individual code figure or bit number will then be stored as a separate entry within
                                                        +
                                                        853  ! the internal memory structure.
                                                        +
                                                        854 
                                                        +
                                                        855  done = .false.
                                                        +
                                                        856  nidfxy = 0
                                                        +
                                                        857  nidval = 0
                                                        +
                                                        858 
                                                        +
                                                        859  do while ( .not. done )
                                                        +
                                                        860 
                                                        +
                                                        861  if ( igetntbl( lunt, cline ) /= 0 ) then
                                                        +
                                                        862  call sntbestr(bort_str1_head, ifxyn, bort_str1)
                                                        +
                                                        863  bort_str2 = ' IS INCOMPLETE'
                                                        +
                                                        864  call bort2(bort_str1, bort_str2)
                                                        +
                                                        865  endif
                                                        +
                                                        866 
                                                        +
                                                        867  call parstr ( cline, tags, 4, ntag, '|', .false. )
                                                        +
                                                        868  if ( ( ntag < 2 ) .or. ( ntag > 3 ) ) then
                                                        +
                                                        869  call sntbestr(bort_str1_head, ifxyn, bort_str1)
                                                        +
                                                        870  bort_str2 = ' HAS BAD CARD'
                                                        +
                                                        871  call bort2(bort_str1, bort_str2)
                                                        +
                                                        872  endif
                                                        +
                                                        873 
                                                        +
                                                        874  if ( ntag == 2 ) then
                                                        +
                                                        875 
                                                        +
                                                        876  ! This line contains a list of dependencies.
                                                        +
                                                        877 
                                                        +
                                                        878  call parstr ( tags(2), cdstr, 2, ntag, '=', .false. )
                                                        +
                                                        879  if ( ntag /= 2 ) then
                                                        +
                                                        880  call sntbestr(bort_str1_head, ifxyn, bort_str1)
                                                        +
                                                        881  bort_str2 = ' HAS BAD DEPENDENCY CARD'
                                                        +
                                                        882  call bort2(bort_str1, bort_str2)
                                                        +
                                                        883  endif
                                                        +
                                                        884  ! Parse the list of FXY numbers.
                                                        +
                                                        885  call parstr ( cdstr(1), adsc, 10, nidfxy, ',', .false. )
                                                        +
                                                        886  if ( ( nidfxy == 0 ) .or. ( ( nidfxy == 1 ) .and. ( adsc(1) == ' ' ) ) ) then
                                                        +
                                                        887  call sntbestr(bort_str1_head, ifxyn, bort_str1)
                                                        +
                                                        888  bort_str2 = ' HAS BAD DEPENDENCY LIST (FXY)'
                                                        +
                                                        889  call bort2(bort_str1, bort_str2)
                                                        +
                                                        890  endif
                                                        +
                                                        891  do ii = 1, nidfxy
                                                        +
                                                        892  if ( igetfxy( adsc(ii), cdsc ) /= 0 ) then
                                                        +
                                                        893  call sntbestr(bort_str1_head, ifxyn, bort_str1)
                                                        +
                                                        894  bort_str2 = ' HAS BAD DEPENDENCY (FXY)'
                                                        +
                                                        895  call bort2(bort_str1, bort_str2)
                                                        +
                                                        896  endif
                                                        +
                                                        897  idfxy(ii) = ifxy( cdsc )
                                                        +
                                                        898  enddo
                                                        +
                                                        899  ! Parse the list of values.
                                                        +
                                                        900  call parstr ( cdstr(2), cval, 25, nidval, ',', .false. )
                                                        +
                                                        901  if ( ( nidval == 0 ) .or. ( ( nidval == 1 ) .and. ( cval(1) == ' ' ) ) ) then
                                                        +
                                                        902  call sntbestr(bort_str1_head, ifxyn, bort_str1)
                                                        +
                                                        903  bort_str2 = ' HAS BAD DEPENDENCY LIST (VAL)'
                                                        +
                                                        904  call bort2(bort_str1, bort_str2)
                                                        +
                                                        905  endif
                                                        +
                                                        906  do ii = 1, nidval
                                                        +
                                                        907  cval(ii) = adjustl( cval(ii) )
                                                        +
                                                        908  call strnum ( cval(ii), ival, ier )
                                                        +
                                                        909  if ( ier /= 0 ) then
                                                        +
                                                        910  call sntbestr(bort_str1_head, ifxyn, bort_str1)
                                                        +
                                                        911  bort_str2 = ' HAS BAD DEPENDENCY (VAL)'
                                                        +
                                                        912  call bort2(bort_str1, bort_str2)
                                                        +
                                                        913  endif
                                                        +
                                                        914  idval(ii) = ival
                                                        +
                                                        915  enddo
                                                        +
                                                        916 
                                                        +
                                                        917  else
                                                        +
                                                        918 
                                                        +
                                                        919  ! This line contains a value (code figure or bit number) and corresponding meaning.
                                                        +
                                                        920 
                                                        +
                                                        921  ipt = index( tags(2), ' >' )
                                                        +
                                                        922  if ( ipt == 0 ) then
                                                        +
                                                        923  ! This is the last line for this table entry.
                                                        +
                                                        924  done = .true.
                                                        +
                                                        925  else
                                                        +
                                                        926  tags(2)(ipt+1:ipt+1) = ' '
                                                        +
                                                        927  endif
                                                        +
                                                        928  tags(2) = adjustl( tags(2) )
                                                        +
                                                        929  call strnum ( tags(2), ival, ier )
                                                        +
                                                        930  ! Find the last non-blank character in the meaning string.
                                                        +
                                                        931  tags(3) = adjustl( tags(3) )
                                                        +
                                                        932  lt3 = len(tags(3))
                                                        +
                                                        933  lstnblk = .false.
                                                        +
                                                        934  do while ( ( lt3 > 0 ) .and. ( .not. lstnblk ) )
                                                        +
                                                        935  if ( tags(3)(lt3:lt3) /= ' ' ) then
                                                        +
                                                        936  lstnblk = .true.
                                                        +
                                                        937  else
                                                        +
                                                        938  lt3 = lt3 - 1
                                                        +
                                                        939  endif
                                                        +
                                                        940  enddo
                                                        +
                                                        941  ! Store the information for this value within the internal memory structure.
                                                        +
                                                        942  if ( ( nidfxy == 0 ) .and. ( nidval == 0 ) ) then
                                                        +
                                                        943  call strtbfe_c ( ifxyn, ival, tags(3), lt3, -1, -1 )
                                                        +
                                                        944  else
                                                        +
                                                        945  do ii = 1, nidfxy
                                                        +
                                                        946  do jj = 1, nidval
                                                        +
                                                        947  call strtbfe_c ( ifxyn, ival, tags(3), lt3, idfxy(ii), idval(jj) )
                                                        +
                                                        948  enddo
                                                        +
                                                        949  enddo
                                                        +
                                                        950  endif
                                                        +
                                                        951 
                                                        +
                                                        952  endif
                                                        +
                                                        953 
                                                        +
                                                        954  enddo
                                                        +
                                                        955 
                                                        +
                                                        956  return
                                                        +
                                                        957 end subroutine sntbfe
                                                        +
                                                        958 
                                                        +
                                                        966 subroutine sntbestr ( hestr, ifxyn, estr )
                                                        +
                                                        967 
                                                        +
                                                        968  implicit none
                                                        +
                                                        969 
                                                        +
                                                        970  character*(*), intent(in) :: hestr
                                                        +
                                                        971  character*(*), intent(out) :: estr
                                                        +
                                                        972  character*6 adn30, clemon
                                                        +
                                                        973 
                                                        +
                                                        974  integer, intent(in) :: ifxyn
                                                        +
                                                        975 
                                                        +
                                                        976  clemon = adn30( ifxyn, 6 )
                                                        +
                                                        977  estr = hestr // clemon(1:1) // '-' // clemon(2:3) // '-' // clemon(4:6)
                                                        +
                                                        978 
                                                        +
                                                        979  return
                                                        +
                                                        980 end subroutine sntbestr
                                                        +
                                                        981 
                                                        +
                                                        992 integer function igetntbl ( lunt, line ) result ( iret )
                                                        +
                                                        993 
                                                        +
                                                        994  implicit none
                                                        +
                                                        995 
                                                        +
                                                        996  integer, intent(in) :: lunt
                                                        +
                                                        997  integer ier
                                                        +
                                                        998 
                                                        +
                                                        999  character*(*), intent(out) :: line
                                                        +
                                                        1000 
                                                        +
                                                        1001  do while (.true.)
                                                        +
                                                        1002  read ( lunt, '(A)', iostat = ier ) line
                                                        +
                                                        1003  if ( ( ier /= 0 ) .or. ( line(1:3) == 'END' ) ) then
                                                        +
                                                        1004  iret = -1
                                                        +
                                                        1005  return
                                                        +
                                                        1006  endif
                                                        +
                                                        1007  if ( ( line /= ' ' ) .and. ( line(1:1) /= '#' ) ) then
                                                        +
                                                        1008  iret = 0
                                                        +
                                                        1009  return
                                                        +
                                                        1010  endif
                                                        +
                                                        1011  enddo
                                                        +
                                                        1012 
                                                        +
                                                        1013 end function igetntbl
                                                        +
                                                        1014 
                                                        +
                                                        1027 integer function igettdi ( iflag ) result ( iret )
                                                        +
                                                        1028 
                                                        +
                                                        1029  implicit none
                                                        +
                                                        1030 
                                                        +
                                                        1031  integer, intent(in) :: iflag
                                                        +
                                                        1032  integer, parameter :: idxmin = 62976 ! = ifxy('354000')
                                                        +
                                                        1033  integer, parameter :: idxmax = 63231 ! = ifxy('354255')
                                                        +
                                                        1034  integer idx
                                                        +
                                                        1035 
                                                        +
                                                        1036  save idx
                                                        +
                                                        1037 
                                                        +
                                                        1038  if ( iflag == 0 ) then
                                                        +
                                                        1039  ! Initialize the index to one less than the actual minimum value. That way, the next normal call will return the
                                                        +
                                                        1040  ! minimum value.
                                                        +
                                                        1041  idx = idxmin - 1
                                                        +
                                                        1042  iret = -1
                                                        +
                                                        1043  else
                                                        +
                                                        1044  idx = idx + 1
                                                        +
                                                        1045  if ( idx > idxmax ) call bort('BUFRLIB: IGETTDI - IDXMAX OVERFLOW')
                                                        +
                                                        1046  iret = idx
                                                        +
                                                        1047  endif
                                                        +
                                                        1048 
                                                        +
                                                        1049  return
                                                        +
                                                        1050 end function igettdi
                                                        +
                                                        1051 
                                                        +
                                                        1071 subroutine gettbh ( luns, lunl, tab, imt, imtv, iogce, iltv )
                                                        +
                                                        1072 
                                                        +
                                                        1073  implicit none
                                                        +
                                                        1074 
                                                        +
                                                        1075  integer, intent(in) :: luns, lunl
                                                        +
                                                        1076  integer, intent(out) :: imt, imtv, iogce, iltv
                                                        +
                                                        1077  integer ntag, imt2, iersn, igetntbl
                                                        +
                                                        1078 
                                                        +
                                                        1079  character, intent(in) :: tab
                                                        +
                                                        1080 
                                                        +
                                                        1081  character*128 bort_str
                                                        +
                                                        1082  character*(*), parameter :: bort_str_head = 'BUFRLIB: GETTBH - BAD OR MISSING HEADER WITHIN '
                                                        +
                                                        1083  character*40 header
                                                        +
                                                        1084  character*30 tags(5), label
                                                        +
                                                        1085  character*3 cftyp
                                                        +
                                                        1086  character*2 cttyp
                                                        +
                                                        1087 
                                                        +
                                                        1088  logical badlabel
                                                        +
                                                        1089 
                                                        +
                                                        1090  ! Statement function to check for bad header line label
                                                        +
                                                        1091  badlabel( label ) = ( ( index( label, cttyp ) == 0 ) .or. ( index( label, cftyp ) == 0 ) )
                                                        +
                                                        1092 
                                                        +
                                                        1093  cttyp = tab // ' '
                                                        +
                                                        1094 
                                                        +
                                                        1095  ! Read and parse the header line of the standard file.
                                                        +
                                                        1096 
                                                        +
                                                        1097  cftyp = 'STD'
                                                        +
                                                        1098  if ( igetntbl( luns, header ) /= 0 ) then
                                                        +
                                                        1099  bort_str = bort_str_head // cftyp // ' TABLE ' // tab
                                                        +
                                                        1100  call bort(bort_str)
                                                        +
                                                        1101  endif
                                                        +
                                                        1102  call parstr ( header, tags, 5, ntag, '|', .false. )
                                                        +
                                                        1103  if ( ( ntag < 3 ) .or. ( badlabel( tags(1) ) ) ) then
                                                        +
                                                        1104  bort_str = bort_str_head // cftyp // ' TABLE ' // tab
                                                        +
                                                        1105  call bort(bort_str)
                                                        +
                                                        1106  endif
                                                        +
                                                        1107  call strnum ( tags(2), imt, iersn )
                                                        +
                                                        1108  call strnum ( tags(3), imtv, iersn )
                                                        +
                                                        1109 
                                                        +
                                                        1110  ! Read and parse the header line of the local file.
                                                        +
                                                        1111 
                                                        +
                                                        1112  cftyp = 'LOC'
                                                        +
                                                        1113  if ( igetntbl( lunl, header ) /= 0 ) then
                                                        +
                                                        1114  bort_str = bort_str_head // cftyp // ' TABLE ' // tab
                                                        +
                                                        1115  call bort(bort_str)
                                                        +
                                                        1116  endif
                                                        +
                                                        1117  call parstr ( header, tags, 5, ntag, '|', .false. )
                                                        +
                                                        1118  if ( ( ntag < 4 ) .or. ( badlabel( tags(1) ) ) ) then
                                                        +
                                                        1119  bort_str = bort_str_head // cftyp // ' TABLE ' // tab
                                                        +
                                                        1120  call bort(bort_str)
                                                        +
                                                        1121  endif
                                                        +
                                                        1122  call strnum ( tags(2), imt2, iersn )
                                                        +
                                                        1123  call strnum ( tags(3), iogce, iersn )
                                                        +
                                                        1124  call strnum ( tags(4), iltv, iersn )
                                                        +
                                                        1125 
                                                        +
                                                        1126  ! Verify that both files are for the same master table.
                                                        +
                                                        1127 
                                                        +
                                                        1128  if ( imt /= imt2 ) then
                                                        +
                                                        1129  write(bort_str,'("BUFRLIB: GETTBH - MASTER TABLE NUMBER MISMATCH BETWEEN STD AND LOC TABLE ",A)') tab
                                                        +
                                                        1130  call bort(bort_str)
                                                        +
                                                        1131  endif
                                                        +
                                                        1132 
                                                        +
                                                        1133  return
                                                        +
                                                        1134 end subroutine gettbh
                                                        +
                                                        1135 
                                                        +
                                                        1147 subroutine getntbe ( lunt, ifxyn, line, iret )
                                                        +
                                                        1148 
                                                        +
                                                        1149  implicit none
                                                        +
                                                        1150 
                                                        +
                                                        1151  integer, intent(in) :: lunt
                                                        +
                                                        1152  integer, intent(out) :: ifxyn, iret
                                                        +
                                                        1153  integer ntag, igetfxy, ifxy, igetntbl
                                                        +
                                                        1154 
                                                        +
                                                        1155  character*(*), intent(out) :: line
                                                        +
                                                        1156  character*128 bort_str1, bort_str2
                                                        +
                                                        1157  character*20 tags(4)
                                                        +
                                                        1158  character*6 adsc
                                                        +
                                                        1159 
                                                        +
                                                        1160  ! Get the first line of the next entry in the file.
                                                        +
                                                        1161 
                                                        +
                                                        1162  iret = igetntbl( lunt, line )
                                                        +
                                                        1163  if ( iret == 0 ) then
                                                        +
                                                        1164  ! The first field within this line should contain the FXY number.
                                                        +
                                                        1165  call parstr ( line(1:20), tags, 4, ntag, '|', .false. )
                                                        +
                                                        1166  if ( igetfxy( tags(1), adsc ) /= 0 ) then
                                                        +
                                                        1167  bort_str1 = 'BUFRLIB: GETNTBE - CARD BEGINNING WITH: ' // line(1:20)
                                                        +
                                                        1168  bort_str2 = ' HAS BAD OR MISSING FXY NUMBER'
                                                        +
                                                        1169  call bort2(bort_str1, bort_str2)
                                                        +
                                                        1170  endif
                                                        +
                                                        1171  ! Store the WMO bit-wise representation of the FXY number.
                                                        +
                                                        1172  ifxyn = ifxy( adsc )
                                                        +
                                                        1173  endif
                                                        +
                                                        1174 
                                                        +
                                                        1175  return
                                                        +
                                                        1176 end subroutine getntbe
                                                        +
                                                        1177 
                                                        +
                                                        1208 subroutine codflg(cf)
                                                        +
                                                        1209 
                                                        +
                                                        1210  use moda_tablef
                                                        +
                                                        1211 
                                                        +
                                                        1212  implicit none
                                                        +
                                                        1213 
                                                        +
                                                        1214  character, intent(in) :: cf
                                                        +
                                                        1215 
                                                        +
                                                        1216  character*128 bort_str
                                                        +
                                                        1217 
                                                        +
                                                        1218  call capit(cf)
                                                        +
                                                        1219  if(cf/='Y'.and. cf/='N') then
                                                        +
                                                        1220  write(bort_str,'("BUFRLIB: CODFLG - INPUT ARGUMENT IS ",A1,", IT MUST BE EITHER Y OR N")') cf
                                                        +
                                                        1221  call bort(bort_str)
                                                        +
                                                        1222  endif
                                                        +
                                                        1223  cdmf = cf
                                                        +
                                                        1224 
                                                        +
                                                        1225  return
                                                        +
                                                        1226 end subroutine codflg
                                                        +
                                                        1227 
                                                        +
                                                        1240 integer function nemock(nemo) result(iret)
                                                        +
                                                        1241 
                                                        +
                                                        1242  implicit none
                                                        +
                                                        1243 
                                                        +
                                                        1244  integer i, lnemo
                                                        +
                                                        1245 
                                                        +
                                                        1246  character*(*), intent(in) :: nemo
                                                        +
                                                        1247 
                                                        +
                                                        1248  ! Get the length of nemo
                                                        +
                                                        1249 
                                                        +
                                                        1250  lnemo = 0
                                                        +
                                                        1251  do i=len(nemo),1,-1
                                                        +
                                                        1252  if(nemo(i:i)/=' ') then
                                                        +
                                                        1253  lnemo = i
                                                        +
                                                        1254  exit
                                                        +
                                                        1255  endif
                                                        +
                                                        1256  enddo
                                                        +
                                                        1257  if(lnemo<1 .or. lnemo>8) then
                                                        +
                                                        1258  iret = -1
                                                        +
                                                        1259  return
                                                        +
                                                        1260  endif
                                                        +
                                                        1261 
                                                        +
                                                        1262  ! Scan nemo for allowable characters
                                                        +
                                                        1263 
                                                        +
                                                        1264  if ( verify(nemo(1:lnemo),'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_.') == 0 ) then
                                                        +
                                                        1265  iret = 0
                                                        +
                                                        1266  else
                                                        +
                                                        1267  iret = -2
                                                        +
                                                        1268  endif
                                                        +
                                                        1269 
                                                        +
                                                        1270  return
                                                        +
                                                        1271 end function nemock
                                                        +
                                                        subroutine bort(str)
                                                        Log an error message, then abort the application program.
                                                        Definition: borts.F90:15
                                                        +
                                                        subroutine bort2(str1, str2)
                                                        Log two error messages, then abort the application program.
                                                        Definition: borts.F90:39
                                                        +
                                                        subroutine errwrt(str)
                                                        Specify a custom location for the logging of error and diagnostic messages generated by the NCEPLIBS-...
                                                        Definition: errwrt.F90:32
                                                        +
                                                        integer function ifxy(adsc)
                                                        Convert an FXY value from its 6 character representation to its WMO bit-wise representation.
                                                        Definition: fxy.F90:152
                                                        + + + + + +
                                                        subroutine sntbde(lunt, ifxyn, line, mxmtbd, mxelem, nmtbd, imfxyn, cmmnem, cmdsc, cmseq, nmelem, iefxyn, ceelem)
                                                        Store the first line of an entry that was previously read from an ASCII master Table D file into a se...
                                                        +
                                                        subroutine sntbfe(lunt, ifxyn)
                                                        Read an entire entry from a previously-opened ASCII master Code/Flag table file, then store the infor...
                                                        +
                                                        subroutine sntbestr(hestr, ifxyn, estr)
                                                        Generate an error-reporting string containing an FXY number.
                                                        +
                                                        subroutine rdmtbd(lunstd, lunltd, mxmtbd, mxelem, imt, imtv, iogce, iltv, nmtbd, imfxyn, cmmnem, cmdsc, cmseq, nmelem, iefxyn, ceelem)
                                                        Read master Table D information from two separate ASCII files (one standard and one local) and then m...
                                                        +
                                                        subroutine mtfnam(imt, imtv, iogce, imtvl, tbltyp, stdfil, locfil)
                                                        Based on the input arguments, determine the names of the corresponding standard and local master tabl...
                                                        Definition: mastertable.F90:87
                                                        +
                                                        subroutine codflg(cf)
                                                        Specify whether or not code and flag table information should be included during all future reads of ...
                                                        +
                                                        integer function nemock(nemo)
                                                        Check a mnemonic for validity.
                                                        +
                                                        subroutine sntbbe(ifxyn, line, mxmtbb, nmtbb, imfxyn, cmscl, cmsref, cmbw, cmunit, cmmnem, cmdsc, cmelem)
                                                        Store an entry that was previously read from an ASCII master Table B file into a set of merged Fortra...
                                                        +
                                                        subroutine getntbe(lunt, ifxyn, line, iret)
                                                        Read the first line of the next entry from the specified ASCII master table B, table D or table F (Co...
                                                        +
                                                        integer function igettdi(iflag)
                                                        Depending on the value of the input flag, either return the next usable scratch Table D index for the...
                                                        +
                                                        subroutine rdmtbb(lunstb, lunltb, mxmtbb, imt, imtv, iogce, iltv, nmtbb, imfxyn, cmscl, cmsref, cmbw, cmunit, cmmnem, cmdsc, cmelem)
                                                        Read master Table B information from two separate ASCII files (one standard and one local) and then m...
                                                        +
                                                        integer function igetntbl(lunt, line)
                                                        Read the next line from an ASCII master table B, table D or Code/Flag table file, ignoring any blank ...
                                                        +
                                                        subroutine gettbh(luns, lunl, tab, imt, imtv, iogce, iltv)
                                                        Read the header lines from two separate ASCII files (one standard and one local) containing master ta...
                                                        +
                                                        recursive subroutine mtinfo(cmtdir, lunmt1, lunmt2)
                                                        Specify the directory location and Fortran logical unit numbers to be used when reading master BUFR t...
                                                        Definition: mastertable.F90:35
                                                        +
                                                        subroutine rdmtbf(lunstf, lunltf)
                                                        Read master Code/Flag table information from two separate ASCII files (one standard and one local) an...
                                                        +
                                                        integer function ireadmt(lun)
                                                        Check the most recent BUFR message that was read via a call to one of the message-reading subroutines...
                                                        +
                                                        recursive subroutine strnum(str, num, iret)
                                                        Decode an integer from a character string.
                                                        Definition: misc.F90:177
                                                        +
                                                        subroutine strsuc(str1, str2, lens)
                                                        Remove leading and trailing blanks from a character string.
                                                        Definition: misc.F90:220
                                                        +
                                                        subroutine capit(str)
                                                        Capitalize all of the alphabetic characters in a string.
                                                        Definition: misc.F90:355
                                                        +
                                                        Wrap C NCEPLIBS-bufr functions so they can be called from within the Fortran part of the library.
                                                        Definition: bufrlib.F90:11
                                                        +
                                                        Declare arrays and variables used to store BUFR messages internally for multiple file IDs.
                                                        +
                                                        integer, dimension(:,:), allocatable mbay
                                                        Current BUFR message for each file ID.
                                                        +
                                                        Declare arrays and variables used to store master Table B and Table D entries within internal memory.
                                                        +
                                                        integer, dimension(:), allocatable idfxyn
                                                        WMO bit-wise representations of FXY numbers for master Table D.
                                                        +
                                                        character, dimension(:,:), allocatable cbunit
                                                        Units corresponding to ibfxyn.
                                                        +
                                                        integer nmtb
                                                        Number of master Table B entries (up to a maximum of mxmtbb).
                                                        +
                                                        character, dimension(:,:), allocatable cbbw
                                                        Bit widths corresponding to ibfxyn.
                                                        +
                                                        character, dimension(:,:), allocatable cdseq
                                                        Sequence names corresponding to idfxyn.
                                                        +
                                                        character, dimension(:,:), allocatable cbmnem
                                                        Mnemonics corresponding to ibfxyn.
                                                        +
                                                        integer, dimension(:), allocatable ndelem
                                                        Numbers of child descriptors corresponding to idfxyn.
                                                        +
                                                        character, dimension(:,:), allocatable cbelem
                                                        Element names corresponding to ibfxyn.
                                                        +
                                                        character, dimension(:,:), allocatable cbscl
                                                        Scale factors corresponding to ibfxyn.
                                                        +
                                                        character, dimension(:,:), allocatable cdmnem
                                                        Mnemonics corresponding to idfxyn.
                                                        +
                                                        character, dimension(:,:), allocatable cbsref
                                                        Reference values corresponding to ibfxyn.
                                                        +
                                                        integer nmtd
                                                        Number of master Table D entries (up to a maximum of mxmtbd).
                                                        +
                                                        integer, dimension(:), allocatable idefxy
                                                        WMO bit-wise representations of child descriptors corresponding to idfxyn.
                                                        +
                                                        integer, dimension(:), allocatable ibfxyn
                                                        WMO bit-wise representations of FXY numbers for master Table B.
                                                        +
                                                        Declare arrays and variables used to store master Table B and Table D entries within internal memory.
                                                        +
                                                        character *120, dimension(:,:), allocatable ceelem
                                                        Element names corresponding to iefxyn.
                                                        +
                                                        character *4, dimension(:), allocatable cmdscb
                                                        Descriptor codes for Table B elements.
                                                        +
                                                        integer, dimension(:,:), allocatable iefxyn
                                                        WMO bit-wise representations of child descriptors of Table D sequences.
                                                        +
                                                        character *4, dimension(:), allocatable cmdscd
                                                        Descriptor codes for Table D sequences.
                                                        +
                                                        Declare arrays used by various subroutines and functions to hold a temporary working copy of a Sectio...
                                                        +
                                                        character *6, dimension(:), allocatable cds3
                                                        Temporary working copy of Section 3 descriptor list in character form.
                                                        +
                                                        Declare an array used to store a switch for each file ID, indicating whether BUFR messages read from ...
                                                        +
                                                        integer, dimension(:), allocatable isc3
                                                        Section 3 switch for each file ID:
                                                        +
                                                        Declare a variable used to indicate whether master code and flag tables should be read.
                                                        +
                                                        character cdmf
                                                        Flag indicating whether to include code and flag table information during reads of master BUFR tables...
                                                        +
                                                        recursive integer function iupbs01(mbay, s01mnem)
                                                        Read a specified value from within Section 0 or Section 1 of a BUFR message.
                                                        Definition: s013vals.F90:247
                                                        +
                                                        recursive subroutine upds3(mbay, lcds3, cds3, nds3)
                                                        Read the sequence of data descriptors contained within Section 3 of a BUFR message.
                                                        Definition: s013vals.F90:829
                                                        +
                                                        integer function istdesc(idn)
                                                        Given the WMO bit-wise representation of an FXY value for a descriptor, check whether the descriptor ...
                                                        Definition: standard.F90:298
                                                        +
                                                        subroutine parstr(str, tags, mtag, ntag, sep, limit80)
                                                        Parse a string containing one or more substrings into an array of substrings.
                                                        Definition: strings.F90:473
                                                        +
                                                        subroutine x84(iin8, iout4, nval)
                                                        Encode one or more 8-byte integer values as 4-byte integer values.
                                                        Definition: x4884.F90:65
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html b/previous_versions/v12.1.0/md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html new file mode 100644 index 000000000..545c154d3 --- /dev/null +++ b/previous_versions/v12.1.0/md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html @@ -0,0 +1,657 @@ + + + + + + + +NCEPLIBS-bufr: Release Notes + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        +
                                                        Release Notes
                                                        +
                                                        +
                                                        +

                                                        Detailed description of changes included within each new release.

                                                        +

                                                        +Version 12.1.0 - July 10, 2024

                                                        +
                                                          +
                                                        • Added support for IntelLLVM (OneAPI) compilers. [Issue #538]
                                                        • +
                                                        • Added logic to optimize decoding for the majority of data values which are encoded in 32 bits or less. [Issue #534] [Issue #543]
                                                        • +
                                                        • Increased length limits for master table directory and filenames. [Issue #533]
                                                        • +
                                                        • Fixed some build issues related to Python interoperability. [Issue #524] [Issue #537]
                                                        • +
                                                        • Fixed a bug to ensure that any user input data values of NaN are encoded as "missing" in BUFR. [Issue #550]
                                                        • +
                                                        • Modified the ufdump() subroutine to print subset data values to their true scale precision, so that values with a non-positive scale factor will now display as integers, including when printed via the debufr utility. [Issue #513]
                                                        • +
                                                        • Added a new print verbosity level of 3 which can be activated when calling subroutine openbf() with IO='QUIET'. [Issue #567]
                                                        • +
                                                        • Added apxdx to project as new utility. [Issue #585]
                                                        • +
                                                        • Fixed a bug in subroutine rewnbf() to ensure that it points to the correct subset in a BUFR message after a restore call. [Issue #599]
                                                        • +
                                                        +

                                                        +Version 12.0.1 - September 15, 2023

                                                        +
                                                          +
                                                        • An extension was added to support the query interface for C++ IODA converters. [Issue #519]
                                                        • +
                                                        +

                                                        +Version 12.0.0 - June 8, 2023

                                                        +
                                                          +
                                                        • The library has been consolidated into a single build using 4-byte integers. It can still be linked to Fortran application codes which are compiled using 8-byte integers; however, such codes must now include a call to new subroutine setim8b() with a value of .true. before making any calls to any other library routines. Furthermore, since all library functions which return integer values (e.g. iupbs01(), isetprm(), ibfms()) will now return 4-byte integer values, Fortran application codes which are compiled using 8-byte integers must now also explicitly declare such functions as 4-byte integers before calling them. [Issue #78]
                                                        • +
                                                        • The interface between the C and Fortran components of the library has been modernized. Accordingly, Fortran application codes must now contain a 'use bufr_interface' statement to directly call any C functions within the library, and C application codes must now contain an 'include "bufr_interface.h"' preprocessor statement to directly call any Fortran or C functions within the library. [Issue #79]
                                                        • +
                                                        • Subroutines ufbqcd() and ufbqcp() have been modified to pass call arguments containing event program codes as integers, rather than continuing to pass them as real numbers. [Issue #78]
                                                        • +
                                                        • An extension was added to support the query interface for C++ IODA converters. [Issue #451]
                                                        • +
                                                        • Support for legacy EBCDIC platforms has been removed. [Issue #266]
                                                        • +
                                                        • The library has been patched to exit gracefully from subroutine readsb() if an erroneous delayed replication factor is read within subroutine usrtpl(). [Issue #495]
                                                        • +
                                                        • The library has been cleaned up to eliminate a number of compiler warnings. [Issue #300]
                                                        • +
                                                        • Documentation has been improved throughout the library, including the use of Doxygen-style docblocks for all program files. [Issue #246]
                                                        • +
                                                        +

                                                        +Version 11.7.1 - August 26, 2022

                                                        +
                                                          +
                                                        • More extensions were added to support the query interface for C++ IODA converters. [Issue #225]
                                                        • +
                                                        • Several internal routines were modified to allow the encoding and decoding of values larger than 32 bits. [Issue #195]
                                                        • +
                                                        +

                                                        +Version 11.7.0 - May 19, 2022

                                                        +
                                                          +
                                                        • Extensions were added to support a new query interface for C++ IODA converters. [Issue #198]
                                                        • +
                                                        • Updates and bug fixes were made to several utility programs within the library package. [Issue #141]
                                                        • +
                                                        • A fix was made to prevent a line truncation error which occurs with certain compilers when the value of the MASTER_TABLE_DIR macro exceeds a certain length. [Issue #182]
                                                        • +
                                                        +

                                                        +Version 11.6.0 - November 10, 2021

                                                        +
                                                          +
                                                        • All of the library builds now use dynamic allocation, so the "_DA" suffix has now been correspondingly removed from the names of the library builds. [Issue #77]
                                                        • +
                                                        • The default BUFR master table version number for output BUFR messages was changed from 29 to 36 within subroutines cmsgini(), dxmini() and msgini(). [Issue #142]
                                                        • +
                                                        • The maximum length of a [path/]filename that can be passed into function cobfl() was increased to 200 characters. [Issue #174]
                                                        • +
                                                        • Subroutine ufbpos() was modified to allow it to work for all types of BUFR messages, including compressed messages. [Issue #170]
                                                        • +
                                                        • The library was modified to read up to 24 characters from the units field of BUFR master Table B files. Furthermore, in accordance with updated guidance from WMO, all fields within all BUFR master table files are now restricted to the CCITTIA5 character set. [Issue #140]
                                                        • +
                                                        • Subroutine jstchr and function rjust have been removed from the library, and their usage has been replaced with the Fortran intrinsic functions adjustl and adjustr. [Issue #165]
                                                        • +
                                                        • Several prototypes were added to the bufrlib.h header file to enable further interoperability with C application programs. In addition, several existing prototypes were modified to use size_t when passing string lengths between Fortran and C. [Issue #164]
                                                        • +
                                                        +

                                                        +Version 11.5.0 - April 26, 2021

                                                        +
                                                          +
                                                        • Subroutine ufbseq() was modified for cases where the number of available levels exceeds the amount of user-provided array space when reading from an input file. Previously, the software would abort in such cases without returning any data whatsoever, but with the change it will now print a diagnostic and return with the number of levels equal to the amount of array space that was provided. [Issue #52]
                                                        • +
                                                        • Subroutine ufdump() was modified to improve the logic for sequence tracking, and to increase the format width for integer code figure and bit number values when printing associated meaning strings. [Issue #55]
                                                        • +
                                                        • Subroutine ufbdmp() was modified to fix a bug when checking for the "missing" value in long character strings (i.e. longer than 8 bytes) and to enable printing of up to 120 characters for such strings. [Issue #55]
                                                        • +
                                                        • Subroutine readlc() was modified to return a "missing" character string if the requested mnemonic isn't found in the subset. Previously, the subroutine would return a string of all blank characters in such cases. [Issue #53]
                                                        • +
                                                        • Subroutine writlc() was modified to print a warning message if the requested mnemonic isn't found in the subset definition. The library would previously abort in such cases. [Issue #53]
                                                        • +
                                                        • The default directory location of the BUFR master tables in subroutine bfrini() was changed from a fixed WCOSS-specific path. It is now set to the defined value of the MASTER_TABLE_DIR macro when the library was built. [Issue #123]
                                                        • +
                                                        • Subroutine writsa() was modified to allow the return of up to two BUFR messages during the same call to the subroutine, in the rare instances where more than one BUFR message could become available during such a call. [Issue #54]
                                                        • +
                                                        • Several internal Fortran variable declarations were modified for compatibility with GNU v10+ compilers. [Issue #81]
                                                        • +
                                                        • Subroutines pkx and chrtrn are no longer used within the library and were never intended to be called from application codes, so they have now been removed from the library. [Issue #107]
                                                        • +
                                                        +

                                                        +Version 11.4.0 - November 20, 2020

                                                        +
                                                          +
                                                        • A Python API was added to the library, for use with Python applications. [Issue #61]
                                                        • +
                                                        +

                                                        +Version 11.3.2 - July 16, 2020

                                                        +
                                                          +
                                                        • A user-friendly sanity check was added to subroutine closbf(), in case an application program is using a dynamic-allocation build of the library and calls this subroutine prior to calling subroutine openbf(). The library would previously abort in such cases, but it will now just print a warning message. [Issue #9]
                                                        • +
                                                        +

                                                        +Version 11.3.1 - March 3, 2020

                                                        +
                                                          +
                                                        • Subroutine stndrd() was patched to fix an internal calculation for messages containing only one subset. [Issue #51]
                                                        • +
                                                        +

                                                        +Version 11.3.0 - May 21, 2019

                                                        +
                                                          +
                                                        • A bug was fixed in the bitmap processing, so that each Table A mnemonic in the jump/link table now tracks its own individual set of underlying Table C operators. This involved changes to function igetrfel() and subroutines tabsub() and makestab().
                                                        • +
                                                        • The build script makebufrlib.sh was modified to remove calls to cpp (the C preprocessor) for all *.F Fortran files. Preprocessing for these files is now done by fpp (the Fortran preprocessor), which is automatically called by the Fortran compiler for all *.F files.
                                                        • +
                                                        • Global variable MXRST (the maximum number of long character strings that can be read from a subset of a compressed BUFR message) has now been added to the list of array size limits that can be configured using dynamic allocation.
                                                        • +
                                                        • The build script makebufrlib.sh was modified to stop generating the s_64 ("supersize") build. Such builds are now obsolete, since users can use the dynamic allocation builds to flexibly define whatever size limits they need for large BUFR datasets. If users need to recreate the exact specifications that were present in the previous s_64 build, they can do so using a dynamic allocation build and separate calls to subroutine isetprm() to set MXLCC=12, MAXMEM=75000000, MXCDV=50000, MAXJL=128000, MAXSS=150000, MXMSGL=2500000 and MXRST=500 within their application program.
                                                        • +
                                                        • A new capability was added to read and process master code and flag tables. This feature is activated via an initial call to new subroutine codflg() at any time after the first call to subroutine openbf(). Once that is done, then for any BUFR message read into the library via subroutine readmg(), readerme() or equivalent, and for any mnemonic contained within that message which is defined as a code or flag table, the user may call new subroutine getcfmng() with that mnemonic and an associated value (code figure or bit number) as input, and the subroutine will return the meaning (as a character string) corresponding to that mnemonic and associated value.
                                                        • +
                                                        • The default BUFR master table version number was changed from "13" to "29" within subroutines cmsgini(), dxmini() and msgini().
                                                        • +
                                                        • The maximum number of delayed replication factors that can be passed in as input to subroutine drfini() was increased from 200 to 2000.
                                                        • +
                                                        • Subroutines msgupd() and cpyupd() were modified so that the IPRT verbosity must be greater than or equal to 1 in order for diagnostic alerts to be printed whenever BUFR subsets greater than 65535 bytes are written to their own output messages.
                                                        • +
                                                        • Function i4dy() was modified to change the window for converting 2-digit years to 4-digit years. The old window was 1921-2020, i.e. add 1900 to any 2-digit year greater than 20; otherwise add 2000. The new window will be 1941-2040, i.e. add 1900 to any 2-digit year greater than 40; otherwise add 2000.
                                                        • +
                                                        +

                                                        +Version 11.2.0 - April 11, 2017

                                                        +
                                                          +
                                                        • Support was added for the processing of 2-2X-255, 2-3X-255 and 2-4X-255 marker operators when reading BUFR messages, including when such operators are included in sequences within a BUFR DX table.
                                                        • +
                                                        • A new subroutine gettagre() was added which, given an element within a subset open for reading, determines if the element references another element within the same subset via an internal bitmap, and if so returns the referenced element along with its location in the subset.
                                                        • +
                                                        • A new function igetmxby() was added which returns the maximum size of a BUFR message that can be written to any output stream by the BUFRLIB software. This value can then be modified via a subsequent call to subroutine maxout().
                                                        • +
                                                        • Subroutine nemtbd() was modified to allow the last mnemonic in a sequence to be a "following value" mnemonic, for cases such as when it is being used as a coordinate descriptor and set to a value of "missing" to cancel a previous instance of the same descriptor.
                                                        • +
                                                        • A new subroutine setvalnb() was added which searches for a specified mnemonic in a subset definition, then searches forward or backward from that point for a different mnemonic and sets the associated value as specified by the user. It can be useful in certain application codes which write BUFR output.
                                                        • +
                                                        • Subroutines rdtree() and rcstpl() were modified to automatically identify certain cases where a decoded subset is corrupt and return this information to the application program via readsb() or ireadsb(), rather than continuing to try to decode the message which could in turn lead to a segmentation fault.
                                                        • +
                                                        • The build script makebufrlib.sh was updated to add a missing compiler option needed for compatibility with the Cray programming environment on the s_64 ("supersize") build.
                                                        • +
                                                        • A bug was fixed in subroutine ufbtab() which could occasionally lead to array maximums being exceeded and corrupted output when reading BUFR files.
                                                        • +
                                                        +

                                                        +Version 11.1.0 - April 27, 2016

                                                        +
                                                          +
                                                        • Subroutine wrcmps() was modified to fix a bug involving the encoding of long character strings (via subroutine writlc()) into compressed messages which also contain delayed replication sequences.
                                                        • +
                                                        • Subroutine msgupd() was modified to always call subroutine usrtpl(), even for overlarge subsets which don''t get written to the output stream. This ensures that such subsets are properly flushed from internal arrays.
                                                        • +
                                                        +

                                                        +Version 11.0.2

                                                        +
                                                          +
                                                        • The build script makebufrlib.sh was updated for compatibility with the Cray programming environment, along with module MODA_MSTABS and functions icbfms() and isize(). All changes remain compatible with other supported environments.
                                                        • +
                                                        +

                                                        +Version 11.0.1

                                                        +
                                                          +
                                                        • Subroutines cpyupd(), ufbmem(), ufbmex() and ufbovr() were patched to include the proper declaration for IPRT, which is a global variable controlling the verbosity of diagnostic output.
                                                        • +
                                                        • Subroutine ufdump() was modified to include level identifiers for event stacks in the print output.
                                                        • +
                                                        • Subroutine wrcmps() was modified to fix a bug involving a variable that was not being saved between successive calls to this subroutine and which in rare cases could result in the loss of output subsets.
                                                        • +
                                                        +

                                                        +Version 11.0.0 - April 27, 2015

                                                        +
                                                          +
                                                        • A new subroutine rtrcptb() was added which works just like subroutine rtrcpt(), except that it operates on a BUFR message passed directly to it by a call argument, rather than on the last BUFR message that was indirectly read during the previous call to subroutine readmg(), readmm(), readerme() or equivalent. Subroutine rtrcpt() was correspondingly modified to now directly call rtrcptb(), to avoid maintaining the same program logic within two different subroutines.
                                                        • +
                                                        • The maximum number of delayed replication factors that can be passed in as input to subroutine drfini() was increased from 100 to 200.
                                                        • +
                                                        • Subroutine ufbseq() was modified to fix a bug involving nesting of delayed replication sequences. The subroutine would fail to store data properly in cases where the inner-nested sequence was not present (i.e. zero replications) within the first replication of the outer sequence.
                                                        • +
                                                        • The makebufrlib.sh build script was modified to automatically extract the version number for the current build from the source of subroutine bvers(). Previously this information had been hardcoded in multiple lines of the script.
                                                        • +
                                                        • The default directory location of the BUFR master tables in subroutine bfrini() was changed from "/nwprod/fix" to "/nwprod/decoders/decod_shared/fix".
                                                        • +
                                                        • A new subroutine nemspecs() was added which returns the scale factor, reference value and bit width corresponding to a specified occurrence of a given mnemonic within a subset definition, including accounting for any Table C operators such as 2-01-YYY, 2-02-YYY, 2-03-YYY, 2-07-YYY, 2-08-YYY, etc. which may be in effect for that particular occurrence of the mnemonic.
                                                        • +
                                                        • A new subroutine nemdefs() was added which returns the element definition and units associated with a given mnemonic.
                                                        • +
                                                        • Global parameter MXIMB was removed from the BUFRLIB, and the corresponding logic within subroutine mvb() was simplified to mitigate the need for it.
                                                        • +
                                                        • Subroutines msgupd(), cpyupd() and copysb() were modified to ensure that any subset larger than 65530 bytes is written to its own message in the output stream. This ensures that the subset byte count indicator, which is an NCEP local descriptor packed into 16 bits prior to each subset in a message, will not need to be relied upon in order to locate any subsequent subsets within the same message.
                                                        • +
                                                        • Global parameter MAXSS (the maximum number of data values that can be read from or written into a subset by the BUFRLIB software) was increased from 80000 to 120000.
                                                        • +
                                                        • Subroutine RDMSGB, which was rendered obsolete with the addition of the embedded C-language I/O upgrade in version 10.2.0, has been removed.
                                                        • +
                                                        • A logical call argument was added to subroutine upc() to let the calling subprogram specify whether null characters should be converted to blanks. Previously, all null characters were converted to blanks by default.
                                                        • +
                                                        • New versions of all of the normal builds of BUFRLIB have been added which allow certain array sizes to be specified by the user at run time, with the corresponding arrays dynamically allocated at run time rather than statically allocated at compile time. The new builds contain the suffix "_DA" and can be used by application programs which need flexibility in defining size limits for certain outlier BUFR datasets. The size limits that can be modified are defined within new subroutine isetprm(), which must itself be called prior to the first call to subroutine openbf() for each new size limit that is to be modified from its default value. The corresponding arrays are then dynamically allocated during the subsequent first call to openbf(). As part of this enhancement, numerous subprograms within BUFRLIB have been rewritten to share memory using FORTRAN modules rather than common blocks, and new conditional compilation flags have been incorporated into these subprograms as well as to the makebufrlib.sh build script. This allows the same source code and build script to be used for both dynamic allocation and static allocation builds. Note that application programs which don't have a need to redefine any default array size limits may continue to use the existing static allocation builds for maximum runtime efficiency.
                                                        • +
                                                        • A new subroutine pkx() was added which works just like subroutine pkb(), except that it properly handles cases where the input value NBITS is greater than the number of bits in a machine word.
                                                        • +
                                                        • Support was added for the processing of 2-2X, 2-3X and 2-4X non-marker operators when reading or writing BUFR messages, including when these operators are included in sequences within a BUFR DX table.
                                                        • +
                                                        • Subroutine stseq() was modified to fix a bug involving the application of associated fields to Table D sequence descriptors.
                                                        • +
                                                        • Function icbfms() was modified to improve the logic for identifying "missing" strings encoded as REAL*8 10E10 values prior to version 10.2.0 of the library.
                                                        • +
                                                        +

                                                        +Version 10.2.5

                                                        +
                                                          +
                                                        • Subroutine mesgbf() was modified to ensure that the input BUFR file is always closed before exiting the subroutine.
                                                        • +
                                                        • Function cobfl() was modified to allow up to 500 characters in the path of the filename being opened.
                                                        • +
                                                        • A declaration typo was fixed in subroutine blocks().
                                                        • +
                                                        • Global parameter MAXNC (the maximum number of FXY descriptors that can be written into Section 3 of a BUFR message) was increased from 300 to 600.
                                                        • +
                                                        +

                                                        +Version 10.2.4

                                                        +
                                                          +
                                                        • Configuration files bufrlib.PRM and makebufrlib.sh were updated to generate a 4_32 build (4-byte REAL, 4-byte INT, 32-bit compilation) on the IBM CCS for version 10.2.3 of the BUFRLIB.
                                                        • +
                                                        +

                                                        +Version 10.2.3 - June 21, 2013

                                                        +
                                                          +
                                                        • Subroutine rdusdx() was modified to prevent a segfault when trying to read DX dictionary information from an empty file.
                                                        • +
                                                        +

                                                        +Version 10.2.2

                                                        +
                                                          +
                                                        • Subroutine openbf() was modified to fix a bug which caused a segfault in certain cases when appending to a BUFR file using the embedded C-language I/O.
                                                        • +
                                                        • Subroutines readlc() and writlc() were modified to allow the input mnemonic string to be up to 14 characters when it contains a '#' condition code.
                                                        • +
                                                        +

                                                        +Version 10.2.1

                                                        +
                                                          +
                                                        • A bug was fixed in the embedded C-language I/O to account for the difference in index numbering between Fortran and C arrays.
                                                        • +
                                                        +

                                                        +Version 10.2.0 - October 19, 2012

                                                        +
                                                          +
                                                        • The makebufrlib.sh script was modified to streamline the endianness check and make it more portable.
                                                        • +
                                                        • Subroutine wrtree() was modified to ensure that "missing" character strings are properly encoded with all bits set to 1.
                                                        • +
                                                        • A new function icbfms() was added which tests whether decoded character strings are "missing" by checking if all of the equivalent bits are set to 1. This was done because, on certain platforms, the BUFRLIB REAL*8 "missing" value BMISS is not always equivalent to all bits set to 1 when viewed as a character string, and thus the existing BUFRLIB function ibfms() did not always work properly in such cases. However, users can continue to use the existing IBFMS function in application programs, because the new icbfms() function has now been incorporated internally within the logic of many BUFRLIB subroutines, in addition to also being available for direct calling by application programs.
                                                        • +
                                                        • Subroutines readmg() and readerme() were modified to prevent the BUFRLIB from internally adjusting to DX (dictionary) table messages when Section 3 decoding is being used. Otherwise, contention can occur between the table information in the DX messages and the table information specified within the Section 3 descriptors. From now on, whenever Section 3 decoding is used (as specified by setting IO="SEC3" when opening a file via openbf()), the BUFRLIB will now treat any DX (dictionary) table message the same as any other message and decode the actual data (i.e. table) values according to Section 3.
                                                        • +
                                                        • Subroutine openbf() was modified to allow a new option for input call argument IO. If this argument is set to 'INUL', then the BUFRLIB will behave the same as when IO='IN', except that it will never try to actually read anything from the file attached to input call argument LUNIT. This can be useful for some special cases, such as when the user plans to pass input messages to the BUFRLIB using subsequent calls to subroutine readerme().
                                                        • +
                                                        • A new subroutine gettagpr() was added which returns the mnemonic corresponding to a parent sequence in a subset definition, given the mnemonic corresponding to a child descriptor within that sequence. This can be useful in certain application codes, especially when Section 3 decoding is being used.
                                                        • +
                                                        • A new function getvalnb() was added which searches for a specified mnemonic in a subset definition, then searches forward or backward from that point for a different mnemonic and returns the associated value. This can be useful in certain application codes, especially when Section 3 decoding is being used.
                                                        • +
                                                        • Functionality was added to improve the portability of reading and writing BUFR messages across different platforms. All calls to existing FORTRAN subroutines which read or write BUFR messages from disk (e.g. readmg(), ufbmem(), ufbtab(), writsb(), wrcmps(), copymg(), etc.) now use embedded C-language I/O to perform these tasks. Among other things, this means that any BUFR file can now be read regardless of whether it has been pre-blocked with FORTRAN control words using the cwordsh utility. For writing BUFR files, a new subroutine setblock() was added which allows users to specify whether output BUFR messages are to be unblocked (which is the new default), big-endian blocked, or little-endian blocked.
                                                        • +
                                                        • A new subroutine setbmiss() was added which allows users to specify a custom "missing" value for writing to and reading from BUFR files, rather than using the BUFRLIB default "missing" value of 10E10. A corresponding function getbmiss() was also added which returns the current "missing" value in use.
                                                        • +
                                                        +

                                                        +Version 10.1.0 - June 11, 2012

                                                        +
                                                          +
                                                        • Subroutine ufdump() was modified to fix a bug when checking for the "missing" value in long character strings (i.e. longer than 8 bytes).
                                                        • +
                                                        • A new subroutine ufbmex() was added for use with certain application programs. ufbmex() functions similarly to ufbmem(), but has an additional return argument containing an array of message types corresponding to the array of messages that were read into internal memory.
                                                        • +
                                                        • Subroutines ADDATE, IUPBS1, IUPVS1, LJUST, LSTRPC, LSTRPS, SUBUPD, POSAPN and PARSEQ, which had been marked as obsolete within a previous version of BUFRLIB, have now been deleted.
                                                        • +
                                                        • Several global parameters were increased in "bufrlib.PRM". Specifically, MAXTBA (the maximum number of Table A entries for a BUFR file) was increased from 120 to 150, and MXDXTS (the maximum number of dictionary tables that can be stored for use with BUFR messages in internal memory) was increased from 10 to 200.
                                                        • +
                                                        • Subroutine conwin() was modified to fix a bug and remove an obsolete call argument.
                                                        • +
                                                        • Subroutine wrcmps() was modified to fix a bug involving embedded tables within a file of compressed BUFR messages.
                                                        • +
                                                        • Documentation was improved in many subroutines throughout the library.
                                                        • +
                                                        • Support has been added for the 2-03-YYY "change reference values" operator.
                                                        • +
                                                        • Subroutine usrtpl() was modified to fix a bug that was incorrectly using parameter MAXJL instead of parameter MAXSS when checking for overflow of an internal template array.
                                                        • +
                                                        • Subroutine wrdxtb() was modified to prevent it from trying to store more than 255 Table A, Table B or Table D descriptors in a single DX dictionary message. The maximum value was set to 255 since regular 8-bit delayed replication is used to store descriptor information in these messages.
                                                        • +
                                                        • Subroutine tabsub() was modified to correctly generate the jump/link table for subsets where a Table C operator immediately follows a Table D sequence.
                                                        • +
                                                        +

                                                        +Version 10.0.1

                                                        +
                                                          +
                                                        • Subroutine rewnbf() was modified to fix a bug which skipped the first data message after a file rewind.
                                                        • +
                                                        +

                                                        +Version 10.0.0 - August 12, 2010

                                                        +
                                                          +
                                                        • Subroutines PKVS1, OVRBS1, NMBYT, READIBM, IREADIBM, READFT, IREADFT and MOVA2I, which had been marked as obsolete within a previous version of BUFRLIB, have now been deleted.
                                                        • +
                                                        • A new global parameter MAXSS was defined for use as the maximum number of data values that can be read from or written into a single data subset by the BUFRLIB software. Previously, the separate global parameter MAXJL was used to define this limit. MAXJL will now be used solely to define the maximum number of internal jump/link table entries.
                                                        • +
                                                        • The size of a string declaration was increased within subroutine rdusdx().
                                                        • +
                                                        • Subroutine readlc() was modified to enable the extraction of "long" (i.e. greater than 8 bytes) character strings from compressed messages. In addition, it is now possible to access all occurrences of such a string from within a given data subset, via the use of the new mnemonic condition character '#'. Previously, readlc() could only ever access the first occurrence of any "long" character string from within a data subset.
                                                        • +
                                                        • Subroutine writlc() was modified to allow the writing of "long" (i.e. greater than 8 bytes) character strings within compressed messages. In addition, it is now possible to write all occurrences of such a string into a given data subset, via the use of the new mnemonic condition character '#'. Previously, writlc() could only ever locate and write the first occurrence of any "long" character string within a data subset.
                                                        • +
                                                        • Subroutine ufdump() was modified to label each output level for sequences where the replication count is greater than 1. In addition, it will now output all occurrences of "long" (i.e. greater than 8 bytes) character strings from within a given data subset.
                                                        • +
                                                        • Subroutine rdcmps() was modified to fix a bug which could cause the overflow of internal arrays when working with long character strings (i.e. longer than 8 bytes).
                                                        • +
                                                        • Subroutine nvnwin() was modified to fix a bug which could cause the overflow of an internal array during initialization on certain operating systems.
                                                        • +
                                                        • A new subroutine bvers() was added as a resource for managing and reporting library version numbers.
                                                        • +
                                                        • The fuzziness threshold in function ibfms() was increased for improved accuracy when testing for the BUFRLIB "missing" value.
                                                        • +
                                                        • A new subroutine iupbs3() was added which unpacks specified values from Section 3, including subset counts and compression indicators. The same logic had been repeated within numerous existing subroutines throughout BUFRLIB and has now been consolidated into this single subroutine that can itself be called from wherever it is needed.
                                                        • +
                                                        • Subroutines readerme(), rdmsgw() and RDMSGB were modified to prevent the overflow of an internal array for extremely large BUFR messages.
                                                        • +
                                                        • Subroutine upds3() was modified to pass in a new input argument containing the dimensioned size of the output array, in order to prevent the subroutine from possibly overflowing the array.
                                                        • +
                                                        • Subroutine writsa() was modified to pass in a new input argument containing the dimensioned size of the output array, in order to prevent the subroutine from possibly overflowing the array.
                                                        • +
                                                        • A new capability was added to BUFRLIB to enable the decoding of a BUFR message according to its data description section (Section 3). This is activated by setting IO="SEC3" when opening the file via subroutine openbf(). Master tables containing all possible BUFR descriptors are also required, and these may be specified via a call to new subroutine mtinfo() or by using default values specified within subroutine bfrini(). If the default values are used, then FORTRAN logical unit numbers 98 and 99 will be allocated by the BUFRLIB for opening and reading the master tables. This new capability allows BUFR messages to be decoded without pre-defined DX dictionary files.
                                                        • +
                                                        • Subroutine readmm() was re-written to directly call subroutine rdmemm() instead of duplicating all of the code logic in rdmemm().
                                                        • +
                                                        • Subroutine upb() was re-written to directly call subroutine upbb() instead of duplicating all of the code logic in upbb().
                                                        • +
                                                        • Subroutine POSAPN has been marked as obsolete (for future removal from BUFRLIB). The same functionality can now be obtained via the use of subroutine posapx().
                                                        • +
                                                        • Subroutine wrcmps() was modified to fix a bug involving the writing of compressed subsets which contain delayed replication. In certain situations, the values of two internal variables were not being properly saved between successive calls to the subroutine.
                                                        • +
                                                        • Changes were made so that the BUFRLIB will automatically read and adjust to any DX table (dictionary) messages internal to a file. Previously, the software would only ever process such messages at the beginning of a file, so that all subsequent data messages in that file were required to conform to these initial dictionary messages, and any subsequent dictionary messages in the file were simply ignored. Now, any subsequent dictionary messages will cause the BUFRLIB to adjust its internal processing tables and treat all subsequent data messages as conforming to these new dictionary messages, up through the end of the file or until yet another set of dictionary messages is encountered. These changes affect all BUFRLIB subroutines which read BUFR messages from a file, including readmg(), ireadmg(), readmm(), ireadmm(), rdmemm(), readns() and ireadns().
                                                        • +
                                                        • Subroutine ADDATE has been marked as obsolete (for future removal from BUFRLIB) since it is no longer called by any BUFRLIB routines. The same functionality can now be obtained via the use of subroutine W3MOVDAT in the NCEP W3 library.
                                                        • +
                                                        • Subroutine SUBUPD has been marked as obsolete (for future removal from BUFRLIB) since it is no longer called by any BUFRLIB routines and is almost an exact replica of subroutine msgupd(). The same functionality can now be obtained via the use of subroutine msgupd().
                                                        • +
                                                        • A new logical function msgfull() was added which determines whether there is enough room to store the current data subset within the current BUFR message for output. The same logic had been repeated within numerous existing subroutines throughout BUFRLIB and has now been consolidated into this single subroutine that can itself be called from wherever it is needed.
                                                        • +
                                                        • A new capability was added to BUFRLIB to allow it to append a tank receipt time to Section 1 within all future BUFR messages written to output by subroutines writsb(), copymg() or equivalent. The tank receipt time is a local extension to Section 1; however, its inclusion in a message is still fully compliant with the WMO BUFR regulations. This new capability is activated via an initial call to new subroutine strcpt(), specifying the time to be appended to Section 1 within all future BUFR messages written to output. This same information can then be read back from an input BUFR message via a call to new subroutine rtrcpt().
                                                        • +
                                                        • Subroutine numtab() was re-written to directly call subroutine numtbd() instead of duplicating all of the code logic in numtbd().
                                                        • +
                                                        • Subroutine nemtba() was re-written to directly call subroutine nemtbax() instead of duplicating all of the code logic in nemtbax().
                                                        • +
                                                        • Documentation was improved within numerous subroutines throughout BUFRLIB, including the addition of docblocks where none previously existed.
                                                        • +
                                                        • The default BUFR master table version number was changed from "12" to "13" within subroutines cmsgini(), dxmini() and msgini().
                                                        • +
                                                        • A new capability was added to allow BUFRLIB print diagnostics and other runtime messages to be redirected somewhere other than the default FORTRAN logical unit 6 (i.e. standard output). This is enabled within an application program by supplying an in-line version of subroutine errwrt() to override the new default version of this subroutine provided within the BUFRLIB. The default version will continue to write to standard output when included within a compilation.
                                                        • +
                                                        • Subroutines cmsgini(), stndrd() and msgwrt() were modified to remove a logical error which assumed that any message whose data section (Section 4) was compressed was also fully standard. In reality, the use of compression only implies that the data section is fully standard and does not necessarily imply that the data description section (Section 3) is also fully standard. BUFRLIB will now address the standardization of Section 3 solely within subroutine stndrd(), independent of whether or not the data in Section 4 are compressed.
                                                        • +
                                                        • Functions LSTRPC and LSTRPS have been marked as obsolete (for future removal from BUFRLIB). The same functionality can now be obtained via the use of function lstjpb().
                                                        • +
                                                        • Subroutine ufbtab() was modified to fix a bug involving the unpacking of character strings which are identical within each subset of a single compressed BUFR message.
                                                        • +
                                                        +

                                                        +May 28, 2008

                                                        +
                                                          +
                                                        • Subroutine BORT_EXIT was modified to fix a faulty ANSI-C declaration. This had been silently ignored by the IBM CCS compiler but was a portability issue for other compilers.
                                                        • +
                                                        • Subroutines RDTREE and WRTREE were modified to fix a bug which, on rare occasions, caused a segmentation fault due to overflow of internal arrays. This bug only occurred when working with long character strings (i.e. longer than 8 bytes) while using a non-optimized compilation of BUFRLIB.
                                                        • +
                                                        • Subroutine WRITCA, which had been marked as obsolete within a previous version of BUFRLIB, has now been deleted.
                                                        • +
                                                        • A new subroutine PARSTR was added which works like existing subroutine PARSEQ, except that it allows substrings within a string to be separated by one or more occurrences of any given single character (and not just by one or more blank characters). As such, the existing subroutine PARSEQ has been marked as obsolete (for future removal from BUFRLIB), and many other subroutines throughout BUFRLIB have been modified to now use the new subroutine PARSTR.
                                                        • +
                                                        • Subroutine JSTCHR was modified to add a return argument indicating whether the input string was empty. This allows the subroutine to be used in any context where existing subroutine LJUST was being used, and LJUST has now been marked as obsolete (for future removal from BUFRLIB).
                                                        • +
                                                        • Several new subroutines have been added to enable the capability to read BUFR table information from external ASCII master tables instead of from pre-defined DX dictionary files. This is in preparation for the planned future capability to be able to directly decode a BUFR message according to its internal data description section.
                                                        • +
                                                        • The value BMISS (i.e. the BUFR "missing" value), which was defined as a local data value within many separate subroutines, has now been defined as a global parameter within the "bufrlib.PRM" include file. In addition, a new function IBFMS has been added which safely tests a given value to determine whether or not it is "missing", and several existing subroutines throughout BUFRLIB have been modified to now use this new function.
                                                        • +
                                                        • The determination as to whether the local host machine uses the "big-endian" or "little-endian" byte-ordering scheme is now determined at compile time and integrated into BUFRLIB via the use of conditional compilation statements. This allows BUFRLIB to run much more efficiently since it no longer has to constantly re-check the local byte-ordering scheme at run time.
                                                        • +
                                                        • Subroutine DXDUMP was modified to correct a bug which caused the truncation of output reference values longer than 8 digits.
                                                        • +
                                                        • Several global parameters were increased in "bufrlib.PRM". Specifically, MXCDV (the maximum number of data values per subset in a compressed BUFR message) was increased from 2000 to 3000, and MAXMEM (the maximum number of bytes that can be used to store BUFR messages within internal memory) was increased from 50Mb to 75Mb within the "supersized" BUFRLIB.
                                                        • +
                                                        +

                                                        +February 6, 2007

                                                        +
                                                          +
                                                        • Several global parameters were increased in "bufrlib.PRM". Specifically, MAXTBA, MAXTBB and MAXTBD (the maximum numbers of internal Table A, B and D entries, respectively) were increased from 60, 250 and 250 to 120, 500 and 500, respectively, and MAXJL (the maximum number of internal jump/link table entries) was increased from 16000 to 20000.
                                                        • +
                                                        • Subroutine CKTABA was modified to allow "FRtttsss" and "FNtttsss" (where ttt is the message type and sss is the message subtype) as valid Table A mnemonics for foreign BUFR messages. Previously, only "NCtttsss" had been allowed.
                                                        • +
                                                        • Subroutines GETS1LOC and IUPBS01 were modified to provide two additional options for unpacking values from Section 1 of a BUFR message. Specifically, "CENT" now unpacks the century and "YCEN" now unpacks the year of the century.
                                                        • +
                                                        • Subroutine PKBS1 was modified to provide several additional options for directly packing values into Section 1 of a BUFR message. Specifically, "YEAR", "MNTH", "DAYS", "HOUR", "CENT" and "YCEN" now pack the message year, month, day, hour, century and year of century, respectively, and "MTYP" and "MSBT" now pack the message type and subtype, respectively.
                                                        • +
                                                        • Subroutine MAXOUT was modified to allow it to be called with a special flag value of "0", indicating that output BUFR messages should be set to the maximum allowable record length. In addition, a sanity check was added to prevent this record length from being set to a value greater than the maximum allowable.
                                                        • +
                                                        • For the printing of flag table values, subroutines UFBDMP and UFDUMP were modified to include an equivalent listing of the bits that were actually set.
                                                        • +
                                                        • Subroutine UFBPOS was modified to remove an unnecessary (and incorrect!) initialization statement. This had been silently ignored by the IBM CCS compiler but was a portability issue for other compilers.
                                                        • +
                                                        • Subroutine UFBTAB was modified to add a required declaration for a local character variable. This had been silently ignored by the IBM CCS compiler but was a portability issue for other compilers.
                                                        • +
                                                        • Subroutine RDUSDX was modified to abort if it encounters a user-defined BUFR message whose message type is set to 11. This value is reserved for internal dictionary messages.
                                                        • +
                                                        +

                                                        +January 31, 2006

                                                        +
                                                          +
                                                        • Documentation was improved and/or clarified within many existing routines throughout BUFRLIB.
                                                        • +
                                                        • Global parameter MAXMEM (the maximum number of bytes that can be used to store BUFR messages internally) was increased from 16Mb to 50Mb, and global parameter MAXTBA (the maximum number of entries in the internal BUFR Table A) was increased from 50 to 60. In addition, all global parameters were moved into a new global INCLUDE file "bufrlib.PRM", rather than continuing to hardcode the same parameter values in every individual source file where they were needed. This will allow future changes to any of these parameter values to be made much more easily.
                                                        • +
                                                        • An additional CCS compilation of BUFRLIB (libbufr_s_64.a) is now being maintained via the makefile. This new version is identical to the existing libbufr_4_64.a compilation, except that several parameter values within "bufrlib.PRM" are set much larger in order to allow extremely large BUFR messages (i.e. up to 2.5Mb) to be processed.
                                                        • +
                                                        • The capability to compress output BUFR messages has now been directly incorporated into subroutines WRITSB and WRITSA, whereas previously it had been necessary to instead call the separate subroutines WRITCP and WRITCA, respectively. The use of compression can now be easily toggled on or off (with "off" as the default if left unspecified) via new subroutine CMPMSG. As such, subroutine WRITCA has now been marked as obsolete (for future removal from BUFRLIB), since the same functionality can now be obtained by calling the new subroutine CMPMSG, followed by a call to WRITSA. In a similar manner, WRITCP has now been modified to directly call subroutines CMPMSG and WRITSB, although it is being retained as a distinct subroutine within BUFRLIB (rather than also being marked as obsolete) out of consideration for the large number of existing application programs which use it.
                                                        • +
                                                        • A new function IUPBS01 was added which works like existing function IUPBS1, except that it uses a descriptive mnemonic rather than a hardcoded byte number in order to specify the value to be unpacked from Section 0 or Section 1 of a BUFR message. This allows the same function call to work on messages encoded using either BUFR edition 3 or BUFR edition 4 (rather than having to pass in different byte numbers depending on the edition!), and it also allows values encoded across multiple bytes (e.g. section lengths, 4-digit years, etc.) to be easily unpacked as well. As such, the existing function IUPBS1 has been marked as obsolete (for future removal from BUFRLIB), and many other subroutines throughout BUFRLIB (e.g. UPDS3, DATEBF, DUMPBF, STNDRD, CKTABA, NMBYT, MSGWRT, RDBFDX, etc.) have been modified to now use the new function IUPBS01. In addition, a new function IUPVS01 was added which calls IUPBS01 in an in-line fashion, and existing function IUPVS1 (which had similarly called IUPBS1 in an in-line fashion) has now been marked as obsolete.
                                                        • +
                                                        • A new subroutine PKVS01 was added which works like existing subroutine PKVS1, except that it uses a descriptive mnemonic rather than a hardcoded byte number in order to specify the value to be stored into Section 0 or Section 1 of all future output BUFR messages. This allows the same subroutine call to work on messages encoded using either BUFR edition 3 or BUFR edition 4 (rather than having to pass in different byte numbers depending on the edition!), and it also allows values encoded across multiple bytes (e.g. 4-digit years, originating centers and subcenters, etc.) to be easily overwritten as well. As such, the existing subroutine PKVS1 has been marked as obsolete (for future removal from BUFRLIB). In a similar manner, a new subroutine PKBS1 was also added to replace existing subroutine OVRBS1, which has now itself also been marked as obsolete.
                                                        • +
                                                        • A new subroutine CNVED4 was added which, given a BUFR message encoded using BUFR edition 3, creates and outputs an equivalent message encoded using BUFR edition 4. This subroutine can be called by an application program, or it can alternatively be activated in an in-line fashion via a call to new subroutine PKVS01 using the descriptive mnemonic "BEN" (i.e. BUFR edition number) with a corresponding value of "4".
                                                        • +
                                                        • Subroutines NEMTAB, NUMTAB, TABENT and TABSUB were modified to support the Table C operators 2-07-YYY and 2-08-YYY, which are new to BUFR with the advent of edition 4.
                                                        • +
                                                        • Subroutines COPYST, WRITST and STANDARD, which had been marked as obsolete within a previous version of BUFRLIB, have now been deleted.
                                                        • +
                                                        • The default BUFR master table version number was changed from "4" to "12" within subroutines CMSGINI, DXMINI and MSGINI.
                                                        • +
                                                        • A bug was corrected in subroutine STNDRD in order to ensure that byte 4 of Section 4 is always properly zeroed out.
                                                        • +
                                                        • A bug was corrected in subroutine PARUTG which was preventing 1-bit delayed replication factors from being directly read via a call to subroutine UFBINT.
                                                        • +
                                                        • A bug was corrected in subroutine WRCMPS which was causing a character compression array to be improperly initialized. In addition, a local parameter was increased to allow up to 4000 subsets to be written into a single compressed BUFR message.
                                                        • +
                                                        • Subroutine UFBMEM was modified to not abort when there are either too many messages read in or too many bytes read in (i.e., .gt. array limits passed in), but rather to just process the limiting number of messages and/or bytes and print a diagnostic.
                                                        • +
                                                        • Subroutine CLOSMG was modified to override logic that had always written out messages 1 and 2 even when they contained zero subsets (it assumed these contained the dump center and processing time in Section 1). Now, if the unit number argument is passed in as a negative number the first time this routine is called by an application program, ALL empty messages are skipped (i.e., assumes that messages 1 and 2 do not contain dump center and processing time). This remains set for all subsequent calls to CLOSMG for a particular file, regardless of the sign of the unit number (CLOSMG is called by other BUFRLIB routines which always pass in a positive unit number).
                                                        • +
                                                        • A new function IGETDATE was added which unpacks and returns the Section 1 date-time from an input BUFR message, in format of either YYYYMMDDHH or YYMMDDHH depending on the value requested via the most recent call to subroutine DATELEN. The same logic had been repeated within numerous existing subroutines throughout BUFRLIB and has now been consolidated into this single subroutine that can itself be called from wherever it is needed.
                                                        • +
                                                        • A new subroutine GETLENS was added which unpacks and returns the individual section lengths from an input BUFR message. The same logic had been repeated within numerous existing subroutines throughout BUFRLIB and has now been consolidated into this single subroutine that can itself be called from wherever it is needed.
                                                        • +
                                                        • A new subroutine RDMSGW was added which reads the next padded BUFR message from a given BUFR file. The same logic had been repeated within numerous existing subroutines throughout BUFRLIB and has now been consolidated into this single subroutine that can itself be called from wherever it is needed.
                                                        • +
                                                        • A new function PKFTBV was added which computes and returns the value equivalent to the setting of a specified bit within a flag table of a specified width. In addition, a new subroutine UPFTBV was also added which functions as the logical inverse, i.e. given a mnemonic and corresponding flag table value, it computes and returns the equivalent bit settings.
                                                        • +
                                                        • A new subroutine UFBPOS, which allows a user to directly point at and read a specified subset from within a specified message in an input BUFR file, was added to BUFRLIB. Previously, this logic existed as an in-line subroutine within a separate application program.
                                                        • +
                                                        • A new subroutine GETABDB, which returns internal BUFR table information in a pre-defined ASCII format, was added to BUFRLIB. Previously, this logic existed as an in-line subroutine within a separate application program.
                                                        • +
                                                        • Subroutine READMG was modified to be able to handle BUFR messages which are not padded out to an 8-byte boundary and for which it had therefore previously been necessary to instead call the separate subroutine READIBM. Logic was also added to allow the option of having READMG behave like the separate subroutine READFT, so that it will not abort when a read error is encountered but rather will treat it the same as an end-of-file condition. This option is activated by passing in the negative of the usual logical unit number. In summary, READMG can now itself properly read from any FORTRAN-blocked file of BUFR messages, and therefore the existing subroutines READIBM, IREADIBM, READFT and IREADFT have now all been marked as obsolete (for future removal from BUFRLIB).
                                                        • +
                                                        • A set of generic C-language functions for reading/writing BUFR messages from/to generic BUFR files (which may or may not contain FORTRAN-blocking and/or message padding) was added to BUFRLIB. These functions (CCBFL, COBFL, CRBMG, CWBMG and RBYTES) are primarily intended for use by separate application programs (such as cwordsh), but are themselves being directly incorporated into BUFRLIB in order to prevent such application programs from having to directly link to certain COMMON blocks and parameter sizes internal to BUFRLIB.
                                                        • +
                                                        • Function MOVA2I is marked as obsolete (for future removal from BUFRLIB). It is present in the W3 Libraries (in C language) and is no longer called by any BUFR Archive Library routines. A warning message is now printed instructing users to migrate to MOVA2I in the W3 Libraries.
                                                        • +
                                                        • Subroutine UFBTAB was modified to work for compressed BUFR messages. An option to return only the subset count (when the input unit number is less than zero) was also added.
                                                        • +
                                                        • Subroutine COPYSB was modified to now write out a compressed subset/message if the input subset/message is compressed (before this subroutine could only write out an uncompressed subset/message regardless of the compression status of the input subset/message).
                                                        • +
                                                        +

                                                        +December 21, 2004

                                                        +
                                                          +
                                                        • New subroutines ISTDESC, RESTD, WRDESC, CADN30, STDMSG and STNDRD have been added to provide the capability to expand Section 3 of output BUFR messages until they are completely "standard" according to the WMO FM-94 regulations. The logic is activated via an initial call to STDMSG.
                                                        • +
                                                        • Subroutine XMSGINI has been removed. It had been included in a previous BUFRLIB version as an indirect way of "standardizing" compressed messages, but the same logic is now fully integrated into CMSGINI and is activated via a separate initial call to new subroutine STDMSG (see 1).
                                                        • +
                                                        • Subroutine STANDARD has been marked as obsolete (for future removal from BUFRLIB) in favor of a new subroutine STNDRD which more completely "standardizes" Section 3. The old subroutine (i.e. STANDARD) would always just break down the top-level Table A descriptor by one level, so that, unless this "one level deep" expansion happened to consist of all standard descriptors, the resulting BUFR message was still non-standard. Contrarily, the new logic will recursively break down successive sequence descriptors for as long as needed until all appearing in Section 3 are themselves standard or else, at a minimum, preceded with the 206YYY "bypass" operator (note: this recursive logic is written using C for portability reasons, since not all FORTRAN 77 compilers support recursion!). In addition, STNDRD has other advantages over STANDARD as well; namely, it contains safety checks which prevent overflow of the message array that is passed to it, and it also is more directly integrated into BUFRLIB and can be automatically activated in-line via a separate initial call to new subroutine STDMSG (see 1).
                                                        • +
                                                        • Subroutine WRITSA was modified to fix a bug which, in certain situations, prevented one or more BUFR messages from being returned to the calling program within the memory arrays. In addition, a new subroutine WRITCA was added which functions exactly like WRITSA except that it works on compressed messages.
                                                        • +
                                                        • Subroutines WRCMPS and RDCMPS were modified to fix a bug in the compression algorithm which occurred when all subsets in a single message contained identical character strings. Separate corrections were also made to each of these subroutines to fix a few unrelated minor bugs.
                                                        • +
                                                        • Subroutine UFDUMP was modified to add a fuzziness test for the "missing" value and to add an interactive, scrolling print capability similar to UFBDMP.
                                                        • +
                                                        • Subroutine UFBDMP was modified to automatically use READLC when reading "long" character strings, similar to an existing capability within UFDUMP.
                                                        • +
                                                        • Documentation was improved and/or clarified in many existing subroutines throughout BUFRLIB.
                                                        • +
                                                        • Subroutines COMPRES and READ2C have been removed. The same functionality can be obtained by using subroutine WRITCP.
                                                        • +
                                                        • Subroutines IREADERS, READERS and READTJ have been removed, as they were nothing more than wrappers for READMG and had been marked as obsolete within a previous BUFRLIB version.
                                                        • +
                                                        • Subroutines READERM, IREADERM and IRDERM have been removed. They had been superseded functionally by (the more-portable!) subroutine READIBM and had been marked as obsolete within a previous BUFRLIB version.
                                                        • +
                                                        • Parameter MXMSGL (the maximum number of bytes in a BUFR message) was increased from 20K TO 50K bytes in the following subroutines: BFRINI, CKTABA, CLOSMG, CMSGINI, COPYBF, COPYMG, COPYSB, CPYMEM, CPYUPD, DXMINI, MAXOUT, MESGBC, MESGBF, MINIMG, MSGINI, MSGUPD, MSGWRT, NMBYT, POSAPN, POSAPX, RCSTPL, RDBFDX, RDCMPS, RDMEMM, RDMEMS, RDMGSB, RDTREE, READERME, READFT, READIBM, READLC, READMG, READMM, READSB, REWNBF, SUBUPD, UFBGET, UFBINX, UFBMEM, UFBTAB, UFBTAM, WRCMPS, WRITDX, WRITLC, WRITSA and WRTREE. (Note: this is not included in the Docblock history in these routines.)
                                                        • +
                                                        • Subroutines READERME, READIBM, DATEBF and DUMPBF were modified to make the test for the string 'BUFR' portable to EBCDIC machines.
                                                        • +
                                                        • Subroutine WRTREE was modified to use double-precision arithmetic within an internal statement function, in order to correct for a truncation problem that could occur in the case of very large computed values.
                                                        • +
                                                        • Subroutine COPYST has been marked as obsolete (for future removal from BUFRLIB). The same functionality can be obtained by calling new subroutine STDMSG, followed by a call to COPYMG.
                                                        • +
                                                        • Subroutine WRITST has been marked as obsolete (for future removal from BUFRLIB). The same functionality can be obtained by calling new subroutine STDMSG, followed by a call to CLOSMG.
                                                        • +
                                                        • A new option IO="NODX" has been added to subroutine OPENBF. In this case, the subroutine behaves exactly as if it had been called with IO="OUT", except that DX dictionary messages are not written out to logical unit LUNIT.
                                                        • +
                                                        • Subroutine WRDLEN was modified to keep track of whether it has already been called by one of the other BUFRLIB subroutines and, if so, to then immediately return (without proceeding any further) every time it is subsequently called.
                                                        • +
                                                        • Subroutines OPENBF, UFBINT, UFBOVR, UFBREP, UFBSEQ, UFBSTP and WRDLEN were all modified to fix similar portability bugs whereby the values of some internal variable(s) which keep track of whether the subroutine has already been called were not being explicitly preserved with a SAVE statement.
                                                        • +
                                                        • New subroutine PKVS1 was added which calls OVRBS1 in an in-line fashion and therefore allows easier overwriting of default values in Section 1 of output BUFR messages. The new methodology can also overwrite the value of byte 8 in Section 0 (i.e. BUFR edition number) if desired.
                                                        • +
                                                        • New function IUPVS1 was added which calls IUPBS1 in an in-line fashion and therefore allows easy unpacking of Section 1 values from BUFR messages that have already been read into the internal memory arrays by subroutine READMG or equivalent. The new methodology can also unpack the value of byte 8 in Section 0 (i.e. BUFR edition number) if desired.
                                                        • +
                                                        • Subroutine ADDATE was modified to fix a bug in calculating the number of days in February for years which are multiples of 100 but not of 400.
                                                        • +
                                                        • Subroutine MESGBC was modified to allow the option of operating on a BUFR message that has already been read into the internal memory arrays by subroutine READMG or equivalent.
                                                        • +
                                                        • New subroutine DXDUMP was added which outputs an ASCII-formatted copy of the information embedded within the DX dictionary messages of a BUFR file. It is especially useful for learning the contents of archived BUFR files, and the output is in a format suitable for subsequent input to OPENBF as a user-defined dictionary tables file.
                                                        • +
                                                        • Subroutines DATELEN, DATEBF and DUMPBF were all modified to call subroutine WRDLEN to initialize local machine information (in case it has not already been called). These routines do not require this information but they may now or someday call other routines that do require it.
                                                        • +
                                                        +

                                                        +November 4, 2003

                                                        +

                                                        This is the first "unified" BUFR Archive Library including components from the regular NCEP production machine version (whose implementation history is documented to this point), the decoder version (previously on a workstation but now on the IBM Frost and Snow machines), and a checkout NCEP/EMC grid-to-obs verification version. This version is portable to all platforms (as necessary for WRF), contains docblocks for each routine with a complete program history log, and outputs more complete diagnostic information when routines terminate abnormally, unusual things happen or for informational purposes.

                                                        +

                                                        The following libraries are now generated on the NCEP IBM Frost and Snow machines:

                                                        +
                                                          +
                                                        • libbufr_4_64.a – 4-byte reals, 4-byte integers, 64-bit executable compilation
                                                        • +
                                                        • libbufr_8_64.a – 8-byte reals, 8-byte integers, 64-bit executable compilation
                                                        • +
                                                        • libbufr_d_64.a – 8-byte reals, 4-byte integers, 64-bit executable compilation
                                                        • +
                                                        • libbufr_4_32.a – 4-byte reals, 4-byte integers, 32-bit executable compilation
                                                        • +
                                                        +

                                                        The first three are compiled exactly the same as the three libraries noted in the previous 05-27-2003 implementation (they are just renamed). The fourth library is compiled identically to the previous decoder-specific version on Frost and Snow (libdecod_bufr_32.a). It is compiled with optimization level 3 (-O3) for both Fortran and c routines and will be linked into the production decoder programs in place of libdecod_bufr_32.a.

                                                        +

                                                        The following routines have been added to the BUFR archive library:

                                                        +
                                                          +
                                                        • Subroutine BORT2 which prints (to STDOUT) two given error strings and then calls BORT_EXIT (see 7 below) to abort the application program calling the BUFR Archive Library software. It is similar to existing subroutine BORT, except BORT prints only one error string.
                                                        • +
                                                        • Function IUPBS1 which, given a BUFR message contained within array MBAY, unpacks and returns the binary integer contained within byte NBYT of Section 1 of the BUFR message. This was present in the original decoder- specific version of the library.
                                                        • +
                                                        • Subroutine OVRBS1 which, given a BUFR message contained within array MBAY, packs and stores the value of a binary integer into byte NBYT of Section 1 of the BUFR message, overwriting the value previously stored there.
                                                        • +
                                                        • Subroutine UPDS3 which, given a BUFR message contained within array MBAY, unpacks and returns the descriptors contained within Section 3 of the BUFR message. This was present in the original decoder-specific version of the library.
                                                        • +
                                                        • New library function MOVA2I replaces the W3LIB c-version previously called by DATEBF and DUMPBF. It is now called by new subroutines MESGBC (see 6) and REWNBF (see 11) as well. This change removes any dependency upon the W3LIB, since no other BUFR Archive Library routines call any W3LIB routines. It was converted to Fortran 77 because the c-version does not work properly when compiled with 32-bit executable compilation and linked into a Fortran source copiled with 8-byte real and integer word length.
                                                        • +
                                                        • Subroutine MESGBC reads past any BUFR table (dictionary) or dummy (center or dump time in dump files) messages in a BUFR file (if there are any) and returns the message type for the first report data message found. It also determines whether or not this first report data message is compressed BUFR. This subroutine is identical to MESGBF except MESGBF only reads past dictionary messages and MESGBF does not return any information about compression.
                                                        • +
                                                        • C subroutine BORT_EXIT terminates the application program calling the BUFR software and returns an implementation-defined non-zero status code to the executing shell script. (See 1 and 26.)
                                                        • +
                                                        • Subroutine RDMGSB opens a BUFR file in logical unit LUNIT for input operations, then reads a particular subset into internal subset arrays from a particular BUFR message in a message buffer. This is based on the subset number in the message and the message number in the BUFR file. This was present in the original verification-specific version of the library.
                                                        • +
                                                        • Subroutine SUBUPD packs up the current subset within memory and then tries to add it to the BUFR message that is currently open within memory for LUNIT. If the subset will not fit into the currently open message, then that message is flushed to LUNIT and a new one is created in order to hold the current subset. If the subset is larger than an empty message, the subset is discarded and a diagnostic is printed. This subroutine is identical to existing BUFR Archive Library subroutine MSGUPD except SUBUPD does NOT pad the packed subset. This was present in the original verification-specific version of the library.
                                                        • +
                                                        • Subroutine UFBINX either opens a BUFR file for input operations (if it is not already opened as such), or saves its position and rewinds it to the first data message (if BUFR file already opened), then (via a call to BUFR Archive Library subroutine UFBINT) reads specified values from internal subset arrays associated with a particular subset from a particular BUFR message in a message buffer. The particular subset and BUFR message are based based on the subset number in the message and the message number in the BUFR file. Finally, this subroutine either closes the BUFR file (if is was opened here) or restores it to its previous read/write status and position (if is was not opened here). This was present in the original verification-specific version of the library.
                                                        • +
                                                        • Subroutine REWNBF which will either: 1) store the current parameters associated with a BUFR file (read/write pointers, etc.), set the file status to read, then rewind the BUFR file and position it such that the next BUFR message read will be the first message in the file containing actual subsets with data; or 2) restore the BUFR file to the parameters it had prior to 1) using the information saved in 1). This allows information to be extracted from a particular subset in a BUFR file which is in the midst of being read from or written to by an application program. This was present in the original verification-specific version of the library.
                                                        • +
                                                        • Subroutine UFBIN3 reads specified values from the current BUFR data subset where the data values correspond to mnemonics which are part of a multiple- replication "level" sequence within another multiple-replication "event stack" sequence. This subroutine is designed to read event information from "PREPFITS" type BUFR files (currently the only application which reads PREPFITS files is the verification program GRIDTOBS, where UFBIN3 was previously an in-line subroutine). The existing analogous subroutine UFBEVN should be used to read information from "PREPBUFR" type BUFR files. This was present in the original verification-specific version of the library.
                                                        • +
                                                        • Function NEVN accumulates all data events for a particular data value and level and returns them to the calling program. The value of the function itself is the total number of events found. {This function should only be called by UFBIN3 (see 12), which, itself, is called only by verification application program GRIDTOBS, where it was previously an in-line subroutine. In general, NEVN does not work properly in other application programs at this time.} This was present in the original verification-specific version of the library.
                                                        • +
                                                        • Subroutine READLC returns a character data element associated with a particular subset mnemonic from the internal message buffer. It is designed to be used to return character elements greater than the usual length of 8 bytes. It currently will not work for compressed BUFR mesaages.
                                                        • +
                                                        • Subroutine WRITLC packs a character data element associated with a particular subset mnemonic from the internal message buffer. It is designed to be used to store character elements greater than the usual length of 8 bytes.
                                                        • +
                                                        • Subroutine WRITST generates a standardized version of the current BUFR message in internal memory and writes it to the output file (not sure if it works properly).
                                                        • +
                                                        • Subroutine COPYST generates a standardized version of the current BUFR message read using READMG and writes it intact as a record to the output file.
                                                        • +
                                                        • Subroutine COMPRES compresses subsets in BUFR messages previously read using BUFR Archive Library subroutine READMG or equivalent. It then generates a new bufr message consisting of the compressed subsets. Note that subsets in the output compressed message may have been read from different (adjacent) input messages. Currently the only application program which calls this subroutine is BUFR_COMPRESS, where COMPRES was previously an in-line subroutine).
                                                        • +
                                                        +

                                                        The following routines in the BUFR archive library have been modified:

                                                        +
                                                          +
                                                        • Subroutine READ2C reads a subset into compression maxtrix arrays in preparation for generating compressed BUFR messages. This had been an in- line subroutine in the application program BUFR_COMPRESS and is currently called only by BUFR Archive Library subroutine COMPRES (see 18).
                                                        • +
                                                        • Subroutine UPBB modified to make certain zero is returned for zero bits input and to make logic consistent with logic in UPB. (See also 30 for UPBB.)
                                                        • +
                                                        • Subroutine UFBTAB modified to not abort when there are too many subsets coming in (i.e., .gt. array limit passed in), but rather to just process the limiting number of reports and print a diagnostic. It is also modified to call subroutine REWNBF when the BUFR file is already opened (this is taken from the verification version of UFBTAB and allows specific subset information to be read from a file in the midst of being read from or written to), before OPENBF was always called and this would have led to an abort of the application program. (See also 29 for UFBTAB.)
                                                        • +
                                                        • Subroutine CKTABA modified to not abort when the Section 1 message subtype does not agree with the Section 1 message subtype in the dictionary IF the message type mnemonic is not of the form "NCtttsss", where ttt is the BUFR type and sss is the BUFR subtype. This allows program PREPOBS_PREPDATA to specify different message subtypes for the same message type. (See also 27 and 43.)
                                                        • +
                                                        • Subroutine OPENBF modified to accept 'NUL' as the second (I/O) argument. IO='NUL' prevents the BUFR Archive Library software from actually trying to access or write to the BUFR file (designed only for use with library subroutine WRITSA). This was present in the original decoder-specific version of the library.
                                                        • +
                                                        • Subroutine CLOSBF modified to not close the BUFR file if it was opened as 'NUL' by OPENBF (see 23). This was present in the original decoder-specific version of the library.
                                                        • +
                                                        • Subroutine MSGWRT modified to not write to the BUFR file if it was opened as 'NUL' by OPENBF (see 23). This was present in the original decoder- specific version of the library.
                                                        • +
                                                        • Subroutine BORT modified to call new BUFR Archive Library subroutine BORT_EXIT (see 7 above) rather than c function EXIT with argument 49 {"CALL +EXIT(49)"}. Since EXIT is an intrinsic c function, it expects arguments to be passed by value rather than by reference as in done in Fortran. This has caused an unpredictable status code to be passed back to the executing shell script, in some cases even ZERO!! This change will ensure an non-zero status is always returned.
                                                        • +
                                                        • Suboutines CKTABA, DATEBF, DUMPBF and function I4DY modified such that date calculations no longer use floating point arithmetic. This can lead to round off error and an improper resulting date on some machines (e.g., NCEP IBM Frost/Snow). This change increases portability of the BUFR Archive Library. (See also 22 and 43 for CKTABA.)
                                                        • +
                                                        • Parameter MAXMSG (the maximum number of BUFR messages which can be stored internally) increased from 50000 to 200000 in the following subroutines: CPYMEM, RDMEMM, RDMEMS, READMM, UFBMEM, UFBMMS, UFBMNS, UFBRMS and UFBTAM. This may be necessary in the future for BUFR files with many, many messages.
                                                        • +
                                                        • Parameter MAXJL (the maximum number of Jump/Link table entries) increased from 15000 to 16000 in the following routines: BFRINI, CONWIN, COPYMG, CPYMEM, DRFINI, DRSTPL, GETWIN, INCTAB, INVCON, INVMRG, INVTAG, INVWIN, LSTJPB, LSTRPC, LSTRPS, MAKESTAB, MSGINI, NEWWIN, NVNWIN, NWORDS, NXTWIN, PARUTG, RCSTPL, RDCMPS, RDTREE, READNS, TABENT, TABSUB, TRYBUMP, UFBCPY, UFBCUP, UFBDMP, UFBEVN, UFBGET, UFBINT, UFBOVR, UFBREP, UFBRP, UFBRW, UFBSEQ, UFBSP, UFBSTP, UFBTAB, UFBTAM, UFDUMP, USRTPL, WRCMPS and WRTREE. This was present in the original verification-specific version of the library.
                                                        • +
                                                        • The following routines are modified to make the BUFR Archive Library big-endian/little-endian independent: IPKM, IUPM, PKB, PKC, UPB and UPBB. This was present in the original decoder-specific version of the library and increases the portability of the BUFR Archive Library.
                                                        • +
                                                        • Subroutine BFRINI modified to initialize variable JSR as ZERO in new COMMON block /BUFRSR/. This was present in the original verification-specific version of the library. (See also 29 for BFRINI.)
                                                        • +
                                                        • Subroutine RCSTPL modified to increase the maximum number of levels of recursion (parameter MAXRCR) from 50 to 100. This was present in the original verification-specific version of the library. (See also 29 and 43 for RCSTPL.)
                                                        • +
                                                        • Subroutine WRCMPS modified to save logical variables WRIT1 and FLUSH in global memory. This fixed a bug in this subroutine which could lead to messages being written out before being full. (See also 29 for WRCMPS.)
                                                        • +
                                                        • Subroutine RDTREE modified to fix a bug which could only occur when the last element in a subset is a character. (See also 29 for RDTREE.)
                                                        • +
                                                        • Subroutine UFDUMP modified to handle print of character values greater than 8 bytes. (See also 29 for UFDUMP.)
                                                        • +
                                                        • Subroutine UFBEVN modified to save the maximum number of events found for all data values specified amongst all levels returned as variable MAXEVN in new COMMON block /UFBN3C/ and to add call to BORT if BUFR file is open for output. (See also 29 for UFBEVN.)
                                                        • +
                                                        • Subroutine NEMOCK modified to expand non-zero return into -1 for length not 1-8 characters and -2 for invalid characters (return only -1 before for all problematic cases)
                                                        • +
                                                        • Subroutine NUMBCK modified to expand non-zero return into -1 for invalid character in position 1, -2 for invalid characters in positions 2 through 6, -3 for invalid characters in positions 2 and 3 due to being out of range, and -4 for invalid characters in positions 4 through 6 due to being out of range (return only -1 before for all probelmatic cases)
                                                        • +
                                                        • Subroutine WTSTAT modified to correct a "typo" in test for valid value for "IM".
                                                        • +
                                                        • Subroutines ELEMDX, PARSEQ, PARUSR, PARUTG, PKC, RDUSDX, SEQSDX, STRING, UFBINT, UFBOVR, UFBREP, UFBSTP and VALX modified to call new BUFR Archive Library subroutine BORT2 (see 1).
                                                        • +
                                                        • Subroutine MAKESTAB modified to allow for the possibility that a connected file may not contain any dictionary table info (e.g., an empty file). Subsequent connected files which are not empty will no longer get tripped up by this. (This change avoids the need for an application program to disconnect any empty files via a call to CLOSBF.) (See also 29 for MAKESTAB.)
                                                        • +
                                                        • Subroutine READTJ modified to simply call BUFR Archive Library subroutine READMG rather than being a clone of it. At one time it performed different functions than READMG, but that has not been the case since the 2000-09-19 BUFR Archive Library implementation.
                                                        • +
                                                        • Subroutines CKTABA, CMSGINI, NUMTAB, PARUSR, PARUTG, RCSTPL, USRTPL, WRDLEN, WRTREE and XMSGINI modified to correct some minor bugs (uninitialized variables, etc.) (see subroutine DOCBLOCKS for more information). (See also 29 for PARUTG, RCSTPL, USRTPL, WRTREE and 32 for RCSTPL.)
                                                        • +
                                                        • Subroutine UFBDMP modified to add "fuzziness" about 10E10 in test for a missing value (rather than true equality as before) because some missing values (e.g., character strings < 8 characters) were not getting stamped out as "MISSING". Also added option to print values using format edit descriptor "F15.6" if input argument LUNIN is < zero. If LUNIN is > zero edit descriptor expanded from "G10.3" to "G15.6". (See also 29 for UFBDMP.)
                                                        • +
                                                        +

                                                        +May 19, 2003

                                                        +

                                                        The following changes have been made in the BUFR Archive Library:

                                                        +
                                                          +
                                                        • Subroutine CLOSMG - to correct a problem introduced in the previous (May 2002) implementation which prevented the dump center time and initiation time messages from being written out (affected program BUFR_DUMPMD, if it were recompiled, in the data dumping process)
                                                        • +
                                                        • Subroutine UFBREP - to work properly for descriptors tied to a pivot descriptor in delayed replicated sequences (involved disabling the parsing switch which controlled checking for presence in the same replication group - UFBREP does not need this check, and it interferes with what UFBREP can do otherwise)
                                                        • +
                                                        • Subroutine UFBSEQ - to fix cases where delayed replication is at end of subset, or when a requested sequence is missing; also corrected the logic array of exit conditions for the subroutine, previously, in some cases, proper exits were missed, generating bogus error messages, because of several miscellaneous bugs which are now removed
                                                        • +
                                                        • Subroutine UPB - to make certain zero is returned for zero bits input
                                                        • +
                                                        • The following subroutines are modified to replace calls to Fortran Insrinsic Function ICHAR with calls to NCEP W3LIB c-function MOVA2I: DATEBF and DUMPBF. This change increases portability of the BUFR Archive Library because MOVA2I copies a bit string from a Character*1 variable to an integer variable. It is intended to replace the Fortran Intrinsic Function ICHAR, which only supports 0 <= ICHAR(A) <= 127 on the IBM SP. If "A" is greater than 127 in the collating sequence, ICHAR(A) does not return the expected bit value. This function can be used for all values of ICHAR(A) between 0 and 255. This change increases portability of the BUFR Archive Library and is, in fact, necessary on the NCEP IBM Frost and Snow machines.
                                                        • +
                                                        +

                                                        The BUFR Archive Library on Frost and Snow is compiled using optimization level 4 (-O4) for Fortran routines and optimization level 3 (-O3) for c routines. The previous BUFR Archive Library on the IBM-SP's had used -O3 for the default filenames and -O4 for a second set of filenames with the string "_O4" appended to the end.

                                                        +

                                                        The following libraries are generated on the NCEP IBM Frost and Snow machines:

                                                        +
                                                          +
                                                        • libbufr_4.a – 4-byte reals, 4-byte integers, 64-bit executable compilation
                                                        • +
                                                        • libbufr_8.a – 8-byte reals, 8-byte integers, 64-bit executable compilation
                                                        • +
                                                        • libbufr_d.a – 8-byte reals, 4-byte integers, 64-bit executable compilation
                                                        • +
                                                        +

                                                        +May 14, 2002

                                                        +

                                                        A number of routines in the BUFR Archive Library have been modified. These changes include:

                                                        +
                                                          +
                                                        • Entries IREADMM, IREADNS, IREADSB, IREADERS, IREADIBM, IREADFT and ICOPYSB changed to functions. Entries MRGINV, MINIMG, DATELEN, NENUBD, NENUAA, JSTNUM, JSTCHR and READERS changed to subroutines (note that READERS now simply calls READSB since it was an entry point at the top of READSB and was thus already an alias to it). Converted all entry points to subroutines or functions in order to increase portability to other platforms (e.g., the NESDIS CEMSCS machine).
                                                        • +
                                                        • Entries DXMINA, DXMINB, DXMIND and SUBUPD removed because they are obsolete.
                                                        • +
                                                        • Added XMSGINI for capacity to expand section three. XMSGINI has the capacity to write a fully expanded section three descriptor set into BUFR messages. Created specifically for NESDIS so they can send files out without local sequence descriptors. This "capacity" is not fully functional, it is currently activated by changing WRCMPS.to call it rather than CMSGINI, which writes sections 0,1,2,3 for compressed messages in the usual way. XMSGINI is included because it is useful for particular situations as is (aka NESDIS), and at some point could be integrated as a more direct form of STANDARDizing messages for export or whatever.
                                                        • +
                                                        • Included in-line compression function (subr. CMSGINI, WRITCP, WRCMPS added).
                                                        • +
                                                        • Improved RDCMPS and UFBSEQ for generality. Previously RDCMPS and UFBSEQ would not recognise compressed delayed replication as a legitimate data structure.
                                                        • +
                                                        • Removed old CRAY compiler directives in: COPYSB, CPYUPD, DRSTPL, GETWIN, INVMRG, MVB, NEWWIN, NXTWIN, RCSTPL, READSB, UFBDMP, UFBGET, UFBINT, UFBOVR, UFBRW, UFBTAB, UFBTAM and USRTPL.
                                                        • +
                                                        • Added new subroutine UFDUMP which is like UFBDMP, but prints subset element contents in more detail, omitting the pointers, counters, and other more esoteric information describing the internal subset structures. Each subroutine, UFBDMP and UFDUMP, is useful for different diagnostic purposes, but in general UFDUMP is more useful for just looking at the data elements.
                                                        • +
                                                        • Corrected error in READSB relating to certain foreign filetypes.
                                                        • +
                                                        • Added new subroutine DRFINI which initializes delayed replication factors, and allocates the space in the full word buffer for their contents explicitly. This is done implictly by UFBINT in a more limited way. DRFINI enables, for instance, the subsequent use of UFBSEQ to write data directly into delayed replicated sequences.
                                                        • +
                                                        • Added new subroutine MAXOUT which allows users to control the record length of output BUFR messages created.
                                                        • +
                                                        • Added new subroutine NUMTBD which is used by XMSGINI, in expanding the section 3 descriptor list.
                                                        • +
                                                        • Added new subroutine CAPIT which capitalizes a string of characters. This enables the use of mixed case in the unit section of the ASCII BUFR tables. An example; a program which generates an ASCII BUFR table from the "Master +Table B", might end up copying some units fields in mixed or lower case. If the units are 'Code table' or 'Flag table' or certain other unit designations, the table will be parsed incorrectly, and the data read or written incorrectly as a result. This makes sure all unit designations are seen by the parser in upper case to avoid these types of problems.
                                                        • +
                                                        • Removed subroutine JSTIFY because it was a dummy subroutine with two entry points for left justifying two different types of character strings. Part of conversion of entry points to separate subroutines or functions. See number 1 above.
                                                        • +
                                                        • Removed subroutine NENUCK because it was a dummy subroutine with two entry points for checking the BUFR mnemonic table. Part of conversion of entry points to separate subroutines or functions. See number 1 above.
                                                        • +
                                                        +

                                                        +August 15, 2001

                                                        +
                                                          +
                                                        • Parameter MAXMEM (the maximum number of bytes required to store all messages internally) was increased from 8 MBYTES TO 16 MBYTES in the following subroutines: CPYMEM, RDMEMM, RDMEMS, READMM, UFBMEM, UFBMMS, UFBMNS, UFBRMS and UFBTAM.
                                                        • +
                                                        • Subroutine UFBTAM modified to not abort when there are too many subsets coming in (i.e., .gt. array limit passed in), but rather to just process the limiting number of reports and print a diagnostic.
                                                        • +
                                                        +

                                                        +September 19, 2000

                                                        +

                                                        A number of routines in the BUFR Archive Library have been modified. These changes include:

                                                        +
                                                          +
                                                        • Consolidated logic that had been replicated in message decoding subroutines READMG, READFT, READTJ, READERM, READERME, RDMEMM and READIBM into a single new subroutine CKTABA (called by these subroutines). On top of this CKTABA now recognizes a variety of Section 3 formats, including compression indicators and "standard" BUFR. Thus, compressed and standard BUFR messages can now be read in via these message decoding subroutines.
                                                        • +
                                                        • The subset decoding subroutine READSB now calls a new subroutine RDCMPS which allows it to read subsets from compressed BUFR messages.
                                                        • +
                                                        • Subroutine RDTRER has been removed. It had been called by READERS to decode ERS scatterometer data from compressed BUFR messages. The change in READSB (see 2) allows READERS to be changed from a subroutine to an entry point at the top of READSB since it is now essentially an alias to READSB.
                                                        • +
                                                        • Subroutine UNCMPS has been removed. It had been called by READERM, READERME and READIBM to uncompress BUFR messages in foreign (i.e., standard ) BUFR files (e.g., ERS scatterometer data). This is a result of change 1 above.
                                                        • +
                                                        • Added capability to encode and decode data using the operator descriptors (BUFR Table C) for changing width and changing scale. Subroutines modified were: NEMTAB, NEMTBD, NUMTAB and TABSUB
                                                        • +
                                                        • Enlarged arrays to allow processing messages up to 20000 bytes. Routines modified were: BFRINI, CLOSMG, COPYBF, COPYMG, COPYSB, CPYMEM, CPYUPD, IRDERM, MESGBF, MINIMG, MSGINI, MSGUPD, MSGWRT, POSAPN, POSAPX, RCSTPL, RDBFDX, RDMEMM, RDMEMS, RDTREE, READERM, READERME, READFT, READIBM, READMG, READMM, READSB, READTJ, UFBGET, UFBMEM, UFBTAB, UFBTAM, WRITDX, WRITSA and WRTREE.
                                                        • +
                                                        • Added subroutine UFBSEQ, like UFBINT except processes specific sequences instead of specific elements.
                                                        • +
                                                        • Added function NMBYT, returns the number of bytes in a message opened for input.
                                                        • +
                                                        +

                                                        The BUFR Archive Library is now compiled using both optimization level 3 (-O3) and optimization level 4 (-O4). The previous BUFR Archive Library had used only -O4. The -O3 compilation here generates the same archive library names as before. Thus, any code that is recompiled from an unchanged makefile will now link in the appropriate -O3 library, rather than the -O4 library as before. The new -O4 libraries all have the string "_O4" appended to the end of the filename.

                                                        +

                                                        Any program that must link to the -O4 BUFR Archive Library when compiled will have to modify its makefile.

                                                        +

                                                        +July 13, 1999

                                                        +
                                                          +
                                                        • A number of routines in the BUFR Archive Library have been modified to increase the number of BUFR files which can be opened at one time from 10 to 32. This is necessary in order to process multiple BUFR files under the MPI. The following routines were modified: BFRINI, CHEKSTAB, CLOSMG, CONWIN, COPYMG, COPYSB, CPBFDX, CPYMEM, CPYUPD, DXINIT, ELEMDX, GETWIN, IFBGET, INVCON, INVMRG, INVTAG, INVWIN, LSTJPD, LSTRPC, LSTRPS, MAKESTAB, MSGINI, MSGUPD, NEMTAB, NEMTBA, NEMTBD, NENUCK, NEWWIN, NMSUB, NUMTAB, NVNWIN, NWORDS, NXTWIN, OPENBF, OPENMB, OPENMG, PARUTG, PKTDD, RCSTPL, RDBFDX, RDMEMM, RDMEMS, RDTREE, RDTRER, RDUSDX, READERM, READERME, READERS, READFT, READMG, READNS, READSB, READTJ, STATUS, STRING, TRYBUMP, UFBCNT, UFBCPY, UFBCUP, UFBDMP, UFBEVN, UFBGET, UFBINT, UFBOVR, UFBREP, UFBRP, UFBRW, UFBTAB, UFBTAM, UNCMPS, UPTDD, USRTPL, WRITDX, WRTREE, WTSTAT.
                                                        • +
                                                        • Subroutines READFT, READMG, and READTJ have been modified with semantic adjustments to ameliorate compiler complaints from LINUX boxes.
                                                        • +
                                                        • Added the new subroutine READIBM in order to process "foreign" (non-NCEP) BUFR files which may not be padded. Unlike the subroutine READERM, which performs a similar fuction, READIBM works properly on all platforms and should replace calls to READERM in application programs. (READERM does not work properly on the NCEP IBM-SP machine.)
                                                        • +
                                                        • Added the new subroutine NEMTBAX. It is like subroutine NEMTBA except if the requested mnemonic is not found, it returns rather than calls BORT. This is necessary to support the logic in the new BUFR Archive Library subroutine READIBM (see 3).
                                                        • +
                                                        • Added the new subroutine READMM. It is like subroutine RDMEMM except it advances the value of the message (record) number by one prior to returning to the calling program. This adds another option for application programs which read BUFR files in random access mode (e.g., PREPOBS_OIQCBUFR).
                                                        • +
                                                        • Function IREADMG has been modified to contain two new function entries called IREADMM and IREADIBM. The IREADIBM function calls the new library subroutine READIBM (see 3) and the IREADMM function calls the new library subroutine READMM (see 5).
                                                        • +
                                                        • RDTRER, READERM, READERME and UNCMPS have been modified to expand the maximum number of possible descriptors in a subset from 1000 to 3000.
                                                        • +
                                                        • The maximum number of bytes required to store all messages internally was increased from 4 Mbytes to 8 Mbytes in the following subroutines: RDMEMM, UFBMEM, UFBMMS, UFBMNS and UFBRMS.
                                                        • +
                                                        • The function formerly called VAL$ has been renamed to VALX to remove the possibility of the "$" symbol causing problems on other platforms. In turn subroutine NEMTBB has been modified to call function VALX rather than VAL$.
                                                        • +
                                                        • New subroutines UFBSTP and UFBSP added (UFBSP is called by UFBSTP).
                                                        • +
                                                        +

                                                        +December 14, 1998

                                                        +
                                                          +
                                                        • Subroutine MSGUPD was updated to bybass the processing of reports that are longer than the length of a BUFR message. Prior to this change, the BUFR Archive Library would issue an abort in the event of this rare, but possible occurrence which occurred at 12Z on 4 December in the RGL suite.
                                                        • +
                                                        • In addition, function I4DY was modified to use 20 as the 2-digit year for windowing to a 4-digit year (00-20 ==> add 2000; 21-99 ==> add 1900). This windowing technique was inadvertently changed to 10 in the previous implementation of the BUFR Archive Library.
                                                        • +
                                                        +

                                                        +November 24, 1998

                                                        +
                                                          +
                                                        • Function I4DY and subroutine MSGWRT were changed as a result of final Y2K testing of the decoder/ingest system.
                                                        • +
                                                        • I4DY was changed to conform to the NCEP 2-digit year time-window of 1921-2020.
                                                        • +
                                                        • MSGWRT was changed to zero out the padding bytes written at the end of Section 4.
                                                        • +
                                                        +

                                                        +October 27, 1998

                                                        +
                                                          +
                                                        • The BUFR Archive Library is being modified to correct problems caused by in-lining code with fpp directives. The following subroutines are being changed: DATEBF, MVB, RCSTPL, RDMEMS, RDTREE, RDTRER, UFBGET, UFBRW, UFBTAB, UFBTAM and UPBB.
                                                        • +
                                                        +

                                                        +August 31, 1998

                                                        +
                                                          +
                                                        • BUFR Archive Library subroutine DATEBF, which returns the center date-time for a BUFR data dump file, is being modified to correct an error which lead to the year being returned in the second argument as 2-digit year when a 4-digit year was requested via a prior call to subroutine DATELEN. The center date returned in the sixth argument, in the form YYYYMMDDHH, was correct in the previous version of this subroutine.
                                                        • +
                                                        +

                                                        +July 8, 1998

                                                        +

                                                        The new version of the BUFR Archive Library is Y2K compliant, with additional changes to support expanded machine independence of the code, and to refine, correct, or improve some of the routines within. Although nearly every one of library routines has some change made (mainly because of the introduction of a more general error exit subroutine), the changes largely fall into the first two categories. Three new routines were also added to the BUFR Archive Library for micellaneous puposes.

                                                        +

                                                        Y2K Compliance

                                                        +

                                                        Y2K compliance in the BUFR Archive Library is downwardly compatible. That is, the new library will read non-Y2K BUFR files as the old one does. However, all two digit years read are represented internally as four digit years, and any files written with the new library will be in Y2K format. A functional conversion of two digit year inputs assumes the years 21-99 are in the twentieth century, while years numbered 00-20 are in the twenty-first. A Y2K BUFR file is identified by a non-zero value in the 18th byte of the message section one, the century byte. At this point users of the library have access to the full four digit year values read by including a signal in their programs via a new entry point called DATELEN. The plan is to have the default set to return two digits of the year during a transition period. This allows implementation of the new BUFR Archive Library into a non-Y2K compliant environment. The susbsequent list of subroutines have been changed for Y2K compliance: BFRINI, DATEBF, DUMPBF, MSGINI, OPENMB, OPENMG, RDMEMM, READERME, READFT, READMG, READTJ.

                                                        +

                                                        Machine Independence

                                                        +

                                                        Since the last implementation of the BUFR Archive Library, several areas in the code have been identified which are problematic in some way with regards to compiling the library on some computers. Upgrades have been made to the following list of subroutines to address these: CONWIN, INVCON, PARUSR, RDTRER, READERM, READERME, TRYBUMP, UFBEVN, UFBGET, UFBINT, UFBRP, UFBRW, UFBTAB and UNCMPS.

                                                        +

                                                        Refinements, Corrections, and Improvements

                                                        +

                                                        This is a list of BUFR Archive Library routines which were either in error, or in need of some improvement: IRDERM, NEMTBB, NENUCK, RDBFDX, RDUSDX, STRCLN, STRING, TABENT, UNCMPS and WRTREE.

                                                        +

                                                        New Error Exit Subroutine

                                                        +

                                                        Many of the BUFR Archive Library routines perform internal testing during operation in order to prevent certain situation from generating mysterious aborts, or, even worse, giving the wrong answers. The original library utilized the Cray library routine ABORT to terminate a program when such a situation was found. The new library uses a new inernal subroutine, BORT, to accomplish this. The list of routines changed for this purpose is as follows: ADN30, CHEKSTAB, CLOSMG, COPYBF, COPYMG, COPYSB, CPYMEM, CPYUPD, DATEBF, DRSTPL, DUMPBF, DXMINI, ELEMDX, GETWIN, IDN30, IFBGET, INCTAB, INVMRG, IPKM, IUPM, JSTIFY, LSTJPB, LSTRPC, LSTRPS, MAKESTAB, MSGINI, MSGUPD, MSGWRT, MVB, NEMTBA, NEMTBB, NEMTBD, NENUCK, NEWWIN, NMSUB, NVNWIN, NXTWIN, OPENMB, OPENMG, OPENBF, PAD, PARSEQ, PARUSR, PARUTG, PKC, POSAPN, POSAPX, RCSTPL, RDBFDX, RDMEMM, RDMEMS, RDUSDX, READDX, READERM, READERME, READERS, READFT, READMG, READNS, READSB, READTJ, SEQSDX, STANDARD, STATUS, STRING, TABENT, TABSUB, UFBCNT, UFBCPY, UFBCUP, UFBDMP, UFBEVN, UFBGET, UFBINT, UFBMEM, UFBMMS, UFBMNS, UFBOVR, UFBQCD, UFBQCP, UFBREP, UFBRMS, UFBTAM, UPTDD, USRTPL, VAL$, WRDLEN, WRITDX, WRITSA, WRITSB, WTSTAT

                                                        +

                                                        New Code Added

                                                        +

                                                        I4DY the two/four digit year conversion function LJUST a character left justify function OPENBT A dummy entry point which is relevant to users of the READTJ subroutine

                                                        +

                                                        +April 2, 1998

                                                        +
                                                          +
                                                        • BUFR Archive Library subroutine STRCLN, which initializes the mnemonic string cache in the BUFR interface, is being modified to enlarge the cache from 50 elements to 1000, maximum.
                                                        • +
                                                        • BUFR Archive Library subroutine STRING manages the mnemonic string cache in the BUFR interface. The mnemonic string cache is a performance enhancing device which saves time when the same mnemonic strings are encountered in a user program, over and over again (the typical scenario). It is being modified to operate a bigger cache, and some optimization of the cache search algorithm is being made in support of a bigger cache.
                                                        • +
                                                        +

                                                        +September 3, 1997

                                                        +
                                                          +
                                                        • Changes are being made to the BUFR Archive Library to recompile all routines without the -ez compiler option. The removal of this debugging option should speed up the execution of all modules which are linked with BUFR Archive Library routines.
                                                        • +
                                                        • In addition, a new subroutine, STANDARD, is being added to the library. This subroutine "standardizes" NCEP BUFR messages for transmission. It was requested to process hurricane location data.
                                                        • +
                                                        +

                                                        +July 29, 1997

                                                        +
                                                          +
                                                        • Three BUFR Archive Library subroutines were modified to update the current BUFR version information written into Section 0 of each message: DXMINI, MSGINI and MSGWRT. Version 3 replaces version 2.
                                                        • +
                                                        • Three additional subroutines were modified to enable them to process GOES soundings from NESDIS: IRDERM, RDTRER and READERME.
                                                        • +
                                                        +

                                                        +December 17, 1996

                                                        +

                                                        The BUFR Archive Library was modified to make the following changes:

                                                        +
                                                          +
                                                        • DUMPBF - Corrected error in dump date reader.
                                                        • +
                                                        • RDUSDX - Fixed for some MVS compiler's treatment of internal reads.
                                                        • +
                                                        • RDBFDX - Fixed for some MVS compiler's treatment of internal reads.
                                                        • +
                                                        • UFBINT - Modified to always initialize "USR" array to missing (10E10) when BUFR file is being read.
                                                        • +
                                                        +

                                                        +December 11, 1996

                                                        +

                                                        The following subroutines were modified in the BUFR Archive Library:

                                                        +
                                                          +
                                                        • STATUS - Fixed a long standing bug which occurs in unusual situations. Very low impact.
                                                        • +
                                                        • UFBINT - Removed a hard abort for users who try to write non-existing mnemonics.
                                                        • +
                                                        • UFBRW - Removed a hard abort for users who try to write non-existing mnemonics.
                                                        • +
                                                        • ADDATE - New date arithmetic subroutine added to the library.
                                                        • +
                                                        • DUMPBF - New dump date reader added to the library.
                                                        • +
                                                        • MSGINI - Modified to allow inclusion of minutes in writing the message date into a BUFR message.
                                                        • +
                                                        • READTJ - Specific database ingest message reader added to the library which can attach different BUFR tables if the message type is not recognized in the current ones. Works with a user subroutine called OPENBT which specifies the location(s) of different tables.
                                                        • +
                                                        +

                                                        +November 25, 1996

                                                        +

                                                        Several routines in the BUFR Archive Library are being modified to provide more machine independence. The data merging routine is being modified for radiosonde call signs, a return code is being added to UFBINT when mnemonics are not found, and READMG is being modified to exit gracefully when the file is positioned after an end of file

                                                        +

                                                        +October 9, 1996

                                                        +

                                                        The BUFR Archive Library was modified to include 9 additional routines to process ERS scatterometer data (IREADERS, RDTRER, READERS, UNCMPS), perform fault tolerant reading (IREADFT, READFT), and support report part merging (INVMRG, MRGINV, NWORDS).

                                                        +

                                                        +September 9, 1996

                                                        +

                                                        The BUFR Archive Library was separated into 121 BUFR interface routines, which include upgrades and devices for operating the BUFR database.

                                                        +

                                                        +June 28, 1995

                                                        +

                                                        The BUFR Archive Library was modified to increase the size of internal arrays in order to handle bigger files. Coding was also added in order to process ERS scatterometer data which is input from compressed BUFR messages (new subroutine READERME).

                                                        +

                                                        +January 10, 1995

                                                        +

                                                        The BUFR Archive Library was modified slightly to allow for changes in the AVN and FNL PREPBUFR and Q.C. Processing codes (PREPDATA, CQCBUFR, OIQCBUFR, SSIANL).

                                                        +

                                                        +Original Implementation of BUFR Archive Library - January 6, 1994

                                                        +

                                                        Implemented on Cray-YMP as a single monolithic source bufr.f. Only the AVN and FNL PREPBUFR processing and q.c. codes used the BUFR Archive Library initially. These were: PREPDATA, SYNDATA, CQCBUFR, OIQCBUFR, and SSIANL. These had actually been implemented with a non-production version of the library in Jack Woollen's directory September 21, 1993.

                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_dx_tables.html b/previous_versions/v12.1.0/md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_dx_tables.html new file mode 100644 index 000000000..008f932b1 --- /dev/null +++ b/previous_versions/v12.1.0/md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_dx_tables.html @@ -0,0 +1,695 @@ + + + + + + + +NCEPLIBS-bufr: DX BUFR Tables + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        +
                                                        DX BUFR Tables
                                                        +
                                                        +
                                                        +

                                                        Description and format of DX BUFR tables for use with the library. Every BUFR file must have DX BUFR tables associated with it, unless the 'SEC3' decoding option is specified during the call to openbf(). For all other cases, DX table information must be pre-defined and made available to the software via call argument LUNDX during the call to openbf(). The DX tables information may be embedded within the first few BUFR messages of the file itself. Otherwise, a separate ASCII text file containing the necessary DX tables information must be supplied, such as the example shown below. Such files must be syntactically correct and also complete, in the sense that all necessary mnemonics must exist and be fully-defined.

                                                        +

                                                        +Mnemonics

                                                        +

                                                        A mnemonic is a descriptive, alphanumeric name for a data value.

                                                          +
                                                        • "Table A mnemonics", refer to particular data subset (i.e. report ) types,
                                                        • +
                                                        • "Table B mnemonics", refer directly to basic data values,
                                                        • +
                                                        • "Table D mnemonics" are sequences composed of one or more Table B (or other Table D) mnemonics and which are themselves normally direct constituents of a particular Table A mnemonic.
                                                        • +
                                                        +

                                                        At the highest level, we have a Table A mnemonic which completely describes a type of data subset (e.g. rawinsonde, wind profiler, etc.). This Table A mnemonic is defined as a sequence of one or more Table B or Table D mnemonics, where each Table D mnemonic is likewise itself defined as a sequence of one or more Table B or Table D mnemonics, and so on until the entire data subset can be equivalently described as a sequence of one or more Table B mnemonics which correspond to basic data values (e.g. pressure, temperature, humidity, etc.).

                                                        +

                                                        Mnemonics never themselves appear within actual BUFR messages. Their only purpose is to make it easier for users to interact with the software by providing descriptive names to represent individual data values. They are more intuitive than FXY numbers (described below), which are the prescribed method within actual BUFR messages.

                                                        +

                                                        +DX BUFR Tables File

                                                        +

                                                        A DX BUFR tables file consists of three distinct sections. Each section contains one or more lines of 80 characters in length, and where a "*" as the first character of a line indicates that that entire line is a comment.

                                                        +
                                                          +
                                                        1. In the first section, all Table A, B and D mnemonics that are to be used within the file are initially declared, assigned a unique FXY number, and given a short, free-form text description.
                                                        2. +
                                                        3. In the second section, all previously-declared Table A and Table D mnemonics are actually defined as a sequence of one or more Table B (or other Table D) mnemonics.
                                                        4. +
                                                        5. In the third section, all previously-declared Table B mnemonics are defined in terms of their scale factor, reference value, bit width, and units.
                                                        6. +
                                                        +

                                                        +Section 1

                                                        +
                                                        The first section of a BUFR tables file is where all Table A, B and D mnemonics are initially declared, assigned a unique FXY number, and given a short free-form text description. Mnemonics may contain any combination of uppercase letters and numbers (or, in certain special cases, a "." character), up to a maximum of 8 characters in length. A mnemonic may be declared only once, and each one must correspond to a unique FXY number, which itself consists of 6 characters, and where the first character (i.e. the "F" component) is an "A" if the mnemonic is being declared as a Table A mnemonic, "3" if the mnemonic is being declared as a Table D mnemonic, and "0" if the mnemonic is being declared as a Table B mnemonic. Otherwise, the remainder of the FXY number must be all digits, with the next 2 characters (i.e. the "X" component) as a number between 00 and 63, and the final 3 characters (i.e. the "Y" component) as a number between 001 and 255. Readers who are more familiar with BUFR will immediately recognize these F, X, and Y values as those that are defined within the official documentation of the BUFR code form.

                                                        +
                                                        By international convention, a mnemonic should not be given an X value between 00 and 47 along with a Y value between 001 and 191 unless that mnemonic, when subsequently defined, corresponds exactly to the BUFR descriptor having that same FXY number within the official WMO master BUFR tables.

                                                        +
                                                        For example, in our sample DX BUFR tables file, mnemonic "WMOB" is declared with an FXY number of 001001; therefore, it has the exact same text description (i.e. "WMO BLOCK NUMBER") and, when later defined within the last section of the file, the exact same scale factor, reference value, bit width, and units as for FXY number 001001 within the official WMO master BUFR tables. This concept should be somewhat intuitive, but it's obviously very important when the BUFRLIB software is to be used to encode BUFR messages that may potentially be read by other users in other organizations around the world.

                                                        +
                                                        In looking further at our sample DX BUFR tables file, we see that the lines within the first section each contain a "|" character in columns 1, 12, 21, and 80. Mnemonics are declared, and are left-justified, in columns 3-10, corresponding FXY numbers are assigned in columns 14-19, and the corresponding text description begins in column 23. All of the Table A mnemonics are declared first, followed by all of the Table D mnemonics, followed by all of the Table B mnemonics. Within each set, it is generally a good idea for human-readability purposes to list the mnemonics in ascending order with respect to their FXY number, although this is not required. Human-readability can usually also be improved by the use of separator lines containing the required "|" character in columns 1, 12, 21, and 80 but without any actual mnemonic declaration. The use of such separator lines is not required. The software will continue reading lines of the file, one at a time, and looking for new mnemonic declarations, until it reaches a line which does not contain a "|" character in each of columns 1, 12, 21, and 80, at which point it then knows that the first section of the tables file has ended.

                                                        +
                                                        If a Table A mnemonic consists of 8 characters (i.e. the maximum) and if characters 3 through 8 are all digits, then the mnemonic is also used by the software to set the data category and local subcategory within Section 1 of each BUFR message when writing/encoding data subsets corresponding to that mnemonic. In such cases, characters 3 through 5 define the category, and characters 6 through 8 define the subcategory.

                                                        +
                                                        Referring to our sample DX BUFR tables file where we've defined three different Table A mnemonics, we've also indicated that, e.g. when we use the software to write/encode data subsets according to the Table A mnemonic "NC002007" (i.e. wind profiler), we want all BUFR messages which contain such data subsets to be encoded as category 2 and local subcategory 7 within Section 1 of the message.

                                                        +
                                                        Even if a Table A mnemonic doesn't meet the above criteria, BUFR message category and local subcategory values will still be set by the software when writing/encoding BUFR data subsets corresponding to that Table A mnemonic. In such cases the category value will be set to the "Y" component (i.e. last 3 digits) of the FXY number corresponding to the mnemonic, and the subcategory value will simply be set to 0. It is recommended to use the previous, more-explicit approach when assigning a Table A mnemonic for a data subset to be output, since this approach provides for greater control over the category and subcategory values that will be encoded into Section 1 of the resultant BUFR message. When the FXY number corresponding to a Table A mnemonic is actually encoded into a BUFR message, a "3" is actually encoded in place of the "A" which is used in the DX tables file. The "A" that appears within the FXY number corresponding to each Table A mnemonic within the tables file is only there so that such mnemonics can be easily distinguished from Table D mnemonics by the software.

                                                        +Section 2

                                                        +
                                                        The second section of a DX BUFR tables file is used to define, for each Table A and Table D mnemonic that was previously declared in the first section, the sequence of Table B (and possibly other Table D) mnemonics which constitutes that mnemonic.

                                                        +
                                                        The format for this section is a "|" character in columns 1, 12, and 80, with the mnemonic that is being defined listed in columns 3-10 (left-justified), and the sequence of constituent mnemonics beginning in column 14, each one separated from the others by one or more blank characters. For longer sequences, multiple successive lines may be used in a continuation fashion by repeating, within columns 3-10 of each continuation line, the mnemonic being defined.

                                                        +
                                                        For example, in our sample DX BUFR tables file, the Table D mnemonic MRPSC0 is defined as consisting of the sequence YEAR MNTH DAYS HOUR MINU RPID MRPIDS CLON CLAT SELV CORN, where MRPIDS is itself a Table D mnemonic which is therefore itself defined in a similar manner elsewhere within the section. As was the case with the first section, separator lines may be employed within this section in order to improve human-readability, as long as they contain the "|" character that is required to be in columns 1, 12, and 80 for all non-comment lines within this section, and the BUFRLIB software will continue reading lines of the file as though they are part of the second section until it encounters one that does not adhere to this format.

                                                        +
                                                        Additional punctuation characters and symbols can be see in the sample DX BUFR tables file.

                                                        +
                                                        + + + + + + + + + + +
                                                        Symbol Meaning
                                                        < > The enclosed mnemonic is replicated using 1-bit delayed replication (either 0 or 1 replications)
                                                        { } The enclosed mnemonic is replicated using 8-bit delayed replication (between 0 and 255 replications)
                                                        ( ) The enclosed mnemonic is replicated using 16-bit delayed replication (between 0 and 65535 replications)
                                                        " "n The enclosed mnemonic is replicated using regular (non-delayed) replication, with a fixed replication factor of n
                                                        +

                                                        +
                                                        For example, the Table A mnemonic NC002001, which defines the layout of a data subset of the type "RAWINSONDE - FIXED LAND", consists of the following sequence of Table B and Table D mnemonics:
                                                          +
                                                        1. UARTM, followed by
                                                        2. +
                                                        3. between 0 and 255 replications of RCPTIM, followed by
                                                        4. +
                                                        5. between 0 and 255 replications of BID, followed by
                                                        6. +
                                                        7. UASID, followed by
                                                        8. +
                                                        9. between 0 and 255 replications of UARID, followed by
                                                        10. +
                                                        11. between 0 and 255 replications of UARLV, followed by
                                                        12. +
                                                        13. either 0 or 1 replications of UASDG, followed by
                                                        14. +
                                                        15. between 0 and 255 replications of UARDCS, followed by
                                                        16. +
                                                        17. between 0 and 255 replications of RAWRPT, followed by
                                                        18. +
                                                        19. between 0 and 255 replications of UACLD, followed by
                                                        20. +
                                                        21. either 0 or 1 replications of UAADF, followed by
                                                        22. +
                                                        23. WMOB, followed by
                                                        24. +
                                                        25. WMOS, followed by
                                                        26. +
                                                        27. WMOR
                                                        28. +
                                                        +
                                                        where, e.g., the constituent Table D mnemonic UARLV itself consists of the following sequence:
                                                          +
                                                        1. VSIG, followed by
                                                        2. +
                                                        3. QMPR, followed by
                                                        4. +
                                                        5. PRLC, followed by
                                                        6. +
                                                        7. QMGP, followed by
                                                        8. +
                                                        9. either 0 or 1 replications of UAGP07, followed by
                                                        10. +
                                                        11. either 0 or 1 replications of UAGP10, followed by
                                                        12. +
                                                        13. either 0 or 1 replications of UATMP, followed by
                                                        14. +
                                                        15. either 0 or 1 replications of UAWND, followed by
                                                        16. +
                                                        17. either 0 or 1 replications of UAWSH
                                                        18. +
                                                        +
                                                        and where, in turn, UAGP07, UAGP10, UATMP, etc. are also Table D mnemonics which can themselves be further resolved.

                                                        +
                                                        We can even nest certain replication sequences inside of other replication sequences, and, further, via the judicious use of the < > indicator, even turn on/off entire sequences of data values simply and efficiently.

                                                        +
                                                        An example of this is the UAWSH (i.e. "RADIOSONDE WIND SHEAR DATA") sequence, whose constituent data values are only ever present in a rawinsonde report when a level of maximum wind is being reported (and, even then, not always!). In this case, enclosing the entire sequence within a < > indicator allows the lack of such data within a report level to be noted by the use of a single bit set to "0" (i.e. 0 replications), rather than having to otherwise store the appropriate "missing" value for every constituent data value. Over the course of many data levels within many data subsets within a single BUFR message, this can add up to significant encoding efficiency, and, in turn, the use of less required storage space per BUFR message. So, in summary, the judicious use of replication can even lead to more efficient data storage for certain types of data.

                                                        +
                                                        Looking back again at the sample DX BUFR tables file, notice how several of the Table D mnemonics such as RCPTIM and BID are used within both the NC001003 and NC002001 data subset types. This brings up a good point; namely, that by logically grouping certain Table B mnemonics together within carefully-constructed Table D sequence mnemonics, such mnemonics can be easily and efficiently re-used within different Table A mnemonic definitions within the same BUFR tables file. In fact, this would be a good time to also point out that, when using the BUFRLIB software, Table D sequence mnemonics are the only types of mnemonics upon which any type of replication may be directly performed. Thus, in particular, if we wish to effect the replication of a single, particular Table B mnemonic, then we must do so by defining a Table D sequence mnemonic whose only constituent is that one particular Table B mnemonic and then replicating the sequence mnemonic. For a specific example of such a situation, take a look at the definition of RAWRPT within the sample file.

                                                        +
                                                        Before we end our discussion on the second section of our sample BUFR tables file, there are a few other special situations that we need to explain in further detail:

                                                        +
                                                        First, notice how a 201YYY indicator precedes each occurrence of ACAV within the definition of the Table D sequence mnemonic OBSEQ as well as each occurrence of HINC within the definition of the Table A mnemonic NC002007. This indicator is called an operator, and readers more familiar with the details of BUFR will no doubt recognize it from Table C of the official WMO master BUFR tables.

                                                        +
                                                        In short, the effect of this operator is that, for each Table B mnemonic which follows it within the current sequence, and continuing up until the point in the sequence where a corresponding 201000 operator is reached (and which turns off the effect), ( YYY - 128 ) bits should be added to the bit width that is otherwise defined for that Table B mnemonic within the third section of the DX BUFR tables file, so that the net effect is to change the number of bits occupied by the data value corresponding to that mnemonic within the overall data subset. Thus, for example, the sequence:

                                                        +
                                                        201132 HINC 201000

                                                        +
                                                        indicates that ( 132 - 128 ) = 4 bits should be added to the data width that was defined for mnemonic HINC within the third section of the DX BUFR tables file, and, therefore, that for this occurrence of that mnemonic within the overall data subset, the corresponding data value will occupy ( 12 + 4 ) = 16 bits.

                                                        +
                                                        Other than 201YYY, the BUFRLIB software also supports the similar use of the 202YYY (change scale), 203YYY (change reference value), 204YYY (add associated field), 205YYY (add character data), 206YYY (define data width for local descriptor), 207YYY (increase scale, reference value and data width) and 208YYY (change data width for CCITT IA5 descriptor) operators from BUFR Table C.

                                                        + Next, take a look at the subset definitions for Table A mnemonics TBLAEX1, TBLAEX2, TBLAEX3 and TBLAEX4 within the sample DX BUFR tables file:
                                                        +| TBLAEX1  | UASID  UARTM  {PRGPTMDP}                                          |
                                                        +|          |                                                                   |
                                                        +| TBLAEX2  | UASID  UARTM  "PRGPTMDP"100                                       |
                                                        +|          |                                                                   |
                                                        +| TBLAEX3  | UASID  UARTM  {PRGPTMDP}  PRLC  UACLD  PRLC  HOVI                 |
                                                        +|          |                                                                   |
                                                        +| TBLAEX4  | UASID  UARTM                                                      |
                                                        +| TBLAEX4  | PRLC  UACLD GEOP  TMDB  HOVI TMDP                                 |
                                                        +| TBLAEX4  | PRLC  UACLD TMDB  TMDP  HOVI GEOP                                 |
                                                        +| TBLAEX4  | PRLC  UACLD GEOP  TMDP  HOVI TMDB                                 |
                                                        +| TBLAEX4  | PRLC  UACLD TMDB  GEOP  HOVI TMDP                                 |
                                                        +
                                                        Furthermore, let's presume we wanted to read all of the occurrences of the Table B mnemonics PRLC, GEOP, TMDB and TMDP from data subsets encoded according to each of these different subset definitions. In the first three cases, these mnemonics are all contained within the Table D sequence PRGPTMDP as follows:
                                                        +| PRGPTMDP | PRLC  GEOP  TMDB  TMDP                                            |
                                                        +
                                                        However, due to some subtle differences in how the sequence is replicated in each case, different BUFRLIB subroutines need to be used to retrieve all of the respective PRLC, GEOP, TMDB and TMDP values in each case. For example, within the first subset definition TBLAEX1, we have delayed replication using the notation {PRGPTMDP}, so we could use subroutine ufbint() with STR='PRLC GEOP TMDB TMDP' to retrieve all of the replications of these mnemonics into our output USR array, where each row of USR would contain corresponding values for PRLC, GEOP, TMDB and TMDP in the first four columns, and where the return value IRET would tell us how many rows of USR were actually filled with such values (i.e. the total number of replications that were read).

                                                        +
                                                        Alternatively, we could use subroutine ufbseq() with STR='PRGPTMDP', which would accomplish the exact same thing. Or, if we only wanted to know the total number of replications without actually reading out all of the respective PRLC, GEOP, TMDB and TMDP values, we could also call subroutine ufbint() with STR='{PRGPTMDP}', and the corresponding array location in USR would contain the same value that would have been returned in IRET during our earlier call to ufbint() with STR='PRLC GEOP TMDB TMDP', or during our earlier call to ufbseq() with STR='PRGPTMDP'.

                                                        +
                                                        The second subset definition TBLAEX2 is different, because here instead of delayed replication we have fixed replication using the notation "PRGPTMDP"100, so in this case we must instead use subroutine ufbrep() with STR='PRLC GEOP TMDB TMDP' in order to read all of the respective PRLC, GEOP, TMDB and TMDP values into the first four columns of our USR array. However, since in this case the number of replications is fixed at 100, then the return value IRET would always be set to 100, and if there were less than 100 actual rows of available data values, then the remaining rows of USR up through row 100 would be filled out with "missing" values by the BUFRLIB software.

                                                        +
                                                        The third subset definition TBLAEX3 is a bit more interesting, because we once again have delayed replication using the notation {PRGPTMDP} just like in TBLAEX1; however, in this case there are additional subsequent occurrences of Table B mnemonic PRLC which appear outside of the delayed replication sequence. So in this case we again have to use subroutine ufbrep() with STR='PRLC GEOP TMDB TMDP' in order to read all of the occurrences of PRLC from within the data subset, and the return value IRET will now be 2 larger than in our earlier example for the TBLAEX1 subset definition, because now we have 2 extra rows in USR which contain additional PRLC values in the first column. If we had instead tried to use subroutine ufbint() with the same STR value for this TBLAEX3 subset definition, then we wouldn't have been able to read those last 2 extra rows, and our USR output array instead would have looked exactly as it did in our earlier TBLAEX1 example.

                                                        +
                                                        The fourth and final subset definition TBLAEX4 is even more interesting, not to mention a bit more contrived. Here we have exactly 4 replications of the Table B mnemonics PRLC, GEOP, TMDB and TMDP, but the replication is done via explicitly listing all of the occurrences of these mnemonics within the subset definition, and where the mnemonics appear in slightly different order within each replication. Again, this is a contrived example, but it will serve to better explain how subroutine ufbrep() actually works, and also how it behaves slightly differently from ufbint() and ufbseq() as well as from yet another subroutine ufbstp(). First of all, in the case of subroutine ufbrep(), the first listed mnemonic in STR is always treated as a "pivot", meaning that the second dimension of USR (i.e. the number of rows) is always defined by subsequent occurrences of this pivot mnemonic within the overall subset definition, and where any remaining mnemonics within STR are always independently searched for between each successive occurrence of the pivot mnemonic. So in the case of subroutine ufbrep() with STR='PRLC GEOP TMDB TMDP' for TBLAEX4, there will be 4 rows of values in the returned USR array as follows, since there were 4 total occurrences of the pivot mnemonic PRLC:
                                                        + + + + + + + + + + +
                                                        USR(I,J) J=1 J=2 J=3 J=4
                                                        I=1 1st PRLC value 1st GEOP value 1st TMDB value 1st TMDP value
                                                        I=2 2nd PRLC value 2nd GEOP value 2nd TMDB value 2nd TMDP value
                                                        I=3 3rd PRLC value 3rd GEOP value 3rd TMDB value 3rd TMDP value
                                                        I=4 4th PRLC value 4th GEOP value 4th TMDB value 4th TMDP value
                                                        +
                                                        In other words, ufbrep() searched independently for each of the mnemonics GEOP, TMDB and TMDP between each occurrence of the pivot mnemonic PRLC, so the varying order of those mnemonics between each successive occurrence of PRLC was immaterial, and all of the requested values were found and returned. However, contrast that with what the first 4 rows of USR would look like if we called subroutine ufbstp() with the same STR='PRLC GEOP TMDB TMDP':
                                                        + + + + + + + + + + +
                                                        USR(I,J) J=1 J=2 J=3 J=4
                                                        I=1 1st PRLC value 1st GEOP value 1st TMDB value 1st TMDP value
                                                        I=2 2nd PRLC value 2nd GEOP value "missing" value "missing" value
                                                        I=3 3rd PRLC value 3rd GEOP value 3rd TMDB value "missing" value
                                                        I=4 4th PRLC value 4th GEOP value "missing" value "missing" value
                                                        +
                                                        As shown here, the order of the non-pivot mnemonics between each occurrence of the pivot mnemonic PRLC is now very important when using subroutine ufbstp(). Specifically, ufbstp() only ever moves forward from each occurrence of the pivot mnemonic, and for only one non-pivot mnemonic at a time in the same exact order in which they appear in STR. So in this case, in the second row of the output USR array, it searched forward from PRLC for the first occurrence of GEOP, and then only after it found that did it search for the next mnemonic in the string (i.e. TMDB), but only searching forward from GEOP rather than going all the way back to the previous occurrence of the pivot mnemonic PRLC and searching from there. And since it couldn't find any occurrence of TMDB between the location of GEOP within the second replication and the third occurrence of the pivot mnemonic PRLC which signaled the start of the third repliation, then TMDB and TMDP both ended up as "missing" in the second row of the returned USR array.

                                                        +
                                                        Similarly for the third replication, and starting from the third occurrence of the pivot mnemonic PRLC, it finds GEOP and then begins searching from there for TMDB, which it eventually finds, but not until after it has already stepped past TMDP. And since it can only move forward from the point where it found TMDB, then it never finds TMDP for the third replication before it encounters the fourth and final occurrence of the pivot mnemonic PRLC, which in turn is why TMDP is "missing" in the third row of the returned USR array. Finally, for the fourth replication, and starting from the fourth occurrence of the pivot mnemonic PRLC, it finds GEOP and then begins searching from there for TMDB, but by that point it has already stepped past TMDB, so it never finds that nor the subsequent TMDP mnemonic, and therefore both of those values are "missing" in the fourth row of USR as well.

                                                        +
                                                        Next, take a look at the definitions of the Table D sequence mnemonics TMPSQ3, WNDSQ2, and PCPSQ3; in particular, notice that, within these definitions, there are references to several mnemonics such as .DTHMITM and .DTHMXGS which were not previously-declared within the first section of the table. At first glance, this seems to contradict everything that we previously said about the need to initially declare all mnemonics within the first section; however, upon closer inspection, the reader will notice that there do exist, within the first section, declarations for mnemonics .DTH.... and .DTH..... So, what exactly is going on here? The answer is that each of these is a special mnemonic known as a following-value mnemonic, meaning that, when it is used within a sequence definition, it implies a special relationship with the mnemonic that immediately follows it within the sequence. In fact, this relationship is so special that, when a following-value mnemonic is used within a sequence definition, the .... portion of the mnemonic is replaced with the mnemonic that immediately follows it! For example, when .DTH.... is used within the definition of the Table D sequence mnemonic TMPSQ3, it appears as .DTHMXTM and .DTHMITM because it appears immediately before, respectively, the mnemonics MXTM and MITM. However, when it appears within the definition of PCPSQ3, it appears as .DTHTOPC since it immediately precedes TOPC within that sequence. To be precise, a following-value mnemonic is declared with a "." as the first character, followed by no more than 3 alphanumeric characters as an identifier, followed by 4 more "." characters which must then be replaced with the mnemonic that immediately follows it whenever and wherever it is used within a sequence definition. This is important, because the BUFRLIB software will actually check that the immediately-following mnemonic matches the last 4 characters of the following-value mnemonic and will diagnose an error if it does not.

                                                        +
                                                        In general, the "following-value" attribute is useful because it allows the same mnemonic to be used repeatedly within the same overall Table A data subset definition in a very intuitive fashion and yet, since each occurrence retains its own unique identification (e.g. .DTHMXTM, .DTHTOPC, etc.), then each one can still be individually accessed independent of the others via subroutine ufbint(). An alternative would be to declare a regular mnemonic such as DTHRFV instead of .DTH.... within the first section of the tables file and then use that mnemonic in all of the same places within the same Table A data subset definition, but then we'd have to use subroutine ufbrep() to access all such values simultaneously, even if we weren't interested in all of them. And we'd also lose the intuitiveness provided by having available, within the mnemonic itself, the name of the mnemonic to which the corresponding value applies.

                                                        +Section 3

                                                        +
                                                        The third section of a DX BUFR tables file is used to define the scale factor, reference value, data width, and units for all of the Table B mnemonics that were previously declared in the first section. The units definition for each Table B mnemonic determines how data values corresponding to that mnemonic are read/written from/to the REAL*8 array USR within BUFRLIB subroutines such as ufbint(), ufbrep() and ufbseq().

                                                        +
                                                        In looking again at our sample DX BUFR tables file, we see that the format for the third section of such a file is the usual "|" delimiter in columns 1, 12, 19, 33, 39, 66, and 80 of each line. These delimiters form the columns for the mnemonic (listed exactly as it was previously within the first section), the scale factor (right-justified from column 17), the reference value (right-justified from column 31), the bit width (right-justified from column 37), and the units (left-justified from column 41).

                                                        +
                                                        As with the previous two sections, blank separator lines may be employed in order to improve human-readability. It's recommended to list the mnemonics in the same order in which they were declared within the first section. Any mnemonic whose corresponding data values are to be treated as character data must have its units listed as "CCITT IA5", which is just a formal synonym for ASCII.

                                                        +Sample DX BUFR tables file

                                                        +
                                                        +.------------------------------------------------------------------------------.
                                                        +| ------------   USER DEFINITIONS FOR TABLE-A TABLE-B TABLE D   -------------- |
                                                        +|------------------------------------------------------------------------------|
                                                        +| MNEMONIC | NUMBER | DESCRIPTION                                              |
                                                        +|----------|--------|----------------------------------------------------------|
                                                        +|          |        |                                                          |
                                                        +| NC001003 | A63212 | MESSAGE TYPE 001-003  SURFACE MARINE FIXED BUOY          |
                                                        +|          |        |                                                          |
                                                        +| NC002001 | A63218 | MESSAGE TYPE 002-001  RAWINSONDE - FIXED LAND            |
                                                        +|          |        |                                                          |
                                                        +| NC002007 | A63223 | MESSAGE TYPE 002-007  WIND PROFILER                      |
                                                        +|          |        |                                                          |
                                                        +| TBLAEX1  | A58251 | TABLE A CONTRIVED EXAMPLE #1                             |
                                                        +| TBLAEX2  | A58252 | TABLE A CONTRIVED EXAMPLE #2                             |
                                                        +| TBLAEX3  | A58253 | TABLE A CONTRIVED EXAMPLE #3                             |
                                                        +| TBLAEX4  | A58254 | TABLE A CONTRIVED EXAMPLE #4                             |
                                                        +|          |        |                                                          |
                                                        +| PRGPTMDP | 303003 | GEOPOTENTIAL/TEMPERATURE/DEWPOINT AT PRESSURE LEVEL      |
                                                        +|          |        |                                                          |
                                                        +| RPSEC1   | 361036 | SYNOPTIC REPORT WMO FM 12/13 SECTION 1 DATA              |
                                                        +| TMPSQ1   | 361037 | SYNOPTIC REPORT TEMPERATURE DATA                         |
                                                        +| TMPSQ2   | 361038 | SYNOPTIC REPORT WET BULB TEMPERATURE DATA                |
                                                        +| TMPSQ3   | 361039 | SYNOPTIC REPORT MAXIMUM AND MINIMUM TEMPERATURE DATA     |
                                                        +| WNDSQ1   | 361042 | SYNOPTIC REPORT WIND DATA                                |
                                                        +| WNDSQ2   | 361043 | SYNOPTIC REPORT HIGHEST WIND GUST DATA                   |
                                                        +| WNDSQ3   | 361044 | SYNOPTIC REPORT PEAK WIND DATA                           |
                                                        +| PRSSQ1   | 361045 | SYNOPTIC REPORT PRESSURE DATA                            |
                                                        +| PCPSQ2   | 361049 | SYNOPTIC REPORT PRECIPITATION DATA 2                     |
                                                        +| PCPSQ3   | 361050 | SYNOPTIC REPORT PRECIPITATION DATA 3                     |
                                                        +| WAVSQ1   | 361051 | SYNOPTIC REPORT INSTRUMENT WAVE DATA                     |
                                                        +| WAVSQ2   | 361052 | SYNOPTIC REPORT WIND WAVE DATA                           |
                                                        +| WAVSQ3   | 361053 | SYNOPTIC REPORT SWELL WAVE DATA                          |
                                                        +| PPWSQ1   | 361054 | SYNOPTIC REPORT PRESENT AND PAST WEATHER DATA            |
                                                        +| MRPSC0   | 361076 | MARINE REPORT WMO FM 13 SECTION 0 DATA                   |
                                                        +| MRPIDS   | 361077 | MARINE REPORT IDS                                        |
                                                        +| ID1SQ    | 361078 | SHIP'S CALL SIGN SEQUENCE                                |
                                                        +| ID2SQ    | 361079 | NUMERIC BUOY PLATFORM ID                                 |
                                                        +| ID3SQ    | 361080 | CMAN / FIXED BUOY PLATFORM ID                            |
                                                        +| CTWNDS   | 361083 | CONTINUOUS WIND DATA                                     |
                                                        +| MPCPSQ   | 361085 | MARINE REPORT PRECIPITATION DATA                         |
                                                        +|          |        |                                                          |
                                                        +| UASID    | 361121 | RADIOSONDE STATION ID DATA                               |
                                                        +| UARID    | 361122 | RADIOSONDE REPORT ID DATA                                |
                                                        +| UARLV    | 361123 | RADIOSONDE REPORT LEVEL DATA                             |
                                                        +| UATMP    | 361125 | RADIOSONDE TEMPERATURE DATA                              |
                                                        +| UAWND    | 361126 | RADIOSONDE WIND DATA                                     |
                                                        +| UAWSH    | 361127 | RADIOSONDE WIND SHEAR DATA                               |
                                                        +| UACLD    | 361128 | RADIOSONDE CLOUD DATA                                    |
                                                        +| UASDG    | 361129 | RADIOSONDE SOUNDING SYSTEM DATA                          |
                                                        +| UAADF    | 361130 | RADIOSONDE 101AA "ADDITIONAL DATA" DATA                  |
                                                        +| UARDCS   | 361131 | RADIOSONDE REPORT DIAGNOSTIC DATA                        |
                                                        +| UARTM    | 361132 | RADIOSONDE REPORT TIME DATA                              |
                                                        +| UAGP07   | 361133 | RADIOSONDE CLASS 7 GEOPOTENTIAL DATA                     |
                                                        +| UAGP10   | 361134 | RADIOSONDE CLASS 10 GEOPOTENTIAL DATA                    |
                                                        +|          |        |                                                          |
                                                        +| OBSEQ    | 361161 | PROFILER OBSERVATION SEQUENCE                            |
                                                        +|          |        |                                                          |
                                                        +| BID      | 363001 | BULLETIN ID DATA                                         |
                                                        +| RAWRPT   | 363002 | RAW REPORT                                               |
                                                        +| RCPTIM   | 363003 | REPORT RECEIPT TIME DATA                                 |
                                                        +|          |        |                                                          |
                                                        +| WMOB     | 001001 | WMO BLOCK NUMBER                                         |
                                                        +| WMOS     | 001002 | WMO STATION NUMBER                                       |
                                                        +| WMOR     | 001003 | WMO REGION NUMBER                                        |
                                                        +| BPID     | 001005 | BUOY/PLATFORM IDENTIFIER                                 |
                                                        +| SBPI     | 001010 | STATIONARY BUOY PLATFORM ID                              |
                                                        +| ICLI     | 001063 | ICAO LOCATION IDENTIFIER                                 |
                                                        +| SHPC8    | 001166 | SHIP CALL SIGN (8 CHARACTERS)                            |
                                                        +| UAPART   | 001192 | RADIOSONDE PART NAME                                     |
                                                        +| BUHD     | 001194 | BULLETIN HEADER                                          |
                                                        +| RSML     | 001197 | RADIOSONDE SHIP, DROP, OR MOBIL STATION ID               |
                                                        +| RPID     | 001198 | REPORT IDENTIFIER                                        |
                                                        +|          |        |                                                          |
                                                        +| TOST     | 002001 | TYPE OF STATION                                          |
                                                        +| A4ME     | 002003 | TYPE OF MEASURING EQUIPMENT USED                         |
                                                        +| RATP     | 002011 | RADIOSONDE TYPE                                          |
                                                        +| SIRC     | 002013 | SOLAR AND INFRARED RADIATION CORRECTION                  |
                                                        +| TTSS     | 002014 | TRACKING TECHNIQUE/STATUS OF SYSTEM USED                 |
                                                        +| MSST     | 002038 | METHOD OF SEA SURFACE TEMPERATURE MEASUREMENT            |
                                                        +| MWBT     | 002039 | METHOD OF WET BULB TEMPERATURE MEASUREMENT               |
                                                        +| ITSO     | 002193 | IND TYPE OF STATION OPERATION PAST/PRESENT WEATHER       |
                                                        +| SEQNUM   | 002195 | LDM CHANNEL SEQUENCE NUMBER                              |
                                                        +|          |        |                                                          |
                                                        +| YEAR     | 004001 | YEAR                                                     |
                                                        +| MNTH     | 004002 | MONTH                                                    |
                                                        +| DAYS     | 004003 | DAY                                                      |
                                                        +| HOUR     | 004004 | HOUR                                                     |
                                                        +| MINU     | 004005 | MINUTE                                                   |
                                                        +| TPMI     | 004025 | TIME PERIOD OR DISPLACEMENT                              |
                                                        +| .DTH.... | 004031 | DURATION OF TIME IN HOURS RELATING TO FOLLOWING VALUE    |
                                                        +| .DTM.... | 004032 | DURATION OF TIME IN MINUTES RELATING TO FOLLOWING VALUE  |
                                                        +| RCYR     | 004200 | YEAR   - TIME OF RECEIPT                                 |
                                                        +| RCMO     | 004201 | MONTH  - TIME OF RECEIPT                                 |
                                                        +| RCDY     | 004202 | DAY    - TIME OF RECEIPT                                 |
                                                        +| RCHR     | 004203 | HOUR   - TIME OF RECEIPT                                 |
                                                        +| RCMI     | 004204 | MINUTE - TIME OF RECEIPT                                 |
                                                        +| UALNHR   | 004210 | RADIOSONDE LAUNCH HOUR                                   |
                                                        +| UALNMN   | 004211 | RADIOSONDE LAUNCH MINUTE                                 |
                                                        +|          |        |                                                          |
                                                        +| CLAT     | 005002 | LATITUDE (COARSE ACCURACY)                               |
                                                        +|          |        |                                                          |
                                                        +| CLON     | 006002 | LONGITUDE (COARSE ACCURACY)                              |
                                                        +|          |        |                                                          |
                                                        +| SELV     | 007001 | HEIGHT OF STATION                                        |
                                                        +| PRLC     | 007004 | PRESSURE                                                 |
                                                        +| HINC     | 007005 | HEIGHT INCREMENT                                         |
                                                        +| HEIT     | 007007 | HEIGHT                                                   |
                                                        +| GP07     | 007008 | GEOPOTENTIAL                                             |
                                                        +| XMPRLC   | 007195 | EXTRAPOLATED MANDATORY LEVEL PRESSURE                    |
                                                        +|          |        |                                                          |
                                                        +| VSIG     | 008001 | VERTICAL SOUNDING SIGNIFICANCE                           |
                                                        +| TSIG     | 008021 | TIME SIGNIFICANCE                                        |
                                                        +| ACAV     | 008022 | TOTAL NUMBER (WITH RESPECT TO ACCUMULATION OR AVERAGE)   |
                                                        +| SUWS     | 008199 | SOURCE UNITS OF WIND SPEED                               |
                                                        +| RCTS     | 008202 | RECEIPT TIME SIGNIFICANCE                                |
                                                        +|          |        |                                                          |
                                                        +| GEOP     | 010003 | GEOPOTENTIAL                                             |
                                                        +| PRES     | 010004 | PRESSURE                                                 |
                                                        +| GP10     | 010008 | GEOPOTENTIAL                                             |
                                                        +| PMSL     | 010051 | PRESSURE REDUCED TO MSL                                  |
                                                        +| 3HPC     | 010061 | 3 HOUR PRESSURE CHANGE                                   |
                                                        +| CHPT     | 010063 | CHARACTERISTIC OF PRESSURE TENDENCY                      |
                                                        +| XMGP10   | 010196 | EXTRAPOLATED MANDATORY LEVEL GEOPOTENTIAL                |
                                                        +|          |        |                                                          |
                                                        +| WDIR     | 011001 | WIND DIRECTION                                           |
                                                        +| WSPD     | 011002 | WIND SPEED                                               |
                                                        +| UCMP     | 011003 | U-COMPONENT                                              |
                                                        +| VCMP     | 011004 | V-COMPONENT                                              |
                                                        +| WCMP     | 011006 | W-COMPONENT                                              |
                                                        +| MXGS     | 011041 | MAXIMUM WIND SPEED (GUSTS)                               |
                                                        +| MWDL     | 011044 | MEAN WIND DIRECTION FOR SURFACE-1500M LAYER              |
                                                        +| MWSL     | 011045 | MEAN WIND SPEED FOR SURFACE-1500M LAYER                  |
                                                        +| SDHS     | 011050 | STANDARD DEVIATION OF HORIZONTAL WIND SPEED              |
                                                        +| SDVS     | 011051 | STANDARD DEVIATION OF VERTICAL WIND SPEED                |
                                                        +| AWSB     | 011061 | ABSOLUTE WIND SHEAR IN 1 KM LAYER BELOW                  |
                                                        +| AWSA     | 011062 | ABSOLUTE WIND SHEAR IN 1 KM LAYER ABOVE                  |
                                                        +| PKWDDR   | 011202 | PEAK WIND DIRECTION                                      |
                                                        +| PKWDSP   | 011203 | PEAK WIND SPEED                                          |
                                                        +| XS10     | 011223 | 10 METER EXTRAPOLATED WIND SPEED                         |
                                                        +| XS20     | 011224 | 20 METER EXTRAPOLATED WIND SPEED                         |
                                                        +| MWDH     | 011221 | MEAN WIND DIRECTION FOR 1500M-3000M LAYER                |
                                                        +| MWSH     | 011222 | MEAN WIND SPEED FOR 1500M-3000M LAYER                    |
                                                        +| WDRC     | 011227 | CONTINUOUS WIND DIRECTION IN DEGREES                     |
                                                        +| WDSC     | 011228 | CONTINUOUS WIND SPEED IN M/SEC                           |
                                                        +|          |        |                                                          |
                                                        +| TMDBST   | 012001 | TEMPERATURE/DRY BULB TEMPERATURE (SCALE 1)               |
                                                        +| TMDB     | 012101 | TEMPERATURE/DRY BULB TEMPERATURE                         |
                                                        +| TMWB     | 012102 | WET BULB TEMPERATURE                                     |
                                                        +| TMDP     | 012103 | DEW POINT TEMPERATURE                                    |
                                                        +| MXTM     | 012228 | MAXIMUM TEMPERATURE                                      |
                                                        +| MITM     | 012229 | MINIMUM TEMPERATURE                                      |
                                                        +|          |        |                                                          |
                                                        +| REHU     | 013003 | RELATIVE HUMIDITY                                        |
                                                        +| TOPC     | 013011 | TOTAL PRECIPITATION/TOTAL WATER EQUIVALENT               |
                                                        +| REQV     | 013014 | RAINFALL/WATER EQUIVALENT OF SNOW (AVERAGE RATE)         |
                                                        +| TP01     | 013019 | TOTAL PRECIPITATION PAST 1 HOUR                          |
                                                        +| TP03     | 013020 | TOTAL PRECIPITATION PAST 3 HOURS                         |
                                                        +| TP06     | 013021 | TOTAL PRECIPITATION PAST 6 HOURS                         |
                                                        +| TP12     | 013022 | TOTAL PRECIPITATION PAST 12 HOURS                        |
                                                        +| TP24     | 013023 | TOTAL PRECIPITATION PAST 24 HOURS                        |
                                                        +| INPC     | 013194 | INDIC INCLUSION/OMISSION OF PREC                         |
                                                        +| STBS5    | 013195 | MODIFIED SHOWALTER STABILITY INDEX                       |
                                                        +|          |        |                                                          |
                                                        +| HOVI     | 020001 | HORIZONTAL VISIBILITY                                    |
                                                        +| PRWE     | 020003 | PRESENT WEATHER                                          |
                                                        +| PSW1     | 020004 | PAST WEATHER (1)                                         |
                                                        +| PSW2     | 020005 | PAST WEATHER (2)                                         |
                                                        +| CLAM     | 020011 | CLOUD AMOUNT                                             |
                                                        +| CLTP     | 020012 | CLOUD TYPE                                               |
                                                        +| HOCB     | 020013 | HEIGHT OF BASE OF CLOUD                                  |
                                                        +|          |        |                                                          |
                                                        +| SPP01    | 021193 | SPECTRAL PEAK POWER 0TH MOMENT                           |
                                                        +|          |        |                                                          |
                                                        +| DOSW     | 022003 | DIRECTION OF SWELL WAVES                                 |
                                                        +| POWV     | 022011 | PERIOD OF WAVES                                          |
                                                        +| POWW     | 022012 | PERIOD OF WIND WAVES                                     |
                                                        +| POSW     | 022013 | PERIOD OF SWELL WAVES                                    |
                                                        +| HOWV     | 022021 | HEIGHT OF WAVES                                          |
                                                        +| HOWW     | 022022 | HEIGHT OF WIND WAVES                                     |
                                                        +| HOSW     | 022023 | HEIGHT OF SWELL WAVES                                    |
                                                        +| SST1     | 022043 | SEA TEMPERATURE                                          |
                                                        +|          |        |                                                          |
                                                        +| NPHL     | 025032 | WIND PROFILER MODE INFORMATION                           |
                                                        +| NPSM     | 025033 | WIND PROFILER SUBMODE INFORMATION                        |
                                                        +| NPQC     | 025034 | WIND PROFILER QUALITY CONTROL TEST RESULTS               |
                                                        +|          |        |                                                          |
                                                        +| QCEVR    | 033024 | STATION ELEVATION QUALITY MARK (FOR MOBIL STATIONS)      |
                                                        +| QMGP     | 033192 | ON29 QUALITY MARK FOR GEOPOTENTIAL                       |
                                                        +| QMAT     | 033193 | ON29 QUALITY MARK FOR TEMPERATURE                        |
                                                        +| QMDD     | 033194 | ON29 QUALITY MARK FOR DEWPOINT DEPRESSION                |
                                                        +| QMWN     | 033195 | ON29 QUALITY MARK FOR WIND                               |
                                                        +| QMCA     | 033197 | ON29 QUALITY MARK FOR CLOUD AMOUNT                       |
                                                        +| UARDC    | 033202 | RADIOSONDE REPORT DIAGNOSTIC CODE                        |
                                                        +| QMPR     | 033207 | ON29 QUALITY MARK FOR PRESSURE                           |
                                                        +| CORN     | 033215 | CORRECTED REPORT INDICATOR                               |
                                                        +| QMST     | 033218 | ON29 QUALITY MARK FOR SEA SURFACE TEMPERATURE            |
                                                        +|          |        |                                                          |
                                                        +| BULTIM   | 058006 | BULLETIN TIME (DDHHMM)                                   |
                                                        +| BBB      | 058007 | WMO BBB INDICATOR                                        |
                                                        +| RRSTG    | 058008 | RAW REPORT STRING                                        |
                                                        +|          |        |                                                          |
                                                        +|------------------------------------------------------------------------------|
                                                        +| MNEMONIC | SEQUENCE                                                          |
                                                        +|----------|-------------------------------------------------------------------|
                                                        +|          |                                                                   |
                                                        +| NC001003 | MRPSC0  BID    {RCPTIM} RPSEC1  WNDSQ1  XS10    XS20     TMPSQ1   |
                                                        +| NC001003 | PRSSQ1  MPCPSQ                                                    |
                                                        +| NC001003 | <PPWSQ1>   <WAVSQ1>   <WAVSQ2>  {WAVSQ3}    WNDSQ3   {CTWNDS}     |
                                                        +| NC001003 | {RAWRPT}                                                          |
                                                        +|          |                                                                   |
                                                        +| NC002001 | UARTM  {RCPTIM}  {BID}  UASID  {UARID}                            |
                                                        +| NC002001 | {UARLV}  <UASDG>  {UARDCS}  {RAWRPT}                              |
                                                        +| NC002001 | {UACLD}  <UAADF>                                                  |
                                                        +| NC002001 | WMOB  WMOS  WMOR                                                  |
                                                        +|          |                                                                   |
                                                        +| NC002007 | WMOB     WMOS     CLAT     CLON     SELV     YEAR     MNTH        |
                                                        +| NC002007 | DAYS     HOUR     MINU     TSIG     TPMI     WSPD     WDIR        |
                                                        +| NC002007 | PMSL     TMDBST   REQV     REHU                                   |
                                                        +| NC002007 | 201127   HINC     201000   NPSM                                   |
                                                        +| NC002007 | 201132   HINC     201000   "OBSEQ"36                              |
                                                        +| NC002007 | 201132   HINC     201000   "OBSEQ"7                               |
                                                        +|          |                                                                   |
                                                        +| TBLAEX1  | UASID  UARTM  {PRGPTMDP}                                          |
                                                        +|          |                                                                   |
                                                        +| TBLAEX2  | UASID  UARTM  "PRGPTMDP"100                                       |
                                                        +|          |                                                                   |
                                                        +| TBLAEX3  | UASID  UARTM  {PRGPTMDP}  PRLC  UACLD  PRLC  HOVI                 |
                                                        +|          |                                                                   |
                                                        +| TBLAEX4  | UASID  UARTM                                                      |
                                                        +| TBLAEX4  | PRLC  UACLD GEOP  TMDB  HOVI TMDP                                 |
                                                        +| TBLAEX4  | PRLC  UACLD TMDB  TMDP  HOVI GEOP                                 |
                                                        +| TBLAEX4  | PRLC  UACLD GEOP  TMDP  HOVI TMDB                                 |
                                                        +| TBLAEX4  | PRLC  UACLD TMDB  GEOP  HOVI TMDP                                 |
                                                        +|          |                                                                   |
                                                        +| PRGPTMDP | PRLC  GEOP  TMDB  TMDP                                            |
                                                        +|          |                                                                   |
                                                        +| RPSEC1   | ITSO    TOST    INPC    HOVI                                      |
                                                        +|          |                                                                   |
                                                        +| TMPSQ1   | QMAT    TMDB    QMDD    TMDP    MSST   QMST  SST1                 |
                                                        +| TMPSQ1   | <TMPSQ2>   <TMPSQ3>                                               |
                                                        +|          |                                                                   |
                                                        +| TMPSQ2   | MWBT    TMWB    REHU                                              |
                                                        +|          |                                                                   |
                                                        +| TMPSQ3   | .DTHMXTM   MXTM   .DTHMITM   MITM                                 |
                                                        +|          |                                                                   |
                                                        +| WNDSQ1   | SUWS    QMWN    WDIR    WSPD    <WNDSQ2>                          |
                                                        +|          |                                                                   |
                                                        +| WNDSQ2   | .DTMMXGS  MXGS                                                    |
                                                        +|          |                                                                   |
                                                        +| WNDSQ3   | YEAR    MNTH    DAYS    HOUR    MINU    PKWDDR    PKWDSP          |
                                                        +|          |                                                                   |
                                                        +| WAVSQ1   | POWV    HOWV                                                      |
                                                        +|          |                                                                   |
                                                        +| WAVSQ2   | POWW    HOWW                                                      |
                                                        +|          |                                                                   |
                                                        +| WAVSQ3   | DOSW    POSW    HOSW                                              |
                                                        +|          |                                                                   |
                                                        +| PRSSQ1   | QMPR  PRES  PMSL  CHPT  3HPC                                      |
                                                        +|          |                                                                   |
                                                        +| PCPSQ2   | TP01    TP03    TP12    TP24                                      |
                                                        +|          |                                                                   |
                                                        +| PCPSQ3   | .DTHTOPC   TOPC                                                   |
                                                        +|          |                                                                   |
                                                        +| PPWSQ1   | PRWE    PSW1    PSW2                                              |
                                                        +|          |                                                                   |
                                                        +| MRPSC0   | YEAR    MNTH    DAYS    HOUR    MINU    RPID   MRPIDS CLON        |
                                                        +| MRPSC0   | CLAT    SELV    CORN                                              |
                                                        +|          |                                                                   |
                                                        +| MRPIDS   | <ID1SQ> <ID2SQ> <ID3SQ>                                           |
                                                        +|          |                                                                   |
                                                        +| ID1SQ    | SHPC8                                                             |
                                                        +|          |                                                                   |
                                                        +| ID2SQ    | BPID                                                              |
                                                        +|          |                                                                   |
                                                        +| ID3SQ    | SBPI                                                              |
                                                        +|          |                                                                   |
                                                        +| CTWNDS   | TPMI    WDRC    WDSC                                              |
                                                        +|          |                                                                   |
                                                        +| MPCPSQ   | TP06    <PCPSQ2>   <PCPSQ3>                                       |
                                                        +|          |                                                                   |
                                                        +| BID      | SEQNUM  BUHD  ICLI  BULTIM  BBB                                   |
                                                        +|          |                                                                   |
                                                        +| RAWRPT   | RRSTG                                                             |
                                                        +|          |                                                                   |
                                                        +| RCPTIM   | RCTS  RCYR  RCMO  RCDY  RCHR  RCMI                                |
                                                        +|          |                                                                   |
                                                        +| UASID    | RPID  CLAT  CLON  SELV                                            |
                                                        +|          |                                                                   |
                                                        +| UARID    | RATP  A4ME  CORN  UAPART                                          |
                                                        +|          |                                                                   |
                                                        +| UARTM    | YEAR  MNTH  DAYS  HOUR                                            |
                                                        +|          |                                                                   |
                                                        +| UARLV    | VSIG  QMPR  PRLC  QMGP  <UAGP07>  <UAGP10>                        |
                                                        +| UARLV    | <UATMP>  <UAWND>  <UAWSH>                                         |
                                                        +|          |                                                                   |
                                                        +| UAGP07   | GP07                                                              |
                                                        +|          |                                                                   |
                                                        +| UAGP10   | GP10                                                              |
                                                        +|          |                                                                   |
                                                        +| UATMP    | QMAT  TMDB  QMDD  TMDP                                            |
                                                        +|          |                                                                   |
                                                        +| UAWND    | QMWN  WDIR  WSPD                                                  |
                                                        +|          |                                                                   |
                                                        +| UAWSH    | AWSB  AWSA                                                        |
                                                        +|          |                                                                   |
                                                        +| UACLD    | CLTP  QMCA  CLAM  HOCB                                            |
                                                        +|          |                                                                   |
                                                        +| UASDG    | QMST  SST1  SIRC  TTSS  UALNHR  UALNMN                            |
                                                        +|          |                                                                   |
                                                        +| UAADF    | MWDL  MWSL  MWDH  MWSH  STBS5  XMPRLC  XMGP10                     |
                                                        +|          |                                                                   |
                                                        +| UARDCS   | UARDC                                                             |
                                                        +|          |                                                                   |
                                                        +| OBSEQ    | NPHL     NPQC                                                     |
                                                        +| OBSEQ    | 201116   ACAV   201000   UCMP    VCMP   201127   SDHS  201000     |
                                                        +| OBSEQ    | 201116   ACAV   201000   SPP01   WCMP   SDVS                      |
                                                        +|          |                                                                   |
                                                        +|------------------------------------------------------------------------------|
                                                        +| MNEMONIC | SCAL | REFERENCE   | BIT | UNITS                    |-------------|
                                                        +|----------|------|-------------|-----|--------------------------|-------------|
                                                        +|          |      |             |     |                          |-------------|
                                                        +| WMOB     |    0 |           0 |   7 | NUMERIC                  |-------------|
                                                        +| WMOS     |    0 |           0 |  10 | NUMERIC                  |-------------|
                                                        +| WMOR     |    0 |           0 |   3 | CODE TABLE               |-------------|
                                                        +| BPID     |    0 |           0 |  17 | NUMERIC                  |-------------|
                                                        +| SBPI     |    0 |           0 |  64 | CCITT IA5                |-------------|
                                                        +| ICLI     |    0 |           0 |  64 | CCITT IA5                |-------------|
                                                        +| SHPC8    |    0 |           0 |  64 | CCITT IA5                |-------------|
                                                        +| UAPART   |    0 |           0 |  32 | CCITT IA5                |-------------|
                                                        +| BUHD     |    0 |           0 |  64 | CCITT IA5                |-------------|
                                                        +| RSML     |    0 |           0 |  64 | CCITT IA5                |-------------|
                                                        +| RPID     |    0 |           0 |  64 | CCITT IA5                |-------------|
                                                        +|          |      |             |     |                          |-------------|
                                                        +| TOST     |    0 |           0 |   2 | CODE TABLE               |-------------|
                                                        +| A4ME     |    0 |           0 |   4 | CODE TABLE               |-------------|
                                                        +| RATP     |    0 |           0 |   8 | CODE TABLE               |-------------|
                                                        +| SIRC     |    0 |           0 |   4 | CODE TABLE               |-------------|
                                                        +| TTSS     |    0 |           0 |   7 | CODE TABLE               |-------------|
                                                        +| MSST     |    0 |           0 |   3 | CODE TABLE               |-------------|
                                                        +| MWBT     |    0 |           0 |   3 | CODE TABLE               |-------------|
                                                        +| ITSO     |    0 |           0 |   3 | CODE TABLE               |-------------|
                                                        +| SEQNUM   |    0 |           0 |  32 | CCITT IA5                |-------------|
                                                        +|          |      |             |     |                          |-------------|
                                                        +| YEAR     |    0 |           0 |  12 | YEAR                     |-------------|
                                                        +| MNTH     |    0 |           0 |   4 | MONTH                    |-------------|
                                                        +| DAYS     |    0 |           0 |   6 | DAY                      |-------------|
                                                        +| HOUR     |    0 |           0 |   5 | HOUR                     |-------------|
                                                        +| MINU     |    0 |           0 |   6 | MINUTE                   |-------------|
                                                        +| TPMI     |    0 |       -2048 |  12 | MINUTES                  |-------------|
                                                        +| .DTH.... |    0 |           0 |   8 | HOURS                    |-------------|
                                                        +| .DTM.... |    0 |           0 |   6 | MINUTES                  |-------------|
                                                        +| RCYR     |    0 |           0 |  12 | YEAR                     |-------------|
                                                        +| RCMO     |    0 |           0 |   4 | MONTH                    |-------------|
                                                        +| RCDY     |    0 |           0 |   6 | DAY                      |-------------|
                                                        +| RCHR     |    0 |           0 |   5 | HOUR                     |-------------|
                                                        +| RCMI     |    0 |           0 |   6 | MINUTE                   |-------------|
                                                        +| UALNHR   |    0 |           0 |   5 | HOUR                     |-------------|
                                                        +| UALNMN   |    0 |           0 |   6 | MINUTE                   |-------------|
                                                        +|          |      |             |     |                          |-------------|
                                                        +| CLAT     |    2 |       -9000 |  15 | DEGREES                  |-------------|
                                                        +|          |      |             |     |                          |-------------|
                                                        +| CLON     |    2 |      -18000 |  16 | DEGREES                  |-------------|
                                                        +|          |      |             |     |                          |-------------|
                                                        +| SELV     |    0 |        -400 |  15 | METERS                   |-------------|
                                                        +| PRLC     |   -1 |           0 |  14 | PASCALS                  |-------------|
                                                        +| HEIT     |    0 |       -1000 |  17 | METERS                   |-------------|
                                                        +| GP07     |    0 |      -10000 |  20 | (METERS/SECOND)**2       |-------------|
                                                        +| HINC     |    0 |        -400 |  12 | METERS                   |-------------|
                                                        +| XMPRLC   |   -1 |           0 |  14 | PASCALS                  |-------------|
                                                        +|          |      |             |     |                          |-------------|
                                                        +| VSIG     |    0 |           0 |   7 | FLAG TABLE               |-------------|
                                                        +| TSIG     |    0 |           0 |   5 | CODE TABLE               |-------------|
                                                        +| SUWS     |    0 |           0 |   3 | CODE TABLE               |-------------|
                                                        +| RCTS     |    0 |           0 |   6 | CODE TABLE               |-------------|
                                                        +| ACAV     |    0 |           0 |  16 | NUMERIC                  |-------------|
                                                        +|          |      |             |     |                          |-------------|
                                                        +| GEOP     |   -1 |        -400 |  17 | (METERS/SECOND)**2       |-------------|
                                                        +| PRES     |   -1 |           0 |  14 | PASCALS                  |-------------|
                                                        +| GP10     |    0 |      -10000 |  20 | (METERS/SECOND)**2       |-------------|
                                                        +| PMSL     |   -1 |           0 |  14 | PASCALS                  |-------------|
                                                        +| CHPT     |    0 |           0 |   4 | CODE TABLE               |-------------|
                                                        +| 3HPC     |   -1 |        -500 |  10 | PASCALS                  |-------------|
                                                        +| XMGP10   |    0 |      -10000 |  20 | (METERS/SECOND)**2       |-------------|
                                                        +|          |      |             |     |                          |-------------|
                                                        +| WDIR     |    0 |           0 |   9 | DEGREES TRUE             |-------------|
                                                        +| WSPD     |    1 |           0 |  12 | METERS/SECOND            |-------------|
                                                        +| UCMP     |    1 |       -4096 |  13 | METERS/SECOND            |-------------|
                                                        +| VCMP     |    1 |       -4096 |  13 | METERS/SECOND            |-------------|
                                                        +| WCMP     |    2 |       -4096 |  13 | METERS/SECOND            |-------------|
                                                        +| MXGS     |    1 |           0 |  12 | METERS/SECOND            |-------------|
                                                        +| MWDL     |    0 |           0 |   9 | DEGREES TRUE             |-------------|
                                                        +| MWSL     |    1 |           0 |  12 | METERS/SECOND            |-------------|
                                                        +| SDHS     |    1 |           0 |  12 | METERS/SECOND            |-------------|
                                                        +| SDVS     |    1 |           0 |   8 | METERS/SECOND            |-------------|
                                                        +| AWSB     |    1 |           0 |  12 | METERS/SECOND            |-------------|
                                                        +| AWSA     |    1 |           0 |  12 | METERS/SECOND            |-------------|
                                                        +| PKWDDR   |    0 |           0 |   9 | DEGREES TRUE             |-------------|
                                                        +| PKWDSP   |    1 |           0 |  12 | METERS/SECOND            |-------------|
                                                        +| XS10     |    1 |           0 |  12 | METERS/SECOND            |-------------|
                                                        +| XS20     |    1 |           0 |  12 | METERS/SECOND            |-------------|
                                                        +| MWDH     |    0 |           0 |   9 | DEGREES TRUE             |-------------|
                                                        +| MWSH     |    1 |           0 |  12 | METERS/SECOND            |-------------|
                                                        +| WDRC     |    0 |           0 |   9 | DEGREES TRUE             |-------------|
                                                        +| WDSC     |    1 |           0 |  12 | METERS/SECOND            |-------------|
                                                        +|          |      |             |     |                          |-------------|
                                                        +| TMDBST   |    1 |           0 |  12 | DEGREES KELVIN           |-------------|
                                                        +| TMDB     |    2 |           0 |  16 | DEGREES KELVIN           |-------------|
                                                        +| TMWB     |    2 |           0 |  16 | DEGREES KELVIN           |-------------|
                                                        +| TMDP     |    2 |           0 |  16 | DEGREES KELVIN           |-------------|
                                                        +| MXTM     |    2 |           0 |  16 | DEGREES KELVIN           |-------------|
                                                        +| MITM     |    2 |           0 |  16 | DEGREES KELVIN           |-------------|
                                                        +|          |      |             |     |                          |-------------|
                                                        +| REHU     |    0 |           0 |   7 | %                        |-------------|
                                                        +| TOPC     |    1 |          -1 |  14 | KG/METER**2              |-------------|
                                                        +| REQV     |    4 |           0 |  12 | KG/((METERS**2)*SECONDS) |-------------|
                                                        +| TP01     |    1 |          -1 |  14 | KG/METER**2              |-------------|
                                                        +| TP03     |    1 |          -1 |  14 | KG/METER**2              |-------------|
                                                        +| TP06     |    1 |          -1 |  14 | KG/METER**2              |-------------|
                                                        +| TP12     |    1 |          -1 |  14 | KG/METER**2              |-------------|
                                                        +| TP24     |    1 |          -1 |  14 | KG/METER**2              |-------------|
                                                        +| INPC     |    0 |           0 |   3 | CODE TABLE               |-------------|
                                                        +| STBS5    |    0 |         -40 |   8 | NUMERIC                  |-------------|
                                                        +|          |      |             |     |                          |-------------|
                                                        +| HOVI     |   -1 |           0 |  13 | METERS                   |-------------|
                                                        +| PRWE     |    0 |           0 |   9 | CODE TABLE               |-------------|
                                                        +| PSW1     |    0 |           0 |   5 | CODE TABLE               |-------------|
                                                        +| PSW2     |    0 |           0 |   5 | CODE TABLE               |-------------|
                                                        +| CLAM     |    0 |           0 |   4 | CODE TABLE               |-------------|
                                                        +| CLTP     |    0 |           0 |   6 | CODE TABLE               |-------------|
                                                        +| HOCB     |   -1 |         -40 |  11 | METERS                   |-------------|
                                                        +|          |      |             |     |                          |-------------|
                                                        +| SPP01    |    0 |           0 |   8 | DB                       |-------------|
                                                        +|          |      |             |     |                          |-------------|
                                                        +| DOSW     |    0 |           0 |   9 | DEGREES TRUE             |-------------|
                                                        +| POWV     |    0 |           0 |   6 | SECONDS                  |-------------|
                                                        +| POWW     |    0 |           0 |   6 | SECONDS                  |-------------|
                                                        +| POSW     |    0 |           0 |   6 | SECONDS                  |-------------|
                                                        +| HOWV     |    1 |           0 |  10 | METERS                   |-------------|
                                                        +| HOWW     |    1 |           0 |  10 | METERS                   |-------------|
                                                        +| HOSW     |    1 |           0 |  10 | METERS                   |-------------|
                                                        +| SST1     |    2 |           0 |  15 | DEGREES KELVIN           |-------------|
                                                        +|          |      |             |     |                          |-------------|
                                                        +| NPHL     |    0 |           0 |   2 | CODE TABLE               |-------------|
                                                        +| NPSM     |    0 |           0 |   2 | CODE TABLE               |-------------|
                                                        +| NPQC     |    0 |           0 |   4 | FLAG TABLE               |-------------|
                                                        +|          |      |             |     |                          |-------------|
                                                        +| QCEVR    |    0 |           0 |   4 | CODE TABLE               |-------------|
                                                        +| QMGP     |    0 |           0 |   4 | CODE TABLE               |-------------|
                                                        +| QMAT     |    0 |           0 |   4 | CODE TABLE               |-------------|
                                                        +| QMDD     |    0 |           0 |   4 | CODE TABLE               |-------------|
                                                        +| QMWN     |    0 |           0 |   4 | CODE TABLE               |-------------|
                                                        +| QMCA     |    0 |           0 |   1 | CODE TABLE               |-------------|
                                                        +| UARDC    |    0 |           0 |   8 | CODE TABLE               |-------------|
                                                        +| QMPR     |    0 |           0 |   4 | CODE TABLE               |-------------|
                                                        +| CORN     |    0 |           0 |   3 | CODE TABLE               |-------------|
                                                        +| QMST     |    0 |           0 |   4 | CODE TABLE               |-------------|
                                                        +|          |      |             |     |                          |-------------|
                                                        +| BULTIM   |    0 |           0 |  64 | CCITT IA5                |-------------|
                                                        +| BBB      |    0 |           0 |  64 | CCITT IA5                |-------------|
                                                        +| RRSTG    |    0 |           0 |  64 | CCITT IA5                |-------------|
                                                        +|          |      |             |     |                          |-------------|
                                                        +`------------------------------------------------------------------------------'
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_master_tables.html b/previous_versions/v12.1.0/md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_master_tables.html new file mode 100644 index 000000000..a00fff1d6 --- /dev/null +++ b/previous_versions/v12.1.0/md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_master_tables.html @@ -0,0 +1,420 @@ + + + + + + + +NCEPLIBS-bufr: Master BUFR Tables + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        +
                                                        Master BUFR Tables
                                                        +
                                                        +
                                                        +

                                                        Description and format of master BUFR tables for use with the library.
                                                        +

                                                        +

                                                        This document describes the format and concept of master BUFR tables. These are required by the NCEPLIBS-bufr software whenever the IO='SEC3' option is specified during a call to subroutine openbf() for the reading/decoding of a file of BUFR messages. Otherwise, if a different value of IO is specified, then only a DX BUFR tables file is normally required, and master BUFR tables are not needed.

                                                        +

                                                        Whenever master BUFR tables are used, they are read in by the BUFRLIB software as a corresponding set of four system files, from a directory on the local filesystem as specified within a separate preceding call to subroutine mtinfo() :

                                                        +
                                                          +
                                                        • Standard Table B - an ordered listing of all descriptors corresponding to an official release (i.e. version number) of the standard, international BUFR Table B
                                                        • +
                                                        • Local Table B - an ordered listing of all local Table B descriptors supplementing the standard BUFR Table B, as defined for use within a particular local originating center
                                                        • +
                                                        • Standard Table D - an ordered listing of all descriptors corresponding to an official release (i.e. version number) of the standard, international BUFR Table D
                                                        • +
                                                        • Local Table D - an ordered listing of all local Table D descriptors supplementing the standard BUFR Table D, as defined for use within a particular local originating center
                                                        • +
                                                        +

                                                        Actual filenames use the following convention:

                                                        +
                                                        +Standard tables:     bufrtab.Table.X_STD_M_V
                                                        +Local tables:        bufrtab.Table.X_LOC_M_C_L
                                                        +
                                                        +        where:       X = Table type ('B' or 'D')
                                                        +                     M = Master Table number ('0' for WMO, '10' for IOC, etc.)
                                                        +                     V = Version number of Master Table used
                                                        +                     C = Originating Center number ('7' for NCEP, etc.)
                                                        +                     L = Version number of local tables used
                                                        +

                                                        Whenever any of the message-reading subroutines are used to read a new BUFR message from a Fortran logical unit that was previously opened using subroutine openbf() with IO='SEC3', the identification section (Section 1) of the message is automatically scanned to determine the above values for that message. The BUFRLIB software then automatically generates the four necessary filenames using those values and attempts to open and read each of those files from within the directory that was specified as CMTDIR during the previous call to subroutine mtinfo(). This table information is then retained and re-used in memory until a subsequent message is read which has a different value for any one of the above values, and at which point a new set of tables is then read in from the same directory in order to be applied to the new message. With this approach, the user can have multiple master table files stored within the same directory, and the BUFRLIB software will always locate and read the appropriate files depending on the corresponding values stored within Section 1 of each new message to be decoded. For more details about the above values, see the discussion on Section 1 within the official WMO Manual 306, Volume I.2.

                                                        +

                                                        Now that we've discussed the content and naming conventions for master BUFR table files, let's turn our attention to the actual format of these files:

                                                        +

                                                        +Table B

                                                        +
                                                        As described above, two master Table B files (one standard and one local) are required for each BUFR message that is to be read and decoded. The BUFRLIB software will scan the identification section (Section 1) of each new message and then open and read the appropriate Table B files from within the directory specified by CMTDIR during the previous call to subroutine mtinfo(). In particular, a standard Table B file must be available corresponding to the version number of each BUFR message to be decoded, and the filename must follow the naming convention described above. In addition, if there are any local descriptors contained within the messages, then a local Table B file must also be available corresponding to the originating center and local version numbers encoded within Section 1 of those messages. Otherwise, if the messages to be decoded contain only standard descriptors (which is normally the case for data exchanged between operational centers), then the default local Table B file from NCEP (originating center 7) can be used as a placeholder since the software will not need to actually read any information from this table. In this way, users are relieved from having to provide a local Table B file for every originating center whose messages they wish to decode, and such a table only becomes necessary when the messages themselves actually contain one or more local descriptors defined by that particular originating center.

                                                        +
                                                        Here now is the format for each master Table B:

                                                        +
                                                        The first line of the file is as follows, where the symbols correspond to those used in the file naming convention described above. In this way, the software can perform internal consistency checks where needed. Note that the separator for each field is a "|" character, but otherwise the free use of white space is allowed within each field:
                                                        +Standard table:     Table B STD | M | V
                                                        +Local table:        Table B LOC | M | C | L
                                                        +
                                                        +       where:       M = Master Table number ('0' for WMO, '10' for IOC, etc.)
                                                        +                    V = Version number of Master Table used
                                                        +                    C = Originating Center number ('7' for NCEP, etc.)
                                                        +                    L = Version number of local tables used
                                                        +
                                                        Following this first header line, the remainder of the file contains a listing of all possible Table B descriptors corresponding to the specified version number of the table, ordered in ascending order with respect to the FXY number as shown below. Blank lines as well as comments (i.e. any line beginning with the character "#") are permitted throughout the file and will be ignored by the software, up until a line is reached which contains the string "END" in the first three characters, and which is a signal to the software to stop looking for any new Table B descriptor definitions in the table. Each definition line has the following format, where the "|" and ";" characters are required separators as shown, but otherwise the additional use of white space is allowed within each field.
                                                        + F-XX-YYY | SCALE | REFERENCE | BITS | UNITS  | MNEMONIC ; CODES ; ELEMENT NAME
                                                        +
                                                        The CODES field can be used for any annotations the user may wish to add for a particular definition line, or it can be left blank. All other fields should be self-explanatory based on earlier discussions and should contain a value. Here are some examples:
                                                        +  0-01-018 |   0 |  0 |  40 | CCITT IA5   | SSTN    ; ; Short station or site name
                                                        +  0-01-041 |   5 | -1073741824 |  31 | m/s | PS00   ;  ; Absolute platform velocity - first component
                                                        +  0-05-002 |   2 |       -9000 |  15 | Degree(N+,S-)  | CLAT     ;     ; Latitude (coarse accuracy)
                                                        +  0-07-002 |  -1 |         -40 |  16 | m              | HMSL     ;     ; Height or altitude
                                                        +
                                                        The above examples show how additional white space can vary from line to line and can be used according to individual preferences, but of course for overall readability it's usually best to pick one format and stick to it within a given table file. Here are some sample master Table B files that can be downloaded and used. These are also available as part of the standard distribution package for the software, within the tables subdirectory:
                                                        +

                                                        +Table D

                                                        +
                                                        As was the case for Table B, two master Table D files (one standard and one local) are also required for each BUFR message that is to be read and decoded, and these files must also exist within the same directory specified by CMTDIR during the previous call to subroutine mtinfo(). The BUFRLIB software will then scan the identification section (Section 1) of each BUFR message as it is read, in order to determine the exact master table files to open and read for that message, and a local Table D file is necessary whenever local descriptors from the originating center in question are included within a message; otherwise, the default local Table D file from NCEP (originating center 7) can be used as a placeholder.

                                                        +
                                                        The format of the first line of each master Table D file is the same as for Table B:
                                                        +Standard table:     Table D STD | M | V
                                                        +Local table:        Table D LOC | M | C | L
                                                        +
                                                        +       where:       M = Master Table number ('0' for WMO, '10' for IOC, etc.)
                                                        +                    V = Version number of Master Table used
                                                        +                    C = Originating Center number ('7' for NCEP, etc.)
                                                        +                    L = Version number of local tables used
                                                        +
                                                        and blank lines and comment lines (beginning with a "#" in column 1) are likewise allowed, but otherwise the format for a master Table D file differs from that of a master Table B file since entries now span multiple file lines as follows:
                                                        + F-XX-YYY | MNEMONIC  ; CODES ; SEQUENCE_NAME
                                                        +          | F-XX-YYY > | ELEMENT_NAME  
                                                        +          | F-XX-YYY   | ELEMENT_NAME 
                                                        +
                                                        As shown, the first line of each entry contains the FXY number of the Table D sequence, along with the corresponding sequence name, mnemonic and annotation codes (if any), and then each successive line contains a single element of that sequence. Each successive element is listed one per line, and note the ">" character after the FXY number within each element line up to, but not including, the last element of the sequence. The BUFRLIB software uses the lack of a ">" character to know when it has reached the last element of the sequence. Here are some examples:
                                                        +  3-01-004 | SFCSTNID   ;  ; Surface station identification
                                                        +           | 0-01-001 > | WMO block number
                                                        +           | 0-01-002 > | WMO station number
                                                        +           | 0-01-015 > | Station or site name
                                                        +           | 0-02-001   | Type of station
                                                        +
                                                        +  3-01-012 | HHMM       ; ;
                                                        +           | 0-04-004 >  | Hour
                                                        +           | 0-04-005    | Minute
                                                        +
                                                        +  3-01-023 | LTLONC   ;   ;
                                                        +           | 0-05-002 > | Latitude (coarse accuracy)
                                                        +           | 0-06-002   | Longitude (coarse accuracy)
                                                        +
                                                        +  3-01-025 | LTLONCDT   ;  ;
                                                        +           | 3-01-023 > | Latitude and longitude (coarse accuracy)
                                                        +           | 0-04-003 > | Day
                                                        +           | 3-01-012   | Time
                                                        +
                                                        +  3-01-045 | SATLOVEL   ;     ; Satellite location and velocity
                                                        +           | 3-01-011 > | Year, month, day
                                                        +           | 3-01-012 > | Time (hour, minute)
                                                        +           | 2-01-138 > | Change width to 16 bits
                                                        +           | 2-02-131 > | Change scale to 3
                                                        +           | 0-04-006 > | Second
                                                        +           | 2-01-000 > | Change width back to Table B
                                                        +           | 2-02-000 > | Change scale back to Table B
                                                        +           | 3-04-030 > | Location relative to the Earth's centre
                                                        +           | 3-04-031   | Velocity relative to the Earth's centre
                                                        +
                                                        +  3-03-050 | WDPLRAOB   ; ; Wind data at a pressure level with radiosonde position
                                                        +           | 0-04-086 > | Long time period or displacement (since launch time)
                                                        +           | 0-08-042 > | Extended vertical sounding significance
                                                        +           | 0-07-004 > | Pressure
                                                        +           | 0-05-015 > | Latitude displacement since launch site (high accuracy)
                                                        +           | 0-06-015 > | Longitude displacement since launch site (high accuracy)
                                                        +           | 0-11-001 > | Wind direction
                                                        +           | 0-11-002   | Wind speed
                                                        +
                                                        As with master Table B files, the entries within a master Table D file must all be sorted in ascending order with respect to the FXY number, and the software will continue reading from the file until it reaches a line with the string "END" in the first three characters. Here are some sample master Table D files that can be downloaded and used. These are also available as part of the standard distribution package for the software, within the tables subdirectory:
                                                        +

                                                        +Code/Flag Tables

                                                        +
                                                        Unlike for Table B and Table D, master Code/Flag tables are optional when the IO='SEC3' option is specified during a call to subroutine openbf() for the reading/decoding of BUFR messages. Instead, they are only required if the user intends to make one or more calls to subroutine getcfmng(), and in which case a prior call to subroutine codflg() is also required with the value of CF set to 'Y'.

                                                        +
                                                        Whenever master Code/Flag tables are used, they must exist within the same local filesystem directory specified by CMTDIR during the most recent call to subroutine mtinfo(). And just like for Table B and Table D, they must exist as a set of two separate tables files, one containing all of the standard entries and one containing all of the local entries, and where the default local Code/Flag tables file from NCEP (originating center 7) can be used as a placeholder for the local file whenever the BUFR messages to be decoded contain only standard descriptors.

                                                        +
                                                        The format of the first line of each master Code/Flag table file is the same as for Tables B and D:
                                                        +Standard table:     Table F STD | M | V
                                                        +Local table:        Table F LOC | M | C | L
                                                        +
                                                        +       where:       M = Master Table number ('0' for WMO, '10' for IOC, etc.)
                                                        +                    V = Version number of Master Table used
                                                        +                    C = Originating Center number ('7' for NCEP, etc.)
                                                        +                    L = Version number of local tables used
                                                        +
                                                        and blank lines and comment lines (beginning with a "#" in column 1) are likewise allowed throughout each table for readability. Entries span multiple lines and follow the format:
                                                        + F-XX-YYY | MNEMONIC ; CODE
                                                        +          | F-XX-YYY=VAL
                                                        +            | VAL > | MEANING
                                                        +            | VAL   | MEANING
                                                        +
                                                        for code tables, and:
                                                        + F-XX-YYY | MNEMONIC ; FLAG
                                                        +          | F-XX-YYY=BIT
                                                        +            | BIT > | MEANING
                                                        +            | BIT   | MEANING
                                                        +
                                                        for flag tables. As shown, the first line of each entry contains the FXY number and mnemonic of the associated Table B descriptor, along with the identifier "CODE" or "FLAG" depending on the table type. Successive lines contain individual entries within the associated table, grouped by dependency where applicable. For example, for mnemonic GSES (originating sub-center), whose meanings depend on that of the associated originating center as noted in the discussion for subroutine getcfmng(), the entry would look something like the following, and where 0-01-031, 0-01-033 and 0-01-035 are the respective FXY numbers for mnemonics GCLONG, OGCE and ORIGC:
                                                        +  0-01-034 | GSES ; CODE
                                                        +           | 0-01-031,0-01-033,0-01-035=39
                                                        +              | 0 > | No sub-centre
                                                        +              | 225 > | Beijing
                                                        +              | 226 > | Guangzhou
                                                        +              | 228 > | Urumuqi
                                                        +           | 0-01-031,0-01-033,0-01-035=80
                                                        +              | 0 > | No sub-centre
                                                        +              | 101 > | Albania (NMC)
                                                        +              | 102 > | National Research Council/Institute of Atmospheric Sciences and Climate (CNR-ISAC)
                                                        +           | 0-01-031,0-01-033,0-01-035=7
                                                        +              | 0 > | No sub-centre
                                                        +              | 1 > | NCEP Reanalysis Project
                                                        +              | 2 > | NCEP Ensemble Products
                                                        +              | 3 > | NCEP Central Operations
                                                        +              | 4 > | Environmental Modeling Center
                                                        +              | 5 > | Weather Prediction Center
                                                        +              | 6 > | Ocean Prediction Center
                                                        +              | 7 > | Climate Prediction Center
                                                        +              | 8 > | Aviation Weather Center
                                                        +              | 9 > | Storm Prediction Center
                                                        +              | 10 > | National Hurricane Center
                                                        +              | 11 > | NWS Techniques Development Laboratory
                                                        +              | 12 > | NESDIS Office of Research and Applications
                                                        +              | 13 > | Federal Aviation Administration
                                                        +              | 14 > | NWS Meteorological Development Laboratory
                                                        +              | 15 > | North American Regional Reanalysis Project
                                                        +              | 16 > | Space Weather Prediction Center
                                                        +              | 17 > | ESRL Global Systems Division
                                                        +           | 0-01-031,0-01-033,0-01-035=46
                                                        +              | 0 > | No sub-centre
                                                        +              | 10 > | Cachoeira Paulista (INPE)
                                                        +              | 11 > | Cuiaba (INPE)
                                                        +              | 12 > | Brasilia (INMET)
                                                        +              | 13 > | Fortaleza (FUNCEME)
                                                        +              | 14 > | Natal (Navy Hygrog. Centre)
                                                        +              | 15 > | Manaus (SIVAM)
                                                        +              | 16 > | Natal (INPE)
                                                        +              | 17 > | Boa Vista
                                                        +              | 25 > | São Paulo University - USP
                                                        +           | 0-01-031,0-01-033,0-01-035=254
                                                        +              | 0 > | No sub-centre
                                                        +              | 10 > | Tromso (Norway)
                                                        +              | 20 > | Maspalomas (Spain)
                                                        +              | 30 > | Kangerlussuaq (Greenland)
                                                        +              | 40 > | Edmonton (Canada)
                                                        +              | 50 > | Bedford (Canada)
                                                        +              | 60 > | Gander (Canada)
                                                        +              | 70 > | Monterey (USA)
                                                        +              | 80 > | Wallops Island (USA)
                                                        +              | 90 > | Gilmor Creek (USA)
                                                        +              | 100 > | Athens (Greece)
                                                        +              | 120 > | Ewa Beach, Hawaii
                                                        +              | 125 > | Ford Island, Hawaii
                                                        +              | 130 > | Miami, Florida
                                                        +              | 140 > | Lannion (France)
                                                        +              | 150 > | Svalbard (Norway)
                                                        +              | 170 > | St Denis (La Réunion)
                                                        +              | 180 > | Moscow
                                                        +              | 190 > | Muscat
                                                        +              | 200 > | Khabarovsk
                                                        +              | 210   | Novosibirsk
                                                        +
                                                        However, if the meanings of the code or flag table values for a particular mnemonic do not depend on those of any other mnemonic, then the dependency lines can be omitted from the above format, as shown in the following additional examples:
                                                        +  0-02-003 | A4ME ; CODE
                                                        +              | 0 > | Pressure Instrument associated with wind measuring equipment
                                                        +              | 1 > | Optical theodolite
                                                        +              | 2 > | Radio theodolite
                                                        +              | 3 > | Radar
                                                        +              | 4 > | VLF-Omega
                                                        +              | 5 > | Loran C
                                                        +              | 6 > | Wind profiler
                                                        +              | 7 > | Satellite navigation
                                                        +              | 8 > | Radio-acoustic Sounding System (RASS)
                                                        +              | 9 > | Sodar
                                                        +              | 10 > | LIDAR
                                                        +              | 14   | Pressure instrument associated with wind measuring equipment but pressure element failed during ascent
                                                        +
                                                        +  0-02-008 | TOFSP ; CODE
                                                        +              | 0 > | Fixed platform
                                                        +              | 1 > | Mobile offshore drill ship
                                                        +              | 2 > | Jack-up rig
                                                        +              | 3 > | Semi-submersible platform
                                                        +              | 4 > | FPSO (floating production storage and offloading unit)
                                                        +              | 5   | Light vessel
                                                        +
                                                        +  0-02-016 | RCONF ; FLAG
                                                        +              | 1 > | Train regulator
                                                        +              | 2 > | Light unit
                                                        +              | 3 > | Parachute
                                                        +              | 4   | Rooftop release
                                                        +
                                                        +  0-02-017 | CAHM ; CODE
                                                        +              | 0 > | No corrections
                                                        +              | 1 > | Time lag correction provided by the manufacturer
                                                        +              | 2 > | Solar radiation correction provided by the manufacturer
                                                        +              | 3 > | Solar radiation and time lag correction provided by the manufacturer
                                                        +              | 7   | GRUAN solar radiation and time lag correction
                                                        +
                                                        +  0-02-022 | SDPT ; FLAG
                                                        +              | 1 > | Processing technique not defined
                                                        +              | 2 > | Automated statistical regression
                                                        +              | 3 > | Clear path
                                                        +              | 4 > | Partly cloudy path
                                                        +              | 5   | Cloudy path
                                                        +
                                                        Note that the values for any entry are always listed one per line, and note the ">" character after the value within each line up to, but not including, the last defined value/meaning pair for that entry. The BUFRLIB software uses this lack of a ">" character to know when it has reached the last value/meaning pair for the associated entry. And as was also the case for master Table B and Table D files, all entries in a master Code/Flag table file must be in sorted ascending order with respect to the FXY number, and the BUFRLIB software will continue reading from the file until it reaches a line with the string "END" in the first three characters. Here are some sample master code/flag table files that can be downloaded and used. These are also available as part of the standard distribution package for the software, within the tables subdirectory:
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_utils.html b/previous_versions/v12.1.0/md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_utils.html new file mode 100644 index 000000000..7434f0caa --- /dev/null +++ b/previous_versions/v12.1.0/md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_utils.html @@ -0,0 +1,625 @@ + + + + + + + +NCEPLIBS-bufr: Utilities + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        +
                                                        Utilities
                                                        +
                                                        +
                                                        +

                                                        Collection of commonly-used utilities based on the library.

                                                        +

                                                        The NCEPLIBS-bufr library includes some command line utilities which operate on BUFR files.

                                                        + + + + + + + + + + + + + + + + + + + + + + + +
                                                        Utility Description
                                                        debufr Read BUFR file and write verbose listing of contents
                                                        readbp Read prepbufr file and print each report one at a time
                                                        readmp Read BUFR file containing embedded DX BUFR tables, and print each report one at a time
                                                        binv Print inventory of BUFR file by message type
                                                        sinv Print inventory of BUFR satellite data file by platform and instrument type
                                                        cmpbqm Print inventory of observations from prepbufr file by variable, report type and quality mark
                                                        gettab Print embedded DX BUFR tables from within a BUFR file
                                                        split_by_subset Split a BUFR file into separate BUFR files for each subset type
                                                        xbfmg Split a BUFR file into separate BUFR files for each message
                                                        apxdx Append a DX BUFR table to a BUFR file
                                                        +


                                                        +

                                                        +
                                                        +

                                                        +debufr

                                                        +
                                                        This program decodes a BUFR file and writes a verbose listing of the contents to the file specified via the -o option. If a DX BUFR Tables file is specified (using the -f option) or if the specified BUFR file contains an embedded DX BUFR tables message as the first message in the file, then this information is used to decode the data messages in the file. Otherwise, or whenever the -m option is specified, master BUFR tables are read and used to decode the data messages in the file.
                                                        +Usage:
                                                        +
                                                        +   debufr [-v] [-h] [-b] [-c] [-m] [-o outfile] [-t tabledir] [-f tablefil] [-p prmstg] bufrfile
                                                        +
                                                        +     where:
                                                        +       -v        prints version information and exits
                                                        +
                                                        +       -h        prints program help and usage information and exits
                                                        +
                                                        +       -b        specifies the "basic" option, meaning that only the
                                                        +                 information in Sections 0-3 will be decoded from each
                                                        +                 BUFR message in the bufrfile, and no attempt will be
                                                        +                 made to decode the data in Section 4
                                                        +
                                                        +       -c        specifies that code and flag table meanings should not
                                                        +                 be read from master BUFR tables and included in the
                                                        +                 output; otherwise this feature is enabled by default
                                                        +
                                                        +       -m        specifies that master BUFR tables will be used to
                                                        +                 decode the data messages in the file, regardless of
                                                        +                 whether it contains any embedded DX BUFR table
                                                        +                 messages.  This option can be used to view the actual
                                                        +                 contents of DX BUFR table messages, which otherwise
                                                        +                 would not be printed in the output listing.
                                                        +
                                                        +       outfile   [path/]name of file to contain verbose output listing.
                                                        +                 The default is "bufrfilename.debufr.out" in the current
                                                        +                 working directory, where bufrfilename is the basename of
                                                        +                 the bufrfile (i.e. bufrfile with any preceding [path/]
                                                        +                 removed).
                                                        +
                                                        +       tabledir  [path/]name of directory containing tables to be used
                                                        +                 for decoding.  This directory contains the DX BUFR
                                                        +                 tables file to be used (if one was specified
                                                        +                 via the -f option), or it may contain all of the master
                                                        +                 BUFR tables when these are being used to decode a
                                                        +                 file.  If unspecified, the default directory location is
                                                        +                 the defined value of the MASTER_TABLE_DIR macro when the
                                                        +                 utility was built.
                                                        +
                                                        +       tablefil  file within tabledir containing DX BUFR tables
                                                        +                 to be used for decoding.
                                                        +
                                                        +       prmstg    string of comma-separated PARAMETER=VALUE pairs, up to a
                                                        +                 maximum of 20.  For each pair, the dynamic allocation
                                                        +                 PARAMETER will be set to VALUE within the underlying
                                                        +                 NCEPLIBS-bufr software, overriding the default value that
                                                        +                 would otherwise be used.  A complete list of parameters
                                                        +                 that can be dynamically sized is included within the
                                                        +                 documentation for NCEPLIBS-bufr function isetprm().
                                                        +
                                                        +       bufrfile  [path/]name of BUFR file to be decoded
                                                        +
                                                        See the source code at debufr.c and debufr.F90


                                                        +

                                                        +
                                                        +

                                                        +readbp

                                                        +
                                                        A utility to read prepbufr files which prints each report one at a time, or jumps to a report with characteristics defined by various keys such as report type, subset type, xy locagtion, station id, etc. Keys can be entered as arguments to the program or entered while the program is running. Basic operation is to print one report at a time with the default being starting at the beginning and continuing until the end or the user enters 'q'. The following summary is printed if the program is run without arguments.
                                                        + Usage: readbp <-s> <-w> <-m> <-k> <-r> <-d> <-n> <-h>  prep bufrfile
                                                        +
                                                        + Search filter and/or print prepbufr reports in various ways
                                                        +
                                                        + -s "station_id " print reports where "station_id" matches the report id up to the len of "station_id"
                                                        + -w "x1 x2 y1 y2" print reports within a lon/lat box
                                                        + -m "subset     " print reports with this subset name
                                                        + -k "gsi  rtype " print reports with this gsi report type
                                                        + -r "on29 rtype " print reports with this on29 report type
                                                        + -d               print reports using ufdump - note: this works with any NCEP BUFR file
                                                        + -n               no pause between reports output
                                                        + -h               print only report headers
                                                        +
                                                        + Only a filename is required in which case step through the reports one at a time using "enter"
                                                        +
                                                        + Optional arguments can also be applied in the pause between reports output without using  a dash
                                                        +
                                                        + Optional arguments will be applied in concert in most cases
                                                        +
                                                        See the source code at readbp.F90
                                                        Sample output for: ‘readbp gdas.20200812/00/gdas.t00z.prepbufr’`
                                                        MESSAGE: ADPUPA 1 2 20081200
                                                        +
                                                        STATION: 89642 140.02 -66.67
                                                        +
                                                        TIME: 20081200 0.00
                                                        +
                                                        ELV: 43.00
                                                        +
                                                        PSL: ********
                                                        +
                                                        TYPE: 11. 177. 220.
                                                        +
                                                        SOURCE: vH7B
                                                        +
                                                        SEQUENCE **********
                                                        +
                                                        DATA:
                                                        +
                                                        LVL CAT POB SPH TOB ZOB UOB VOB
                                                        +
                                                        1 3 1002.0(2) *******(*) *******(*) *******(*) -3.8(2) 8.2(2)
                                                        +
                                                        2 1 1000.0(2) *******(*) *******(*) *******(*) -3.8(2) 8.2(2)
                                                        +
                                                        3 1 925.0(2) *******(*) *******(*) *******(*) -5.1(2) 6.1(2)
                                                        +
                                                        4 1 850.0(2) *******(*) *******(*) *******(*) -4.2(2) 4.2(2)
                                                        +
                                                        5 1 700.0(2) *******(*) *******(*) *******(*) 3.1(2) 8.5(2)
                                                        +
                                                        6 1 500.0(2) *******(*) *******(*) *******(*) 21.2(2) 21.2(2)
                                                        +
                                                        7 1 400.0(2) *******(*) *******(*) *******(*) 29.1(2) 24.4(2)
                                                        +
                                                        8 1 300.0(2) *******(*) *******(*) *******(*) 26.9(2) 26.9(2)
                                                        +
                                                        9 5 273.0(2) *******(*) *******(*) *******(*) 21.9(2) 26.0(2)
                                                        +
                                                        10 1 250.0(2) *******(*) *******(*) *******(*) 29.5(2) 20.6(2)
                                                        +
                                                        11 5 200.0(2) *******(*) *******(*) *******(*) 29.5(2) 20.6(2)
                                                        +
                                                        12 1 150.0(2) *******(*) *******(*) *******(*) 35.5(2) 20.5(2)
                                                        +
                                                        13 1 100.0(2) *******(*) *******(*) *******(*) 42.6(2) 19.9(2)
                                                        +
                                                        14 1 70.0(2) *******(*) *******(*) *******(*) 49.8(2) 23.2(2)
                                                        +
                                                        15 1 50.0(2) *******(*) *******(*) *******(*) 57.1(2) 26.6(2)
                                                        +
                                                        16 1 30.0(2) *******(*) *******(*) *******(*) 70.5(2) 18.9(2)
                                                        +
                                                        17 1 20.0(2) *******(*) *******(*) *******(*) 83.1(2) 22.3(2)
                                                        +


                                                        +

                                                        +
                                                        +

                                                        +readmp

                                                        +
                                                        A utility to read any BUFR file with embedded DX tables, and print the contents of each subset one at a time.
                                                        See the source code at readmp.F90
                                                        Sample output for: readmp gdas.20200812/00/gdas.t00z.sfcshp.tm00.bufr_d
                                                        MESSAGE TYPE NC001001
                                                        +
                                                        +
                                                        004001 YEAR 2020.0 YEAR YEAR
                                                        +
                                                        004002 MNTH 8.0 MONTH MONTH
                                                        +
                                                        004003 DAYS 11.0 DAY DAY
                                                        +
                                                        004004 HOUR 21.0 HOUR HOUR
                                                        +
                                                        004005 MINU 0.0 MINUTE MINUTE
                                                        +
                                                        001198 RPID WCX7445 ( 8)CCITT IA5 REPORT IDENTIFIER
                                                        +
                                                        <ID1SQ> 1 REPLICATIONS
                                                        +
                                                        001203 SHPC8 WCX7445 ( 8)CCITT IA5 SHIP CALL SIGN (8 CHARACTERS)
                                                        +
                                                        <ID2SQ> 0 REPLICATIONS
                                                        +
                                                        <ID3SQ> 0 REPLICATIONS
                                                        +
                                                        005002 CLAT -53.10 DEGREES LATITUDE (COARSE ACCURACY)
                                                        +
                                                        006002 CLON -70.90 DEGREES LONGITUDE (COARSE ACCURACY)
                                                        +
                                                        007001 SELV 0.0 METERS HEIGHT OF STATION
                                                        +
                                                        033215 CORN 0.0 CODE TABLE CORRECTED REPORT INDICATOR
                                                        +
                                                        035200 RSRD 256.0 FLAG TABLE(1) RESTRICTIONS ON REDISTRIBUTION
                                                        +
                                                        035201 EXPRSRD MISSING HOURS EXPIRATION OF RESTRICTIONS ON REDISTRIBUTION
                                                        +
                                                        {BID} 1 REPLICATIONS
                                                        +
                                                        035195 SEQNUM 477 ( 4)CCITT IA5 CHANNEL SEQUENCE NUMBER
                                                        +
                                                        035021 BUHD SIVC70 ( 6)CCITT IA5 BULLETIN BEING MONITORED (TTAAii)
                                                        +
                                                        035023 BORG KWBC ( 4)CCITT IA5 BULLETIN BEING MONITORED (CCCC)
                                                        +
                                                        035022 BULTIM 112100 ( 6)CCITT IA5 BULLETIN BEING MONITORED (YYGGgg)
                                                        +
                                                        035194 BBB MISSING ( 6)CCITT IA5 BULLETIN BEING MONITORED (BBB)
                                                        +
                                                        {RCPTIM} 1 REPLICATIONS
                                                        +
                                                        008202 RCTS 0.0 CODE TABLE RECEIPT TIME SIGNIFICANCE
                                                        +
                                                        004200 RCYR 2020.0 YEAR YEAR - TIME OF RECEIPT
                                                        +
                                                        004201 RCMO 8.0 MONTH MONTH - TIME OF RECEIPT
                                                        +
                                                        004202 RCDY 11.0 DAY DAY - TIME OF RECEIPT
                                                        +
                                                        004203 RCHR 21.0 HOUR HOUR - TIME OF RECEIPT
                                                        +
                                                        004204 RCMI 22.0 MINUTE MINUTE - TIME OF RECEIPT
                                                        +
                                                        002193 ITSO 2.0 CODE TABLE IND TYPE OF STATION OPERATION PAST/PRESENT WEATH
                                                        +
                                                        002001 TOST 1.0 CODE TABLE TYPE OF STATION
                                                        +
                                                        013194 INPC 4.0 CODE TABLE INDIC INCLUSION/OMISSION OF PREC
                                                        +
                                                        020001 HOVI MISSING METERS HORIZONTAL VISIBILITY
                                                        +
                                                        002002 TIWM 12.0 FLAG TABLE(1,2) TYPE OF INSTRUMENTATION FOR WIND MEASUREMENT
                                                        +
                                                        033195 QMWN MISSING CODE TABLE SDMEDIT/QUIPS QUALITY MARK FOR WIND
                                                        +
                                                        011001 WDIR 310.0 DEGREES TRUE WIND DIRECTION
                                                        +
                                                        011002 WSPD 7.2 METERS/SECOND WIND SPEED
                                                        +
                                                        <WNDSQ2> 0 REPLICATIONS
                                                        +
                                                        033193 QMAT MISSING CODE TABLE SDMEDIT/QUIPS QUALITY MARK FOR TEMPERATURE
                                                        +
                                                        012101 TMDB 276.45 DEGREES KELVIN TEMPERATURE/DRY BULB TEMPERATURE
                                                        +
                                                        033194 QMDD MISSING CODE TABLE SDMEDIT/QUIPS QUALITY MARK FOR MOISTURE
                                                        +
                                                        012103 TMDP 274.85 DEGREES KELVIN DEW POINT TEMPERATURE
                                                        +
                                                        002038 MSST MISSING CODE TABLE METHOD OF SEA SURFACE TEMPERATURE MEASUREMENT
                                                        +
                                                        033218 QMST MISSING CODE TABLE SDMEDIT/QUIPS QUALITY MARK FOR SEA SURFACE TEMPE
                                                        +
                                                        022043 SST1 MISSING DEGREES KELVIN SEA TEMPERATURE
                                                        +
                                                        <TMPSQ2> 0 REPLICATIONS
                                                        +
                                                        <TMPSQ3> 0 REPLICATIONS
                                                        +
                                                        033207 QMPR MISSING CODE TABLE SDMEDIT/QUIPS QUALITY MARK FOR PRESSURE
                                                        +
                                                        010004 PRES MISSING PASCALS PRESSURE
                                                        +
                                                        010051 PMSL 98660.0 PASCALS PRESSURE REDUCED TO MSL
                                                        +
                                                        010063 CHPT 7.0 CODE TABLE CHARACTERISTIC OF PRESSURE TENDENCY
                                                        +
                                                        010061 3HPC -350.0 PASCALS 3 HOUR PRESSURE CHANGE
                                                        +
                                                        010062 24PC MISSING PASCALS 24 HOUR PRESSURE CHANGE
                                                        +
                                                        013021 TP06 MISSING KG/METER**2 TOTAL PRECIPITATION PAST 6 HOURS
                                                        +
                                                        <PCPSQ2> 0 REPLICATIONS
                                                        +
                                                        <PCPSQ3> 0 REPLICATIONS
                                                        +
                                                        020010 TOCC MISSING % CLOUD COVER (TOTAL)
                                                        +
                                                        020201 HBLCS 14.0 CODE TABLE HEIGHT ABOVE SURFACE OF BASE OF LOWEST CLOUD SEE
                                                        +
                                                        {CLDSQ1} 0 REPLICATIONS
                                                        +
                                                        <PPWSQ1> 0 REPLICATIONS
                                                        +
                                                        <WAVSQ1> 0 REPLICATIONS
                                                        +
                                                        <WAVSQ2> 0 REPLICATIONS
                                                        +
                                                        {WAVSQ3} 0 REPLICATIONS
                                                        +
                                                        <MPLSQ1> 1 REPLICATIONS
                                                        +
                                                        001193 TDMP 0.0 CODE TABLE TRUE DIRECTION OF SHIP DURING PAST 3 HOURS
                                                        +
                                                        001200 ASMP 0.0 CODE TABLE AVG SPD OF SHIP DURING PAST 3 HOURS
                                                        +
                                                        <ICESQ1> 0 REPLICATIONS
                                                        +
                                                        <RPSEC3> 0 REPLICATIONS
                                                        +
                                                        {RAWRPT} 0 REPLICATIONS
                                                        +


                                                        +

                                                        +
                                                        +

                                                        +binv

                                                        +
                                                        A utility to print a BUFR file inventory by message type.
                                                        See the source code at binv.F90
                                                        Sample output for: binv gdas.20200812/00/gdas.t00z.prepbufr
                                                        type messages subsets bytes
                                                        +
                                                        +
                                                        ADPUPA 363 1427 3091984 3.93
                                                        +
                                                        AIRCAR 1817 169107 18052250 93.07
                                                        +
                                                        AIRCFT 298 29002 2956428 97.32
                                                        +
                                                        SATWND 1439 192430 14317604 133.72
                                                        +
                                                        PROFLR 1 1 1050 1.00
                                                        +
                                                        VADWND 76 1853 733606 24.38
                                                        +
                                                        ADPSFC 1266 135037 12582648 106.66
                                                        +
                                                        SFCSHP 156 20001 1552260 128.21
                                                        +
                                                        GPSIPW 5 577 31428 115.40
                                                        +
                                                        RASSDA 10 200 90976 20.00
                                                        +
                                                        ASCATW 1390 225151 13809272 161.98
                                                        +
                                                        SYNDAT 2 102 13234 51.00
                                                        +
                                                        TOTAL 6823 774888 67232740
                                                        +


                                                        +

                                                        +
                                                        +

                                                        +sinv

                                                        +
                                                        Utility to print an inventory of satellite data by platform and instrument type.
                                                        See the source code at sinv.F90
                                                        Sample output for: sinv gdas.20200812/00/gdas.t00z.satwnd.tm00.bufr_d
                                                        003 METOP-1 7220
                                                        +
                                                        004 METOP-2 8911
                                                        +
                                                        055 METEOSAT-8 172430
                                                        +
                                                        070 METEOSAT-1 176712
                                                        +
                                                        173 Himawari-8 133715
                                                        +
                                                        209 NOAA-18 147
                                                        +
                                                        223 NOAA-19 1565
                                                        +
                                                        224 NPP 41006 NOAA Imaging multi-spectral radiometer (vis/IR) VIIRS (Visible/infrared imager r
                                                        +
                                                        225 NOAA-20 47747 NOAA Imaging multi-spectral radiometer (vis/IR) VIIRS (Visible/infrared imager r
                                                        +
                                                        270 GOES-16 1156231 NOAA Imaging multi-spectral radiometer ABI (Advanced baseline imager)
                                                        +
                                                        271 GOES-17 1890729 NOAA Imaging multi-spectral radiometer ABI (Advanced baseline imager)
                                                        +
                                                        471 INSAT-3D 24108
                                                        +
                                                        473 INSAT-3DR 79427
                                                        +
                                                        784 AQUA 2850
                                                        +


                                                        +

                                                        +
                                                        +

                                                        +cmpbqm

                                                        +
                                                        An inventory of prepbufr observations by variable, report type, and quality mark made from a prepbufr file. The ob type,total count,and quality marks are listed by column. The cka and ckb columns are counts of observed values with missing qm, or qms with missing observations. The cka and ckb should be zero but sometimes they're not. The qm values are found in bufr code tables, but below a quick summary. The GSI qms are added by a program run by the fit2obs system which copies that information from the convstat files. The sample output prepbufr was after prep but pre-analysis. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        Quality Marker Description
                                                        0 keep flag
                                                        1 passed checks and/or corrected by cqc
                                                        2 not checked
                                                        3 suspicious
                                                        4-7 rejected by oiqc (original mark + 4)
                                                        8 Ps more than 100mb off
                                                        9 filtered by missing ob errors in gsi error table
                                                        10 rejected by gsi gross check
                                                        11 rejected by gsi varqc
                                                        12 on manual reject list
                                                        13 rejected by cqc or acqc
                                                        14 sdm reject (manual purge)
                                                        15 rejected by prepdata code (ie failed various sanity checks)
                                                        cka a non-missing value with a missing quality mark
                                                        ckb a missing value with a non-missing quality mark
                                                        +
                                                        See the source code at cmpbqm.F90
                                                        Sample output for: cmpbqm gdas.20200811/00/gdas.t00z.prepbufr
                                                        DATA VALID AT 2020081100
                                                        +
                                                        +
                                                        PRESSURE
                                                        +
                                                        +
                                                        typ tot 0-3 4-7 8 9 10 11 12 13 14 15 cka ckb
                                                        +
                                                        ----------------------------------------------------------------------------------------
                                                        +
                                                        120 32154| 31952| 0| 43| 2| 0 0 0 1 156 0| 0| 0
                                                        +
                                                        126 1169| 1169| 0| 0| 0| 0 0 0 0 0 0| 0| 0
                                                        +
                                                        130 602| 601| 0| 1| 0| 0 0 0 0 0 0| 0| 0
                                                        +
                                                        131 10321| 10321| 0| 0| 0| 0 0 0 0 0 0| 0| 0
                                                        +
                                                        133 86356| 86356| 0| 0| 0| 0 0 0 0 0 0| 0| 0
                                                        +
                                                        134 4170| 4170| 0| 0| 0| 0 0 0 0 0 0| 0| 0
                                                        +
                                                        135 208| 208| 0| 0| 0| 0 0 0 0 0 0| 0| 0
                                                        +
                                                        180 9296| 9026| 0| 6| 0| 0 0 0 0 203 61| 0| 0
                                                        +
                                                        181 23224| 20989| 0| 326| 10| 0 0 0 0 87 1812| 0| 0
                                                        +
                                                        183 3626| 0| 0| 12| 3582| 0 0 0 0 32 0| 0| 0
                                                        +
                                                        187 42698| 42300| 0| 112| 0| 0 0 0 0 286 0| 0| 0
                                                        +
                                                        220 39385| 39194| 0| 2| 0| 0 0 0 0 189 0| 0| 0
                                                        +
                                                        221 720| 720| 0| 0| 0| 0 0 0 0 0 0| 0| 0
                                                        +
                                                        224 16527| 16527| 0| 0| 0| 0 0 0 0 0 0| 0| 0
                                                        +
                                                        229 4| 4| 0| 0| 0| 0 0 0 0 0 0| 0| 0
                                                        +
                                                        230 166| 166| 0| 0| 0| 0 0 0 0 0 0| 0| 0
                                                        +
                                                        231 10319| 10319| 0| 0| 0| 0 0 0 0 0 0| 0| 0
                                                        +
                                                        233 86112| 86112| 0| 0| 0| 0 0 0 0 0 0| 0| 0
                                                        +
                                                        234 4170| 4170| 0| 0| 0| 0 0 0 0 0 0| 0| 0
                                                        +
                                                        235 208| 208| 0| 0| 0| 0 0 0 0 0 0| 0| 0
                                                        +
                                                        242 27875| 25521| 0| 0| 0| 0 0 0 2354 0 0| 0| 0
                                                        +
                                                        243 7040| 7040| 0| 0| 0| 0 0 0 0 0 0| 0| 0
                                                        +
                                                        250 58010| 52503| 0| 0| 0| 0 0 0 5507 0 0| 0| 0
                                                        +
                                                        252 53788| 48854| 0| 0| 0| 0 0 0 4934 0 0| 0| 0
                                                        +
                                                        253 13601| 13601| 0| 0| 0| 0 0 0 0 0 0| 0| 0
                                                        +
                                                        254 34156| 34156| 0| 0| 0| 0 0 0 0 0 0| 0| 0
                                                        +
                                                        257 8139| 8139| 0| 0| 0| 0 0 0 0 0 0| 0| 0
                                                        +
                                                        258 4127| 4127| 0| 0| 0| 0 0 0 0 0 0| 0| 0
                                                        +
                                                        259 5208| 5208| 0| 0| 0| 0 0 0 0 0 0| 0| 0
                                                        +
                                                        280 8310| 8049| 0| 0| 0| 0 0 0 0 203 58| 0| 0
                                                        +
                                                        281 22689| 20662| 0| 190| 0| 0 0 0 0 87 1750| 0| 0
                                                        +
                                                        282 240| 240| 0| 0| 0| 0 0 0 0 0 0| 0| 0
                                                        +
                                                        284 3542| 3497| 0| 12| 0| 0 0 0 0 32 1| 0| 0
                                                        +
                                                        287 42327| 41985| 0| 73| 0| 0 0 0 0 268 1| 0| 0
                                                        +
                                                        290231701|231701| 0| 0| 0| 0 0 0 0 0 0| 0| 0
                                                        +
                                                        +
                                                        SPECIFIC HUMIDTY
                                                        +
                                                        +
                                                        120 28995| 14978| 0| 1| 13528| 0 0 0 3 219 266| 0| 0
                                                        +
                                                        133 13662| 9428| 0| 0| 3623| 0 0 0 329 216 66| 0| 0
                                                        +
                                                        134 3948| 2408| 0| 0| 165| 0 0 0 680 689 6| 0| 0
                                                        +
                                                        180 4327| 4299| 0| 0| 0| 0 0 0 0 0 28| 0| 0
                                                        +
                                                        181 22680| 0| 0| 311| 20525| 0 0 0 0 1844 0| 0| 0
                                                        +
                                                        183 2594| 0| 0| 12| 2550| 0 0 0 0 32 0| 0| 0
                                                        +
                                                        187 42303| 0| 0| 112| 41463| 0 0 0 0 728 0| 0| 0
                                                        +
                                                        +
                                                        TEMPERATURE
                                                        +
                                                        +
                                                        120 31833| 31540| 0| 1| 2| 0 0 0 71 219 0| 0| 0
                                                        +
                                                        126 1169| 0| 0| 0| 861| 0 0 0 308 0 0| 0| 0
                                                        +
                                                        130 436| 386| 0| 0| 0| 0 0 0 30 20 0| 0| 0
                                                        +
                                                        131 10321| 9297| 0| 0| 0| 0 0 0 890 134 0| 0| 0
                                                        +
                                                        133 86356| 81038| 0| 0| 0| 0 0 0 3780 1538 0| 0| 0
                                                        +
                                                        134 4170| 2876| 0| 0| 0| 0 0 0 677 617 0| 0| 0
                                                        +
                                                        135 208| 70| 0| 0| 131| 0 0 0 7 0 0| 0| 0
                                                        +
                                                        180 8029| 7675| 0| 3| 28| 0 0 0 0 296 27| 0| 0
                                                        +
                                                        181 23082| 0| 0| 2158| 20892| 0 0 0 0 32 0| 0| 0
                                                        +
                                                        183 3612| 0| 0| 44| 3568| 0 0 0 0 0 0| 0| 0
                                                        +
                                                        187 42396| 0| 0| 931| 41446| 0 0 0 0 19 0| 0| 0
                                                        +
                                                        +
                                                        HEIGHT
                                                        +
                                                        +
                                                        120 10060| 9935| 0| 0| 0| 0 0 0 31 94 0| 0| 0
                                                        +
                                                        126 1169| 1169| 0| 0| 0| 0 0 0 0 0 0| 0| 0
                                                        +
                                                        130 602| 602| 0| 0| 0| 0 0 0 0 0 0| 0| 0
                                                        +
                                                        131 10321| 10321| 0| 0| 0| 0 0 0 0 0 0| 0| 0
                                                        +
                                                        133 86356| 86356| 0| 0| 0| 0 0 0 0 0 0| 0| 0
                                                        +
                                                        134 4170| 4170| 0| 0| 0| 0 0 0 0 0 0| 0| 0
                                                        +
                                                        135 208| 208| 0| 0| 0| 0 0 0 0 0 0| 0| 0
                                                        +
                                                        180 9296| 9026| 0| 0| 0| 0 0 0 0 203 67| 0| 0
                                                        +
                                                        181 23224| 21295| 0| 0| 0| 0 0 0 0 90 1839| 0| 0
                                                        +
                                                        183 3626| 3590| 0| 0| 0| 0 0 0 0 34 2| 0| 0
                                                        +
                                                        187 42698| 42411| 0| 0| 0| 0 0 0 0 286 1| 0| 0
                                                        +
                                                        220 10750| 10750| 0| 0| 0| 0 0 0 0 0 0| 0| 0
                                                        +
                                                        221 570| 570| 0| 0| 0| 0 0 0 0 0 0| 0| 0
                                                        +
                                                        224 16527| 16527| 0| 0| 0| 0 0 0 0 0 0| 0| 0
                                                        +
                                                        229 4| 4| 0| 0| 0| 0 0 0 0 0 0| 0| 0
                                                        +
                                                        230 166| 166| 0| 0| 0| 0 0 0 0 0 0| 0| 0
                                                        +
                                                        231 10319| 10319| 0| 0| 0| 0 0 0 0 0 0| 0| 0
                                                        +
                                                        233 86112| 86112| 0| 0| 0| 0 0 0 0 0 0| 0| 0
                                                        +
                                                        234 4170| 4170| 0| 0| 0| 0 0 0 0 0 0| 0| 0
                                                        +
                                                        235 208| 208| 0| 0| 0| 0 0 0 0 0 0| 0| 0
                                                        +
                                                        242 27875| 25521| 0| 0| 0| 0 0 0 2354 0 0| 0| 0
                                                        +
                                                        243 7040| 7040| 0| 0| 0| 0 0 0 0 0 0| 0| 0
                                                        +
                                                        250 58010| 52503| 0| 0| 0| 0 0 0 5507 0 0| 0| 0
                                                        +
                                                        252 53788| 48854| 0| 0| 0| 0 0 0 4934 0 0| 0| 0
                                                        +
                                                        253 13601| 13601| 0| 0| 0| 0 0 0 0 0 0| 0| 0
                                                        +
                                                        254 34156| 34156| 0| 0| 0| 0 0 0 0 0 0| 0| 0
                                                        +
                                                        257 8139| 8139| 0| 0| 0| 0 0 0 0 0 0| 0| 0
                                                        +
                                                        258 4127| 4127| 0| 0| 0| 0 0 0 0 0 0| 0| 0
                                                        +
                                                        259 5208| 5208| 0| 0| 0| 0 0 0 0 0 0| 0| 0
                                                        +
                                                        +
                                                        WIND COMPONENTS
                                                        +
                                                        +
                                                        220 39385| 38684| 0| 2| 0| 0 0 0 0 696 3| 0| 0
                                                        +
                                                        221 720| 686| 0| 0| 0| 0 0 0 0 33 1| 0| 0
                                                        +
                                                        224 16527| 13837| 0| 0| 0| 0 0 0 2690 0 0| 0| 0
                                                        +
                                                        229 4| 4| 0| 0| 0| 0 0 0 0 0 0| 0| 0
                                                        +
                                                        230 166| 148| 0| 0| 0| 0 0 0 6 12 0| 0| 0
                                                        +
                                                        231 10319| 9346| 0| 0| 0| 0 0 0 914 59 0| 0| 0
                                                        +
                                                        233 86112| 81300| 0| 0| 0| 0 0 0 4185 627 0| 0| 0
                                                        +
                                                        234 4170| 1051| 0| 0| 0| 0 0 0 1419 1700 0| 0| 0
                                                        +
                                                        235 208| 200| 0| 0| 0| 0 0 0 8 0 0| 0| 0
                                                        +
                                                        242 27875| 25521| 0| 0| 0| 0 0 0 2354 0 0| 0| 0
                                                        +
                                                        243 7040| 7040| 0| 0| 0| 0 0 0 0 0 0| 0| 0
                                                        +
                                                        250 58010| 52503| 0| 0| 0| 0 0 0 5507 0 0| 0| 0
                                                        +
                                                        252 53788| 48854| 0| 0| 0| 0 0 0 4934 0 0| 0| 0
                                                        +
                                                        253 13601| 13601| 0| 0| 0| 0 0 0 0 0 0| 0| 0
                                                        +
                                                        254 34156| 34156| 0| 0| 0| 0 0 0 0 0 0| 0| 0
                                                        +
                                                        257 8139| 8139| 0| 0| 0| 0 0 0 0 0 0| 0| 0
                                                        +
                                                        258 4127| 4115| 0| 0| 12| 0 0 0 0 0 0| 0| 0
                                                        +
                                                        259 5208| 5050| 0| 0| 158| 0 0 0 0 0 0| 0| 0
                                                        +
                                                        280 7923| 7826| 0| 30| 0| 0 0 0 0 12 55| 0| 0
                                                        +
                                                        281 22659| 0| 0| 190| 20673| 0 0 0 0 1796 0| 0| 0
                                                        +
                                                        282 192| 192| 0| 0| 0| 0 0 0 0 0 0| 0| 0
                                                        +
                                                        284 3540| 0| 0| 24| 3484| 0 0 0 0 32 0| 0| 0
                                                        +
                                                        287 40070| 0| 0| 59| 39770| 0 0 0 0 241 0| 0| 0
                                                        +
                                                        290231701|231701| 0| 0| 0| 0 0 0 0 0 0| 0| 0
                                                        +
                                                        +
                                                        PRECIPITABLE H2O
                                                        +
                                                        +
                                                        153 644| 0| 0| 0| 644| 0 0 0 0 0 0| 0| 0
                                                        +
                                                        +
                                                        RELATIVE HUMIDTY
                                                        +
                                                        +
                                                        +
                                                        ******CMPBQM PROCESSED 7066 BUFR RECORDS******
                                                        +


                                                        +

                                                        +
                                                        +

                                                        +gettab

                                                        +
                                                        A utility to read any BUFR file with embedded DX tables, and print the table.
                                                        See the source code at gettab.F90
                                                        Sample output for: gettab gdas.20200812/00/gdas.t00z.adpsfc.tm00.bufr_d
                                                        .------------------------------------------------------------------------------.
                                                        +
                                                        | ------------ USER DEFINITIONS FOR TABLE-A TABLE-B TABLE D -------------- |
                                                        +
                                                        |------------------------------------------------------------------------------|
                                                        +
                                                        | MNEMONIC | NUMBER | DESCRIPTION |
                                                        +
                                                        |----------|--------|----------------------------------------------------------|
                                                        +
                                                        | | | |
                                                        +
                                                        | NC000000 | A51001 | MTYP 000-000 SYNOPTIC-LAND, RESTRICTED (WMO RES 40) |
                                                        +
                                                        | NC000001 | A63200 | MTYP 000-001 SYNOPTIC - FIXED LAND |
                                                        +
                                                        | NC000002 | A61192 | MTYP 000-002 SYNOPTIC - MOBIL LAND |
                                                        +
                                                        | NC000007 | A63206 | MTYP 000-007 AVIATION - METAR / SPECI |
                                                        +
                                                        | NC000008 | A63247 | MTYP 000-008 NPN AND MAP PROFILER SURFACE |
                                                        +
                                                        | NC000010 | A56100 | MTYP 000-010 PRODUCTS (SHEF) NOT IN ANY OTHER TANK |
                                                        +
                                                        | NC000011 | A63214 | MTYP 000-011 AFOS PRODUCTS (PRECIP) (SHEF) |
                                                        +
                                                        | NC000012 | A63215 | MTYP 000-012 SUPPLEMENTARY CLIMATOLOGICAL DATA |
                                                        +
                                                        | NC000020 | A56250 | MTYP 000-020 WIND ENERGY NACELLE, RESTRICTED |
                                                        +
                                                        | NC000100 | A51050 | MTYP 000-100 SYNOPTIC - FIXED LAND (BUFR) (WMO RES 40) |
                                                        +
                                                        | NC000101 | A51051 | MTYP 000-101 SYNOPTIC - FIXED LAND (BUFR) |
                                                        +
                                                        | NC000102 | A51052 | MTYP 000-102 SYNOPTIC - MOBIL LAND (BUFR) |
                                                        +
                                                        | | | |
                                                        +
                                                        | SFCSTNID | 301004 | SURFACE STATION IDENTIFICATION |
                                                        +
                                                        | YYMMDD | 301011 | DATE -- YEAR, MONTH, DAY |
                                                        +
                                                        | HHMM | 301012 | TIME -- HOUR, MINUTE |
                                                        +
                                                        | HHMMSS | 301013 | TIME -- HOUR, MINUTE, SECOND |
                                                        +
                                                        | LTLONH | 301021 | LOCATION -- LATITUDE, LONGITUDE (HIGH ACCURACY) |
                                                        +
                                                        | LALOLV | 301024 | LOCATION -- LATITUDE, LONGITUDE, ELEVATION |
                                                        +
                                                        | SFIDTIME | 301090 | SURFACE STATION IDENTIFICATION, TIME AND LOCATION |
                                                        +
                                                        | MOBIDENT | 301092 | MOBILE SURFACE STATION IDENTIFICATION, DATE/TIME, HORIZ |
                                                        +
                                                        | WIGOSID | 301150 | WIGOS IDENTIFIER |
                                                        +
                                                        | PRESSQ03 | 302001 | |
                                                        +
                                                        | GENCLOUD | 302004 | GENERAL CLOUD INFORMATION |
                                                        +
                                                        | PRESDATA | 302031 | PRESSURE INFORMATION |
                                                        +
                                                        | PWEATHER | 302038 | PRESENT AND PAST WEATHER |
                                                        +
                                                        | DIRCLDFT | 302047 | DIRECTION OF CLOUD DRIFT |
                                                        +
                                                        | VISBSEQN | 302069 | VISIBILITY DATA |
                                                        +
                                                        | TEMHUMDA | 302072 | TEMPERATURE AND HUMIDITY DATA |
                                                        +
                                                        | STGDSNDM | 302078 | STATE OF GROUND AND SNOW DEPTH MEASUREMENT |
                                                        +
                                                        | FILENAME | 352004 | FILE NAME SEQUENCE |
                                                        +
                                                        | SHTPMOSQ | 356101 | SHEF TIME PERIOD SEQUENCE (MONTHS) |
                                                        +
                                                        | SHTPHRSQ | 356102 | SHEF TIME PERIOD SEQUENCE (HOURS) |
                                                        +
                                                        | SHTPMISQ | 356103 | SHEF TIME PERIOD SEQUENCE (MINUTES) |
                                                        +
                                                        | SHPRESSQ | 356104 | SHEF PRESSURE SEQUENCE |
                                                        +
                                                        | SHPMSLSQ | 356105 | SHEF PRESSURE (MSL) SEQUENCE |
                                                        +


                                                        +

                                                        +
                                                        +

                                                        +split_by_subset

                                                        +
                                                        A utility to read any BUFR file and split it into separate BUFR files based on message subset type. To preview which files will be produced (one for each m/s type) use binv (documented above).
                                                        See the source code at split_by_subset.F90
                                                        Usage: split_by_subset gdas.20200812/00/gdas.t00z.satwnd.tm00.bufr_d


                                                        +

                                                        +
                                                        +

                                                        +xbfmg

                                                        +
                                                        This program splits a single file containing one or more BUFR messages into one or more BUFR files each containing a single BUFR message. The output BUFR files are written to the current working directory, according to a pre-defined naming convention as described below.
                                                        +Usage:
                                                        +
                                                        +   xbfmg [-v] [-h] [-g] bufrfile
                                                        +
                                                        +     where:
                                                        +       -v        prints version information and exits
                                                        +
                                                        +       -h        prints program help and usage information and exits
                                                        +
                                                        +       -g        preserves within each output file any GTS bulletin header and control
                                                        +                 characters associated with the corresponding BUFR message from the
                                                        +                 input file
                                                        +
                                                        +       bufrfile  [path/]name of input file containing one or more BUFR messages to be
                                                        +                 extracted into separate output files within the current working directory
                                                        +
                                                        +   The output will be stored within the current working directory using the
                                                        +   following filenames:
                                                        +
                                                        +       (basename).xbfmg.out.000001
                                                        +       (basename).xbfmg.out.000002
                                                        +       (basename).xbfmg.out.000003
                                                        +         and so on, up through 
                                                        +       (basename).xbfmg.out.(last#)
                                                        +
                                                        +   where:
                                                        +
                                                        +       (basename) = basename of bufrfile
                                                        +
                                                        +       (last#) = total number of BUFR messages in bufrfile
                                                        +
                                                        See the source code at xbfmg.c


                                                        +

                                                        +
                                                        +

                                                        +apxdx

                                                        +
                                                        This program generates BUFR messages corresponding to a given DX BUFR table and appends them to a given BUFR file.
                                                        +Usage:
                                                        +
                                                        +   apxdx BUFRfile DXtable
                                                        +
                                                        +     where:
                                                        +
                                                        +       BUFRfile  [path/]name of BUFR file, to which BUFR messages corresponding to DXtable are
                                                        +                 to be appended
                                                        +
                                                        +       DXtable   [path/]name of DX BUFR table
                                                        +
                                                        See the source code at apxdx.F90
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/memmsgs_8F90.html b/previous_versions/v12.1.0/memmsgs_8F90.html new file mode 100644 index 000000000..25587053d --- /dev/null +++ b/previous_versions/v12.1.0/memmsgs_8F90.html @@ -0,0 +1,832 @@ + + + + + + + +NCEPLIBS-bufr: memmsgs.F90 File Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        memmsgs.F90 File Reference
                                                        +
                                                        +
                                                        + +

                                                        Read and process BUFR messages within internal memory arrays. +More...

                                                        + +

                                                        Go to the source code of this file.

                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                                                        +Functions/Subroutines

                                                        subroutine cpdxmm (lunit)
                                                         Read an entire DX BUFR table from a specified file into internal memory arrays. More...
                                                         
                                                        recursive integer function ireadmm (imsg, subset, idate)
                                                         Call subroutine readmm() and pass back its return code as the function value. More...
                                                         
                                                        recursive subroutine rdmemm (imsg, subset, jdate, iret)
                                                         Read a specified BUFR message from internal arrays in memory, so that it is now in scope for processing via a subsequent call to subroutine rdmems(). More...
                                                         
                                                        recursive subroutine rdmems (isub, iret)
                                                         Read a specified data subset from the BUFR message that was most recently read via a call to subroutine rdmemm() or readmm(). More...
                                                         
                                                        recursive subroutine readmm (imsg, subset, jdate, iret)
                                                         Read a specified BUFR message from internal arrays in memory, so that it is now in scope for processing via a subsequent call to subroutine rdmems(). More...
                                                         
                                                        recursive subroutine ufbmem (lunit, inew, iret, iunit)
                                                         Connect a new file to the NCEPLIBS-bufr software for input operations, then read the entire file contents into internal arrays so that any of the individual BUFR messages can later be accessed from memory, instead of having to read them one at a time sequentially from the file. More...
                                                         
                                                        recursive subroutine ufbmex (lunit, lundx, inew, iret, mesg)
                                                         Connect a new file to the NCEPLIBS-bufr software for input operations, then read the entire file contents into internal arrays so that any of the individual BUFR messages can later be accessed from memory, instead of having to read them one at a time sequentially from the file. More...
                                                         
                                                        recursive subroutine ufbmms (imsg, isub, subset, jdate)
                                                         Read a specified data subset from internal arrays. More...
                                                         
                                                        recursive subroutine ufbmns (irep, subset, idate)
                                                         Read a specified data subset from internal arrays in memory, so that it is now in scope for processing via calls to any of the values-reading subroutines using the Fortran logical unit number iunit that was returned from the most recent call to subroutine ufbmem(). More...
                                                         
                                                        recursive subroutine ufbrms (imsg, isub, usr, i1, i2, iret, str)
                                                         Read one or more data values from a data subset in internal arrays. More...
                                                         
                                                        recursive subroutine ufbtam (tab, i1, i2, iret, str)
                                                         Read through every data subset in internal arrays and return one or more specified data values from each subset. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Read and process BUFR messages within internal memory arrays.

                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition in file memmsgs.F90.

                                                        +

                                                        Function/Subroutine Documentation

                                                        + +

                                                        ◆ cpdxmm()

                                                        + +
                                                        +
                                                        + + + + + + + + +
                                                        subroutine cpdxmm (integer, intent(in) lunit)
                                                        +
                                                        + +

                                                        Read an entire DX BUFR table from a specified file into internal memory arrays.

                                                        +
                                                        Parameters
                                                        + + +
                                                        lunit- Fortran logical unit number for BUFR file
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2009-03-23
                                                        + +

                                                        Definition at line 729 of file memmsgs.F90.

                                                        + +

                                                        References bort(), errwrt(), moda_msgmem::icdxts, moda_msgmem::ifdxts, moda_msgmem::ipdxm, moda_msgmem::ipmsgs, moda_msgmem::ldxm, moda_msgmem::mdx, moda_mgwa::mgwa, moda_msgmem::msgp, moda_msgmem::mxdxm, moda_msgmem::mxdxw, moda_msgmem::ndxm, moda_msgmem::ndxts, rdmsgw(), and status().

                                                        + +

                                                        Referenced by ufbmem().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ ireadmm()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        recursive integer function ireadmm (integer, intent(inout) imsg,
                                                        character*8, intent(out) subset,
                                                        integer, intent(out) idate 
                                                        )
                                                        +
                                                        + +

                                                        Call subroutine readmm() and pass back its return code as the function value.

                                                        +

                                                        The use of this function allows the return code from readmm() to be used as the target variable within an iterative program loop.

                                                        +
                                                        Parameters
                                                        + + + + +
                                                        imsg- Message pointer within internal arrays:
                                                          +
                                                        • On input, imsg is the number of the BUFR message to be read into scope for further processing, counting from the beginning of the internal arrays in memory
                                                            +
                                                          • On output, imsg is incremented by one from its input value
                                                          • +
                                                          +
                                                        • +
                                                        +
                                                        subset- Table A mnemonic for type of BUFR message that was read into scope (see DX BUFR Tables for further information about Table A mnemonics)
                                                        idate- Date-time stored within Section 1 of BUFR message that was read into scope, in format of either YYMMDDHH or YYYYMMDDHH, depending on the most recent call to subroutine datelen()
                                                        +
                                                        +
                                                        +
                                                        Returns
                                                        ireadmm - return code:
                                                          +
                                                        • 0 new BUFR message was successfully read into scope
                                                        • +
                                                        • -1 requested message number could not be found in internal arrays
                                                        • +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1999-11-18
                                                        + +

                                                        Definition at line 433 of file memmsgs.F90.

                                                        + +

                                                        References readmm(), x48(), and x84().

                                                        + +

                                                        Referenced by ufbmns().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ rdmemm()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        recursive subroutine rdmemm (integer, intent(in) imsg,
                                                        character*8, intent(out) subset,
                                                        integer, intent(out) jdate,
                                                        integer, intent(out) iret 
                                                        )
                                                        +
                                                        + +

                                                        Read a specified BUFR message from internal arrays in memory, so that it is now in scope for processing via a subsequent call to subroutine rdmems().

                                                        +

                                                        BUFR messages should already be stored within internal arrays in memory via one or more previous calls to subroutine ufbmem().

                                                        +

                                                        This subroutine is similar to subroutine readmm(), except that readmm() also increments the value of imsg prior to returning to the calling program, which in turn allows it to be easily called within an iterative program loop.

                                                        +
                                                        Parameters
                                                        + + + + + +
                                                        imsg- Number of BUFR message to be read into scope for further processing, counting from the beginning of the internal arrays in memory
                                                        subset- Table A mnemonic for type of BUFR message that was read into scope (see DX BUFR Tables for further information about Table A mnemonics)
                                                        jdate- Date-time stored within Section 1 of BUFR message that was read into scope, in format of either YYMMDDHH or YYYYMMDDHH, depending on the most recent call to subroutine datelen()
                                                        iret- return code:
                                                          +
                                                        • 0 = requested message was successfully read into scope
                                                        • +
                                                        • -1 = requested message number could not be found in internal arrays
                                                        • +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 486 of file memmsgs.F90.

                                                        + +

                                                        References bort(), cktaba(), dxinit(), errwrt(), moda_msgmem::icdxts, moda_msgmem::ifdxts, moda_msgmem::ipdxm, moda_msgmem::ipmsgs, moda_msgmem::ldxm, moda_msgmem::ldxts, makestab(), moda_bitbuf::mbay, moda_msgmem::mdx, moda_mgwa::mgwa, moda_msgmem::mlast, moda_msgmem::msgp, moda_msgmem::msgs, moda_msgmem::munit, moda_msgmem::ndxm, moda_msgmem::ndxts, moda_msgcwd::nmsg, status(), stbfdx(), wtstat(), x48(), and x84().

                                                        + +

                                                        Referenced by readmm(), ufbmms(), ufbrms(), and ufbtam().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ rdmems()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        recursive subroutine rdmems (integer, intent(in) isub,
                                                        integer, intent(out) iret 
                                                        )
                                                        +
                                                        + +

                                                        Read a specified data subset from the BUFR message that was most recently read via a call to subroutine rdmemm() or readmm().

                                                        +

                                                        Whenever this subroutine returns with iret = 0, this indicates that a new BUFR data subset (i.e. report) was successfully read into internal arrays within the NCEPLIBS-bufr software, and from where it can now be easily manipulated or further parsed via calls to any of the values-reading subroutines using the Fortran logical unit number IUNIT that was returned from the most recent call to subroutine ufbmem().

                                                        +
                                                        Parameters
                                                        + + + +
                                                        isub- Number of data subset to be read from BUFR message, counting from the beginning of the message
                                                        iret- return code:
                                                          +
                                                        • 0 = requested data subset was successfully read
                                                        • +
                                                        • -1 = requested subset number could not be found in the message
                                                        • +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 634 of file memmsgs.F90.

                                                        + +

                                                        References bort(), errwrt(), iupb(), moda_bitbuf::mbay, moda_bitbuf::mbyt, moda_unptyp::msgunp, moda_msgcwd::msub, moda_msgmem::munit, moda_msgcwd::nsub, readsb(), status(), x48(), and x84().

                                                        + +

                                                        Referenced by ufbmms(), ufbmns(), and ufbrms().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ readmm()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        recursive subroutine readmm (integer, intent(inout) imsg,
                                                        character*8, intent(out) subset,
                                                        integer, intent(out) jdate,
                                                        integer, intent(out) iret 
                                                        )
                                                        +
                                                        + +

                                                        Read a specified BUFR message from internal arrays in memory, so that it is now in scope for processing via a subsequent call to subroutine rdmems().

                                                        +

                                                        BUFR messages should already be stored within internal arrays in memory via one or more previous calls to subroutine ufbmem().

                                                        +

                                                        This subroutine is similar to subroutine rdmemm(), except that this subroutine increments the value of imsg prior to returning to the calling program, which in turn allows it to be easily called within an iterative program loop.

                                                        +
                                                        Parameters
                                                        + + + + + +
                                                        imsg- Message pointer within internal arrays:
                                                          +
                                                        • On input, imsg is the number of the BUFR message to be read into scope for further processing, counting from the beginning of the internal arrays in memory
                                                        • +
                                                        • On output, imsg is incremented by one from its input value
                                                        • +
                                                        +
                                                        subset- Table A mnemonic for type of BUFR message that was read into scope (see DX BUFR Tables for further information about Table A mnemonics)
                                                        jdate- Date-time stored within Section 1 of BUFR message that was read into scope, in format of either YYMMDDHH or YYYYMMDDHH, depending on the most recent call to subroutine datelen()
                                                        iret- return code:
                                                          +
                                                        • 0 = requested message was successfully read into scope
                                                        • +
                                                        • -1 = requested message number could not be found in internal arrays
                                                        • +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1999-11-18
                                                        + +

                                                        Definition at line 381 of file memmsgs.F90.

                                                        + +

                                                        References rdmemm(), x48(), and x84().

                                                        + +

                                                        Referenced by ireadmm().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ ufbmem()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        recursive subroutine ufbmem (integer, intent(in) lunit,
                                                        integer, intent(in) inew,
                                                        integer, intent(out) iret,
                                                        integer, intent(out) iunit 
                                                        )
                                                        +
                                                        + +

                                                        Connect a new file to the NCEPLIBS-bufr software for input operations, then read the entire file contents into internal arrays so that any of the individual BUFR messages can later be accessed from memory, instead of having to read them one at a time sequentially from the file.

                                                        +

                                                        Any embedded DX BUFR tables contained within the file are also read and processed into separate internal arrays for later use.

                                                        +

                                                        Logical unit number lunit must already be associated with an actual filename on the local system, typically via a Fortran "OPEN" statement.

                                                        +

                                                        When inew = 0, the output value iunit will be set equal to the input value lunit. Otherwise, the output value iunit will be set to the value of lunit that was input when this subroutine was previously called with inew = 0, and the system file connected to lunit will be closed via an internal call to subroutine closbf() before exiting this subroutine. In either case, iunit can now be used to access all BUFR messages that were read and stored by all previous calls to this subroutine.

                                                        +
                                                        Parameters
                                                        + + + + + +
                                                        lunit- Fortran logical unit number for BUFR file
                                                        inew- Processing option:
                                                          +
                                                        • 0 = Initialize the internal arrays, then read all BUFR messages from lunit into internal arrays
                                                        • +
                                                        • Otherwise, read all BUFR messages from lunit and append them to the existing messages within the internal arrays
                                                        • +
                                                        +
                                                        iret- Number of BUFR messages that were read from lunit and stored into internal arrays
                                                        iunit- File status:
                                                          +
                                                        • 0 = lunit was empty, so no messages were read
                                                        • +
                                                        • Otherwise, the Fortran logical unit number to use for later access to any of the messages from the internal arrays
                                                        • +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 38 of file memmsgs.F90.

                                                        + +

                                                        References bort(), closbf(), cpdxmm(), errwrt(), idxmsg(), moda_msgmem::ldxm, moda_msgmem::ldxts, moda_mgwa::mgwa, moda_msgmem::mlast, moda_msgmem::msgp, moda_msgmem::msgs, moda_msgmem::munit, moda_msgmem::ndxm, moda_msgmem::ndxts, nmwrd(), openbf(), rdmsgw(), status(), x48(), and x84().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ ufbmex()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        recursive subroutine ufbmex (integer, dimension(*), intent(in) lunit,
                                                        integer, dimension(*), intent(in) lundx,
                                                        integer, dimension(*), intent(in) inew,
                                                        integer, dimension(*), intent(out) iret,
                                                        integer, dimension(*), intent(out) mesg 
                                                        )
                                                        +
                                                        + +

                                                        Connect a new file to the NCEPLIBS-bufr software for input operations, then read the entire file contents into internal arrays so that any of the individual BUFR messages can later be accessed from memory, instead of having to read them one at a time sequentially from the file.

                                                        +

                                                        This subroutine is similar to subroutine ufbmem(), except that instead of a file status it returns an array of message types that were read in. Furthermore, this subroutine doesn't process any embedded DX BUFR tables contained within the file; instead, it provides an additional call argument lundx to allow for specification of the necessary DX BUFR table information associated with the messages in the file.

                                                        +

                                                        Logical unit numbers lunit and lundx must already be associated with actual filenames on the local system, typically via a Fortran "OPEN" statement.

                                                        +
                                                        Parameters
                                                        + + + + + + +
                                                        lunit- Fortran logical unit number for BUFR file
                                                        lundx- Fortran logical unit number containing DX BUFR table information associated with BUFR messages in lunit
                                                        inew- Processing option:
                                                          +
                                                        • 0 = Initialize the internal arrays, then read all BUFR messages from lunit into internal arrays
                                                        • +
                                                        • Otherwise, read all BUFR messages from lunit and append them to the existing messages within the internal arrays
                                                        • +
                                                        +
                                                        iret- Number of BUFR messages that were read from lunit and stored into internal arrays
                                                        mesg- Types of BUFR messages that were read from lunit and stored into internal arrays
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        2012-01-26
                                                        + +

                                                        Definition at line 216 of file memmsgs.F90.

                                                        + +

                                                        References bort(), closbf(), errwrt(), moda_msgmem::ipmsgs, iupbs01(), moda_msgmem::ldxm, moda_msgmem::ldxts, moda_mgwa::mgwa, moda_msgmem::mlast, moda_msgmem::msgp, moda_msgmem::msgs, moda_msgmem::munit, moda_msgmem::ndxm, moda_msgmem::ndxts, nmwrd(), openbf(), rdmsgw(), x48(), and x84().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ ufbmms()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        recursive subroutine ufbmms (integer, intent(in) imsg,
                                                        integer, intent(in) isub,
                                                        character*8, intent(out) subset,
                                                        integer, intent(out) jdate 
                                                        )
                                                        +
                                                        + +

                                                        Read a specified data subset from internal arrays.

                                                        +

                                                        This subroutine provides a handy way to combine the functionality of subroutines rdmemm() and rdmems() within a single subroutine call.

                                                        +

                                                        Whenever this subroutine returns successfully, the requested data subset can now be easily manipulated or further parsed via calls to any of the values-reading subroutines using the Fortran logical unit number iunit that was returned from the most recent call to subroutine ufbmem().

                                                        +
                                                        Parameters
                                                        + + + + + +
                                                        imsg- Number of BUFR message to be read into scope for further processing, counting from the beginning of the internal arrays in memory
                                                        isub- Number of data subset to be read from the (imsg)th BUFR message, counting from the beginning of the message
                                                        subset- Table A mnemonic for type of (imsg)th BUFR message (see DX BUFR Tables for further information about Table A mnemonics)
                                                        jdate- Date-time stored within Section 1 of (imsg)th BUFR message, in format of either YYMMDDHH or YYYYMMDDHH, depending on the most recent call to subroutine datelen()
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 839 of file memmsgs.F90.

                                                        + +

                                                        References bort(), moda_msgmem::msgp, moda_msgcwd::msub, moda_msgmem::munit, rdmemm(), rdmems(), status(), x48(), and x84().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ ufbmns()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        recursive subroutine ufbmns (integer, intent(in) irep,
                                                        character*8, intent(out) subset,
                                                        integer, intent(out) idate 
                                                        )
                                                        +
                                                        + +

                                                        Read a specified data subset from internal arrays in memory, so that it is now in scope for processing via calls to any of the values-reading subroutines using the Fortran logical unit number iunit that was returned from the most recent call to subroutine ufbmem().

                                                        +

                                                        This subroutine does not return any information about which BUFR message within the internal arrays contained the specified data subset.

                                                        +
                                                        Parameters
                                                        + + + + +
                                                        irep- Number of data subset to be read into scope for further processing, counting from the beginning of the internal arrays in memory
                                                        subset- Table A mnemonic for type of BUFR message that was read into scope (see DX BUFR Tables for further information about Table A mnemonics)
                                                        idate- Date-time stored within Section 1 of BUFR message that was read into scope, in format of either YYMMDDHH or YYYYMMDDHH, depending on the most recent call to subroutine datelen()
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 910 of file memmsgs.F90.

                                                        + +

                                                        References bort(), ireadmm(), moda_msgmem::munit, nmsub(), rdmems(), x48(), and x84().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ ufbrms()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        recursive subroutine ufbrms (integer, intent(in) imsg,
                                                        integer, intent(in) isub,
                                                        real*8, dimension(i1,i2), intent(out) usr,
                                                        integer, intent(in) i1,
                                                        integer, intent(in) i2,
                                                        integer, intent(out) iret,
                                                        character*(*), intent(in) str 
                                                        )
                                                        +
                                                        + +

                                                        Read one or more data values from a data subset in internal arrays.

                                                        +

                                                        This subroutine provides a handy way to combine the functionality of subroutines rdmemm(), rdmems() and ufbint() within a single subroutine call.

                                                        +
                                                        Parameters
                                                        + + + + + + + + +
                                                        imsg- Number of BUFR message to be read into scope for further processing, counting from the beginning of the internal arrays in memory
                                                        isub- Number of data subset to be read from the (imsg)th BUFR message, counting from the beginning of the message
                                                        usr- Data values
                                                        i1- First dimension of usr as allocated within the calling program
                                                        i2- Second dimension of usr as allocated within the calling program
                                                        iret- Number of replications of str that were read from the data subset
                                                        str- String of blank-separated Table B mnemonics in one-to-one correspondence with the number of data values that will be read from the data subset within the first dimension of usr (see DX BUFR Tables for further information about Table B mnemonics)
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 976 of file memmsgs.F90.

                                                        + +

                                                        References bort(), errwrt(), moda_msgmem::msgp, moda_msgcwd::msub, moda_msgmem::munit, rdmemm(), rdmems(), status(), ufbint(), x48(), and x84().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ ufbtam()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        recursive subroutine ufbtam (real*8, dimension(i1,i2), intent(out) tab,
                                                        integer, intent(in) i1,
                                                        integer, intent(in) i2,
                                                        integer, intent(out) iret,
                                                        character*(*), intent(in) str 
                                                        )
                                                        +
                                                        + +

                                                        Read through every data subset in internal arrays and return one or more specified data values from each subset.

                                                        +

                                                        This provides a useful way to scan the ranges of one or more specified data values across all of the data subsets in the internal arrays. It is similar to subroutine ufbtab(), except that ufbtab() works on data subsets in a BUFR file.

                                                        +

                                                        It is the user's responsibility to ensure that TAB is dimensioned sufficiently large enough to accommodate the number of data values that are to be read from the internal arrays. Specifically, each row of TAB will contain the data values read from a different data subset, so the value I2 must be at least as large as the total number of data subsets in the internal arrays.

                                                        +

                                                        The internal arrays must have already been populated via a previous call to subroutine ufbmem().

                                                        +

                                                        There are a few additional special mnemonics that can be included within str when calling this subroutine, and which in turn will result in special information being returned within the corresponding location in tab:

                                                          +
                                                        • IREC - returns the number of the BUFR message within the internal arrays (counting from the beginning of the internal arrays) in which the current data subset resides.
                                                        • +
                                                        • ISUB - returns the number of the current data subset within the BUFR message pointed to by IREC, counting from the beginning of the message.
                                                        • +
                                                        • ITBL - returns the number of the DX BUFR table that is in scope for the current data subset.
                                                        • +
                                                        +

                                                        This subroutine will not work on compressed data subsets.

                                                        +
                                                        Parameters
                                                        + + + + + + +
                                                        tab- Data values
                                                        i1- First dimension of tab as allocated within the calling program
                                                        i2- Second dimension of tab as allocated within the calling program
                                                        iret- Number of data subsets in internal arrays
                                                        str- String of blank-separated Table B mnemonics, in one-to-one correspondence with the number of data values that will be read from each data subset within the first dimension of tab (see DX BUFR Tables for further information about Table B mnemonics)
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 1102 of file memmsgs.F90.

                                                        + +

                                                        References bort(), errwrt(), moda_bitbuf::ibit, moda_tables::ibt, moda_usrint::inv, moda_tables::itp, moda_msgmem::ldxts, moda_bitbuf::mbay, moda_bitbuf::mbyt, moda_msgmem::msgp, moda_msgcwd::msub, moda_msgmem::munit, moda_msgcwd::nmsg, nmsub(), moda_msgcwd::nsub, moda_usrint::nval, parstr(), rdmemm(), status(), string(), upb(), upb8(), upc(), ups(), usrtpl(), x48(), and x84().

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/memmsgs_8F90.js b/previous_versions/v12.1.0/memmsgs_8F90.js new file mode 100644 index 000000000..0ec340338 --- /dev/null +++ b/previous_versions/v12.1.0/memmsgs_8F90.js @@ -0,0 +1,14 @@ +var memmsgs_8F90 = +[ + [ "cpdxmm", "memmsgs_8F90.html#a28854648f33f49aaeb3b2209e00c0ae7", null ], + [ "ireadmm", "memmsgs_8F90.html#afa09c66c60b22359e9642fa6eee8fcbb", null ], + [ "rdmemm", "memmsgs_8F90.html#a379c2ad518735b00eecff6ddcf32b278", null ], + [ "rdmems", "memmsgs_8F90.html#a2687d7372647fc32c4713c7e9eb6d268", null ], + [ "readmm", "memmsgs_8F90.html#a6bbcaf22a939d766b7de35ff855531c5", null ], + [ "ufbmem", "memmsgs_8F90.html#a4959c5f16b679cf4f90b2d5dcfe74247", null ], + [ "ufbmex", "memmsgs_8F90.html#a9072ba79bf636849068780fa6467282c", null ], + [ "ufbmms", "memmsgs_8F90.html#af0432ae9b24903a84c35bcdbbab9b0f6", null ], + [ "ufbmns", "memmsgs_8F90.html#ab44b6a9dd950697675861504ccb24a83", null ], + [ "ufbrms", "memmsgs_8F90.html#ae3e462b1a3f2d5af01807bdcded6a745", null ], + [ "ufbtam", "memmsgs_8F90.html#aef5cd104e2b7ce86e852e4878c8efc9d", null ] +]; \ No newline at end of file diff --git a/previous_versions/v12.1.0/memmsgs_8F90_source.html b/previous_versions/v12.1.0/memmsgs_8F90_source.html new file mode 100644 index 000000000..be46fa38c --- /dev/null +++ b/previous_versions/v12.1.0/memmsgs_8F90_source.html @@ -0,0 +1,1203 @@ + + + + + + + +NCEPLIBS-bufr: memmsgs.F90 Source File + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        +
                                                        memmsgs.F90
                                                        +
                                                        +
                                                        +Go to the documentation of this file.
                                                        1 
                                                        +
                                                        5 
                                                        +
                                                        38 recursive subroutine ufbmem(lunit,inew,iret,iunit)
                                                        +
                                                        39 
                                                        +
                                                        40  use bufrlib
                                                        +
                                                        41 
                                                        +
                                                        42  use modv_vars, only: im8b, maxmem, maxmsg
                                                        +
                                                        43 
                                                        +
                                                        44  use moda_mgwa
                                                        +
                                                        45  use moda_msgmem
                                                        +
                                                        46 
                                                        +
                                                        47  implicit none
                                                        +
                                                        48 
                                                        +
                                                        49  integer, intent(in) :: lunit, inew
                                                        +
                                                        50  integer, intent(out) :: iret, iunit
                                                        +
                                                        51  integer iprt, my_lunit, my_inew, iflg, itim, lun, il, im, itemp, ier, nmsg, lmem, i, mlast0, idxmsg, nmwrd
                                                        +
                                                        52 
                                                        +
                                                        53  character*128 bort_str, errstr
                                                        +
                                                        54 
                                                        +
                                                        55  common /quiet/ iprt
                                                        +
                                                        56 
                                                        +
                                                        57  ! Check for I8 integers
                                                        +
                                                        58 
                                                        +
                                                        59  if(im8b) then
                                                        +
                                                        60  im8b=.false.
                                                        +
                                                        61 
                                                        +
                                                        62  call x84(lunit,my_lunit,1)
                                                        +
                                                        63  call x84(inew,my_inew,1)
                                                        +
                                                        64  call ufbmem(my_lunit,my_inew,iret,iunit)
                                                        +
                                                        65  call x48(iret,iret,1)
                                                        +
                                                        66  call x48(iunit,iunit,1)
                                                        +
                                                        67 
                                                        +
                                                        68  im8b=.true.
                                                        +
                                                        69  return
                                                        +
                                                        70  endif
                                                        +
                                                        71 
                                                        +
                                                        72  ! Try to open BUFR file and set to initialize or concatenate
                                                        +
                                                        73 
                                                        +
                                                        74  call openbf(lunit,'IN',lunit)
                                                        +
                                                        75 
                                                        +
                                                        76  if(inew==0) then
                                                        +
                                                        77  msgp(0) = 0
                                                        +
                                                        78  munit = 0
                                                        +
                                                        79  mlast = 0
                                                        +
                                                        80  ndxts = 0
                                                        +
                                                        81  ldxts = 0
                                                        +
                                                        82  ndxm = 0
                                                        +
                                                        83  ldxm = 0
                                                        +
                                                        84  endif
                                                        +
                                                        85 
                                                        +
                                                        86  nmsg = msgp(0)
                                                        +
                                                        87  iret = 0
                                                        +
                                                        88  iflg = 0
                                                        +
                                                        89  itim = 0
                                                        +
                                                        90 
                                                        +
                                                        91  ! Copy any BUFR dictionary table messages from the beginning of lunit into @ref moda_msgmem for possible later use.
                                                        +
                                                        92  ! Note that such a table (if one exists) is already now in scope due to the prior call to subroutine openbf(), which
                                                        +
                                                        93  ! in turn would have automatically called subroutines readdx(), rdbfdx() and makestab() for this table.
                                                        +
                                                        94 
                                                        +
                                                        95  itemp = ndxts
                                                        +
                                                        96  call status(lunit,lun,il,im)
                                                        +
                                                        97  call cewind_c(lun)
                                                        +
                                                        98  call cpdxmm(lunit)
                                                        +
                                                        99 
                                                        +
                                                        100  ! If a table was indeed present at the beginning of the file, then set the flag to indicate that this table is now in scope.
                                                        +
                                                        101 
                                                        +
                                                        102  if ((itemp+1)==ndxts) ldxts = ndxts
                                                        +
                                                        103 
                                                        +
                                                        104  ! Transfer messages from file to memory and set message pointers
                                                        +
                                                        105 
                                                        +
                                                        106  do while (.true.)
                                                        +
                                                        107  call rdmsgw(lunit,mgwa,ier)
                                                        +
                                                        108  if(ier==-1) exit
                                                        +
                                                        109  if(ier==-2) then
                                                        +
                                                        110  write(bort_str,'("BUFRLIB: UFBMEM - ERROR READING MESSAGE NUMBER",I5," INTO MEMORY FROM UNIT",I3)') nmsg+1,lunit
                                                        +
                                                        111  call bort(bort_str)
                                                        +
                                                        112  endif
                                                        +
                                                        113 
                                                        +
                                                        114  if(idxmsg(mgwa)==1) then
                                                        +
                                                        115  ! New "embedded" BUFR dictionary table messages have been found in this file. Copy them into @ref moda_msgmem
                                                        +
                                                        116  ! for later use.
                                                        +
                                                        117  call backbufr_c(lun) ! Backspace lunit
                                                        +
                                                        118  call cpdxmm(lunit)
                                                        +
                                                        119  cycle
                                                        +
                                                        120  endif
                                                        +
                                                        121 
                                                        +
                                                        122  nmsg = nmsg+1
                                                        +
                                                        123  if(nmsg>maxmsg) iflg = 1
                                                        +
                                                        124  lmem = nmwrd(mgwa)
                                                        +
                                                        125  if(lmem+mlast>maxmem) iflg = 2
                                                        +
                                                        126 
                                                        +
                                                        127  if(iflg==0) then
                                                        +
                                                        128  iret = iret+1
                                                        +
                                                        129  do i=1,lmem
                                                        +
                                                        130  msgs(mlast+i) = mgwa(i)
                                                        +
                                                        131  enddo
                                                        +
                                                        132  msgp(0) = nmsg
                                                        +
                                                        133  msgp(nmsg) = mlast+1
                                                        +
                                                        134  else
                                                        +
                                                        135  if(itim==0) then
                                                        +
                                                        136  mlast0 = mlast
                                                        +
                                                        137  itim=1
                                                        +
                                                        138  endif
                                                        +
                                                        139  endif
                                                        +
                                                        140  mlast = mlast+lmem
                                                        +
                                                        141  enddo
                                                        +
                                                        142 
                                                        +
                                                        143  if(iflg==1) then
                                                        +
                                                        144  ! Emergency room treatment for maxmsg array overflow
                                                        +
                                                        145  if(iprt>=0) then
                                                        +
                                                        146  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        147  write ( unit=errstr, fmt='(A,A,I8,A)' ) 'BUFRLIB: UFBMEM - THE NO. OF MESSAGES REQUIRED TO STORE ', &
                                                        +
                                                        148  'ALL MESSAGES INTERNALLY EXCEEDS MAXIMUM (', maxmsg, ') - INCOMPLETE READ'
                                                        +
                                                        149  call errwrt(errstr)
                                                        +
                                                        150  write ( unit=errstr, fmt='(A,I8,A,I8,A)' ) '>>>UFBMEM STORED ', msgp(0), ' MESSAGES OUT OF ', nmsg, '<<<'
                                                        +
                                                        151  call errwrt(errstr)
                                                        +
                                                        152  write ( unit=errstr, fmt='(A,I8,A,I8,A)' ) '>>>UFBMEM STORED ', mlast0, ' BYTES OUT OF ', mlast, '<<<'
                                                        +
                                                        153  call errwrt(errstr)
                                                        +
                                                        154  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        155  call errwrt(' ')
                                                        +
                                                        156  endif
                                                        +
                                                        157  mlast=mlast0
                                                        +
                                                        158  endif
                                                        +
                                                        159 
                                                        +
                                                        160  if(iflg==2) then
                                                        +
                                                        161  ! Emergency room treatment for maxmem array overflow
                                                        +
                                                        162  if(iprt>=0) then
                                                        +
                                                        163  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        164  write ( unit=errstr, fmt='(A,A,I8,A)' ) 'BUFRLIB: UFBMEM - THE NO. OF BYTES REQUIRED TO STORE ', &
                                                        +
                                                        165  'ALL MESSAGES INTERNALLY EXCEEDS MAXIMUM (', maxmem, ') - INCOMPLETE READ'
                                                        +
                                                        166  call errwrt(errstr)
                                                        +
                                                        167  write ( unit=errstr, fmt='(A,I8,A,I8,A)' ) '>>>UFBMEM STORED ', mlast0, ' BYTES OUT OF ', mlast, '<<<'
                                                        +
                                                        168  call errwrt(errstr)
                                                        +
                                                        169  write ( unit=errstr, fmt='(A,I8,A,I8,A)' ) '>>>UFBMEM STORED ', msgp(0), ' MESSAGES OUT OF ', nmsg, '<<<'
                                                        +
                                                        170  call errwrt(errstr)
                                                        +
                                                        171  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        172  call errwrt(' ')
                                                        +
                                                        173  endif
                                                        +
                                                        174  mlast=mlast0
                                                        +
                                                        175  endif
                                                        +
                                                        176 
                                                        +
                                                        177  if(iret==0) then
                                                        +
                                                        178  call closbf(lunit)
                                                        +
                                                        179  else
                                                        +
                                                        180  if(munit/=0) call closbf(lunit)
                                                        +
                                                        181  if(munit==0) munit = lunit
                                                        +
                                                        182  endif
                                                        +
                                                        183  iunit = munit
                                                        +
                                                        184 
                                                        +
                                                        185  return
                                                        +
                                                        186 end subroutine ufbmem
                                                        +
                                                        187 
                                                        +
                                                        216 recursive subroutine ufbmex(lunit,lundx,inew,iret,mesg)
                                                        +
                                                        217 
                                                        +
                                                        218  use modv_vars, only: im8b, maxmem, maxmsg
                                                        +
                                                        219 
                                                        +
                                                        220  use moda_mgwa
                                                        +
                                                        221  use moda_msgmem
                                                        +
                                                        222 
                                                        +
                                                        223  implicit none
                                                        +
                                                        224 
                                                        +
                                                        225  character*128 bort_str, errstr
                                                        +
                                                        226 
                                                        +
                                                        227  integer, intent(in) :: lunit(*), lundx(*), inew(*)
                                                        +
                                                        228  integer, intent(out) :: mesg(*), iret(*)
                                                        +
                                                        229  integer iprt, my_lunit(1), my_lundx(1), my_inew(1), nmesg, iflg, itim, ier, nmsg, lmem, i, mlast0, iupbs01, nmwrd
                                                        +
                                                        230 
                                                        +
                                                        231  common /quiet/ iprt
                                                        +
                                                        232 
                                                        +
                                                        233  ! Check for I8 integers
                                                        +
                                                        234 
                                                        +
                                                        235  if(im8b) then
                                                        +
                                                        236  im8b=.false.
                                                        +
                                                        237 
                                                        +
                                                        238  call x84(lunit(1),my_lunit(1),1)
                                                        +
                                                        239  call x84(lundx(1),my_lundx(1),1)
                                                        +
                                                        240  call x84(inew(1),my_inew(1),1)
                                                        +
                                                        241  if (my_inew(1)==0) then
                                                        +
                                                        242  nmesg = 0
                                                        +
                                                        243  else
                                                        +
                                                        244  nmesg = msgp(0)
                                                        +
                                                        245  call x84(mesg(1),mesg(1),nmesg)
                                                        +
                                                        246  endif
                                                        +
                                                        247  call ufbmex(my_lunit(1),my_lundx(1),my_inew(1),iret(1),mesg(1))
                                                        +
                                                        248  call x48(mesg(1),mesg(1),nmesg+iret(1))
                                                        +
                                                        249  call x48(iret(1),iret(1),1)
                                                        +
                                                        250 
                                                        +
                                                        251  im8b=.true.
                                                        +
                                                        252  return
                                                        +
                                                        253  endif
                                                        +
                                                        254 
                                                        +
                                                        255  ! Try to open BUFR file and set to initialize or concatenate
                                                        +
                                                        256 
                                                        +
                                                        257  call openbf(lunit(1),'IN',lundx(1))
                                                        +
                                                        258 
                                                        +
                                                        259  if(inew(1)==0) then
                                                        +
                                                        260  msgp(0) = 0
                                                        +
                                                        261  munit = 0
                                                        +
                                                        262  mlast = 0
                                                        +
                                                        263  ndxts = 0
                                                        +
                                                        264  ldxts = 0
                                                        +
                                                        265  ndxm = 0
                                                        +
                                                        266  ldxm = 0
                                                        +
                                                        267  endif
                                                        +
                                                        268 
                                                        +
                                                        269  nmsg = msgp(0)
                                                        +
                                                        270  iret(1) = 0
                                                        +
                                                        271  iflg = 0
                                                        +
                                                        272  itim = 0
                                                        +
                                                        273 
                                                        +
                                                        274  ! Set some flags so that subsequent calls to the message reading routines will know there is a BUFR table in scope.
                                                        +
                                                        275 
                                                        +
                                                        276  ndxts = 1
                                                        +
                                                        277  ldxts = 1
                                                        +
                                                        278  ipmsgs(1) = 1
                                                        +
                                                        279 
                                                        +
                                                        280  ! Transfer messages from file to memory and set message pointers.
                                                        +
                                                        281 
                                                        +
                                                        282  do while (.true.)
                                                        +
                                                        283  call rdmsgw(lunit(1),mgwa,ier)
                                                        +
                                                        284  if(ier==-1) exit
                                                        +
                                                        285  if(ier==-2) then
                                                        +
                                                        286  write(bort_str,'("BUFRLIB: UFBMEX - ERROR READING MESSAGE NUMBER",I5," INTO MEMORY FROM UNIT",I3)') nmsg+1,lunit(1)
                                                        +
                                                        287  call bort(bort_str)
                                                        +
                                                        288  endif
                                                        +
                                                        289 
                                                        +
                                                        290  nmsg = nmsg+1
                                                        +
                                                        291  mesg(nmsg) = iupbs01(mgwa,'MTYP')
                                                        +
                                                        292  if(nmsg>maxmsg) iflg = 1
                                                        +
                                                        293  lmem = nmwrd(mgwa)
                                                        +
                                                        294  if(lmem+mlast>maxmem) iflg = 2
                                                        +
                                                        295 
                                                        +
                                                        296  if(iflg==0) then
                                                        +
                                                        297  iret(1) = iret(1)+1
                                                        +
                                                        298  do i=1,lmem
                                                        +
                                                        299  msgs(mlast+i) = mgwa(i)
                                                        +
                                                        300  enddo
                                                        +
                                                        301  msgp(0) = nmsg
                                                        +
                                                        302  msgp(nmsg) = mlast+1
                                                        +
                                                        303  else
                                                        +
                                                        304  if(itim==0) then
                                                        +
                                                        305  mlast0 = mlast
                                                        +
                                                        306  itim=1
                                                        +
                                                        307  endif
                                                        +
                                                        308  endif
                                                        +
                                                        309  mlast = mlast+lmem
                                                        +
                                                        310  enddo
                                                        +
                                                        311 
                                                        +
                                                        312  if(iflg==1) then
                                                        +
                                                        313  ! Emergency room treatment for maxmsg array overflow
                                                        +
                                                        314  if(iprt>=0) then
                                                        +
                                                        315  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        316  write ( unit=errstr, fmt='(A,A,I8,A)' ) 'BUFRLIB: UFBMEX - THE NO. OF MESSAGES REQUIRED TO STORE ', &
                                                        +
                                                        317  'ALL MESSAGES INTERNALLY EXCEEDS MAXIMUM (', maxmsg, ') - INCOMPLETE READ'
                                                        +
                                                        318  call errwrt(errstr)
                                                        +
                                                        319  write ( unit=errstr, fmt='(A,I8,A,I8,A)' ) '>>>UFBMEX STORED ', msgp(0), ' MESSAGES OUT OF ', nmsg, '<<<'
                                                        +
                                                        320  call errwrt(errstr)
                                                        +
                                                        321  write ( unit=errstr, fmt='(A,I8,A,I8,A)' ) '>>>UFBMEX STORED ', mlast0, ' BYTES OUT OF ', mlast, '<<<'
                                                        +
                                                        322  call errwrt(errstr)
                                                        +
                                                        323  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        324  call errwrt(' ')
                                                        +
                                                        325  endif
                                                        +
                                                        326  mlast=mlast0
                                                        +
                                                        327  endif
                                                        +
                                                        328 
                                                        +
                                                        329  if(iflg==2) then
                                                        +
                                                        330  ! Emergency room treatment for maxmem array overflow
                                                        +
                                                        331  if(iprt>=0) then
                                                        +
                                                        332  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        333  write ( unit=errstr, fmt='(A,A,I8,A)' ) 'BUFRLIB: UFBMEX - THE NO. OF BYTES REQUIRED TO STORE ', &
                                                        +
                                                        334  'ALL MESSAGES INTERNALLY EXCEEDS MAXIMUM (', maxmem, ') - INCOMPLETE READ'
                                                        +
                                                        335  call errwrt(errstr)
                                                        +
                                                        336  write ( unit=errstr, fmt='(A,I8,A,I8,A)' ) '>>>UFBMEX STORED ', mlast0, ' BYTES OUT OF ', mlast, '<<<'
                                                        +
                                                        337  call errwrt(errstr)
                                                        +
                                                        338  write ( unit=errstr, fmt='(A,I8,A,I8,A)' ) '>>>UFBMEX STORED ', msgp(0), ' MESSAGES OUT OF ', nmsg, '<<<'
                                                        +
                                                        339  call errwrt(errstr)
                                                        +
                                                        340  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        341  call errwrt(' ')
                                                        +
                                                        342  endif
                                                        +
                                                        343  mlast=mlast0
                                                        +
                                                        344  endif
                                                        +
                                                        345 
                                                        +
                                                        346  if(iret(1)==0) then
                                                        +
                                                        347  call closbf(lunit(1))
                                                        +
                                                        348  else
                                                        +
                                                        349  if(munit/=0) call closbf(lunit(1))
                                                        +
                                                        350  if(munit==0) munit = lunit(1)
                                                        +
                                                        351  endif
                                                        +
                                                        352 
                                                        +
                                                        353  return
                                                        +
                                                        354 end subroutine ufbmex
                                                        +
                                                        355 
                                                        +
                                                        381 recursive subroutine readmm(imsg,subset,jdate,iret)
                                                        +
                                                        382 
                                                        +
                                                        383  use modv_vars, only: im8b
                                                        +
                                                        384 
                                                        +
                                                        385  implicit none
                                                        +
                                                        386 
                                                        +
                                                        387  integer, intent(inout) :: imsg
                                                        +
                                                        388  integer, intent(out) :: jdate, iret
                                                        +
                                                        389 
                                                        +
                                                        390  character*8, intent(out) :: subset
                                                        +
                                                        391 
                                                        +
                                                        392  ! Check for I8 integers.
                                                        +
                                                        393 
                                                        +
                                                        394  if(im8b) then
                                                        +
                                                        395  im8b=.false.
                                                        +
                                                        396 
                                                        +
                                                        397  call x84(imsg,imsg,1)
                                                        +
                                                        398  call readmm(imsg,subset,jdate,iret)
                                                        +
                                                        399  call x48(imsg,imsg,1)
                                                        +
                                                        400  call x48(jdate,jdate,1)
                                                        +
                                                        401  call x48(iret,iret,1)
                                                        +
                                                        402 
                                                        +
                                                        403  im8b=.true.
                                                        +
                                                        404  return
                                                        +
                                                        405  endif
                                                        +
                                                        406 
                                                        +
                                                        407  call rdmemm(imsg,subset,jdate,iret)
                                                        +
                                                        408 
                                                        +
                                                        409  imsg = imsg+1
                                                        +
                                                        410 
                                                        +
                                                        411  return
                                                        +
                                                        412 end subroutine readmm
                                                        +
                                                        413 
                                                        +
                                                        433 recursive integer function ireadmm(imsg,subset,idate) result(iret)
                                                        +
                                                        434 
                                                        +
                                                        435  use modv_vars, only: im8b
                                                        +
                                                        436 
                                                        +
                                                        437  implicit none
                                                        +
                                                        438 
                                                        +
                                                        439  integer, intent(inout) :: imsg
                                                        +
                                                        440  integer, intent(out) :: idate
                                                        +
                                                        441 
                                                        +
                                                        442  character*8, intent(out) :: subset
                                                        +
                                                        443 
                                                        +
                                                        444  ! Check for I8 integers.
                                                        +
                                                        445 
                                                        +
                                                        446  if(im8b) then
                                                        +
                                                        447  im8b=.false.
                                                        +
                                                        448 
                                                        +
                                                        449  call x84(imsg,imsg,1)
                                                        +
                                                        450  iret=ireadmm(imsg,subset,idate)
                                                        +
                                                        451  call x48(imsg,imsg,1)
                                                        +
                                                        452  call x48(idate,idate,1)
                                                        +
                                                        453 
                                                        +
                                                        454  im8b=.true.
                                                        +
                                                        455  return
                                                        +
                                                        456  endif
                                                        +
                                                        457 
                                                        +
                                                        458  call readmm(imsg,subset,idate,iret)
                                                        +
                                                        459 
                                                        +
                                                        460  return
                                                        +
                                                        461 end function ireadmm
                                                        +
                                                        462 
                                                        +
                                                        486 recursive subroutine rdmemm(imsg,subset,jdate,iret)
                                                        +
                                                        487 
                                                        +
                                                        488  use modv_vars, only: im8b
                                                        +
                                                        489 
                                                        +
                                                        490  use moda_msgcwd
                                                        +
                                                        491  use moda_bitbuf
                                                        +
                                                        492  use moda_mgwa
                                                        +
                                                        493  use moda_msgmem
                                                        +
                                                        494 
                                                        +
                                                        495  implicit none
                                                        +
                                                        496 
                                                        +
                                                        497  integer, intent(in) :: imsg
                                                        +
                                                        498  integer, intent(out) :: jdate, iret
                                                        +
                                                        499  integer iprt, my_imsg, lun, il, im, ii, jj, kk, nwrd, iptr, lptr, ier
                                                        +
                                                        500 
                                                        +
                                                        501  character*128 bort_str, errstr
                                                        +
                                                        502  character*8, intent(out) :: subset
                                                        +
                                                        503 
                                                        +
                                                        504  logical known
                                                        +
                                                        505 
                                                        +
                                                        506  common /quiet/ iprt
                                                        +
                                                        507 
                                                        +
                                                        508  ! Check for I8 integers
                                                        +
                                                        509 
                                                        +
                                                        510  if(im8b) then
                                                        +
                                                        511  im8b=.false.
                                                        +
                                                        512 
                                                        +
                                                        513  call x84(imsg,my_imsg,1)
                                                        +
                                                        514  call rdmemm(my_imsg,subset,jdate,iret)
                                                        +
                                                        515  call x48(jdate,jdate,1)
                                                        +
                                                        516  call x48(iret,iret,1)
                                                        +
                                                        517 
                                                        +
                                                        518  im8b=.true.
                                                        +
                                                        519  return
                                                        +
                                                        520  endif
                                                        +
                                                        521 
                                                        +
                                                        522  ! Check the message request and file status
                                                        +
                                                        523 
                                                        +
                                                        524  call status(munit,lun,il,im)
                                                        +
                                                        525  call wtstat(munit,lun,il,1)
                                                        +
                                                        526  iret = 0
                                                        +
                                                        527 
                                                        +
                                                        528  if(imsg==0 .or.imsg>msgp(0)) then
                                                        +
                                                        529  call wtstat(munit,lun,il,0)
                                                        +
                                                        530  if(iprt>=1) then
                                                        +
                                                        531  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        532  if(imsg==0) then
                                                        +
                                                        533  errstr = 'BUFRLIB: RDMEMM - REQUESTED MEMORY MESSAGE NUMBER {FIRST (INPUT) ARGUMENT} IS 0, RETURN WITH IRET = -1'
                                                        +
                                                        534  else
                                                        +
                                                        535  write ( unit=errstr, fmt='(A,I6,A,I6,A)' ) 'BUFRLIB: RDMEMM - REQ. MEMORY MESSAGE #', imsg, &
                                                        +
                                                        536  ' {= 1ST (INPUT) ARG.} > # OF MESSAGES IN MEMORY (', msgp(0), '), RETURN WITH IRET = -1'
                                                        +
                                                        537  endif
                                                        +
                                                        538  call errwrt(errstr)
                                                        +
                                                        539  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        540  call errwrt(' ')
                                                        +
                                                        541  endif
                                                        +
                                                        542  iret = -1
                                                        +
                                                        543  return
                                                        +
                                                        544  endif
                                                        +
                                                        545 
                                                        +
                                                        546  ! Determine which table applies to this message.
                                                        +
                                                        547 
                                                        +
                                                        548  known = .false.
                                                        +
                                                        549  jj = ndxts
                                                        +
                                                        550  do while ((.not.known).and.(jj>=1))
                                                        +
                                                        551  if (ipmsgs(jj)<=imsg) then
                                                        +
                                                        552  known = .true.
                                                        +
                                                        553  else
                                                        +
                                                        554  jj = jj - 1
                                                        +
                                                        555  endif
                                                        +
                                                        556  enddo
                                                        +
                                                        557  if (.not.known) then
                                                        +
                                                        558  write(bort_str,'("BUFRLIB: RDMEMM - UNKNOWN DX TABLE FOR REQUESTED MESSAGE #",I5)') imsg
                                                        +
                                                        559  call bort(bort_str)
                                                        +
                                                        560  endif
                                                        +
                                                        561 
                                                        +
                                                        562  ! Is this table the one that is currently in scope?
                                                        +
                                                        563 
                                                        +
                                                        564  if (jj/=ldxts) then
                                                        +
                                                        565 
                                                        +
                                                        566  ! No, so reset the software to use the proper table.
                                                        +
                                                        567 
                                                        +
                                                        568  if(iprt>=2) then
                                                        +
                                                        569  call errwrt('+++++++++++++++++++++++++++++++++++++++++++++')
                                                        +
                                                        570  write ( unit=errstr, fmt='(A,I3,A,I3,A,I6)' ) 'BUFRLIB: RDMEMM - RESETTING TO USE DX TABLE #', jj, &
                                                        +
                                                        571  ' INSTEAD OF DX TABLE #', ldxts, ' FOR REQUESTED MESSAGE #', imsg
                                                        +
                                                        572  call errwrt(errstr)
                                                        +
                                                        573  call errwrt('+++++++++++++++++++++++++++++++++++++++++++++')
                                                        +
                                                        574  call errwrt(' ')
                                                        +
                                                        575  endif
                                                        +
                                                        576  call dxinit(lun,0)
                                                        +
                                                        577 
                                                        +
                                                        578  ! Store each of the DX dictionary messages which constitute this table.
                                                        +
                                                        579 
                                                        +
                                                        580  do ii = ifdxts(jj), (ifdxts(jj)+icdxts(jj)-1)
                                                        +
                                                        581  if (ii==ndxm) then
                                                        +
                                                        582  nwrd = ldxm - ipdxm(ii) + 1
                                                        +
                                                        583  else
                                                        +
                                                        584  nwrd = ipdxm(ii+1) - ipdxm(ii)
                                                        +
                                                        585  endif
                                                        +
                                                        586  do kk = 1, nwrd
                                                        +
                                                        587  mgwa(kk) = mdx(ipdxm(ii)+kk-1)
                                                        +
                                                        588  enddo
                                                        +
                                                        589  call stbfdx(lun,mgwa)
                                                        +
                                                        590  enddo
                                                        +
                                                        591 
                                                        +
                                                        592  ! Rebuild the internal jump/link table.
                                                        +
                                                        593 
                                                        +
                                                        594  call makestab
                                                        +
                                                        595  ldxts = jj
                                                        +
                                                        596  endif
                                                        +
                                                        597 
                                                        +
                                                        598  ! Read memory message number imsg into a message buffer.
                                                        +
                                                        599 
                                                        +
                                                        600  iptr = msgp(imsg)
                                                        +
                                                        601  if(imsg<msgp(0)) lptr = msgp(imsg+1)-iptr
                                                        +
                                                        602  if(imsg==msgp(0)) lptr = mlast-iptr+1
                                                        +
                                                        603  iptr = iptr-1
                                                        +
                                                        604 
                                                        +
                                                        605  do ii=1,lptr
                                                        +
                                                        606  mbay(ii,lun) = msgs(iptr+ii)
                                                        +
                                                        607  enddo
                                                        +
                                                        608 
                                                        +
                                                        609  ! Parse the message section contents.
                                                        +
                                                        610 
                                                        +
                                                        611  call cktaba(lun,subset,jdate,ier)
                                                        +
                                                        612  nmsg(lun) = imsg
                                                        +
                                                        613 
                                                        +
                                                        614  return
                                                        +
                                                        615 end subroutine rdmemm
                                                        +
                                                        616 
                                                        +
                                                        634 recursive subroutine rdmems(isub,iret)
                                                        +
                                                        635 
                                                        +
                                                        636  use modv_vars, only: im8b
                                                        +
                                                        637 
                                                        +
                                                        638  use moda_msgcwd
                                                        +
                                                        639  use moda_unptyp
                                                        +
                                                        640  use moda_bitbuf
                                                        +
                                                        641  use moda_msgmem
                                                        +
                                                        642 
                                                        +
                                                        643  implicit none
                                                        +
                                                        644 
                                                        +
                                                        645  integer, intent(in) :: isub
                                                        +
                                                        646  integer, intent(out) :: iret
                                                        +
                                                        647  integer my_isub, iprt, lun, il, im, mbym, nbyt, i, iupb
                                                        +
                                                        648 
                                                        +
                                                        649  character*128 bort_str, errstr
                                                        +
                                                        650 
                                                        +
                                                        651  common /quiet/ iprt
                                                        +
                                                        652 
                                                        +
                                                        653  ! Check for I8 integers
                                                        +
                                                        654 
                                                        +
                                                        655  if(im8b) then
                                                        +
                                                        656  im8b=.false.
                                                        +
                                                        657 
                                                        +
                                                        658  call x84(isub,my_isub,1)
                                                        +
                                                        659  call rdmems(my_isub,iret)
                                                        +
                                                        660  call x48(iret,iret,1)
                                                        +
                                                        661 
                                                        +
                                                        662  im8b=.true.
                                                        +
                                                        663  return
                                                        +
                                                        664  endif
                                                        +
                                                        665 
                                                        +
                                                        666  ! Check the message request and file status
                                                        +
                                                        667 
                                                        +
                                                        668  call status(munit,lun,il,im)
                                                        +
                                                        669  if(im==0) call bort('BUFRLIB: RDMEMS - A MEMORY MESSAGE MUST BE OPEN IN INPUT BUFR FILE, NONE ARE')
                                                        +
                                                        670  if(nsub(lun)/=0) then
                                                        +
                                                        671  write(bort_str,'("BUFRLIB: RDMEMS - UPON ENTRY, SUBSET POINTER IN MEMORY MESSAGE IS NOT AT BEGINNING (",I3," '// &
                                                        +
                                                        672  'SUBSETS HAVE BEEN READ, SHOULD BE 0)")') nsub(lun)
                                                        +
                                                        673  call bort(bort_str)
                                                        +
                                                        674  endif
                                                        +
                                                        675 
                                                        +
                                                        676  if(isub>msub(lun)) then
                                                        +
                                                        677  if(iprt>=0) then
                                                        +
                                                        678  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        679  write ( unit=errstr, fmt='(A,I5,A,A,I5,A)' ) 'BUFRLIB: RDMEMS - REQ. SUBSET #', isub, ' (= 1st INPUT ', &
                                                        +
                                                        680  'ARG.) > # OF SUBSETS IN MEMORY MESSAGE (', msub(lun), ')'
                                                        +
                                                        681  call errwrt(errstr)
                                                        +
                                                        682  call errwrt('RETURN WITH IRET = -1')
                                                        +
                                                        683  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        684  call errwrt(' ')
                                                        +
                                                        685  endif
                                                        +
                                                        686  iret = -1
                                                        +
                                                        687  return
                                                        +
                                                        688  endif
                                                        +
                                                        689 
                                                        +
                                                        690  mbym = mbyt(lun)
                                                        +
                                                        691  nbyt = 0
                                                        +
                                                        692 
                                                        +
                                                        693  ! Position to subset number isub in memory message
                                                        +
                                                        694 
                                                        +
                                                        695  if(msgunp(lun)==0) then
                                                        +
                                                        696  nsub(lun) = isub-1
                                                        +
                                                        697  do i=1,isub-1
                                                        +
                                                        698  mbyt(lun) = mbyt(lun) + iupb(mbay(1,lun),mbyt(lun)+1,16)
                                                        +
                                                        699  enddo
                                                        +
                                                        700  elseif(msgunp(lun)==1) then
                                                        +
                                                        701  ! message with "standard" Section 3
                                                        +
                                                        702  do i=1,isub-1
                                                        +
                                                        703  call readsb(munit,iret)
                                                        +
                                                        704  enddo
                                                        +
                                                        705  else
                                                        +
                                                        706  ! compressed message
                                                        +
                                                        707  nsub(lun) = isub-1
                                                        +
                                                        708  endif
                                                        +
                                                        709 
                                                        +
                                                        710  ! Now read subset number isub from memory message
                                                        +
                                                        711 
                                                        +
                                                        712  call readsb(munit,iret)
                                                        +
                                                        713  if(iret/=0) call bort('BUFRLIB: RDMEMS - CALL TO ROUTINE READSB RETURNED WITH IRET = -1 (EITHER MEMORY MESSAGE '// &
                                                        +
                                                        714  'NOT OPEN OR ALL SUBSETS IN MESSAGE READ')
                                                        +
                                                        715 
                                                        +
                                                        716  ! Reset subset pointer back to zero (beginning of message) and return
                                                        +
                                                        717 
                                                        +
                                                        718  mbyt(lun) = mbym
                                                        +
                                                        719  nsub(lun) = 0
                                                        +
                                                        720 
                                                        +
                                                        721  return
                                                        +
                                                        722 end subroutine rdmems
                                                        +
                                                        723 
                                                        +
                                                        729 subroutine cpdxmm( lunit )
                                                        +
                                                        730 
                                                        +
                                                        731  use bufrlib
                                                        +
                                                        732 
                                                        +
                                                        733  use modv_vars, only: mxdxts
                                                        +
                                                        734 
                                                        +
                                                        735  use moda_mgwa
                                                        +
                                                        736  use moda_msgmem
                                                        +
                                                        737 
                                                        +
                                                        738  implicit none
                                                        +
                                                        739 
                                                        +
                                                        740  integer, intent(in) :: lunit
                                                        +
                                                        741  integer iprt, ict, lun, il, im, ier, j, lmem, idxmsg, iupbs3, nmwrd
                                                        +
                                                        742 
                                                        +
                                                        743  character*128 errstr
                                                        +
                                                        744 
                                                        +
                                                        745  logical done
                                                        +
                                                        746 
                                                        +
                                                        747  common /quiet/ iprt
                                                        +
                                                        748 
                                                        +
                                                        749  if ( ndxts >= mxdxts ) call bort('BUFRLIB: CPDXMM - MXDXTS OVERFLOW')
                                                        +
                                                        750 
                                                        +
                                                        751  ict = 0
                                                        +
                                                        752  done = .false.
                                                        +
                                                        753  call status(lunit,lun,il,im)
                                                        +
                                                        754 
                                                        +
                                                        755  ! Read a complete dictionary table from lunit, as a set of one or more DX dictionary messages.
                                                        +
                                                        756 
                                                        +
                                                        757  do while ( .not. done )
                                                        +
                                                        758  call rdmsgw ( lunit, mgwa, ier )
                                                        +
                                                        759  if ( ier == -2 ) call bort('BUFRLIB: CPDXMM - UNEXPECTED READ ERROR')
                                                        +
                                                        760  if ( ier == -1 ) then
                                                        +
                                                        761 
                                                        +
                                                        762  ! Don't abort for an end-of-file condition, since it may be possible for a file to end with dictionary messages.
                                                        +
                                                        763  ! Instead, backspace the file pointer and let the calling routine diagnose the end-of-file condition and deal with
                                                        +
                                                        764  ! it as it sees fit.
                                                        +
                                                        765 
                                                        +
                                                        766  call backbufr_c(lun)
                                                        +
                                                        767  done = .true.
                                                        +
                                                        768  else if ( idxmsg(mgwa) /= 1 ) then
                                                        +
                                                        769 
                                                        +
                                                        770  ! This is a non-DX dictionary message. Assume we've reached the end of the dictionary table, and backspace lunit so
                                                        +
                                                        771  ! that the next read (e.g. in the calling routine) will get this same message.
                                                        +
                                                        772 
                                                        +
                                                        773  call backbufr_c(lun)
                                                        +
                                                        774  done = .true.
                                                        +
                                                        775  else if ( iupbs3(mgwa,'nsub') == 0 ) then
                                                        +
                                                        776 
                                                        +
                                                        777  ! This is a DX dictionary message, but it doesn't contain any actual dictionary information. Assume we've reached the
                                                        +
                                                        778  ! end of the dictionary table.
                                                        +
                                                        779 
                                                        +
                                                        780  done = .true.
                                                        +
                                                        781  else
                                                        +
                                                        782 
                                                        +
                                                        783  ! Store this message into @ref moda_msgmem.
                                                        +
                                                        784 
                                                        +
                                                        785  ict = ict + 1
                                                        +
                                                        786  if ( ( ndxm + ict ) > mxdxm ) call bort('BUFRLIB: CPDXMM - MXDXM OVERFLOW')
                                                        +
                                                        787  ipdxm(ndxm+ict) = ldxm + 1
                                                        +
                                                        788  lmem = nmwrd(mgwa)
                                                        +
                                                        789  if ( ( ldxm + lmem ) > mxdxw ) call bort('BUFRLIB: CPDXMM - MXDXW OVERFLOW')
                                                        +
                                                        790  do j = 1, lmem
                                                        +
                                                        791  mdx(ldxm+j) = mgwa(j)
                                                        +
                                                        792  enddo
                                                        +
                                                        793  ldxm = ldxm + lmem
                                                        +
                                                        794  endif
                                                        +
                                                        795  enddo
                                                        +
                                                        796 
                                                        +
                                                        797  ! Update the table information within @ref moda_msgmem.
                                                        +
                                                        798 
                                                        +
                                                        799  if ( ict > 0 ) then
                                                        +
                                                        800  ifdxts(ndxts+1) = ndxm + 1
                                                        +
                                                        801  icdxts(ndxts+1) = ict
                                                        +
                                                        802  ipmsgs(ndxts+1) = msgp(0) + 1
                                                        +
                                                        803  ndxm = ndxm + ict
                                                        +
                                                        804  ndxts = ndxts + 1
                                                        +
                                                        805  if ( iprt >= 2 ) then
                                                        +
                                                        806  call errwrt('+++++++++++++++++++++++++++++++++++++++++++++')
                                                        +
                                                        807  write ( unit=errstr, fmt='(A,I3,A,I3,A)') 'BUFRLIB: CPDXMM - STORED NEW DX TABLE #', ndxts, &
                                                        +
                                                        808  ' CONSISTING OF ', ict, ' MESSAGES'
                                                        +
                                                        809  call errwrt(errstr)
                                                        +
                                                        810  call errwrt('+++++++++++++++++++++++++++++++++++++++++++++')
                                                        +
                                                        811  call errwrt(' ')
                                                        +
                                                        812  endif
                                                        +
                                                        813  endif
                                                        +
                                                        814 
                                                        +
                                                        815  return
                                                        +
                                                        816 end subroutine cpdxmm
                                                        +
                                                        817 
                                                        +
                                                        839 recursive subroutine ufbmms(imsg,isub,subset,jdate)
                                                        +
                                                        840 
                                                        +
                                                        841  use modv_vars, only: im8b
                                                        +
                                                        842 
                                                        +
                                                        843  use moda_msgcwd
                                                        +
                                                        844  use moda_msgmem
                                                        +
                                                        845 
                                                        +
                                                        846  implicit none
                                                        +
                                                        847 
                                                        +
                                                        848  integer, intent(in) :: imsg, isub
                                                        +
                                                        849  integer, intent(out) :: jdate
                                                        +
                                                        850  integer my_imsg, my_isub, lun, il, im, iret
                                                        +
                                                        851 
                                                        +
                                                        852  character*8, intent(out) :: subset
                                                        +
                                                        853 
                                                        +
                                                        854  character*128 bort_str
                                                        +
                                                        855 
                                                        +
                                                        856  ! Check for I8 integers
                                                        +
                                                        857 
                                                        +
                                                        858  if(im8b) then
                                                        +
                                                        859  im8b=.false.
                                                        +
                                                        860 
                                                        +
                                                        861  call x84(imsg,my_imsg,1)
                                                        +
                                                        862  call x84(isub,my_isub,1)
                                                        +
                                                        863  call ufbmms(my_imsg,my_isub,subset,jdate)
                                                        +
                                                        864  call x48(jdate,jdate,1)
                                                        +
                                                        865 
                                                        +
                                                        866  im8b=.true.
                                                        +
                                                        867  return
                                                        +
                                                        868  endif
                                                        +
                                                        869 
                                                        +
                                                        870  ! Read subset #isub from memory message #imsg
                                                        +
                                                        871 
                                                        +
                                                        872  call rdmemm(imsg,subset,jdate,iret)
                                                        +
                                                        873  if(iret<0) then
                                                        +
                                                        874  if(imsg>0) then
                                                        +
                                                        875  write(bort_str,'("BUFRLIB: UFBMMS - REQUESTED MEMORY MESSAGE NUMBER TO READ IN (",I5,") EXCEEDS THE NUMBER OF '// &
                                                        +
                                                        876  'MESSAGES IN MEMORY (",I5,")")') imsg,msgp(0)
                                                        +
                                                        877  else
                                                        +
                                                        878  write(bort_str,'("BUFRLIB: UFBMMS - REQUESTED MEMORY MESSAGE NUMBER TO READ IN IS ZERO - THIS IS NOT VALID")')
                                                        +
                                                        879  endif
                                                        +
                                                        880  call bort(bort_str)
                                                        +
                                                        881  endif
                                                        +
                                                        882  call rdmems(isub,iret)
                                                        +
                                                        883  if(iret/=0) then
                                                        +
                                                        884  call status(munit,lun,il,im)
                                                        +
                                                        885  write(bort_str,'("BUFRLIB: UFBMMS - REQ. SUBSET NUMBER TO READ IN (",I3,") EXCEEDS THE NUMBER OF SUBSETS (",I3,") '// &
                                                        +
                                                        886  'IN THE REG. MEMORY MESSAGE (",I5,")")') isub,msub(lun),imsg
                                                        +
                                                        887  call bort(bort_str)
                                                        +
                                                        888  endif
                                                        +
                                                        889 
                                                        +
                                                        890  return
                                                        +
                                                        891 end subroutine ufbmms
                                                        +
                                                        892 
                                                        +
                                                        910 recursive subroutine ufbmns(irep,subset,idate)
                                                        +
                                                        911 
                                                        +
                                                        912  use modv_vars, only: im8b
                                                        +
                                                        913 
                                                        +
                                                        914  use moda_msgmem
                                                        +
                                                        915 
                                                        +
                                                        916  implicit none
                                                        +
                                                        917 
                                                        +
                                                        918  integer, intent(in) :: irep
                                                        +
                                                        919  integer, intent(out) :: idate
                                                        +
                                                        920  integer my_irep, imsg, jrep, iret, ireadmm, nmsub
                                                        +
                                                        921 
                                                        +
                                                        922  character*8, intent(out) :: subset
                                                        +
                                                        923 
                                                        +
                                                        924  character*128 bort_str
                                                        +
                                                        925 
                                                        +
                                                        926  ! Check for I8 integers
                                                        +
                                                        927 
                                                        +
                                                        928  if(im8b) then
                                                        +
                                                        929  im8b=.false.
                                                        +
                                                        930 
                                                        +
                                                        931  call x84(irep,my_irep,1)
                                                        +
                                                        932  call ufbmns(my_irep,subset,idate)
                                                        +
                                                        933  call x48(idate,idate,1)
                                                        +
                                                        934 
                                                        +
                                                        935  im8b=.true.
                                                        +
                                                        936  return
                                                        +
                                                        937  endif
                                                        +
                                                        938 
                                                        +
                                                        939  jrep = 0
                                                        +
                                                        940  imsg = 1
                                                        +
                                                        941 
                                                        +
                                                        942  ! Read subset #irep
                                                        +
                                                        943 
                                                        +
                                                        944  do while(ireadmm(imsg,subset,idate)==0)
                                                        +
                                                        945  if(jrep+nmsub(munit)>=irep) then
                                                        +
                                                        946  call rdmems(irep-jrep,iret)
                                                        +
                                                        947  return
                                                        +
                                                        948  endif
                                                        +
                                                        949  jrep = jrep+nmsub(munit)
                                                        +
                                                        950  enddo
                                                        +
                                                        951 
                                                        +
                                                        952  write(bort_str,'("BUFRLIB: UFBMNS - REQ. SUBSET NO. TO READ IN (",I5,") EXCEEDS TOTAL NO. OF SUBSETS IN THE COLLECTION '// &
                                                        +
                                                        953  'OF MEMORY MESSAGES (",I5,")")') irep,jrep
                                                        +
                                                        954  call bort(bort_str)
                                                        +
                                                        955 end subroutine ufbmns
                                                        +
                                                        956 
                                                        +
                                                        976 recursive subroutine ufbrms(imsg,isub,usr,i1,i2,iret,str)
                                                        +
                                                        977 
                                                        +
                                                        978  use modv_vars, only: im8b
                                                        +
                                                        979 
                                                        +
                                                        980  use moda_msgcwd
                                                        +
                                                        981  use moda_msgmem
                                                        +
                                                        982 
                                                        +
                                                        983  implicit none
                                                        +
                                                        984 
                                                        +
                                                        985  integer, intent(in) :: imsg, isub, i1, i2
                                                        +
                                                        986  integer, intent(out) :: iret
                                                        +
                                                        987  integer iprt, my_imsg, my_isub, my_i1, my_i2, jdate, lun, il, im
                                                        +
                                                        988 
                                                        +
                                                        989  real*8, intent(out) :: usr(i1,i2)
                                                        +
                                                        990 
                                                        +
                                                        991  character*(*), intent(in) :: str
                                                        +
                                                        992  character*128 bort_str, errstr
                                                        +
                                                        993  character*8 subset
                                                        +
                                                        994 
                                                        +
                                                        995  common /quiet/ iprt
                                                        +
                                                        996 
                                                        +
                                                        997  ! Check for I8 integers
                                                        +
                                                        998 
                                                        +
                                                        999  if(im8b) then
                                                        +
                                                        1000  im8b=.false.
                                                        +
                                                        1001 
                                                        +
                                                        1002  call x84(imsg,my_imsg,1)
                                                        +
                                                        1003  call x84(isub,my_isub,1)
                                                        +
                                                        1004  call x84(i1,my_i1,1)
                                                        +
                                                        1005  call x84(i2,my_i2,1)
                                                        +
                                                        1006  call ufbrms(my_imsg,my_isub,usr,my_i1,my_i2,iret,str)
                                                        +
                                                        1007  call x48(iret,iret,1)
                                                        +
                                                        1008 
                                                        +
                                                        1009  im8b=.true.
                                                        +
                                                        1010  return
                                                        +
                                                        1011  endif
                                                        +
                                                        1012 
                                                        +
                                                        1013  iret = 0
                                                        +
                                                        1014  if(i1<=0) then
                                                        +
                                                        1015  if(iprt>=0) then
                                                        +
                                                        1016  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        1017  errstr = .LE.'BUFRLIB: UFBRMS - 4th ARG. (INPUT) IS 0, SO RETURN WITH 6th ARG. (IRET) = 0; 7th ARG. (STR) ='
                                                        +
                                                        1018  call errwrt(errstr)
                                                        +
                                                        1019  call errwrt(str)
                                                        +
                                                        1020  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        1021  call errwrt(' ')
                                                        +
                                                        1022  endif
                                                        +
                                                        1023  return
                                                        +
                                                        1024  elseif(i2<=0) then
                                                        +
                                                        1025  if(iprt>=0) then
                                                        +
                                                        1026  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        1027  errstr = .LE.'BUFRLIB: UFBRMS - 5th ARG. (INPUT) IS 0, SO RETURN WITH 6th ARG. (IRET) = 0; 7th ARG. (STR) ='
                                                        +
                                                        1028  call errwrt(errstr)
                                                        +
                                                        1029  call errwrt(str)
                                                        +
                                                        1030  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        1031  call errwrt(' ')
                                                        +
                                                        1032  endif
                                                        +
                                                        1033  return
                                                        +
                                                        1034  endif
                                                        +
                                                        1035 
                                                        +
                                                        1036  ! Read requested values from subset #isub within memory message #imsg
                                                        +
                                                        1037 
                                                        +
                                                        1038  call rdmemm(imsg,subset,jdate,iret)
                                                        +
                                                        1039  if(iret<0) then
                                                        +
                                                        1040  if(imsg>0) then
                                                        +
                                                        1041  write(bort_str,'("BUFRLIB: UFBRMS - REQUESTED MEMORY MESSAGE NUMBER TO READ IN (",I5,") EXCEEDS THE NUMBER OF '// &
                                                        +
                                                        1042  'MESSAGES IN MEMORY (",I5,")")') imsg,msgp(0)
                                                        +
                                                        1043  else
                                                        +
                                                        1044  write(bort_str,'("BUFRLIB: UFBRMS - REQUESTED MEMORY MESSAGE NUMBER TO READ IN IS ZERO - THIS IS NOT VALID")')
                                                        +
                                                        1045  endif
                                                        +
                                                        1046  call bort(bort_str)
                                                        +
                                                        1047  endif
                                                        +
                                                        1048  call rdmems(isub,iret)
                                                        +
                                                        1049  if(iret/=0) then
                                                        +
                                                        1050  call status(munit,lun,il,im)
                                                        +
                                                        1051  write(bort_str,'("BUFRLIB: UFBRMS - REQ. SUBSET NUMBER TO READ IN (",I3,") EXCEEDS THE NUMBER OF SUBSETS (",I3,") '// &
                                                        +
                                                        1052  'IN THE REG. MEMORY MESSAGE (",I5,")")') isub,msub(lun),imsg
                                                        +
                                                        1053  call bort(bort_str)
                                                        +
                                                        1054  endif
                                                        +
                                                        1055 
                                                        +
                                                        1056  call ufbint(munit,usr,i1,i2,iret,str)
                                                        +
                                                        1057 
                                                        +
                                                        1058  return
                                                        +
                                                        1059 end subroutine ufbrms
                                                        +
                                                        1060 
                                                        +
                                                        1102 recursive subroutine ufbtam(tab,i1,i2,iret,str)
                                                        +
                                                        1103 
                                                        +
                                                        1104  use modv_vars, only: im8b, bmiss
                                                        +
                                                        1105 
                                                        +
                                                        1106  use moda_usrint
                                                        +
                                                        1107  use moda_msgcwd
                                                        +
                                                        1108  use moda_bitbuf
                                                        +
                                                        1109  use moda_msgmem
                                                        +
                                                        1110  use moda_tables
                                                        +
                                                        1111 
                                                        +
                                                        1112  implicit none
                                                        +
                                                        1113 
                                                        +
                                                        1114  character*(*), intent(in) :: str
                                                        +
                                                        1115  character*128 bort_str, errstr
                                                        +
                                                        1116  character*10 tgs(100)
                                                        +
                                                        1117  character*8 subset, cval
                                                        +
                                                        1118 
                                                        +
                                                        1119  integer*8 mps, ival
                                                        +
                                                        1120  integer, intent(in) :: i1, i2
                                                        +
                                                        1121  integer, intent(out) :: iret
                                                        +
                                                        1122  integer iprt, maxtg, nnod, ncon, nods, nodc, ivls, kons, my_i1, my_i2, i, j, irec, isub, itbl, lun, il, im, jdate, mret, &
                                                        +
                                                        1123  kbit, mbit, nbit, n, node, imsg, kmsg, nrep, ntg, nbyt, nbmp, nmsub
                                                        +
                                                        1124 
                                                        +
                                                        1125  real*8, intent(out) :: tab(i1,i2)
                                                        +
                                                        1126  real*8 rval, ups
                                                        +
                                                        1127 
                                                        +
                                                        1128  common /usrstr/ nnod,ncon,nods(20),nodc(10),ivls(10),kons(10)
                                                        +
                                                        1129  common /quiet/ iprt
                                                        +
                                                        1130 
                                                        +
                                                        1131  equivalence(cval,rval)
                                                        +
                                                        1132 
                                                        +
                                                        1133  data maxtg /100/
                                                        +
                                                        1134 
                                                        +
                                                        1135  ! Statement function
                                                        +
                                                        1136  mps(node) = 2_8**(ibt(node))-1
                                                        +
                                                        1137 
                                                        +
                                                        1138  ! Check for I8 integers
                                                        +
                                                        1139 
                                                        +
                                                        1140  if(im8b) then
                                                        +
                                                        1141  im8b=.false.
                                                        +
                                                        1142 
                                                        +
                                                        1143  call x84(i1,my_i1,1)
                                                        +
                                                        1144  call x84(i2,my_i2,1)
                                                        +
                                                        1145  call ufbtam(tab,my_i1,my_i2,iret,str)
                                                        +
                                                        1146  call x48(iret,iret,1)
                                                        +
                                                        1147 
                                                        +
                                                        1148  im8b=.true.
                                                        +
                                                        1149  return
                                                        +
                                                        1150  endif
                                                        +
                                                        1151 
                                                        +
                                                        1152  iret = 0
                                                        +
                                                        1153 
                                                        +
                                                        1154  if(msgp(0)==0) return
                                                        +
                                                        1155 
                                                        +
                                                        1156  do j=1,i2
                                                        +
                                                        1157  do i=1,i1
                                                        +
                                                        1158  tab(i,j) = bmiss
                                                        +
                                                        1159  enddo
                                                        +
                                                        1160  enddo
                                                        +
                                                        1161 
                                                        +
                                                        1162  ! Check for special tags in string
                                                        +
                                                        1163 
                                                        +
                                                        1164  call parstr(str,tgs,maxtg,ntg,' ',.true.)
                                                        +
                                                        1165  irec = 0
                                                        +
                                                        1166  isub = 0
                                                        +
                                                        1167  itbl = 0
                                                        +
                                                        1168  do i=1,ntg
                                                        +
                                                        1169  if(tgs(i)=='IREC') irec = i
                                                        +
                                                        1170  if(tgs(i)=='ISUB') isub = i
                                                        +
                                                        1171  if(tgs(i)=='ITBL') itbl = i
                                                        +
                                                        1172  enddo
                                                        +
                                                        1173 
                                                        +
                                                        1174  call status(munit,lun,il,im)
                                                        +
                                                        1175 
                                                        +
                                                        1176  ! Cycle through all of the memory messages in the internal arrays
                                                        +
                                                        1177 
                                                        +
                                                        1178  outer: do imsg=1,msgp(0)
                                                        +
                                                        1179  call rdmemm(imsg,subset,jdate,mret)
                                                        +
                                                        1180  if(mret<0) then
                                                        +
                                                        1181  write(bort_str,'("BUFRLIB: UFBTAM - HIT END-OF-FILE READING MESSAGE NUMBER",I5," IN INTERNAL MEMORY")') imsg
                                                        +
                                                        1182  call bort(bort_str)
                                                        +
                                                        1183  endif
                                                        +
                                                        1184 
                                                        +
                                                        1185  call string(str,lun,i1,0)
                                                        +
                                                        1186  if(irec>0) nods(irec) = 0
                                                        +
                                                        1187  if(isub>0) nods(isub) = 0
                                                        +
                                                        1188  if(itbl>0) nods(itbl) = 0
                                                        +
                                                        1189 
                                                        +
                                                        1190  ! Process all the subsets in the memory message
                                                        +
                                                        1191 
                                                        +
                                                        1192  do while (nsub(lun)<msub(lun))
                                                        +
                                                        1193  if(iret+1>i2) then
                                                        +
                                                        1194  ! Emergency room treatment for array overflow
                                                        +
                                                        1195  call rdmemm(0,subset,jdate,mret)
                                                        +
                                                        1196  nrep = 0
                                                        +
                                                        1197  do kmsg=1,msgp(0)
                                                        +
                                                        1198  call rdmemm(kmsg,subset,jdate,mret)
                                                        +
                                                        1199  if(mret<0) then
                                                        +
                                                        1200  write(bort_str,'("BUFRLIB: UFBTAM - HIT END-OF-FILE READING MESSAGE NUMBER",I5," IN INTERNAL MEMORY")') kmsg
                                                        +
                                                        1201  call bort(bort_str)
                                                        +
                                                        1202  endif
                                                        +
                                                        1203  nrep = nrep+nmsub(munit)
                                                        +
                                                        1204  enddo
                                                        +
                                                        1205  if(iprt>=0) then
                                                        +
                                                        1206  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        1207  write ( unit=errstr, fmt='(A,A,I8,A,A)' ) 'BUFRLIB: UFBTAM - THE NO. OF DATA SUBSETS IN MEMORY ', &
                                                        +
                                                        1208  .GT.'IS LIMIT OF ', i2, ' IN THE 3RD ARG. (INPUT) - INCOMPLETE READ'
                                                        +
                                                        1209  call errwrt(errstr)
                                                        +
                                                        1210  write ( unit=errstr, fmt='(A,I8,A,I8,A)' ) '>>>UFBTAM STORED ', iret, ' REPORTS OUT OF ', nrep, '<<<'
                                                        +
                                                        1211  call errwrt(errstr)
                                                        +
                                                        1212  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        1213  call errwrt(' ')
                                                        +
                                                        1214  endif
                                                        +
                                                        1215  exit outer
                                                        +
                                                        1216  endif
                                                        +
                                                        1217 
                                                        +
                                                        1218  iret = iret+1
                                                        +
                                                        1219 
                                                        +
                                                        1220  do i=1,nnod
                                                        +
                                                        1221  nods(i) = abs(nods(i))
                                                        +
                                                        1222  enddo
                                                        +
                                                        1223 
                                                        +
                                                        1224  call usrtpl(lun,1,1)
                                                        +
                                                        1225  mbit = mbyt(lun)*8+16
                                                        +
                                                        1226  nbit = 0
                                                        +
                                                        1227  n = 1
                                                        +
                                                        1228 
                                                        +
                                                        1229  inner: do while(n+1<=nval(lun))
                                                        +
                                                        1230  n = n+1
                                                        +
                                                        1231  node = inv(n,lun)
                                                        +
                                                        1232  mbit = mbit+nbit
                                                        +
                                                        1233  nbit = ibt(node)
                                                        +
                                                        1234  if(itp(node)==1) then
                                                        +
                                                        1235  call upb8(ival,nbit,mbit,mbay(1,lun))
                                                        +
                                                        1236  nbmp=int(ival)
                                                        +
                                                        1237  call usrtpl(lun,n,nbmp)
                                                        +
                                                        1238  endif
                                                        +
                                                        1239  do i=1,nnod
                                                        +
                                                        1240  if(nods(i)==node) then
                                                        +
                                                        1241  if(itp(node)==1) then
                                                        +
                                                        1242  call upb8(ival,nbit,mbit,mbay(1,lun))
                                                        +
                                                        1243  tab(i,iret) = ival
                                                        +
                                                        1244  elseif(itp(node)==2) then
                                                        +
                                                        1245  call upb8(ival,nbit,mbit,mbay(1,lun))
                                                        +
                                                        1246  if(ival<mps(node)) tab(i,iret) = ups(ival,node)
                                                        +
                                                        1247  elseif(itp(node)==3) then
                                                        +
                                                        1248  cval = ' '
                                                        +
                                                        1249  kbit = mbit
                                                        +
                                                        1250  call upc(cval,nbit/8,mbay(1,lun),kbit,.true.)
                                                        +
                                                        1251  tab(i,iret) = rval
                                                        +
                                                        1252  endif
                                                        +
                                                        1253  nods(i) = -nods(i)
                                                        +
                                                        1254  cycle inner
                                                        +
                                                        1255  endif
                                                        +
                                                        1256  enddo
                                                        +
                                                        1257  do i=1,nnod
                                                        +
                                                        1258  if(nods(i)>0) cycle inner
                                                        +
                                                        1259  enddo
                                                        +
                                                        1260  enddo inner
                                                        +
                                                        1261 
                                                        +
                                                        1262  ! Update the subset pointers before next read
                                                        +
                                                        1263 
                                                        +
                                                        1264  ibit = mbyt(lun)*8
                                                        +
                                                        1265  call upb(nbyt,16,mbay(1,lun),ibit)
                                                        +
                                                        1266  mbyt(lun) = mbyt(lun) + nbyt
                                                        +
                                                        1267  nsub(lun) = nsub(lun) + 1
                                                        +
                                                        1268  if(irec>0) tab(irec,iret) = nmsg(lun)
                                                        +
                                                        1269  if(isub>0) tab(isub,iret) = nsub(lun)
                                                        +
                                                        1270  if(itbl>0) tab(itbl,iret) = ldxts
                                                        +
                                                        1271  enddo
                                                        +
                                                        1272 
                                                        +
                                                        1273  enddo outer
                                                        +
                                                        1274 
                                                        +
                                                        1275  ! Reset the memory file
                                                        +
                                                        1276  call rdmemm(0,subset,jdate,mret)
                                                        +
                                                        1277 
                                                        +
                                                        1278  return
                                                        +
                                                        1279 end subroutine ufbtam
                                                        +
                                                        subroutine bort(str)
                                                        Log an error message, then abort the application program.
                                                        Definition: borts.F90:15
                                                        +
                                                        subroutine upb(nval, nbits, ibay, ibit)
                                                        Decode an integer value from within a specified number of bits of an integer array,...
                                                        Definition: cidecode.F90:202
                                                        +
                                                        subroutine upb8(nval, nbits, ibit, ibay)
                                                        Decode an 8-byte integer value from within a specified number of bits of an integer array,...
                                                        Definition: cidecode.F90:80
                                                        +
                                                        real *8 function ups(ival, node)
                                                        Unpack a real*8 value from an integer by applying the proper scale and reference values.
                                                        Definition: cidecode.F90:319
                                                        +
                                                        recursive integer function iupb(mbay, nbyt, nbit)
                                                        Decode an integer value from within a specified number of bits of an integer array,...
                                                        Definition: cidecode.F90:226
                                                        +
                                                        subroutine upc(chr, nchr, ibay, ibit, cnvnull)
                                                        Decode a character string from within a specified number of bytes of an integer array,...
                                                        Definition: cidecode.F90:26
                                                        +
                                                        subroutine stbfdx(lun, mesg)
                                                        Copy a DX BUFR tables message into the internal memory arrays in module moda_tababd.
                                                        Definition: dxtable.F90:990
                                                        +
                                                        subroutine dxinit(lun, ioi)
                                                        Clear out the internal arrays (in module moda_tababd) holding the DX BUFR table, then optionally init...
                                                        Definition: dxtable.F90:606
                                                        +
                                                        integer function idxmsg(mesg)
                                                        Check whether a BUFR message contains DX BUFR tables information that was generated by the NCEPLIBS-b...
                                                        Definition: dxtable.F90:1123
                                                        +
                                                        subroutine errwrt(str)
                                                        Specify a custom location for the logging of error and diagnostic messages generated by the NCEPLIBS-...
                                                        Definition: errwrt.F90:32
                                                        + + + +
                                                        recursive subroutine rdmems(isub, iret)
                                                        Read a specified data subset from the BUFR message that was most recently read via a call to subrouti...
                                                        Definition: memmsgs.F90:635
                                                        +
                                                        subroutine cpdxmm(lunit)
                                                        Read an entire DX BUFR table from a specified file into internal memory arrays.
                                                        Definition: memmsgs.F90:730
                                                        +
                                                        recursive subroutine rdmemm(imsg, subset, jdate, iret)
                                                        Read a specified BUFR message from internal arrays in memory, so that it is now in scope for processi...
                                                        Definition: memmsgs.F90:487
                                                        +
                                                        recursive subroutine ufbmem(lunit, inew, iret, iunit)
                                                        Connect a new file to the NCEPLIBS-bufr software for input operations, then read the entire file cont...
                                                        Definition: memmsgs.F90:39
                                                        +
                                                        recursive subroutine readmm(imsg, subset, jdate, iret)
                                                        Read a specified BUFR message from internal arrays in memory, so that it is now in scope for processi...
                                                        Definition: memmsgs.F90:382
                                                        +
                                                        recursive subroutine ufbmex(lunit, lundx, inew, iret, mesg)
                                                        Connect a new file to the NCEPLIBS-bufr software for input operations, then read the entire file cont...
                                                        Definition: memmsgs.F90:217
                                                        +
                                                        recursive subroutine ufbmns(irep, subset, idate)
                                                        Read a specified data subset from internal arrays in memory, so that it is now in scope for processin...
                                                        Definition: memmsgs.F90:911
                                                        +
                                                        recursive subroutine ufbrms(imsg, isub, usr, i1, i2, iret, str)
                                                        Read one or more data values from a data subset in internal arrays.
                                                        Definition: memmsgs.F90:977
                                                        +
                                                        recursive subroutine ufbtam(tab, i1, i2, iret, str)
                                                        Read through every data subset in internal arrays and return one or more specified data values from e...
                                                        Definition: memmsgs.F90:1103
                                                        +
                                                        recursive subroutine ufbmms(imsg, isub, subset, jdate)
                                                        Read a specified data subset from internal arrays.
                                                        Definition: memmsgs.F90:840
                                                        +
                                                        recursive integer function ireadmm(imsg, subset, idate)
                                                        Call subroutine readmm() and pass back its return code as the function value.
                                                        Definition: memmsgs.F90:434
                                                        +
                                                        Wrap C NCEPLIBS-bufr functions so they can be called from within the Fortran part of the library.
                                                        Definition: bufrlib.F90:11
                                                        +
                                                        Declare arrays and variables used to store BUFR messages internally for multiple file IDs.
                                                        +
                                                        integer ibit
                                                        Bit pointer within ibay.
                                                        +
                                                        integer, dimension(:,:), allocatable mbay
                                                        Current BUFR message for each file ID.
                                                        +
                                                        integer, dimension(:), allocatable mbyt
                                                        Length (in bytes) of current BUFR message for each file ID.
                                                        +
                                                        Declare an array used by various subroutines and functions to hold a temporary working copy of a BUFR...
                                                        +
                                                        integer, dimension(:), allocatable mgwa
                                                        Temporary working copy of BUFR message.
                                                        +
                                                        Declare arrays used to store information about the current BUFR message that is in the process of bei...
                                                        +
                                                        integer, dimension(:), allocatable nmsg
                                                        Current message pointer within logical unit.
                                                        +
                                                        integer, dimension(:), allocatable msub
                                                        Total number of data subsets in message.
                                                        +
                                                        integer, dimension(:), allocatable nsub
                                                        Current subset pointer within message.
                                                        +
                                                        Declare arrays and variables used to store the contents of one or more BUFR files within internal mem...
                                                        +
                                                        integer, dimension(:), allocatable msgp
                                                        Pointers to the beginning of each message within msgs (up to a maximum of maxmsg, and where array ele...
                                                        +
                                                        integer, dimension(:), allocatable ipmsgs
                                                        Pointers to first message within msgs for which each DX BUFR table applies.
                                                        +
                                                        integer, dimension(:), allocatable msgs
                                                        BUFR messages read from one or more BUFR files.
                                                        +
                                                        integer, dimension(:), allocatable icdxts
                                                        Number of consecutive messages within mdx which constitute each DX BUFR table, beginning with the cor...
                                                        +
                                                        integer mxdxm
                                                        Maximum number of DX BUFR table messages that can be stored within mdx.
                                                        +
                                                        integer, dimension(:), allocatable ifdxts
                                                        Pointers to the beginning of each DX BUFR table within mdx.
                                                        +
                                                        integer munit
                                                        Fortran logical unit number for use in accessing contents of BUFR files within internal memory.
                                                        +
                                                        integer ndxm
                                                        Number of DX BUFR table messages stored within mdx (up to a maximum of mxdxm).
                                                        +
                                                        integer ldxm
                                                        Number of array elements filled within mdx (up to a maximum of mxdxw).
                                                        +
                                                        integer mlast
                                                        Number of array elements filled within msgs (up to a maximum of maxmem).
                                                        +
                                                        integer ldxts
                                                        Number of DX BUFR table that is currently in scope, depending on which BUFR message within msgs is cu...
                                                        +
                                                        integer ndxts
                                                        Number of DX BUFR tables represented by the messages within mdx (up to a maximum of mxdxts).
                                                        +
                                                        integer, dimension(:), allocatable mdx
                                                        DX BUFR table messages read from one or more BUFR files, for use in decoding the messages in msgs.
                                                        +
                                                        integer mxdxw
                                                        Maximum number of entries that can be stored within mdx.
                                                        +
                                                        integer, dimension(:), allocatable ipdxm
                                                        Pointers to the beginning of each message within mdx.
                                                        +
                                                        Declare arrays and variables used to store the internal jump/link table.
                                                        +
                                                        integer, dimension(:), allocatable ibt
                                                        Bit widths corresponding to tag and typ:
                                                        +
                                                        integer, dimension(:), allocatable itp
                                                        Integer type values corresponding to typ:
                                                        +
                                                        Declare an array used to store, for each file ID from which a BUFR message is currently being read as...
                                                        +
                                                        integer, dimension(:), allocatable msgunp
                                                        Flag indicating how to unpack data subsets from BUFR message:
                                                        +
                                                        Declare arrays used to store data values and associated metadata for the current BUFR data subset in ...
                                                        +
                                                        integer, dimension(:), allocatable nval
                                                        Number of data values in BUFR data subset.
                                                        +
                                                        integer, dimension(:,:), allocatable, target inv
                                                        Inventory pointer which links each data value to its corresponding node in the internal jump/link tab...
                                                        +
                                                        recursive subroutine closbf(lunit)
                                                        Close the connection between logical unit lunit and the NCEPLIBS-bufr software.
                                                        +
                                                        recursive subroutine openbf(lunit, io, lundx)
                                                        Connect a new file to the NCEPLIBS-bufr software for input or output operations, or initialize the li...
                                                        +
                                                        recursive subroutine status(lunit, lun, il, im)
                                                        Check whether a specified Fortran logical unit number is currently connected to the NCEPLIBS-bufr sof...
                                                        +
                                                        subroutine wtstat(lunit, lun, il, im)
                                                        Update file status in library internals.
                                                        +
                                                        recursive integer function nmsub(lunit)
                                                        Get the total number of data subsets available within the BUFR message that was most recently opened ...
                                                        +
                                                        integer function nmwrd(mbay)
                                                        Given an integer array containing Section 0 from a BUFR message, determine the array size (in integer...
                                                        +
                                                        subroutine rdmsgw(lunit, mesg, iret)
                                                        Read the next BUFR message from logical unit lunit as an array of integer words.
                                                        +
                                                        subroutine usrtpl(lun, invn, nbmp)
                                                        Expand a subset template within internal arrays.
                                                        +
                                                        recursive subroutine readsb(lunit, iret)
                                                        Read the next data subset from a BUFR message.
                                                        Definition: readwritesb.F90:32
                                                        +
                                                        recursive subroutine ufbint(lunin, usr, i1, i2, iret, str)
                                                        Read or write one or more data values from or to a data subset.
                                                        +
                                                        subroutine cktaba(lun, subset, jdate, iret)
                                                        Get the Table A mnemonic from Sections 1 and 3 of a BUFR message.
                                                        Definition: s013vals.F90:1272
                                                        +
                                                        recursive integer function iupbs01(mbay, s01mnem)
                                                        Read a specified value from within Section 0 or Section 1 of a BUFR message.
                                                        Definition: s013vals.F90:247
                                                        +
                                                        subroutine parstr(str, tags, mtag, ntag, sep, limit80)
                                                        Parse a string containing one or more substrings into an array of substrings.
                                                        Definition: strings.F90:473
                                                        +
                                                        subroutine string(str, lun, i1, io)
                                                        Check whether a string is in the internal mnemonic string cache.
                                                        Definition: strings.F90:25
                                                        +
                                                        subroutine x48(iin4, iout8, nval)
                                                        Encode one or more 4-byte integer values as 8-byte integer values.
                                                        Definition: x4884.F90:18
                                                        +
                                                        subroutine x84(iin8, iout4, nval)
                                                        Encode one or more 8-byte integer values as 4-byte integer values.
                                                        Definition: x4884.F90:65
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/menu.js b/previous_versions/v12.1.0/menu.js new file mode 100644 index 000000000..2fe2214f2 --- /dev/null +++ b/previous_versions/v12.1.0/menu.js @@ -0,0 +1,51 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { + function makeTree(data,relPath) { + var result=''; + if ('children' in data) { + result+=''; + } + return result; + } + + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchEnabled) { + if (serverSide) { + $('#main-menu').append('
                                                      • '); + } else { + $('#main-menu').append('
                                                      • '); + } + } + $('#main-menu').smartmenus(); +} +/* @license-end */ diff --git a/previous_versions/v12.1.0/menudata.js b/previous_versions/v12.1.0/menudata.js new file mode 100644 index 000000000..0c437138f --- /dev/null +++ b/previous_versions/v12.1.0/menudata.js @@ -0,0 +1,135 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file +*/ +var menudata={children:[ +{text:"Main Page",url:"index.html"}, +{text:"Related Pages",url:"pages.html"}, +{text:"Modules",url:"namespaces.html",children:[ +{text:"Modules List",url:"namespaces.html"}, +{text:"Module Members",url:"namespacemembers.html",children:[ +{text:"All",url:"namespacemembers.html",children:[ +{text:"b",url:"namespacemembers.html#index_b"}, +{text:"c",url:"namespacemembers_c.html#index_c"}, +{text:"d",url:"namespacemembers_d.html#index_d"}, +{text:"e",url:"namespacemembers_e.html#index_e"}, +{text:"f",url:"namespacemembers_f.html#index_f"}, +{text:"g",url:"namespacemembers_g.html#index_g"}, +{text:"i",url:"namespacemembers_i.html#index_i"}, +{text:"j",url:"namespacemembers_j.html#index_j"}, +{text:"k",url:"namespacemembers_k.html#index_k"}, +{text:"l",url:"namespacemembers_l.html#index_l"}, +{text:"m",url:"namespacemembers_m.html#index_m"}, +{text:"n",url:"namespacemembers_n.html#index_n"}, +{text:"o",url:"namespacemembers_o.html#index_o"}, +{text:"p",url:"namespacemembers_p.html#index_p"}, +{text:"r",url:"namespacemembers_r.html#index_r"}, +{text:"s",url:"namespacemembers_s.html#index_s"}, +{text:"t",url:"namespacemembers_t.html#index_t"}, +{text:"u",url:"namespacemembers_u.html#index_u"}, +{text:"v",url:"namespacemembers_v.html#index_v"}, +{text:"w",url:"namespacemembers_w.html#index_w"}, +{text:"x",url:"namespacemembers_x.html#index_x"}]}, +{text:"Functions/Subroutines",url:"namespacemembers_func.html",children:[ +{text:"b",url:"namespacemembers_func.html#index_b"}, +{text:"c",url:"namespacemembers_func.html#index_c"}, +{text:"d",url:"namespacemembers_func.html#index_d"}, +{text:"e",url:"namespacemembers_func.html#index_e"}, +{text:"g",url:"namespacemembers_func.html#index_g"}, +{text:"i",url:"namespacemembers_func.html#index_i"}, +{text:"m",url:"namespacemembers_func.html#index_m"}, +{text:"n",url:"namespacemembers_func.html#index_n"}, +{text:"o",url:"namespacemembers_func.html#index_o"}, +{text:"p",url:"namespacemembers_func.html#index_p"}, +{text:"r",url:"namespacemembers_func.html#index_r"}, +{text:"s",url:"namespacemembers_func.html#index_s"}, +{text:"u",url:"namespacemembers_func.html#index_u"}]}, +{text:"Variables",url:"namespacemembers_vars.html",children:[ +{text:"c",url:"namespacemembers_vars.html#index_c"}, +{text:"f",url:"namespacemembers_vars.html#index_f"}, +{text:"i",url:"namespacemembers_vars.html#index_i"}, +{text:"j",url:"namespacemembers_vars.html#index_j"}, +{text:"k",url:"namespacemembers_vars.html#index_k"}, +{text:"l",url:"namespacemembers_vars.html#index_l"}, +{text:"m",url:"namespacemembers_vars.html#index_m"}, +{text:"n",url:"namespacemembers_vars.html#index_n"}, +{text:"s",url:"namespacemembers_vars.html#index_s"}, +{text:"t",url:"namespacemembers_vars.html#index_t"}, +{text:"v",url:"namespacemembers_vars.html#index_v"}, +{text:"w",url:"namespacemembers_vars.html#index_w"}, +{text:"x",url:"namespacemembers_vars.html#index_x"}]}]}]}, +{text:"Data Types List",url:"annotated.html",children:[ +{text:"Data Types List",url:"annotated.html"}, +{text:"Data Fields",url:"functions.html",children:[ +{text:"All",url:"functions.html"}, +{text:"Functions/Subroutines",url:"functions_func.html"}]}]}, +{text:"Files",url:"files.html",children:[ +{text:"File List",url:"files.html"}, +{text:"Globals",url:"globals.html",children:[ +{text:"All",url:"globals.html",children:[ +{text:"a",url:"globals.html#index_a"}, +{text:"b",url:"globals_b.html#index_b"}, +{text:"c",url:"globals_c.html#index_c"}, +{text:"d",url:"globals_d.html#index_d"}, +{text:"e",url:"globals_e.html#index_e"}, +{text:"f",url:"globals_f.html#index_f"}, +{text:"g",url:"globals_g.html#index_g"}, +{text:"h",url:"globals_h.html#index_h"}, +{text:"i",url:"globals_i.html#index_i"}, +{text:"j",url:"globals_j.html#index_j"}, +{text:"l",url:"globals_l.html#index_l"}, +{text:"m",url:"globals_m.html#index_m"}, +{text:"n",url:"globals_n.html#index_n"}, +{text:"o",url:"globals_o.html#index_o"}, +{text:"p",url:"globals_p.html#index_p"}, +{text:"r",url:"globals_r.html#index_r"}, +{text:"s",url:"globals_s.html#index_s"}, +{text:"t",url:"globals_t.html#index_t"}, +{text:"u",url:"globals_u.html#index_u"}, +{text:"v",url:"globals_v.html#index_v"}, +{text:"w",url:"globals_w.html#index_w"}, +{text:"x",url:"globals_x.html#index_x"}]}, +{text:"Functions/Subroutines",url:"globals_func.html",children:[ +{text:"a",url:"globals_func.html#index_a"}, +{text:"b",url:"globals_func_b.html#index_b"}, +{text:"c",url:"globals_func_c.html#index_c"}, +{text:"d",url:"globals_func_d.html#index_d"}, +{text:"e",url:"globals_func_e.html#index_e"}, +{text:"f",url:"globals_func_f.html#index_f"}, +{text:"g",url:"globals_func_g.html#index_g"}, +{text:"h",url:"globals_func_h.html#index_h"}, +{text:"i",url:"globals_func_i.html#index_i"}, +{text:"j",url:"globals_func_j.html#index_j"}, +{text:"l",url:"globals_func_l.html#index_l"}, +{text:"m",url:"globals_func_m.html#index_m"}, +{text:"n",url:"globals_func_n.html#index_n"}, +{text:"o",url:"globals_func_o.html#index_o"}, +{text:"p",url:"globals_func_p.html#index_p"}, +{text:"r",url:"globals_func_r.html#index_r"}, +{text:"s",url:"globals_func_s.html#index_s"}, +{text:"t",url:"globals_func_t.html#index_t"}, +{text:"u",url:"globals_func_u.html#index_u"}, +{text:"w",url:"globals_func_w.html#index_w"}, +{text:"x",url:"globals_func_x.html#index_x"}]}, +{text:"Variables",url:"globals_vars.html"}, +{text:"Macros",url:"globals_defs.html"}]}]}]} diff --git a/previous_versions/v12.1.0/misc_8F90.html b/previous_versions/v12.1.0/misc_8F90.html new file mode 100644 index 000000000..8da13c4e8 --- /dev/null +++ b/previous_versions/v12.1.0/misc_8F90.html @@ -0,0 +1,581 @@ + + + + + + + +NCEPLIBS-bufr: misc.F90 File Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        misc.F90 File Reference
                                                        +
                                                        +
                                                        + +

                                                        Miscellaneous subroutines and functions. +More...

                                                        + +

                                                        Go to the source code of this file.

                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                                                        +Functions/Subroutines

                                                        subroutine bfrini
                                                         Initialize numerous global variables and arrays within internal modules and COMMON blocks throughout the NCEPLIBS-bufr software. More...
                                                         
                                                        subroutine bvers (cverstr)
                                                         Get the version number of the NCEPLIBS-bufr software. More...
                                                         
                                                        subroutine capit (str)
                                                         Capitalize all of the alphabetic characters in a string. More...
                                                         
                                                        recursive integer function igetsc (lunit)
                                                         Check for an abnormal status code associated with the processing of a file. More...
                                                         
                                                        integer function iokoper (nemo)
                                                         Check whether a specified mnemonic is a Table C operator supported by the NCEPLIBS-bufr software. More...
                                                         
                                                        integer function irev (n)
                                                         Return a copy of an integer value with the bytes possibly reversed. More...
                                                         
                                                        integer function isize (num)
                                                         Compute the number of characters needed to encode an integer as a string. More...
                                                         
                                                        subroutine jstnum (str, sign, iret)
                                                         Left-justify a character string containing an encoded integer, by removing all leading blanks and any leading sign ('+' or '-') character. More...
                                                         
                                                        subroutine mrginv
                                                         Print a summary of merge activity. More...
                                                         
                                                        recursive subroutine strnum (str, num, iret)
                                                         Decode an integer from a character string. More...
                                                         
                                                        subroutine strsuc (str1, str2, lens)
                                                         Remove leading and trailing blanks from a character string. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Miscellaneous subroutines and functions.

                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition in file misc.F90.

                                                        +

                                                        Function/Subroutine Documentation

                                                        + +

                                                        ◆ bfrini()

                                                        + +
                                                        +
                                                        + + + + +
                                                        subroutine bfrini
                                                        +
                                                        + +

                                                        Initialize numerous global variables and arrays within internal modules and COMMON blocks throughout the NCEPLIBS-bufr software.

                                                        +

                                                        This subroutine isn't normally called directly by any application program, because it's automatically called internally from within subroutine openbf() during the first time that subroutine is called by any application program.

                                                        +
                                                        Authors
                                                        J. Woollen J. Ator
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 15 of file misc.F90.

                                                        + +

                                                        References moda_idrdm::idrdm, moda_stbfr::iolun, moda_stbfr::iomsg, ipkm(), moda_bufrsr::jsr, moda_bitbuf::maxbyt, moda_bufrmg::msglen, moda_msglim::msglim, mtinfo(), moda_dscach::ncnem, moda_tababd::ntba, moda_tababd::ntbb, moda_tababd::ntbd, and moda_usrint::nval.

                                                        + +

                                                        Referenced by openbf().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ bvers()

                                                        + +
                                                        +
                                                        + + + + + + + + +
                                                        subroutine bvers (character*(*), intent(out) cverstr)
                                                        +
                                                        + +

                                                        Get the version number of the NCEPLIBS-bufr software.

                                                        +
                                                        Parameters
                                                        + + +
                                                        cverstr- Version string
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2009-03-23
                                                        + +

                                                        Definition at line 383 of file misc.F90.

                                                        + +

                                                        References bort().

                                                        + +

                                                        Referenced by bufr_c2f_interface::bvers_c().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ capit()

                                                        + +
                                                        +
                                                        + + + + + + + + +
                                                        subroutine capit (character*(*), intent(inout) str)
                                                        +
                                                        + +

                                                        Capitalize all of the alphabetic characters in a string.

                                                        +

                                                        The string is modified in place.

                                                        +
                                                        Parameters
                                                        + + +
                                                        str- String
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        2002-05-14
                                                        + +

                                                        Definition at line 354 of file misc.F90.

                                                        + +

                                                        Referenced by cmpmsg(), codflg(), elemdx(), stbfdx(), stdmsg(), and strcpt().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ igetsc()

                                                        + +
                                                        +
                                                        + + + + + + + + +
                                                        recursive integer function igetsc (integer, intent(in) lunit)
                                                        +
                                                        + +

                                                        Check for an abnormal status code associated with the processing of a file.

                                                        +

                                                        Return a status code associated with any file that was previously opened via a call to subroutine openbf(), so that the application program can check whether the NCEPLIBS-bufr software encountered any specific problems while processing the file.

                                                        +
                                                        Parameters
                                                        + + +
                                                        lunit- Fortran logical unit number for BUFR file
                                                        +
                                                        +
                                                        +
                                                        Returns
                                                        - Return code:
                                                          +
                                                        • 0 = no problems were encountered
                                                        • +
                                                        • 1 = replication factor overflow in subroutine usrtpl()
                                                        • +
                                                        +
                                                        +
                                                        Remarks
                                                          +
                                                        • Once subroutine openbf() has been called for lunit, this function can then be called any number of times and at any point throughout the remainder of the life of the application program.
                                                        • +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2010-05-11
                                                        + +

                                                        Definition at line 444 of file misc.F90.

                                                        + +

                                                        References bort(), moda_stcode::iscodes, status(), and x84().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ iokoper()

                                                        + +
                                                        +
                                                        + + + + + + + + +
                                                        integer function iokoper (character*(*), intent(in) nemo)
                                                        +
                                                        + +

                                                        Check whether a specified mnemonic is a Table C operator supported by the NCEPLIBS-bufr software.

                                                        +
                                                        Parameters
                                                        + + +
                                                        nemo- Mnemonic
                                                        +
                                                        +
                                                        +
                                                        Returns
                                                        iokoper - Flag indicating whether nemo is a Table C operator supported by the NCEPLIBS-bufr software:
                                                          +
                                                        • 0 = No
                                                        • +
                                                        • 1 = Yes
                                                        • +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2015-03-06
                                                        + +

                                                        Definition at line 483 of file misc.F90.

                                                        + +

                                                        References imrkopr().

                                                        + +

                                                        Referenced by istdesc().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ irev()

                                                        + +
                                                        +
                                                        + + + + + + + + +
                                                        integer function irev (integer, intent(in) n)
                                                        +
                                                        + +

                                                        Return a copy of an integer value with the bytes possibly reversed.

                                                        +

                                                        Although, by definition (within WMO Manual 306), a BUFR message is a stream of individual octets (i.e., bytes) that is independent of any particular machine representation, the NCEPLIBS-bufr software often needs to interpret all or parts of two or more adjacent bytes as an integer. By default, the software uses the "big-endian" (left to right) scheme for numbering bytes within a machine word. By reversing the bytes, this routine allows an integer word to be properly read or written (depending on whether input or output operations, respectively, are being performed) on "little-endian" machines.

                                                        +

                                                        If the local machine is "little-endian" (i.e., if it uses a right to left scheme for numbering the bytes within a machine word), then this routine returns a copy of the input integer value with the bytes reversed. Otherwise, if the local machine is already "big-endian", then this routine simply returns a copy of the same integer value that was input.

                                                        +
                                                        Parameters
                                                        + + +
                                                        n- Value with bytes ordered according to the "big-endian" numbering scheme
                                                        +
                                                        +
                                                        +
                                                        Returns
                                                        - Copy of n with bytes ordered according to the numbering scheme of the local machine
                                                        +
                                                        Author
                                                        Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 256 of file misc.F90.

                                                        + +

                                                        Referenced by ipkm(), and iupm().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ isize()

                                                        + +
                                                        +
                                                        + + + + + + + + +
                                                        integer function isize (integer, intent(in) num)
                                                        +
                                                        + +

                                                        Compute the number of characters needed to encode an integer as a string.

                                                        +

                                                        This function does not actually encode the string but rather only figures out the required size. num must be an integer in the range of 0 to 99999.

                                                        +
                                                        Parameters
                                                        + + +
                                                        num- number
                                                        +
                                                        +
                                                        +
                                                        Returns
                                                        - Number of characters necessary to encode num as a string
                                                        +
                                                        Author
                                                        Ator
                                                        +
                                                        Date
                                                        2009-03-23
                                                        + +

                                                        Definition at line 407 of file misc.F90.

                                                        + +

                                                        References bort().

                                                        + +

                                                        Referenced by ufbdmp(), and ufdump().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ jstnum()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        subroutine jstnum (character*(*), intent(inout) str,
                                                        character, intent(out) sign,
                                                        integer, intent(out) iret 
                                                        )
                                                        +
                                                        + +

                                                        Left-justify a character string containing an encoded integer, by removing all leading blanks and any leading sign ('+' or '-') character.

                                                        +

                                                        The input string is modified in place, and the sign is returned as a separate parameter. If the input string contains only blank characters, then a call is made to subroutine bort().

                                                        +
                                                        Parameters
                                                        + + + + +
                                                        str- String
                                                        sign- Sign of encoded integer value:
                                                          +
                                                        • '+' = positive value
                                                        • +
                                                        • '-' = negative value
                                                        • +
                                                        +
                                                        iret- Return code:
                                                          +
                                                        • 0 = normal return
                                                        • +
                                                        • -1 = input string contained non-blank characters which were also non-numeric
                                                        • +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 302 of file misc.F90.

                                                        + +

                                                        References bort(), errwrt(), and strnum().

                                                        + +

                                                        Referenced by elemdx().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ mrginv()

                                                        + +
                                                        +
                                                        + + + + +
                                                        subroutine mrginv
                                                        +
                                                        + +

                                                        Print a summary of merge activity.

                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1996-10-09
                                                        + +

                                                        Definition at line 513 of file misc.F90.

                                                        + +

                                                        References errwrt().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ strnum()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        recursive subroutine strnum (character*(*), intent(in) str,
                                                        integer, intent(out) num,
                                                        integer, intent(out) iret 
                                                        )
                                                        +
                                                        + +

                                                        Decode an integer from a character string.

                                                        +

                                                        The string may contain leading or trailing blanks, but otherwise should contain only digits and an (optional) leading sign ('+' or '-') character. If the string is empty or contains all blank characters, then num is returned with a value of 0.

                                                        +
                                                        Parameters
                                                        + + + + +
                                                        str- String
                                                        num- Value decoded from str
                                                        iret- Return code: 0 = success -1 = string contained one or more illegal characters
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 176 of file misc.F90.

                                                        + +

                                                        References strsuc(), and x48().

                                                        + +

                                                        Referenced by fdebufr_c(), gettbh(), jstnum(), nemtbb(), parutg(), seqsdx(), sntbfe(), bufr_c2f_interface::strnum_c(), and upftbv().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ strsuc()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        subroutine strsuc (character*(*), intent(in) str1,
                                                        character*(*), intent(out) str2,
                                                        integer, intent(out) lens 
                                                        )
                                                        +
                                                        + +

                                                        Remove leading and trailing blanks from a character string.

                                                        +

                                                        The string may not contain any embedded blanks.

                                                        +
                                                        Parameters
                                                        + + + + +
                                                        str1- String
                                                        str2- Copy of str1 with leading and trailing blanks removed
                                                        lens- Length of str2
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 219 of file misc.F90.

                                                        + +

                                                        Referenced by dxdump(), fdebufr_c(), gettagre(), hold4wlc(), mtfnam(), mtinfo(), nemspecs(), strnum(), and ufdump().

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/misc_8F90.js b/previous_versions/v12.1.0/misc_8F90.js new file mode 100644 index 000000000..f620836d2 --- /dev/null +++ b/previous_versions/v12.1.0/misc_8F90.js @@ -0,0 +1,14 @@ +var misc_8F90 = +[ + [ "bfrini", "misc_8F90.html#ab3f045cc170403305543e34e30b87001", null ], + [ "bvers", "misc_8F90.html#a76aaeb3402158be94f735c166f93a527", null ], + [ "capit", "misc_8F90.html#abb1e33496bab2eb5a1c93f44173f57ea", null ], + [ "igetsc", "misc_8F90.html#a5b379fcc508f3f50fa71042b8e3645af", null ], + [ "iokoper", "misc_8F90.html#a1bc01a10f226d09971ab1a3b0d3734bf", null ], + [ "irev", "misc_8F90.html#a1cd5e68cc460b388986ba7273abdd689", null ], + [ "isize", "misc_8F90.html#ac720bf9bc96336f8e4bf8120852f094e", null ], + [ "jstnum", "misc_8F90.html#a0e7d4106a679cae0404866a8781a7651", null ], + [ "mrginv", "misc_8F90.html#ad2b1b1578991d75d98e005d2678bef78", null ], + [ "strnum", "misc_8F90.html#a93d704d3c84005bb12c261225445a99e", null ], + [ "strsuc", "misc_8F90.html#ab18db8197d0e5256ff5dfd2f26304d28", null ] +]; \ No newline at end of file diff --git a/previous_versions/v12.1.0/misc_8F90_source.html b/previous_versions/v12.1.0/misc_8F90_source.html new file mode 100644 index 000000000..2ec5f4ab1 --- /dev/null +++ b/previous_versions/v12.1.0/misc_8F90_source.html @@ -0,0 +1,557 @@ + + + + + + + +NCEPLIBS-bufr: misc.F90 Source File + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        +
                                                        misc.F90
                                                        +
                                                        +
                                                        +Go to the documentation of this file.
                                                        1 
                                                        +
                                                        5 
                                                        +
                                                        15 subroutine bfrini
                                                        +
                                                        16 
                                                        +
                                                        17  use modv_vars, only: maxtba, maxtbb, maxtbd, mxmsgl, nfiles, adsn, idnr
                                                        +
                                                        18 
                                                        +
                                                        19  use moda_stbfr
                                                        +
                                                        20  use moda_idrdm
                                                        +
                                                        21  use moda_msglim
                                                        +
                                                        22  use moda_bitbuf
                                                        +
                                                        23  use moda_bufrmg
                                                        +
                                                        24  use moda_bufrsr
                                                        +
                                                        25  use moda_tababd
                                                        +
                                                        26  use moda_usrint
                                                        +
                                                        27  use moda_dscach
                                                        +
                                                        28 
                                                        +
                                                        29  implicit none
                                                        +
                                                        30 
                                                        +
                                                        31  integer ndndx(10), nldxa(10), nldxb(10), nldxd(10), nld30(10), ibct, ipd1, ipd2, ipd3, ipd4, nrpl, nmrg, namb, ntot, &
                                                        +
                                                        32  maxdx, idxv, nxstr, ldxa, ldxb, ldxd, ld30, i, j, i1, ifxy
                                                        +
                                                        33 
                                                        +
                                                        34  character*240 cmtdir
                                                        +
                                                        35  character*56 dxstr
                                                        +
                                                        36  character*6 dndx(25,10)
                                                        +
                                                        37 
                                                        +
                                                        38  common /padesc/ ibct, ipd1, ipd2, ipd3, ipd4
                                                        +
                                                        39  common /dxtab/ maxdx, idxv, nxstr(10), ldxa(10), ldxb(10), ldxd(10), ld30(10), dxstr(10)
                                                        +
                                                        40  common /mrgcom/ nrpl,nmrg,namb,ntot
                                                        +
                                                        41 
                                                        +
                                                        42  data (dndx(i,1),i=1,25)/ &
                                                        +
                                                        43  '102000','031001','000001','000002', &
                                                        +
                                                        44  '110000','031001','000010','000011','000012','000013','000015','000016','000017','000018','000019','000020', &
                                                        +
                                                        45  '107000','031001','000010','000011','000012','000013','101000','031001','000030'/
                                                        +
                                                        46 
                                                        +
                                                        47  data (dndx(i,2),i=1,15)/ &
                                                        +
                                                        48  '103000','031001','000001','000002','000003', &
                                                        +
                                                        49  '101000','031001','300004', &
                                                        +
                                                        50  '105000','031001','300003','205064','101000','031001','000030'/
                                                        +
                                                        51 
                                                        +
                                                        52  data ndndx / 25 , 15 , 8*0 /
                                                        +
                                                        53  data nldxa / 35 , 67 , 8*0 /
                                                        +
                                                        54  data nldxb / 80 , 112 , 8*0 /
                                                        +
                                                        55  data nldxd / 38 , 70 , 8*0 /
                                                        +
                                                        56  data nld30 / 5 , 6 , 8*0 /
                                                        +
                                                        57 
                                                        +
                                                        58  ! Initialize module moda_bitbuf
                                                        +
                                                        59 
                                                        +
                                                        60  maxbyt = min(10000,mxmsgl)
                                                        +
                                                        61 
                                                        +
                                                        62  ! Initialize common /padesc/
                                                        +
                                                        63 
                                                        +
                                                        64  ibct = ifxy('063000')
                                                        +
                                                        65  ipd1 = ifxy('102000')
                                                        +
                                                        66  ipd2 = ifxy('031001')
                                                        +
                                                        67  ipd3 = ifxy('206001')
                                                        +
                                                        68  ipd4 = ifxy('063255')
                                                        +
                                                        69 
                                                        +
                                                        70  ! Initialize module moda_stbfr
                                                        +
                                                        71 
                                                        +
                                                        72  do i=1,nfiles
                                                        +
                                                        73  iolun(i) = 0
                                                        +
                                                        74  iomsg(i) = 0
                                                        +
                                                        75  enddo
                                                        +
                                                        76 
                                                        +
                                                        77  ! Initialize module moda_idrdm
                                                        +
                                                        78 
                                                        +
                                                        79  do i=1,nfiles
                                                        +
                                                        80  idrdm(i) = 0
                                                        +
                                                        81  enddo
                                                        +
                                                        82 
                                                        +
                                                        83  ! Initialize module moda_msglim
                                                        +
                                                        84 
                                                        +
                                                        85  do i=1,nfiles
                                                        +
                                                        86  msglim(i) = 3
                                                        +
                                                        87  enddo
                                                        +
                                                        88 
                                                        +
                                                        89  ! Initialize module moda_usrint
                                                        +
                                                        90 
                                                        +
                                                        91  do i=1,nfiles
                                                        +
                                                        92  nval(i) = 0
                                                        +
                                                        93  enddo
                                                        +
                                                        94 
                                                        +
                                                        95  ! Initialize idnr array
                                                        +
                                                        96 
                                                        +
                                                        97  do i=1,10
                                                        +
                                                        98  idnr(i) = ifxy(adsn(i))
                                                        +
                                                        99  enddo
                                                        +
                                                        100 
                                                        +
                                                        101  ! Initialize module moda_tababd
                                                        +
                                                        102 
                                                        +
                                                        103  ! ntba(0) is the maximum number of entries within internal BUFR table A
                                                        +
                                                        104  ntba(0) = maxtba
                                                        +
                                                        105  ! ntbb(0) is the maximum number of entries within internal BUFR Table B
                                                        +
                                                        106  ntbb(0) = maxtbb
                                                        +
                                                        107  ! ntbd(0) is the maximum number of entries within internal BUFR Table D
                                                        +
                                                        108  ntbd(0) = maxtbd
                                                        +
                                                        109 
                                                        +
                                                        110  ! Initialize common /dxtab/
                                                        +
                                                        111 
                                                        +
                                                        112  maxdx = maxbyt
                                                        +
                                                        113  ! idxv is the version number of the local tables
                                                        +
                                                        114  idxv = 1
                                                        +
                                                        115 
                                                        +
                                                        116  do j=1,10
                                                        +
                                                        117  ldxa(j) = nldxa(j)
                                                        +
                                                        118  ldxb(j) = nldxb(j)
                                                        +
                                                        119  ldxd(j) = nldxd(j)
                                                        +
                                                        120  ld30(j) = nld30(j)
                                                        +
                                                        121  dxstr(j) = ' '
                                                        +
                                                        122  nxstr(j) = ndndx(j)*2
                                                        +
                                                        123  do i=1,ndndx(j)
                                                        +
                                                        124  i1 = i*2-1
                                                        +
                                                        125  call ipkm(dxstr(j)(i1:i1),2,ifxy(dndx(i,j)))
                                                        +
                                                        126  enddo
                                                        +
                                                        127  enddo
                                                        +
                                                        128 
                                                        +
                                                        129  ! Initialize module moda_bufrmg
                                                        +
                                                        130 
                                                        +
                                                        131  do i=1,nfiles
                                                        +
                                                        132  msglen(i) = 0
                                                        +
                                                        133  enddo
                                                        +
                                                        134 
                                                        +
                                                        135  ! Initialize common /mrgcom/
                                                        +
                                                        136 
                                                        +
                                                        137  nrpl = 0
                                                        +
                                                        138  nmrg = 0
                                                        +
                                                        139  namb = 0
                                                        +
                                                        140  ntot = 0
                                                        +
                                                        141 
                                                        +
                                                        142  ! Initialize module moda_bufrsr
                                                        +
                                                        143 
                                                        +
                                                        144  do i=1,nfiles
                                                        +
                                                        145  jsr(i) = 0
                                                        +
                                                        146  enddo
                                                        +
                                                        147 
                                                        +
                                                        148  ! Initialize module moda_dscach
                                                        +
                                                        149 
                                                        +
                                                        150  ncnem = 0
                                                        +
                                                        151 
                                                        +
                                                        152  ! Initialize common /mstinf/
                                                        +
                                                        153 
                                                        +
                                                        154  cmtdir = &
                                                        +
                                                        155  '/home/runner/work/NCEPLIBS-bufr/NCEPLIBS-bufr/bufr/build-doc' // &
                                                        +
                                                        156 's/install/tables'
                                                        +
                                                        157  call mtinfo(cmtdir,98,99)
                                                        +
                                                        158 
                                                        +
                                                        159  return
                                                        +
                                                        160 end subroutine bfrini
                                                        +
                                                        161 
                                                        +
                                                        176 recursive subroutine strnum( str, num, iret )
                                                        +
                                                        177  use modv_vars, only: im8b
                                                        +
                                                        178 
                                                        +
                                                        179  implicit none
                                                        +
                                                        180 
                                                        +
                                                        181  character*(*), intent(in) :: str
                                                        +
                                                        182 
                                                        +
                                                        183  integer, intent(out) :: num, iret
                                                        +
                                                        184 
                                                        +
                                                        185  character str2*40
                                                        +
                                                        186 
                                                        +
                                                        187  integer lens, ios
                                                        +
                                                        188 
                                                        +
                                                        189  ! Check for I8 integers.
                                                        +
                                                        190  if (im8b) then
                                                        +
                                                        191  im8b = .false.
                                                        +
                                                        192  call strnum ( str, num, iret )
                                                        +
                                                        193  call x48 ( num, num, 1 )
                                                        +
                                                        194  call x48 ( iret, iret, 1 )
                                                        +
                                                        195  im8b = .true.
                                                        +
                                                        196  return
                                                        +
                                                        197  end if
                                                        +
                                                        198 
                                                        +
                                                        199  ! Decode the integer from the string.
                                                        +
                                                        200  iret = 0
                                                        +
                                                        201  num = 0
                                                        +
                                                        202  call strsuc ( str, str2, lens )
                                                        +
                                                        203  if ( lens == 0 ) return
                                                        +
                                                        204  read ( str2(1:lens), '(I40)', iostat = ios ) num
                                                        +
                                                        205  if ( ios /= 0 ) iret = -1
                                                        +
                                                        206 
                                                        +
                                                        207  return
                                                        +
                                                        208 end subroutine strnum
                                                        +
                                                        209 
                                                        +
                                                        219 subroutine strsuc(str1,str2,lens)
                                                        +
                                                        220  implicit none
                                                        +
                                                        221 
                                                        +
                                                        222  character*(*), intent(in) :: str1
                                                        +
                                                        223  character*(*), intent(out) :: str2
                                                        +
                                                        224 
                                                        +
                                                        225  integer, intent(out) :: lens
                                                        +
                                                        226 
                                                        +
                                                        227  str2 = adjustl(str1)
                                                        +
                                                        228  lens = len_trim(str2)
                                                        +
                                                        229 
                                                        +
                                                        230  return
                                                        +
                                                        231 end subroutine strsuc
                                                        +
                                                        232 
                                                        +
                                                        256 integer function irev(n) result(iret)
                                                        +
                                                        257 
                                                        +
                                                        258  use modv_vars, only: nbytw, iordle
                                                        +
                                                        259 
                                                        +
                                                        260  implicit none
                                                        +
                                                        261 
                                                        +
                                                        262  integer, intent(in) :: n
                                                        +
                                                        263 
                                                        +
                                                        264  integer int, jnt, i
                                                        +
                                                        265 
                                                        +
                                                        266  character*8 cint,dint
                                                        +
                                                        267 
                                                        +
                                                        268  equivalence(cint,int)
                                                        +
                                                        269  equivalence(dint,jnt)
                                                        +
                                                        270 
                                                        +
                                                        271 #ifdef BIG_ENDIAN
                                                        +
                                                        272  iret = n
                                                        +
                                                        273 #else
                                                        +
                                                        274  int = n
                                                        +
                                                        275  do i=1,nbytw
                                                        +
                                                        276  dint(i:i) = cint(iordle(i):iordle(i))
                                                        +
                                                        277  enddo
                                                        +
                                                        278  iret = jnt
                                                        +
                                                        279 #endif
                                                        +
                                                        280 
                                                        +
                                                        281  return
                                                        +
                                                        282 end function irev
                                                        +
                                                        283 
                                                        +
                                                        302 subroutine jstnum(str,sign,iret)
                                                        +
                                                        303 
                                                        +
                                                        304  implicit none
                                                        +
                                                        305 
                                                        +
                                                        306  integer, intent(out) :: iret
                                                        +
                                                        307  integer iprt, lstr, num, ier
                                                        +
                                                        308 
                                                        +
                                                        309  character*(*), intent(inout) :: str
                                                        +
                                                        310  character, intent(out) :: sign
                                                        +
                                                        311  character*128 errstr
                                                        +
                                                        312 
                                                        +
                                                        313  common /quiet/ iprt
                                                        +
                                                        314 
                                                        +
                                                        315  iret = 0
                                                        +
                                                        316 
                                                        +
                                                        317  if(str==' ') call bort('BUFRLIB: JSTNUM - INPUT BLANK CHARACTER STRING NOT ALLOWED')
                                                        +
                                                        318 
                                                        +
                                                        319  str = adjustl(str)
                                                        +
                                                        320  lstr = len(str)
                                                        +
                                                        321  if(str(1:1)=='+') then
                                                        +
                                                        322  str = str(2:lstr)
                                                        +
                                                        323  sign = '+'
                                                        +
                                                        324  elseif(str(1:1)=='-') then
                                                        +
                                                        325  str = str(2:lstr)
                                                        +
                                                        326  sign = '-'
                                                        +
                                                        327  else
                                                        +
                                                        328  sign = '+'
                                                        +
                                                        329  endif
                                                        +
                                                        330 
                                                        +
                                                        331  call strnum(str,num,ier)
                                                        +
                                                        332  if(ier<0) then
                                                        +
                                                        333  if(iprt>=0) then
                                                        +
                                                        334  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        335  errstr = 'BUFRLIB: JSTNUM: ENCODED VALUE WITHIN RESULTANT CHARACTER STRING (' // str // ') IS NOT AN INTEGER - '// &
                                                        +
                                                        336  'RETURN WITH IRET = -1'
                                                        +
                                                        337  call errwrt(errstr)
                                                        +
                                                        338  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        339  call errwrt(' ')
                                                        +
                                                        340  endif
                                                        +
                                                        341  iret = -1
                                                        +
                                                        342  endif
                                                        +
                                                        343 
                                                        +
                                                        344  return
                                                        +
                                                        345 end subroutine jstnum
                                                        +
                                                        346 
                                                        +
                                                        354 subroutine capit(str)
                                                        +
                                                        355 
                                                        +
                                                        356  implicit none
                                                        +
                                                        357 
                                                        +
                                                        358  integer i, j
                                                        +
                                                        359 
                                                        +
                                                        360  character*(*), intent(inout) :: str
                                                        +
                                                        361  character*26 upcs, lwcs
                                                        +
                                                        362 
                                                        +
                                                        363  data upcs /'ABCDEFGHIJKLMNOPQRSTUVWXYZ'/
                                                        +
                                                        364  data lwcs /'abcdefghijklmnopqrstuvwxyz'/
                                                        +
                                                        365 
                                                        +
                                                        366  do i=1,len(str)
                                                        +
                                                        367  do j=1,26
                                                        +
                                                        368  if(str(i:i)==lwcs(j:j)) then
                                                        +
                                                        369  str(i:i) = upcs(j:j)
                                                        +
                                                        370  exit
                                                        +
                                                        371  endif
                                                        +
                                                        372  enddo
                                                        +
                                                        373  enddo
                                                        +
                                                        374 
                                                        +
                                                        375  return
                                                        +
                                                        376 end subroutine capit
                                                        +
                                                        377 
                                                        +
                                                        383 subroutine bvers (cverstr)
                                                        +
                                                        384 
                                                        +
                                                        385  implicit none
                                                        +
                                                        386 
                                                        +
                                                        387  character*(*), intent(out) :: cverstr
                                                        +
                                                        388 
                                                        +
                                                        389  if (len(cverstr)<8) call bort('BUFRLIB: BVERS - INPUT STRING MUST CONTAIN SPACE FOR AT LEAST 8 CHARACTERS')
                                                        +
                                                        390 
                                                        +
                                                        391  cverstr = '12.1.0'
                                                        +
                                                        392 
                                                        +
                                                        393  return
                                                        +
                                                        394 end subroutine bvers
                                                        +
                                                        395 
                                                        +
                                                        407 integer function isize (num) result (iret)
                                                        +
                                                        408 
                                                        +
                                                        409  implicit none
                                                        +
                                                        410 
                                                        +
                                                        411  integer, intent(in) :: num
                                                        +
                                                        412 
                                                        +
                                                        413  character*128 bort_str
                                                        +
                                                        414 
                                                        +
                                                        415  if ( num >= 0 ) then
                                                        +
                                                        416  do iret = 1, 5
                                                        +
                                                        417  if ( num < 10**iret ) return
                                                        +
                                                        418  enddo
                                                        +
                                                        419  endif
                                                        +
                                                        420  write(bort_str,'("BUFRLIB: ISIZE - INPUT NUMBER (",I7,") IS OUT OF RANGE")') num
                                                        +
                                                        421  call bort(bort_str)
                                                        +
                                                        422 
                                                        +
                                                        423  return
                                                        +
                                                        424 end function isize
                                                        +
                                                        425 
                                                        +
                                                        444 recursive integer function igetsc(lunit) result(iret)
                                                        +
                                                        445 
                                                        +
                                                        446  use modv_vars, only: im8b
                                                        +
                                                        447 
                                                        +
                                                        448  use moda_stcode
                                                        +
                                                        449 
                                                        +
                                                        450  implicit none
                                                        +
                                                        451 
                                                        +
                                                        452  integer, intent(in) :: lunit
                                                        +
                                                        453  integer my_lunit, lun, il, im
                                                        +
                                                        454 
                                                        +
                                                        455  ! Check for I8 integers.
                                                        +
                                                        456  if (im8b) then
                                                        +
                                                        457  im8b = .false.
                                                        +
                                                        458  call x84(lunit,my_lunit,1)
                                                        +
                                                        459  iret = igetsc(my_lunit)
                                                        +
                                                        460  im8b = .true.
                                                        +
                                                        461  return
                                                        +
                                                        462  end if
                                                        +
                                                        463 
                                                        +
                                                        464  iret = 0
                                                        +
                                                        465 
                                                        +
                                                        466  ! Make sure the specified logical unit is connected to the library.
                                                        +
                                                        467  call status(lunit,lun,il,im)
                                                        +
                                                        468  if(il==0) call bort('BUFRLIB: IGETSC - BUFR FILE IS CLOSED, IT MUST BE OPEN')
                                                        +
                                                        469 
                                                        +
                                                        470  iret = iscodes(lun)
                                                        +
                                                        471 
                                                        +
                                                        472  return
                                                        +
                                                        473 end function igetsc
                                                        +
                                                        474 
                                                        +
                                                        483 integer function iokoper(nemo) result(iret)
                                                        +
                                                        484 
                                                        +
                                                        485  implicit none
                                                        +
                                                        486 
                                                        +
                                                        487  integer imrkopr
                                                        +
                                                        488 
                                                        +
                                                        489  character*(*), intent(in) :: nemo
                                                        +
                                                        490 
                                                        +
                                                        491  if ( len(nemo)<6 ) then
                                                        +
                                                        492  iret = 0
                                                        +
                                                        493  else if ( lge(nemo(1:3),'201') .and. lle(nemo(1:3),'208') ) then
                                                        +
                                                        494  iret = 1
                                                        +
                                                        495  else if ( nemo(1:3)=='221' ) then
                                                        +
                                                        496  iret = 1
                                                        +
                                                        497  else if ( ( ( nemo(4:6)=='000' ) .or. ( nemo(4:6)=='255' ) ) .and. &
                                                        +
                                                        498  ( ( nemo(1:3)=='237' ) .or. ( lge(nemo(1:3),'241') .and. lle(nemo(1:3),'243') ) ) ) then
                                                        +
                                                        499  iret = 1
                                                        +
                                                        500  else if ( ( nemo(4:6)=='000' ) .and. ( ( lge(nemo(1:3),'222') .and. lle(nemo(1:3),'225') ) .or. &
                                                        +
                                                        501  ( nemo(1:3)=='232' ) .or. ( nemo(1:3)=='235' ) .or. ( nemo(1:3)=='236' ) ) ) then
                                                        +
                                                        502  iret = 1
                                                        +
                                                        503  else
                                                        +
                                                        504  iret = imrkopr(nemo)
                                                        +
                                                        505  endif
                                                        +
                                                        506 
                                                        +
                                                        507  return
                                                        +
                                                        508 end function iokoper
                                                        +
                                                        509 
                                                        +
                                                        513 subroutine mrginv
                                                        +
                                                        514 
                                                        +
                                                        515  implicit none
                                                        +
                                                        516 
                                                        +
                                                        517  integer nrpl, nmrg, namb, ntot, iprt
                                                        +
                                                        518 
                                                        +
                                                        519  character*128 errstr
                                                        +
                                                        520 
                                                        +
                                                        521  common /mrgcom/ nrpl, nmrg, namb, ntot
                                                        +
                                                        522  common /quiet/ iprt
                                                        +
                                                        523 
                                                        +
                                                        524  if(iprt>=0) then
                                                        +
                                                        525  call errwrt('+++++++++++++++++++++BUFRLIB+++++++++++++++++++++++')
                                                        +
                                                        526  call errwrt('---------------------------------------------------')
                                                        +
                                                        527  call errwrt('INVENTORY FROM MERGE PROCESS IN SUBROUTINE INVMRG:')
                                                        +
                                                        528  call errwrt('---------------------------------------------------')
                                                        +
                                                        529  write ( unit=errstr, fmt='(A,I8)' ) 'NUMBER OF DRB EXPANSIONS = ', nrpl
                                                        +
                                                        530  call errwrt(errstr)
                                                        +
                                                        531  write ( unit=errstr, fmt='(A,I8)' ) 'NUMBER OF MERGES = ', nmrg
                                                        +
                                                        532  call errwrt(errstr)
                                                        +
                                                        533  write ( unit=errstr, fmt='(A,I8)' ) 'NUMBER THAT ARE AMBIGUOUS = ', namb
                                                        +
                                                        534  call errwrt(errstr)
                                                        +
                                                        535  call errwrt('---------------------------------------------------')
                                                        +
                                                        536  write ( unit=errstr, fmt='(A,I9)' ) 'TOTAL NUMBER OF VISITS = ', ntot
                                                        +
                                                        537  call errwrt(errstr)
                                                        +
                                                        538  call errwrt('---------------------------------------------------')
                                                        +
                                                        539  call errwrt('+++++++++++++++++++++BUFRLIB+++++++++++++++++++++++')
                                                        +
                                                        540  call errwrt(' ')
                                                        +
                                                        541  endif
                                                        +
                                                        542 
                                                        +
                                                        543  return
                                                        +
                                                        544 end subroutine mrginv
                                                        +
                                                        integer function imrkopr(nemo)
                                                        Check whether a specified mnemonic is a Table C marker operator.
                                                        Definition: bitmaps.F90:354
                                                        +
                                                        subroutine bort(str)
                                                        Log an error message, then abort the application program.
                                                        Definition: borts.F90:15
                                                        +
                                                        recursive subroutine ipkm(cbay, nbyt, n)
                                                        Encode an integer value within a specified number of bytes of a character string, up to a maximum of ...
                                                        Definition: ciencode.F90:194
                                                        +
                                                        subroutine errwrt(str)
                                                        Specify a custom location for the logging of error and diagnostic messages generated by the NCEPLIBS-...
                                                        Definition: errwrt.F90:32
                                                        +
                                                        recursive subroutine mtinfo(cmtdir, lunmt1, lunmt2)
                                                        Specify the directory location and Fortran logical unit numbers to be used when reading master BUFR t...
                                                        Definition: mastertable.F90:35
                                                        +
                                                        subroutine jstnum(str, sign, iret)
                                                        Left-justify a character string containing an encoded integer, by removing all leading blanks and any...
                                                        Definition: misc.F90:303
                                                        +
                                                        integer function iokoper(nemo)
                                                        Check whether a specified mnemonic is a Table C operator supported by the NCEPLIBS-bufr software.
                                                        Definition: misc.F90:484
                                                        +
                                                        integer function irev(n)
                                                        Return a copy of an integer value with the bytes possibly reversed.
                                                        Definition: misc.F90:257
                                                        +
                                                        recursive integer function igetsc(lunit)
                                                        Check for an abnormal status code associated with the processing of a file.
                                                        Definition: misc.F90:445
                                                        +
                                                        subroutine bvers(cverstr)
                                                        Get the version number of the NCEPLIBS-bufr software.
                                                        Definition: misc.F90:384
                                                        +
                                                        recursive subroutine strnum(str, num, iret)
                                                        Decode an integer from a character string.
                                                        Definition: misc.F90:177
                                                        +
                                                        subroutine strsuc(str1, str2, lens)
                                                        Remove leading and trailing blanks from a character string.
                                                        Definition: misc.F90:220
                                                        +
                                                        subroutine bfrini
                                                        Initialize numerous global variables and arrays within internal modules and COMMON blocks throughout ...
                                                        Definition: misc.F90:16
                                                        +
                                                        subroutine capit(str)
                                                        Capitalize all of the alphabetic characters in a string.
                                                        Definition: misc.F90:355
                                                        +
                                                        integer function isize(num)
                                                        Compute the number of characters needed to encode an integer as a string.
                                                        Definition: misc.F90:408
                                                        +
                                                        subroutine mrginv
                                                        Print a summary of merge activity.
                                                        Definition: misc.F90:514
                                                        +
                                                        Declare arrays and variables used to store BUFR messages internally for multiple file IDs.
                                                        +
                                                        integer maxbyt
                                                        Maximum length of an output BUFR message.
                                                        +
                                                        Declare arrays used to store, for each output file ID, a copy of the BUFR message that was most recen...
                                                        +
                                                        integer, dimension(:), allocatable msglen
                                                        Length (in integers) of BUFR message most recently written to each output file ID.
                                                        +
                                                        Declare arrays and variables needed to store the current position within a BUFR file.
                                                        +
                                                        integer, dimension(:), allocatable jsr
                                                        Indicator of stack status when entering subroutine rewnbf().
                                                        +
                                                        Declare arrays and variables for the internal Table A mnemonic cache that is used for Section 3 decod...
                                                        +
                                                        integer ncnem
                                                        Number of entries in the internal Table A mnemonic cache (up to a maximum of mxcnem).
                                                        +
                                                        Declare an array used by subroutine readerme() to read in a new DX dictionary table as a consecutive ...
                                                        +
                                                        integer, dimension(:), allocatable idrdm
                                                        DX BUFR tables message count for each file ID.
                                                        +
                                                        Declare an array used to keep track of which logical units should not have any empty (zero data subse...
                                                        +
                                                        integer, dimension(:), allocatable msglim
                                                        Tracking index for each file ID.
                                                        +
                                                        Declare arrays used to store file and message status indicators for all logical units that have been ...
                                                        +
                                                        integer, dimension(:), allocatable iolun
                                                        File status indicators.
                                                        +
                                                        integer, dimension(:), allocatable iomsg
                                                        Message status indicator corresponding to iolun, denoting whether a BUFR message is currently open wi...
                                                        +
                                                        Declare an array used to store a status code for each file ID if an error or other abnormal result oc...
                                                        +
                                                        integer, dimension(:), allocatable iscodes
                                                        Abnormal status codes.
                                                        +
                                                        Declare arrays and variables used to store DX BUFR tables internally for multiple file IDs.
                                                        +
                                                        integer, dimension(:), allocatable ntba
                                                        Number of Table A entries for each file ID (up to a maximum of maxtba, whose value is stored in array...
                                                        +
                                                        integer, dimension(:), allocatable ntbd
                                                        Number of Table D entries for each file ID (up to a maximum of maxtbd, whose value is stored in array...
                                                        +
                                                        integer, dimension(:), allocatable ntbb
                                                        Number of Table B entries for each file ID (up to a maximum of maxtbb, whose value is stored in array...
                                                        +
                                                        Declare arrays used to store data values and associated metadata for the current BUFR data subset in ...
                                                        +
                                                        integer, dimension(:), allocatable nval
                                                        Number of data values in BUFR data subset.
                                                        +
                                                        recursive subroutine status(lunit, lun, il, im)
                                                        Check whether a specified Fortran logical unit number is currently connected to the NCEPLIBS-bufr sof...
                                                        +
                                                        subroutine x48(iin4, iout8, nval)
                                                        Encode one or more 4-byte integer values as 8-byte integer values.
                                                        Definition: x4884.F90:18
                                                        +
                                                        subroutine x84(iin8, iout4, nval)
                                                        Encode one or more 8-byte integer values as 4-byte integer values.
                                                        Definition: x4884.F90:65
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/missing_8F90.html b/previous_versions/v12.1.0/missing_8F90.html new file mode 100644 index 000000000..eb9daed94 --- /dev/null +++ b/previous_versions/v12.1.0/missing_8F90.html @@ -0,0 +1,279 @@ + + + + + + + +NCEPLIBS-bufr: missing.F90 File Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        missing.F90 File Reference
                                                        +
                                                        +
                                                        + +

                                                        Test for "missing" data values. +More...

                                                        + +

                                                        Go to the source code of this file.

                                                        + + + + + + + + + + + + + + +

                                                        +Functions/Subroutines

                                                        real *8 function getbmiss ()
                                                         Get the current placeholder value which represents "missing" data when reading from or writing to BUFR files. More...
                                                         
                                                        integer function ibfms (r8val)
                                                         Check whether a real*8 data value returned from a previous call to any of the NCEPLIBS-bufr values-reading subroutines contains the current placeholder value for "missing" data. More...
                                                         
                                                        recursive integer function icbfms (str, lstr)
                                                         Check whether a character string returned from a previous call to subroutine readlc() was encoded as "missing" (all bits set to 1) within the actual BUFR data subset. More...
                                                         
                                                        subroutine setbmiss (xmiss)
                                                         Specify a customized value to represent "missing" data when reading from or writing to BUFR files. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Test for "missing" data values.

                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2007-01-19
                                                        + +

                                                        Definition in file missing.F90.

                                                        +

                                                        Function/Subroutine Documentation

                                                        + +

                                                        ◆ getbmiss()

                                                        + +
                                                        +
                                                        + + + + +
                                                        real*8 function getbmiss
                                                        +
                                                        + +

                                                        Get the current placeholder value which represents "missing" data when reading from or writing to BUFR files.

                                                        +
                                                        Returns
                                                        getbmiss - Current placeholder value for "missing" data
                                                        +

                                                        This subroutine can be called at any time from within an application program, and the returned value can then be used to represent "missing" data within the context of future calls to any of the other NCEPLIBS-bufr values-reading subroutines or values-writing subroutines. This placeholder value can also be changed at any time via a separate call to subroutine setbmiss().

                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        2012-09-15
                                                        + +

                                                        Definition at line 134 of file missing.F90.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ ibfms()

                                                        + +
                                                        +
                                                        + + + + + + + + +
                                                        integer function ibfms (real*8, intent(in) r8val)
                                                        +
                                                        + +

                                                        Check whether a real*8 data value returned from a previous call to any of the NCEPLIBS-bufr values-reading subroutines contains the current placeholder value for "missing" data.

                                                        +
                                                        Parameters
                                                        + + +
                                                        r8val- Data value to be tested
                                                        +
                                                        +
                                                        +
                                                        Returns
                                                        ibfms - Return code:
                                                          +
                                                        • 0 = r8val is not "missing"
                                                        • +
                                                        • 1 = r8val is "missing"
                                                        • +
                                                        +
                                                        +

                                                        The current placeholder value for "missing" data is always equal to the value xmiss as specified during the most recent call to subroutine setbmiss(), or to a default value of 10E10 if setbmiss() was never called. In either case, a return value of 1 means that the corresponding value was encoded as "missing" (all bits set to 1) within the actual BUFR data subset.

                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2007-01-19
                                                        + +

                                                        Definition at line 24 of file missing.F90.

                                                        + +

                                                        Referenced by bufr_c2f_interface::ibfms_c(), invmrg(), ufbdmp(), and ufdump().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ icbfms()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        recursive integer function icbfms (character*(*), intent(in) str,
                                                        integer, intent(in) lstr 
                                                        )
                                                        +
                                                        + +

                                                        Check whether a character string returned from a previous call to subroutine readlc() was encoded as "missing" (all bits set to 1) within the actual BUFR data subset.

                                                        +
                                                        Parameters
                                                        + + + +
                                                        str- String
                                                        lstr- Length of string, i.e. number of characters within str to be tested
                                                        +
                                                        +
                                                        +
                                                        Returns
                                                        icbfms - return code:
                                                          +
                                                        • 0 = str is not "missing"
                                                        • +
                                                        • 1 = str is "missing"
                                                        • +
                                                        +
                                                        +
                                                        Remarks
                                                          +
                                                        • The use of an integer return code allows this function to be called in a logical context from application programs written in C as well as in Fortran
                                                        • +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2012-06-07
                                                        + +

                                                        Definition at line 55 of file missing.F90.

                                                        + +

                                                        References iupm(), and x84().

                                                        + +

                                                        Referenced by ufbdmp(), and ufdump().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ setbmiss()

                                                        + +
                                                        +
                                                        + + + + + + + + +
                                                        subroutine setbmiss (real*8, intent(in) xmiss)
                                                        +
                                                        + +

                                                        Specify a customized value to represent "missing" data when reading from or writing to BUFR files.

                                                        +

                                                        This subroutine can be called at any time from within an application program, and the value xmiss will then be treated as "missing" when reading or writing BUFR data during all future calls to any of the other NCEPLIBS-bufr values-reading subroutines or values-writing subroutines. Otherwise, if this subroutine is never called, a default placeholder value of 10E10_8 is used for "missing".

                                                        +

                                                        Any data value can always be checked for equivalence to the current "missing" value via a call to function ibfms(). See also function getbmiss().

                                                        +
                                                        Remarks
                                                          +
                                                        • The value xmiss is never actually encoded within a BUFR data subset; rather, xmiss is a user-friendly placeholder value to represent "missing" data values within the scope of the application program. In any actual BUFR data subset, "missing" values are always encoded as all bits set to 1, per WMO regulations.
                                                        • +
                                                        +
                                                        +
                                                        Parameters
                                                        + + +
                                                        xmiss- New placeholder value to represent "missing" data
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        2012-09-15
                                                        + +

                                                        Definition at line 170 of file missing.F90.

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/missing_8F90.js b/previous_versions/v12.1.0/missing_8F90.js new file mode 100644 index 000000000..4f854dd42 --- /dev/null +++ b/previous_versions/v12.1.0/missing_8F90.js @@ -0,0 +1,7 @@ +var missing_8F90 = +[ + [ "getbmiss", "missing_8F90.html#a2e6035695a459284e0592a2452b2f168", null ], + [ "ibfms", "missing_8F90.html#a7dd66484c8bf4dd8d8e3791d02715e86", null ], + [ "icbfms", "missing_8F90.html#a5f3cd824b4ddd60e635ec591d285b23f", null ], + [ "setbmiss", "missing_8F90.html#a65fba06ac4fb69670084ee11746bdd9f", null ] +]; \ No newline at end of file diff --git a/previous_versions/v12.1.0/missing_8F90_source.html b/previous_versions/v12.1.0/missing_8F90_source.html new file mode 100644 index 000000000..9b5ba294e --- /dev/null +++ b/previous_versions/v12.1.0/missing_8F90_source.html @@ -0,0 +1,212 @@ + + + + + + + +NCEPLIBS-bufr: missing.F90 Source File + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        +
                                                        missing.F90
                                                        +
                                                        +
                                                        +Go to the documentation of this file.
                                                        1 
                                                        +
                                                        5 
                                                        +
                                                        24 integer function ibfms ( r8val ) result ( iret )
                                                        +
                                                        25 
                                                        +
                                                        26  use modv_vars, only: bmiss
                                                        +
                                                        27 
                                                        +
                                                        28  implicit none
                                                        +
                                                        29 
                                                        +
                                                        30  real*8, intent(in) :: r8val
                                                        +
                                                        31 
                                                        +
                                                        32  if ( r8val == bmiss ) then
                                                        +
                                                        33  iret = 1
                                                        +
                                                        34  else
                                                        +
                                                        35  iret = 0
                                                        +
                                                        36  endif
                                                        +
                                                        37 
                                                        +
                                                        38  return
                                                        +
                                                        39 end function ibfms
                                                        +
                                                        40 
                                                        +
                                                        55 recursive integer function icbfms ( str, lstr ) result ( iret )
                                                        +
                                                        56 
                                                        +
                                                        57  use modv_vars, only: im8b
                                                        +
                                                        58 
                                                        +
                                                        59  implicit none
                                                        +
                                                        60 
                                                        +
                                                        61  character*(*), intent(in) :: str
                                                        +
                                                        62  character*8 strz
                                                        +
                                                        63  character*16 zz
                                                        +
                                                        64  character*16, parameter :: zm_be = '202020E076483742' ! 10E10 stored as hexadecimal on a big-endian system
                                                        +
                                                        65  character*16, parameter :: zm_le = '42374876E8000000' ! 10E10 stored as hexadecimal on a little-endian system
                                                        +
                                                        66 
                                                        +
                                                        67  real*8 rl8z
                                                        +
                                                        68 
                                                        +
                                                        69  integer, intent(in) :: lstr
                                                        +
                                                        70  integer my_lstr, numchr, ii, iupm
                                                        +
                                                        71 
                                                        +
                                                        72  equivalence(strz,rl8z)
                                                        +
                                                        73 
                                                        +
                                                        74  ! Check for I8 integers.
                                                        +
                                                        75 
                                                        +
                                                        76  if ( im8b ) then
                                                        +
                                                        77  im8b = .false.
                                                        +
                                                        78 
                                                        +
                                                        79  call x84 ( lstr, my_lstr, 1 )
                                                        +
                                                        80  iret = icbfms( str, my_lstr )
                                                        +
                                                        81 
                                                        +
                                                        82  im8b = .true.
                                                        +
                                                        83  return
                                                        +
                                                        84  end if
                                                        +
                                                        85 
                                                        +
                                                        86  iret = 0
                                                        +
                                                        87 
                                                        +
                                                        88  numchr = min(lstr,len(str))
                                                        +
                                                        89 
                                                        +
                                                        90  ! Beginning with version 10.2.0 of the NCEPLIBS-bufr, all "missing" strings have been explicitly encoded with all bits set
                                                        +
                                                        91  ! to 1, and which is the correct encoding per WMO regulations. However, prior to version 10.2.0, the library encoded a
                                                        +
                                                        92  ! "missing" string by storing the real*8 value of 10E10 into the string. So for consistency with historical archives,
                                                        +
                                                        93  ! the following logic attempts to identify some of these earlier cases, at least for strings between 4 and 8 bytes in length.
                                                        +
                                                        94 
                                                        +
                                                        95  if ( numchr>=4 .and. numchr<=8 ) then
                                                        +
                                                        96  do ii = 1, numchr
                                                        +
                                                        97  strz(ii:ii) = str(ii:ii)
                                                        +
                                                        98  end do
                                                        +
                                                        99  write (zz,'(z16.16)') rl8z
                                                        +
                                                        100  ii = 2*(8-numchr)+1
                                                        +
                                                        101  if ( zz(ii:16)==zm_be(ii:16) .or. zz(ii:16)==zm_le(ii:16) ) then
                                                        +
                                                        102  iret = 1
                                                        +
                                                        103  return
                                                        +
                                                        104  end if
                                                        +
                                                        105  end if
                                                        +
                                                        106 
                                                        +
                                                        107  ! Otherwise, the logic below will check for "missing" strings of any length which are correctly encoded with all bits set
                                                        +
                                                        108  ! to 1, including those encoded by NCEPLIBS-bufr version 10.2.0 or later.
                                                        +
                                                        109 
                                                        +
                                                        110  do ii=1,numchr
                                                        +
                                                        111  strz(1:1) = str(ii:ii)
                                                        +
                                                        112  if ( iupm(strz(1:1),8)/=255 ) return
                                                        +
                                                        113  enddo
                                                        +
                                                        114 
                                                        +
                                                        115  iret = 1
                                                        +
                                                        116 
                                                        +
                                                        117  return
                                                        +
                                                        118 end function icbfms
                                                        +
                                                        119 
                                                        +
                                                        134 real*8 function getbmiss() result(r8val)
                                                        +
                                                        135 
                                                        +
                                                        136  use modv_vars, only: bmiss
                                                        +
                                                        137 
                                                        +
                                                        138  implicit none
                                                        +
                                                        139 
                                                        +
                                                        140  r8val = bmiss
                                                        +
                                                        141 
                                                        +
                                                        142  return
                                                        +
                                                        143 end function getbmiss
                                                        +
                                                        144 
                                                        +
                                                        170 subroutine setbmiss(xmiss)
                                                        +
                                                        171 
                                                        +
                                                        172  use modv_vars, only: bmiss
                                                        +
                                                        173 
                                                        +
                                                        174  implicit none
                                                        +
                                                        175 
                                                        +
                                                        176  real*8, intent(in) :: xmiss
                                                        +
                                                        177 
                                                        +
                                                        178  bmiss = xmiss
                                                        +
                                                        179 
                                                        +
                                                        180  return
                                                        +
                                                        181 end subroutine setbmiss
                                                        +
                                                        recursive integer function iupm(cbay, nbits)
                                                        Decode an integer value from within a specified number of bits of a character string,...
                                                        Definition: cidecode.F90:265
                                                        +
                                                        real *8 function getbmiss()
                                                        Get the current placeholder value which represents "missing" data when reading from or writing to BUF...
                                                        Definition: missing.F90:135
                                                        +
                                                        recursive integer function icbfms(str, lstr)
                                                        Check whether a character string returned from a previous call to subroutine readlc() was encoded as ...
                                                        Definition: missing.F90:56
                                                        +
                                                        subroutine setbmiss(xmiss)
                                                        Specify a customized value to represent "missing" data when reading from or writing to BUFR files.
                                                        Definition: missing.F90:171
                                                        +
                                                        integer function ibfms(r8val)
                                                        Check whether a real*8 data value returned from a previous call to any of the NCEPLIBS-bufr values-re...
                                                        Definition: missing.F90:25
                                                        +
                                                        subroutine x84(iin8, iout4, nval)
                                                        Encode one or more 8-byte integer values as 4-byte integer values.
                                                        Definition: x4884.F90:65
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/modules__arrs_8F90.html b/previous_versions/v12.1.0/modules__arrs_8F90.html new file mode 100644 index 000000000..233cbab97 --- /dev/null +++ b/previous_versions/v12.1.0/modules__arrs_8F90.html @@ -0,0 +1,759 @@ + + + + + + + +NCEPLIBS-bufr: modules_arrs.F90 File Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        modules_arrs.F90 File Reference
                                                        +
                                                        +
                                                        + +

                                                        Declare module arrays. +More...

                                                        + +

                                                        Go to the source code of this file.

                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                                                        +Modules

                                                        module  moda_bitbuf
                                                         Declare arrays and variables used to store BUFR messages internally for multiple file IDs.
                                                         
                                                        module  moda_bitmaps
                                                         Declare arrays and variables used to store bitmaps internally within a data subset definition.
                                                         
                                                        module  moda_bufrmg
                                                         Declare arrays used to store, for each output file ID, a copy of the BUFR message that was most recently written to that ID, for possible later retrieval via subroutine writsa().
                                                         
                                                        module  moda_bufrsr
                                                         Declare arrays and variables needed to store the current position within a BUFR file.
                                                         
                                                        module  moda_comprs
                                                         Declare arrays and variables needed for the storage of data values needed when writing compressed data subsets to a BUFR message for output.
                                                         
                                                        module  moda_comprx
                                                         Declare arrays and variable needed for the storage of data values needed when writing compressed data subsets to a BUFR message for output.
                                                         
                                                        module  moda_dscach
                                                         Declare arrays and variables for the internal Table A mnemonic cache that is used for Section 3 decoding of BUFR messages.
                                                         
                                                        module  moda_h4wlc
                                                         Declare arrays and variables needed to store long character strings (greater than 8 bytes) via subroutine hold4wlc().
                                                         
                                                        module  moda_idrdm
                                                         Declare an array used by subroutine readerme() to read in a new DX dictionary table as a consecutive set of one or more DX BUFR tables messages.
                                                         
                                                        module  moda_ival
                                                         Declare an array used to pack or unpack all of the values of a BUFR data subset.
                                                         
                                                        module  moda_ivttmp
                                                         Declare arrays which provide working space in several subprograms (usrtpl() and ufbcup()) which manipulate the contents of internal subset buffers where the contents of an evolving BUFR message are accumulated and stored under user control prior to being written out.
                                                         
                                                        module  moda_lushr
                                                         Declare an array used by subroutine makestab() to keep track of which logical units share DX BUFR table information.
                                                         
                                                        module  moda_mgwa
                                                         Declare an array used by various subroutines and functions to hold a temporary working copy of a BUFR message.
                                                         
                                                        module  moda_mgwb
                                                         Declare an array used by various subroutines and functions to hold a temporary working copy of a BUFR message.
                                                         
                                                        module  moda_msgcmp
                                                         Declare a variable used to indicate whether output BUFR messages should be compressed.
                                                         
                                                        module  moda_msgcwd
                                                         Declare arrays used to store information about the current BUFR message that is in the process of being read from or written to the logical unit associated with each file ID.
                                                         
                                                        module  moda_msglim
                                                         Declare an array used to keep track of which logical units should not have any empty (zero data subset) BUFR messages written to them.
                                                         
                                                        module  moda_msgmem
                                                         Declare arrays and variables used to store the contents of one or more BUFR files within internal memory.
                                                         
                                                        module  moda_msgstd
                                                         Declare a variable used to indicate whether output BUFR messages should be standardized.
                                                         
                                                        module  moda_mstabs
                                                         Declare arrays and variables used to store master Table B and Table D entries within internal memory.
                                                         
                                                        module  moda_nmikrp
                                                         Declare arrays used by various subroutines to hold information about Table D sequences.
                                                         
                                                        module  moda_nrv203
                                                         Declare arrays and variables for use with any 2-03-YYY (change reference value) operators present within the internal jump/link table.
                                                         
                                                        module  moda_nulbfr
                                                         Declare an array used to store a switch for each file ID, indicating whether any BUFR messages should actually be written to the corresponding logical unit.
                                                         
                                                        module  moda_rdmtb
                                                         Declare arrays and variables used to store master Table B and Table D entries within internal memory.
                                                         
                                                        module  moda_rlccmn
                                                         Declare arrays and variables needed to store information about long character strings (greater than 8 bytes) when reading them from input data subsets in compressed BUFR messages via subroutines rdcmps() and readlc().
                                                         
                                                        module  moda_s01cm
                                                         Declare arrays and variables used to store custom values for certain mnemonics within Sections 0 and 1 of all future output BUFR messages written to all Fortran logical units.
                                                         
                                                        module  moda_s3list
                                                         Declare arrays used by various subroutines and functions to hold a temporary working copy of a Section 3 descriptor list.
                                                         
                                                        module  moda_sc3bfr
                                                         Declare an array used to store a switch for each file ID, indicating whether BUFR messages read from the corresponding logical unit should be decoded according to the contents of Section 3 and using master BUFR tables, rather than using DX BUFR tables.
                                                         
                                                        module  moda_stbfr
                                                         Declare arrays used to store file and message status indicators for all logical units that have been connected to the library via previous calls to subroutine openbf().
                                                         
                                                        module  moda_stcode
                                                         Declare an array used to store a status code for each file ID if an error or other abnormal result occurs while processing a BUFR message within the associated logical unit.
                                                         
                                                        module  moda_tababd
                                                         Declare arrays and variables used to store DX BUFR tables internally for multiple file IDs.
                                                         
                                                        module  moda_tablef
                                                         Declare a variable used to indicate whether master code and flag tables should be read.
                                                         
                                                        module  moda_tables
                                                         Declare arrays and variables used to store the internal jump/link table.
                                                         
                                                        module  moda_tnkrcp
                                                         Declare variables used to store tank receipt time information within Section 1 of BUFR messages.
                                                         
                                                        module  moda_ufbcpl
                                                         Declare an array used to store, for each file ID, the logical unit number corresponding to a separate file ID whenever BUFR data subsets are being copied from the latter to the former via subroutine ufbcpy().
                                                         
                                                        module  moda_unptyp
                                                         Declare an array used to store, for each file ID from which a BUFR message is currently being read as input, a flag indicating how to unpack the data subsets from the message.
                                                         
                                                        module  moda_usrbit
                                                         Declare arrays for internal storage of pointers to BUFR data subset values.
                                                         
                                                        module  moda_usrint
                                                         Declare arrays used to store data values and associated metadata for the current BUFR data subset in scope for each file ID.
                                                         
                                                        module  moda_usrtmp
                                                         Declare arrays used in subroutine rcstpl() to store subset segments that are being copied from a subset template into internal subset arrays.
                                                         
                                                        module  moda_xtab
                                                         Declare an array used to track, for each file ID, whether the DX BUFR table associated with the corresponding logical unit has changed during the life of the application program.
                                                         
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                                                        +Variables

                                                        character *(:), dimension(:,:), allocatable moda_comprs::catx
                                                         Character data values for all data subsets in message. More...
                                                         
                                                        character, dimension(:,:), allocatable moda_mstabs::cbbw
                                                         Bit widths corresponding to ibfxyn. More...
                                                         
                                                        character, dimension(:,:), allocatable moda_mstabs::cbelem
                                                         Element names corresponding to ibfxyn. More...
                                                         
                                                        character, dimension(:,:), allocatable moda_mstabs::cbmnem
                                                         Mnemonics corresponding to ibfxyn. More...
                                                         
                                                        character, dimension(:,:), allocatable moda_mstabs::cbscl
                                                         Scale factors corresponding to ibfxyn. More...
                                                         
                                                        character, dimension(:,:), allocatable moda_mstabs::cbsref
                                                         Reference values corresponding to ibfxyn. More...
                                                         
                                                        character, dimension(:,:), allocatable moda_mstabs::cbunit
                                                         Units corresponding to ibfxyn. More...
                                                         
                                                        character moda_msgcmp::ccmf = 'N'
                                                         Flag indicating whether BUFR output messages are to be compressed; this variable is initialized to a default value which can be overridden by a subsequent call to subroutine cmpmsg() within the application program: More...
                                                         
                                                        character moda_tablef::cdmf = 'N'
                                                         Flag indicating whether to include code and flag table information during reads of master BUFR tables; this variable is initialized to a default value which can be overridden by a subsequent call to subroutine codflg() within the application program: More...
                                                         
                                                        character, dimension(:,:), allocatable moda_mstabs::cdmnem
                                                         Mnemonics corresponding to idfxyn. More...
                                                         
                                                        character *6, dimension(:), allocatable moda_s3list::cds3
                                                         Temporary working copy of Section 3 descriptor list in character form. More...
                                                         
                                                        character, dimension(:,:), allocatable moda_mstabs::cdseq
                                                         Sequence names corresponding to idfxyn. More...
                                                         
                                                        character *120, dimension(:,:), allocatable moda_rdmtb::ceelem
                                                         Element names corresponding to iefxyn. More...
                                                         
                                                        character *120, dimension(:), allocatable moda_h4wlc::chh4wlc
                                                         Long character strings. More...
                                                         
                                                        character *4, dimension(:), allocatable moda_rdmtb::cmdscb
                                                         Descriptor codes for Table B elements. More...
                                                         
                                                        character *4, dimension(:), allocatable moda_rdmtb::cmdscd
                                                         Descriptor codes for Table D sequences. More...
                                                         
                                                        character *8, dimension(:), allocatable moda_s01cm::cmnem
                                                         Section 0 and 1 mnemonics corresponding to ivmnem. More...
                                                         
                                                        character *8, dimension(:), allocatable moda_dscach::cnem
                                                         Table A mnemonics. More...
                                                         
                                                        character *10, dimension(:), allocatable moda_rlccmn::crtag
                                                         Table B mnemonics associated with long character strings. More...
                                                         
                                                        character moda_msgstd::csmf = 'N'
                                                         Flag indicating whether BUFR output messages are to be standardized; this variable is initialized to a default value which can be overridden by a subsequent call to subroutine stdmsg() within the application program: More...
                                                         
                                                        character *(:), dimension(:), allocatable moda_comprx::cstr
                                                         Character data value, if corresponding ityp value is set to 3. More...
                                                         
                                                        character *6, dimension(:,:), allocatable moda_bitmaps::ctco
                                                         Table C operators corresponding to inodtco. More...
                                                         
                                                        character *1 moda_tnkrcp::ctrt = 'N'
                                                         Flag indicating whether tank receipt times are to be included within output BUFR messages; this variable is initialized to a default value which can be overridden by a subsequent call to subroutine strcpt() within the application program: More...
                                                         
                                                        logical moda_comprx::flush
                                                         Flush flag. More...
                                                         
                                                        integer, dimension(:), allocatable moda_bitbuf::ibay
                                                         Current data subset. More...
                                                         
                                                        integer, dimension(:), allocatable moda_mstabs::ibfxyn
                                                         WMO bit-wise representations of FXY numbers for master Table B. More...
                                                         
                                                        integer moda_bitbuf::ibit
                                                         Bit pointer within ibay. More...
                                                         
                                                        integer, dimension(:), allocatable moda_tables::ibt
                                                         Bit widths corresponding to tag and typ: More...
                                                         
                                                        integer, dimension(:,:), allocatable moda_bitmaps::ibtmse
                                                         Ordinal positions in bitmap of bits that were "set" (set to a value of 0); these ordinal positions can range in value from 1 to iszbtm for each stored bitmap. More...
                                                         
                                                        integer moda_nrv203::ibtnrv
                                                         Number of bits in Section 4 occupied by each new reference value for the current 2-03-YYY operator in scope; set to 0 if no such operator is currently in scope. More...
                                                         
                                                        integer, dimension(:), allocatable moda_msgmem::icdxts
                                                         Number of consecutive messages within mdx which constitute each DX BUFR table, beginning with the corresponding ifdxts. More...
                                                         
                                                        integer, dimension(:), allocatable moda_msgcwd::idate
                                                         Section 1 date-time of message. More...
                                                         
                                                        integer, dimension(:,:), allocatable moda_dscach::idcach
                                                         WMO bit-wise representations of the child descriptors for the corresponding Table A mnemonic in cnem. More...
                                                         
                                                        integer, dimension(:), allocatable moda_mstabs::idefxy
                                                         WMO bit-wise representations of child descriptors corresponding to idfxyn. More...
                                                         
                                                        integer, dimension(:), allocatable moda_mstabs::idfxyn
                                                         WMO bit-wise representations of FXY numbers for master Table D. More...
                                                         
                                                        integer, dimension(:,:,:), allocatable moda_tababd::idna
                                                         Message types (in array element 1) and subtypes (in array element 2) corresponding to taba. More...
                                                         
                                                        integer, dimension(:,:), allocatable moda_tababd::idnb
                                                         WMO bit-wise representations of the FXY values corresponding to tabb. More...
                                                         
                                                        integer, dimension(:,:), allocatable moda_tababd::idnd
                                                         WMO bit-wise representations of the FXY values corresponding to tabd. More...
                                                         
                                                        integer, dimension(:), allocatable moda_idrdm::idrdm
                                                         DX BUFR tables message count for each file ID. More...
                                                         
                                                        integer, dimension(:), allocatable moda_s3list::ids3
                                                         Temporary working copy of Section 3 descriptor list in integer form. More...
                                                         
                                                        integer, dimension(:,:), allocatable moda_rdmtb::iefxyn
                                                         WMO bit-wise representations of child descriptors of Table D sequences. More...
                                                         
                                                        integer, dimension(:), allocatable moda_nrv203::ienrv
                                                         End of entry range in jump/link table, within which the corresponding new reference value in nrv will be applied to all occurrences of the corresponding Table B mnemonic in tagnrv. More...
                                                         
                                                        integer, dimension(:), allocatable moda_msgmem::ifdxts
                                                         Pointers to the beginning of each DX BUFR table within mdx. More...
                                                         
                                                        integer *8 moda_comprx::imiss
                                                         "Missing" value used when compressing non-character data values. More...
                                                         
                                                        integer *8 moda_comprs::incr
                                                         Increment used when compressing non-character data values. More...
                                                         
                                                        integer, dimension(:), allocatable moda_msgcwd::inode
                                                         Table A mnemonic for type of BUFR message. More...
                                                         
                                                        integer, dimension(:), allocatable moda_nrv203::inodnrv
                                                         Entries within jump/link table which contain new reference values. More...
                                                         
                                                        integer, dimension(:), allocatable moda_bitmaps::inodtamc
                                                         Entries within jump/link table which contain Table A mnemonics. More...
                                                         
                                                        integer, dimension(:,:), allocatable moda_bitmaps::inodtco
                                                         Entries within jump/link table which contain Table C operators. More...
                                                         
                                                        integer, dimension(:,:), allocatable, target moda_usrint::inv
                                                         Inventory pointer which links each data value to its corresponding node in the internal jump/link table. More...
                                                         
                                                        integer, dimension(:), allocatable moda_stbfr::iolun
                                                         File status indicators. More...
                                                         
                                                        integer, dimension(:), allocatable moda_stbfr::iomsg
                                                         Message status indicator corresponding to iolun, denoting whether a BUFR message is currently open within the internal arrays for the corresponding logical unit: More...
                                                         
                                                        integer, dimension(:), allocatable moda_msgmem::ipdxm
                                                         Pointers to the beginning of each message within mdx. More...
                                                         
                                                        integer moda_nrv203::ipfnrv
                                                         A number between 1 and nnrv, denoting the first entry within the module arrays which applies to the current data subset in scope; set to 0 if no 2-03-YYY operators have been applied to the current data subset in scope. More...
                                                         
                                                        integer, dimension(:), allocatable moda_msgmem::ipmsgs
                                                         Pointers to first message within msgs for which each DX BUFR table applies. More...
                                                         
                                                        integer, dimension(:), allocatable moda_rlccmn::irbit
                                                         Pointers in data subset to first bits of long character strings. More...
                                                         
                                                        integer, dimension(:), allocatable moda_tables::irf
                                                         Reference values corresponding to tag and typ: More...
                                                         
                                                        integer, dimension(:), allocatable moda_rlccmn::irnch
                                                         Lengths (in bytes) of long character strings. More...
                                                         
                                                        integer, dimension(:,:), allocatable moda_nmikrp::irp
                                                         Replication indicators corresponding to nem: More...
                                                         
                                                        integer, dimension(:), allocatable moda_tables::isc
                                                         Scale factors corresponding to tag and typ: More...
                                                         
                                                        integer, dimension(:), allocatable moda_sc3bfr::isc3
                                                         Section 3 switch for each file ID: More...
                                                         
                                                        integer, dimension(:), allocatable moda_stcode::iscodes
                                                         Abnormal status codes. More...
                                                         
                                                        integer, dimension(:,:), allocatable moda_tables::iseq
                                                         Temporary storage used in expanding sequences. More...
                                                         
                                                        integer, dimension(:), allocatable moda_nrv203::isnrv
                                                         Start of entry range in jump/link table, within which the corresponding new reference value in nrv will be applied to all occurrences of the corresponding Table B mnemonic in tagnrv. More...
                                                         
                                                        integer, dimension(:), allocatable moda_bitmaps::istbtm
                                                         Ordinal position in data subset definition corresponding to the first entry of the bitmap. More...
                                                         
                                                        integer, dimension(:), allocatable moda_bitmaps::iszbtm
                                                         Size of bitmap (total number of entries, whether "set" (set to a value of 0) or not). More...
                                                         
                                                        integer, dimension(:), allocatable moda_ivttmp::itmp
                                                         inv array elements for new sections of a growing subset buffer. More...
                                                         
                                                        integer, dimension(:), allocatable moda_tables::itp
                                                         Integer type values corresponding to typ: More...
                                                         
                                                        integer moda_tnkrcp::itrdy
                                                         Tank receipt day. More...
                                                         
                                                        integer moda_tnkrcp::itrhr
                                                         Tank receipt hour. More...
                                                         
                                                        integer moda_tnkrcp::itrmi
                                                         Tank receipt minute. More...
                                                         
                                                        integer moda_tnkrcp::itrmo
                                                         Tank receipt month. More...
                                                         
                                                        integer moda_tnkrcp::itryr
                                                         Tank receipt year. More...
                                                         
                                                        integer, dimension(:), allocatable moda_comprx::ityp
                                                         Type of each data value: More...
                                                         
                                                        integer, dimension(:,:), allocatable moda_usrtmp::iutmp
                                                         inv array elements for new sections of a growing subset buffer. More...
                                                         
                                                        integer *8, dimension(:), allocatable moda_ival::ival
                                                         BUFR data subset values. More...
                                                         
                                                        integer, dimension(:), allocatable moda_s01cm::ivmnem
                                                         Custom values for use within Sections 0 and 1 of all future output BUFR messages written to all Fortran logical units. More...
                                                         
                                                        integer, dimension(:), allocatable moda_comprx::iwid
                                                         Bit width of underlying data descriptor as defined within Table B for each data value. More...
                                                         
                                                        integer, dimension(:), allocatable moda_bufrsr::jbay
                                                         BUFR message. More...
                                                         
                                                        integer moda_bufrsr::jbit
                                                         Bit pointer within BUFR message. More...
                                                         
                                                        integer moda_bufrsr::jbyt
                                                         Length (in bytes) of BUFR message. More...
                                                         
                                                        integer moda_bufrsr::jill
                                                         File status indicator of BUFR file. More...
                                                         
                                                        integer moda_bufrsr::jimm
                                                         Message status indicator of BUFR file. More...
                                                         
                                                        integer, dimension(:), allocatable moda_comprx::jlnode
                                                         Jump/link table node corresponding to each data value. More...
                                                         
                                                        integer, dimension(:), allocatable moda_tables::jmpb
                                                         Jump backward indices corresponding to tag and typ: More...
                                                         
                                                        integer moda_bufrsr::jmsg
                                                         Sequential number of BUFR message, counting from the beginning of the file. More...
                                                         
                                                        integer, dimension(:), allocatable moda_tables::jseq
                                                         Temporary storage used in expanding sequences. More...
                                                         
                                                        integer, dimension(:), allocatable moda_bufrsr::jsr
                                                         Indicator of stack status when entering subroutine rewnbf(). More...
                                                         
                                                        integer moda_bufrsr::jsub
                                                         Sequential number of BUFR data subset, counting from the beginning of the current BUFR message. More...
                                                         
                                                        integer, dimension(:), allocatable moda_tables::jump
                                                         Jump forward indices corresponding to tag and typ: More...
                                                         
                                                        integer moda_bufrsr::junn = 0
                                                         File ID of BUFR file. More...
                                                         
                                                        integer, dimension(:), allocatable moda_comprx::kbit
                                                         Number of bits needed to hold the increments for this data value within each data subset of the message. More...
                                                         
                                                        integer moda_comprx::kbyt
                                                         Number of bytes required to store Sections 0, 1, 2, and 3 of message. More...
                                                         
                                                        integer *8, dimension(:), allocatable moda_comprx::kmax
                                                         Maximum of each data value across all data subsets in message. More...
                                                         
                                                        integer *8, dimension(:), allocatable moda_comprx::kmin
                                                         Minimum of each data value across all data subsets in message. More...
                                                         
                                                        logical, dimension(:), allocatable moda_comprx::kmis
                                                         "Missing" values flag. More...
                                                         
                                                        integer, dimension(:), allocatable moda_tables::knt
                                                         Temporary storage used in calculating delayed replication counts. More...
                                                         
                                                        integer, dimension(:), allocatable moda_tables::knti
                                                         Initialized replication counts corresponding to typ and jump: More...
                                                         
                                                        integer, dimension(:,:), allocatable moda_nmikrp::krp
                                                         Replication counts corresponding to nem: More...
                                                         
                                                        integer moda_msgmem::ldxm
                                                         Number of array elements filled within mdx (up to a maximum of mxdxw). More...
                                                         
                                                        integer moda_msgmem::ldxts
                                                         Number of DX BUFR table that is currently in scope, depending on which BUFR message within msgs is currently in scope from the most recent call to subroutine rdmemm() or readmm(). More...
                                                         
                                                        logical moda_bitmaps::linbtm
                                                         true if a bitmap is in the process of being read for the current data subset; false otherwise. More...
                                                         
                                                        integer, dimension(:), allocatable moda_tables::link
                                                         Link indices corresponding to tag, typ and jmpb: More...
                                                         
                                                        integer moda_bitmaps::lstnod
                                                         Most recent jump/link table entry that was processed by function igetrfel() and whose corresponding value type was either numeric or CCITT IA5. More...
                                                         
                                                        integer moda_bitmaps::lstnodct
                                                         Current count of consecutive occurrences of lstnod. More...
                                                         
                                                        integer, dimension(:), allocatable moda_h4wlc::luh4wlc
                                                         File ID for associated output file. More...
                                                         
                                                        integer moda_comprx::lunc
                                                         File ID for output file. More...
                                                         
                                                        integer, dimension(:), allocatable moda_ufbcpl::luncpy
                                                         Logical unit numbers used to copy long character strings between BUFR data subsets. More...
                                                         
                                                        integer, dimension(:), allocatable moda_lushr::lus
                                                         Tracking index for each file ID. More...
                                                         
                                                        integer *8, dimension(:,:), allocatable moda_comprs::matx
                                                         Non-character data values for all data subsets in message. More...
                                                         
                                                        integer moda_bitbuf::maxbyt
                                                         Maximum length of an output BUFR message. More...
                                                         
                                                        integer, dimension(:,:), allocatable moda_bitbuf::mbay
                                                         Current BUFR message for each file ID. More...
                                                         
                                                        integer, dimension(:), allocatable moda_usrbit::mbit
                                                         Pointer in data subset to first bit of each packed data value. More...
                                                         
                                                        integer, dimension(:), allocatable moda_bitbuf::mbyt
                                                         Length (in bytes) of current BUFR message for each file ID. More...
                                                         
                                                        integer, dimension(:), allocatable moda_msgmem::mdx
                                                         DX BUFR table messages read from one or more BUFR files, for use in decoding the messages in msgs. More...
                                                         
                                                        integer, dimension(:), allocatable moda_mgwa::mgwa
                                                         Temporary working copy of BUFR message. More...
                                                         
                                                        integer, dimension(:), allocatable moda_mgwb::mgwb
                                                         Temporary working copy of BUFR message. More...
                                                         
                                                        integer moda_msgmem::mlast
                                                         Number of array elements filled within msgs (up to a maximum of maxmem). More...
                                                         
                                                        integer, dimension(:), allocatable moda_bufrmg::msglen
                                                         Length (in integers) of BUFR message most recently written to each output file ID. More...
                                                         
                                                        integer, dimension(:), allocatable moda_msglim::msglim
                                                         Tracking index for each file ID. More...
                                                         
                                                        integer, dimension(:), allocatable moda_msgmem::msgp
                                                         Pointers to the beginning of each message within msgs (up to a maximum of maxmsg, and where array element 0 contains the actual number of messages stored within msgs). More...
                                                         
                                                        integer, dimension(:), allocatable moda_msgmem::msgs
                                                         BUFR messages read from one or more BUFR files. More...
                                                         
                                                        integer, dimension(:,:), allocatable moda_bufrmg::msgtxt
                                                         BUFR message most recently written to each output file ID. More...
                                                         
                                                        integer, dimension(:), allocatable moda_unptyp::msgunp
                                                         Flag indicating how to unpack data subsets from BUFR message: More...
                                                         
                                                        integer, dimension(:), allocatable moda_msgcwd::msub
                                                         Total number of data subsets in message. More...
                                                         
                                                        integer, dimension(:,:), allocatable moda_tababd::mtab
                                                         Entries within jump/link table corresponding to taba. More...
                                                         
                                                        integer moda_msgmem::munit
                                                         Fortran logical unit number for use in accessing contents of BUFR files within internal memory. More...
                                                         
                                                        integer moda_msgmem::mxdxm
                                                         Maximum number of DX BUFR table messages that can be stored within mdx. More...
                                                         
                                                        integer moda_msgmem::mxdxw
                                                         Maximum number of entries that can be stored within mdx. More...
                                                         
                                                        integer, dimension(:), allocatable moda_usrbit::nbit
                                                         Length (in bits) of each packed data value in data subset. More...
                                                         
                                                        integer moda_bitmaps::nbtm
                                                         Number of stored bitmaps for the current data subset (up to a maximum of mxbtm). More...
                                                         
                                                        integer, dimension(:), allocatable moda_bitmaps::nbtmse
                                                         Number of "set" entries (set to a value of 0) in the bitmap. More...
                                                         
                                                        integer moda_dscach::ncnem
                                                         Number of entries in the internal Table A mnemonic cache (up to a maximum of mxcnem). More...
                                                         
                                                        integer moda_comprs::ncol
                                                         Number of data subsets in message. More...
                                                         
                                                        integer, dimension(:), allocatable moda_dscach::ndc
                                                         Number of child descriptors for the corresponding Table A mnemonic in cnem. More...
                                                         
                                                        integer, dimension(:), allocatable moda_mstabs::ndelem
                                                         Numbers of child descriptors corresponding to idfxyn. More...
                                                         
                                                        integer moda_msgmem::ndxm
                                                         Number of DX BUFR table messages stored within mdx (up to a maximum of mxdxm). More...
                                                         
                                                        integer moda_msgmem::ndxts
                                                         Number of DX BUFR tables represented by the messages within mdx (up to a maximum of mxdxts). More...
                                                         
                                                        character *8, dimension(:,:), allocatable moda_nmikrp::nem
                                                         Child mnemonics within Table D sequences. More...
                                                         
                                                        integer moda_h4wlc::nh4wlc = 0
                                                         Number of long character strings being stored. More...
                                                         
                                                        integer, dimension(:), allocatable moda_msgcwd::nmsg
                                                         Current message pointer within logical unit. More...
                                                         
                                                        integer moda_mstabs::nmtb
                                                         Number of master Table B entries (up to a maximum of mxmtbb). More...
                                                         
                                                        integer moda_mstabs::nmtd
                                                         Number of master Table D entries (up to a maximum of mxmtbd). More...
                                                         
                                                        integer moda_nrv203::nnrv
                                                         Number of entries in the jump/link table which contain new reference values (up to a maximum of mxnrv). More...
                                                         
                                                        integer, dimension(:,:), allocatable moda_usrint::nrfelm
                                                         Referenced data value, for data values which refer to a previous data value in the BUFR data subset via an internal bitmap. More...
                                                         
                                                        integer moda_comprx::nrow
                                                         Number of data values for each data subset in message. More...
                                                         
                                                        integer moda_rlccmn::nrst
                                                         Number of long character strings in data subset. More...
                                                         
                                                        integer *8, dimension(:), allocatable moda_nrv203::nrv
                                                         New reference values corresponding to inodnrv. More...
                                                         
                                                        integer moda_s01cm::ns01v = 0
                                                         Number of custom values stored. More...
                                                         
                                                        integer, dimension(:), allocatable moda_msgcwd::nsub
                                                         Current subset pointer within message. More...
                                                         
                                                        integer moda_tables::ntab
                                                         Number of entries in the jump/link table. More...
                                                         
                                                        integer moda_bitmaps::ntamc
                                                         Number of Table A mnemonics in jump/link table (up to a maximum of mxtamc) which contain at least one Table C operator with an XX value of 21 or greater in their data subset definition; only Table C operators with an XX value of 21 or greater are tracked within this module, since all others are automatically processed within subroutines tabsub() and tabent(). More...
                                                         
                                                        integer, dimension(:), allocatable moda_tababd::ntba
                                                         Number of Table A entries for each file ID (up to a maximum of maxtba, whose value is stored in array element 0). More...
                                                         
                                                        integer, dimension(:), allocatable moda_tababd::ntbb
                                                         Number of Table B entries for each file ID (up to a maximum of maxtbb, whose value is stored in array element 0). More...
                                                         
                                                        integer, dimension(:), allocatable moda_tababd::ntbd
                                                         Number of Table D entries for each file ID (up to a maximum of maxtbd, whose value is stored in array element 0). More...
                                                         
                                                        integer, dimension(:), allocatable moda_bitmaps::ntco
                                                         Number of Table C operators (with an XX value of 21 or greater) within the data subset definition of the corresponding Table A mnemonic in inodtamc. More...
                                                         
                                                        integer, dimension(:), allocatable moda_nulbfr::null
                                                         Output switch for each file ID: More...
                                                         
                                                        integer, dimension(:), allocatable moda_usrint::nval
                                                         Number of data values in BUFR data subset. More...
                                                         
                                                        character *14, dimension(:), allocatable moda_h4wlc::sth4wlc
                                                         Table B mnemonics associated with long character strings. More...
                                                         
                                                        character *128, dimension(:,:), allocatable moda_tababd::taba
                                                         Table A entries for each file ID. More...
                                                         
                                                        character *128, dimension(:,:), allocatable moda_tababd::tabb
                                                         Table B entries for each file ID. More...
                                                         
                                                        character *600, dimension(:,:), allocatable moda_tababd::tabd
                                                         Table D entries for each file ID. More...
                                                         
                                                        character *10, dimension(:), allocatable moda_tables::tag
                                                         Mnemonics in the jump/link table. More...
                                                         
                                                        character *8, dimension(:), allocatable moda_nrv203::tagnrv
                                                         Table B mnemonic to which the corresponding new reference value in nrv applies. More...
                                                         
                                                        character *8, dimension(:), allocatable moda_sc3bfr::tamnem
                                                         Table A mnemonic most recently read from each file ID, if isc3 = 1 for that stream. More...
                                                         
                                                        character *10, dimension(:), allocatable moda_ivttmp::ttmp
                                                         tag array elements for new sections of a growing subset buffer. More...
                                                         
                                                        character *3, dimension(:), allocatable moda_tables::typ
                                                         Type indicators corresponding to tag: More...
                                                         
                                                        real *8, dimension(:,:), allocatable, target moda_usrint::val
                                                         Data values. More...
                                                         
                                                        real *8, dimension(:), allocatable moda_tables::vali
                                                         Initialized data values corresponding to typ: More...
                                                         
                                                        real *8, dimension(:), allocatable moda_ivttmp::vtmp
                                                         val array elements for new sections of a growing subset buffer. More...
                                                         
                                                        real *8, dimension(:,:), allocatable moda_usrtmp::vutmp
                                                         val array elements for new sections of a growing subset buffer. More...
                                                         
                                                        logical moda_comprx::writ1
                                                         Write-out flag. More...
                                                         
                                                        logical, dimension(:), allocatable moda_xtab::xtab
                                                         Tracking index for each file ID. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Declare module arrays.

                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2023-02-10
                                                        + +

                                                        Definition in file modules_arrs.F90.

                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/modules__arrs_8F90.js b/previous_versions/v12.1.0/modules__arrs_8F90.js new file mode 100644 index 000000000..e0a88b844 --- /dev/null +++ b/previous_versions/v12.1.0/modules__arrs_8F90.js @@ -0,0 +1,176 @@ +var modules__arrs_8F90 = +[ + [ "catx", "modules__arrs_8F90.html#a94ea2c3cfc88079d837ac29324d61937", null ], + [ "cbbw", "modules__arrs_8F90.html#a31164f84ab9d27493a19afee2fda502a", null ], + [ "cbelem", "modules__arrs_8F90.html#aa842e38ba6243a4ff1ab1e56404c2cb7", null ], + [ "cbmnem", "modules__arrs_8F90.html#a4c761088ff4243b661ec78773c07adaa", null ], + [ "cbscl", "modules__arrs_8F90.html#aab2cc4c7c57e7c7d111f49187aff44ea", null ], + [ "cbsref", "modules__arrs_8F90.html#ac34001b0c39f1c7b156214adaf3381d0", null ], + [ "cbunit", "modules__arrs_8F90.html#a0ccfcc43067ef6debce2218ad50abb0b", null ], + [ "ccmf", "modules__arrs_8F90.html#a748ff156e2c817957765b05119f74270", null ], + [ "cdmf", "modules__arrs_8F90.html#a61847a8129d1a6c6909c2ea4727d67f6", null ], + [ "cdmnem", "modules__arrs_8F90.html#ab2e77035e8e8a5f8e6a2f544279ab168", null ], + [ "cds3", "modules__arrs_8F90.html#a2ceee9741718460b614f37fb6b976259", null ], + [ "cdseq", "modules__arrs_8F90.html#a37a325646f12fe6d0dd3ae3c341f20d7", null ], + [ "ceelem", "modules__arrs_8F90.html#a1152389e5fc9eadddbea89bd76abc653", null ], + [ "chh4wlc", "modules__arrs_8F90.html#afbc0cd7c0f91147bca16c7fd909a0d75", null ], + [ "cmdscb", "modules__arrs_8F90.html#a21983afeacfaf7e7755271343aca9055", null ], + [ "cmdscd", "modules__arrs_8F90.html#ab8fe0a01ea7ba06916fd450273c1c38f", null ], + [ "cmnem", "modules__arrs_8F90.html#ab7e403dca694be4ae4d4c3803e7bc4c7", null ], + [ "cnem", "modules__arrs_8F90.html#a141173c549e506cd4637af33c4efdece", null ], + [ "crtag", "modules__arrs_8F90.html#acaa72aa1ab54d9a7a82f83e58c8aeed1", null ], + [ "csmf", "modules__arrs_8F90.html#a23356dfd7172ae4d2ff05d657234d6ab", null ], + [ "cstr", "modules__arrs_8F90.html#a07c74b931e7ddbba553f8391b8e24aaf", null ], + [ "ctco", "modules__arrs_8F90.html#adbe38c29980443a65ff0bb0cfa1bb753", null ], + [ "ctrt", "modules__arrs_8F90.html#aba2ec73dacc32807332a7c1e38468f38", null ], + [ "flush", "modules__arrs_8F90.html#a47438a5eff5e61065fce0dc3df1694a7", null ], + [ "ibay", "modules__arrs_8F90.html#a4910f483014af612d37ea34a1f477434", null ], + [ "ibfxyn", "modules__arrs_8F90.html#af0d2b78411b01dc1aabe9baf6c946b38", null ], + [ "ibit", "modules__arrs_8F90.html#a8c052fc732472f6f329209ac2db75cf9", null ], + [ "ibt", "modules__arrs_8F90.html#a1ff254e3c0f169340a16225a17c5a2c2", null ], + [ "ibtmse", "modules__arrs_8F90.html#ab3096b8b9d713e5183ac8275305e002a", null ], + [ "ibtnrv", "modules__arrs_8F90.html#af1ca5281543dc4ce645d861f7f744c6d", null ], + [ "icdxts", "modules__arrs_8F90.html#a52a37b6bcc7ed3492325f47e1f8018ab", null ], + [ "idate", "modules__arrs_8F90.html#a37df9d6a60023612be784db0b759da3b", null ], + [ "idcach", "modules__arrs_8F90.html#ab79409e1e5c6d8e2542bac564283a5ef", null ], + [ "idefxy", "modules__arrs_8F90.html#aeabc918978c598efc0231fc59d2bfd24", null ], + [ "idfxyn", "modules__arrs_8F90.html#a089cf80d582ff75c6596063d0ed8c049", null ], + [ "idna", "modules__arrs_8F90.html#a6e28d53baf8dce1d6a5c4b91546cfcca", null ], + [ "idnb", "modules__arrs_8F90.html#ab09abac79a48acf677cf36764ffe5db5", null ], + [ "idnd", "modules__arrs_8F90.html#a9e14841d9a084410d3ee7d5d08d3bf5e", null ], + [ "idrdm", "modules__arrs_8F90.html#a24e12e5c288360f0e7e6483094773db6", null ], + [ "ids3", "modules__arrs_8F90.html#a07f44b4772abffacaba7e9be5fbb7fda", null ], + [ "iefxyn", "modules__arrs_8F90.html#ab26bcc9dccfa0b250af20392755adf93", null ], + [ "ienrv", "modules__arrs_8F90.html#a2784f03b6c19452c601b1377a3ed59a1", null ], + [ "ifdxts", "modules__arrs_8F90.html#a55020aca1118bb6f09f8b3d1f68a5c74", null ], + [ "imiss", "modules__arrs_8F90.html#a7a0967a79c236a16f1fa11ebb8f99b0f", null ], + [ "incr", "modules__arrs_8F90.html#a7e5d5589bde01337616f2527beed519f", null ], + [ "inode", "modules__arrs_8F90.html#a034d50224d3416c855472ead1043b1aa", null ], + [ "inodnrv", "modules__arrs_8F90.html#ad4299c9b916b83272f07cba8d2d22d4f", null ], + [ "inodtamc", "modules__arrs_8F90.html#a6ab1ee23535fd8b352c4f5d863a1c458", null ], + [ "inodtco", "modules__arrs_8F90.html#a481c60320ac88f9d5b5d85d1af3a60cf", null ], + [ "inv", "modules__arrs_8F90.html#a7e27d4bdf5a372fd7dac8ede033f969e", null ], + [ "iolun", "modules__arrs_8F90.html#aa6ed42f02eb5933c83e7acf1422b8d99", null ], + [ "iomsg", "modules__arrs_8F90.html#ac23d0e71777440374b51773ab34d31c7", null ], + [ "ipdxm", "modules__arrs_8F90.html#af55ccb71d40a6980f3e18dee2ea3a9db", null ], + [ "ipfnrv", "modules__arrs_8F90.html#aadd51c4f00c0c4a12b922aace0ed04f7", null ], + [ "ipmsgs", "modules__arrs_8F90.html#a07ee8cbf949167ffea7e2ac9ceddd536", null ], + [ "irbit", "modules__arrs_8F90.html#a90cc348c7156330efc75a45e5e5860ca", null ], + [ "irf", "modules__arrs_8F90.html#a17c04e8d3d8d361463e3f2fc0b3dd599", null ], + [ "irnch", "modules__arrs_8F90.html#a76b8845911215f91b5a91128facb7cbd", null ], + [ "irp", "modules__arrs_8F90.html#a6e3f292bfc1ab7b63b783bdf0266c812", null ], + [ "isc", "modules__arrs_8F90.html#a1c370e229cc62002283ca2462296273e", null ], + [ "isc3", "modules__arrs_8F90.html#ac3bbd45f25c8071e161bf7898230695a", null ], + [ "iscodes", "modules__arrs_8F90.html#a81b647a972ded879adf10cb98bfaab2e", null ], + [ "iseq", "modules__arrs_8F90.html#a18e681f9bedbaadf3526641e19598901", null ], + [ "isnrv", "modules__arrs_8F90.html#a61eaac2cb0e3dd6de4d02e9986cab602", null ], + [ "istbtm", "modules__arrs_8F90.html#a5a7267a967fec712c56a680893698965", null ], + [ "iszbtm", "modules__arrs_8F90.html#a2648b6b58fd6cf4c983b5c4c23b29574", null ], + [ "itmp", "modules__arrs_8F90.html#af59d63e63df8f925e55a922d70a37785", null ], + [ "itp", "modules__arrs_8F90.html#ab12171885e93720ae2716b4b1ecae251", null ], + [ "itrdy", "modules__arrs_8F90.html#a97f45bd4e10b6016c9ef17bbd0efc2ca", null ], + [ "itrhr", "modules__arrs_8F90.html#a12d35afcaacac53905061f928377d92b", null ], + [ "itrmi", "modules__arrs_8F90.html#aceb65be824d657fa109be2d9059a3a2b", null ], + [ "itrmo", "modules__arrs_8F90.html#af081362974b0ae4f5be67c4bea20bae6", null ], + [ "itryr", "modules__arrs_8F90.html#a3f402734944f1438bc986b0d877a0bd7", null ], + [ "ityp", "modules__arrs_8F90.html#a8ecc5d87d79c8c3aa778665041bcb522", null ], + [ "iutmp", "modules__arrs_8F90.html#a77349b5f0a6f8916850dcb253aee1f30", null ], + [ "ival", "modules__arrs_8F90.html#a354161b574c84bfd3401bc0b287335c7", null ], + [ "ivmnem", "modules__arrs_8F90.html#a320a25005a0063e8a0713fc66973b655", null ], + [ "iwid", "modules__arrs_8F90.html#aa945d27bc1c5cf32ea5ba624ef289808", null ], + [ "jbay", "modules__arrs_8F90.html#adff426f406bb1f795e94c0af6d68d856", null ], + [ "jbit", "modules__arrs_8F90.html#a80dd6be1ed3b93e6cb6fcfef1e87ee08", null ], + [ "jbyt", "modules__arrs_8F90.html#ab23685bcce40ee0d9f71f881bdfa0d07", null ], + [ "jill", "modules__arrs_8F90.html#a157bb0cb25913753748822ce3c384b06", null ], + [ "jimm", "modules__arrs_8F90.html#a225d75cc454938f8da4ed39857ff2c5c", null ], + [ "jlnode", "modules__arrs_8F90.html#a7caf741d65ff0b68932fa7d207c689ba", null ], + [ "jmpb", "modules__arrs_8F90.html#a5a1f71e4a27babbf5eadd01f7b3dcdcb", null ], + [ "jmsg", "modules__arrs_8F90.html#a4971d723fe9c86ed7741f7cfae61f2f0", null ], + [ "jseq", "modules__arrs_8F90.html#a0b8b25c6365505c5045ab473f54e03f6", null ], + [ "jsr", "modules__arrs_8F90.html#a38470e8cca9ad2afce56dd577ddd5b51", null ], + [ "jsub", "modules__arrs_8F90.html#a821fcf75cf865aaebdba3527d04190e0", null ], + [ "jump", "modules__arrs_8F90.html#a945fc956c1c6ba8c37bfe63c04837b36", null ], + [ "junn", "modules__arrs_8F90.html#a9ec76b10297b2e9521682a1e2014370d", null ], + [ "kbit", "modules__arrs_8F90.html#ad9b27559a7e05f9939764fa6688d7147", null ], + [ "kbyt", "modules__arrs_8F90.html#a243a2baa283f951be51ea9466cca35b8", null ], + [ "kmax", "modules__arrs_8F90.html#a7c3104f9c9731b91a8a105bcc5212542", null ], + [ "kmin", "modules__arrs_8F90.html#af3c2aa97661a37d85840d480e611695e", null ], + [ "kmis", "modules__arrs_8F90.html#aedf59ef218e980c24d128aa7bc8884b1", null ], + [ "knt", "modules__arrs_8F90.html#a28b0f02b81a535890fc64ec13fdfc35b", null ], + [ "knti", "modules__arrs_8F90.html#af5a5b5688cbfbea4a3d5d0705172fba3", null ], + [ "krp", "modules__arrs_8F90.html#a547378be8180b17844161916eca1e876", null ], + [ "ldxm", "modules__arrs_8F90.html#a79bdd90460fa467a8e9130089d7963a5", null ], + [ "ldxts", "modules__arrs_8F90.html#aa92c2a9b9faf87958775d45a00ee866f", null ], + [ "linbtm", "modules__arrs_8F90.html#acd6cd1e5190bdc17381e81624a7e2e80", null ], + [ "link", "modules__arrs_8F90.html#ac0c5953da2d8867d81acad1800fec53c", null ], + [ "lstnod", "modules__arrs_8F90.html#a352a33aaf989dcaab7646f86aa41e27d", null ], + [ "lstnodct", "modules__arrs_8F90.html#accaa0826b48e876c29f6bb8ebe21c83e", null ], + [ "luh4wlc", "modules__arrs_8F90.html#aec0b91e9c09fffd506b27ea574b7da71", null ], + [ "lunc", "modules__arrs_8F90.html#ac17dd8dc0aeb695a1046a884673b1fc3", null ], + [ "luncpy", "modules__arrs_8F90.html#abf94758379c91be61fcf18f6c9dae5cf", null ], + [ "lus", "modules__arrs_8F90.html#a3baea9191da6d91a8590cba5181493a6", null ], + [ "matx", "modules__arrs_8F90.html#ac4fd15b3e268548d17edca4e1e5e5675", null ], + [ "maxbyt", "modules__arrs_8F90.html#aeb00e574adb63bf7cc809d540d5a02bc", null ], + [ "mbay", "modules__arrs_8F90.html#aad8a1595878ac1a9907c708067c4c050", null ], + [ "mbit", "modules__arrs_8F90.html#ab5ade5e51c2620a6e6be9cad890baf7a", null ], + [ "mbyt", "modules__arrs_8F90.html#acfcd2b4391b00ae43bdb026de8573c7a", null ], + [ "mdx", "modules__arrs_8F90.html#ab991cce44554fb17b1c1cd0474929a94", null ], + [ "mgwa", "modules__arrs_8F90.html#abe572c04d3aa498e8135d20e656d0e6a", null ], + [ "mgwb", "modules__arrs_8F90.html#ac38651460e5e05dd70fe8c19fc1a9caa", null ], + [ "mlast", "modules__arrs_8F90.html#a9905d8bc2ddc7681086ea0319442d0d9", null ], + [ "msglen", "modules__arrs_8F90.html#a2514f74da635c6ba7047ec108ce4e211", null ], + [ "msglim", "modules__arrs_8F90.html#abe63e3ddf9a739b073e8dd5b01460ddf", null ], + [ "msgp", "modules__arrs_8F90.html#a030ff35af84549af17fe0b0e4315ebf2", null ], + [ "msgs", "modules__arrs_8F90.html#a0db33f8017f2c46947f0a5589ba98227", null ], + [ "msgtxt", "modules__arrs_8F90.html#a67590bc418c6aeb7792572c11a6bc793", null ], + [ "msgunp", "modules__arrs_8F90.html#abc7e7be12befacea858a7f249c9425ca", null ], + [ "msub", "modules__arrs_8F90.html#aaf25479459e35ef12ce20eecfc632295", null ], + [ "mtab", "modules__arrs_8F90.html#a29788f9aef200e10d2f557c16abfaa56", null ], + [ "munit", "modules__arrs_8F90.html#a5ac2ef8f11fcf81b55a5353dbfda18cc", null ], + [ "mxdxm", "modules__arrs_8F90.html#a549e012729bbc3cb18894d34380ce5bd", null ], + [ "mxdxw", "modules__arrs_8F90.html#af2710ff69575fa7a323c654e7998e142", null ], + [ "nbit", "modules__arrs_8F90.html#a99268fc2b9168fcbbd5f8ab70e6da0b7", null ], + [ "nbtm", "modules__arrs_8F90.html#a6530eb70f0a9131f659c61a74652c93d", null ], + [ "nbtmse", "modules__arrs_8F90.html#ad03b1bbbb4eb8366a77af6da12f0793c", null ], + [ "ncnem", "modules__arrs_8F90.html#aa768890377f016eaae82cb56404ecdc6", null ], + [ "ncol", "modules__arrs_8F90.html#a0bab4a779995493580b46f231516e133", null ], + [ "ndc", "modules__arrs_8F90.html#abbb9e570ae869b4abdf6e18c14475485", null ], + [ "ndelem", "modules__arrs_8F90.html#a5f77a3f33df1fc46f007160428b674d1", null ], + [ "ndxm", "modules__arrs_8F90.html#a6e754cd1cdefe0c8c93ab497fcb33637", null ], + [ "ndxts", "modules__arrs_8F90.html#ab1873371ca3b5f3e44a5d19ebf30af23", null ], + [ "nem", "modules__arrs_8F90.html#a94ad19bfc71bbfcd6f1caf4a744d5eb3", null ], + [ "nh4wlc", "modules__arrs_8F90.html#a013b7b1f0e72002222c0ee2ae5a3dcac", null ], + [ "nmsg", "modules__arrs_8F90.html#a43a1031d5c017c6f61ba6deabe22daad", null ], + [ "nmtb", "modules__arrs_8F90.html#a2861db4fcd6083b5f6d194c92e873c95", null ], + [ "nmtd", "modules__arrs_8F90.html#ae8e13371b82ad223284aeac9d6ad9aae", null ], + [ "nnrv", "modules__arrs_8F90.html#a7f37665c0422638e65824c8b9183169e", null ], + [ "nrfelm", "modules__arrs_8F90.html#ab05877244c7131b445de4326efd8aa8a", null ], + [ "nrow", "modules__arrs_8F90.html#a574b3c666f5e8aa725910e20a739f561", null ], + [ "nrst", "modules__arrs_8F90.html#a6ee3ae8f4cfb91d15189834b8b62d41f", null ], + [ "nrv", "modules__arrs_8F90.html#a9c4d7ff754fd79feb908c6858f7e4e5f", null ], + [ "ns01v", "modules__arrs_8F90.html#a7dfdd248050c7cc36f38933711526888", null ], + [ "nsub", "modules__arrs_8F90.html#ac477545b5d44685da84af7f23d7baa59", null ], + [ "ntab", "modules__arrs_8F90.html#a74976394b2b70036d27222507ba4bfcc", null ], + [ "ntamc", "modules__arrs_8F90.html#a4dfbf13c3d38b007276cb0f5c5418396", null ], + [ "ntba", "modules__arrs_8F90.html#a02ea2421e524ac9f2f8e213dd0151558", null ], + [ "ntbb", "modules__arrs_8F90.html#a8f322e3d7724bb96f7ce06beec989c0f", null ], + [ "ntbd", "modules__arrs_8F90.html#a875c0ff90cd5fdc88e3f10ae7b5bc556", null ], + [ "ntco", "modules__arrs_8F90.html#aef82673973ab814f34658d9a1e5f3404", null ], + [ "null", "modules__arrs_8F90.html#a1b6c0eaf2305df7abddd8c6c66723526", null ], + [ "nval", "modules__arrs_8F90.html#a2269ddd572fded029ca62080b38f6261", null ], + [ "sth4wlc", "modules__arrs_8F90.html#a25deca91911dc2223155e55c8b47f889", null ], + [ "taba", "modules__arrs_8F90.html#a21f38471f40c0eaecdf011d5b594de65", null ], + [ "tabb", "modules__arrs_8F90.html#ad3fddde254d512cae401fc3f5532fe7c", null ], + [ "tabd", "modules__arrs_8F90.html#a043c64825f8bdb44c4e6b69d2f5c253c", null ], + [ "tag", "modules__arrs_8F90.html#a5f03be0ecd3fa7e059b9c74fb67cd4e4", null ], + [ "tagnrv", "modules__arrs_8F90.html#a5f80cd868154c06f202e5886d40750de", null ], + [ "tamnem", "modules__arrs_8F90.html#aa480a82940946343d0d30d8f65c27584", null ], + [ "ttmp", "modules__arrs_8F90.html#a126e6cfde8da74741042004b33f48a9e", null ], + [ "typ", "modules__arrs_8F90.html#a4ff0c6b9328407caa52c08dd22d7525c", null ], + [ "val", "modules__arrs_8F90.html#a7ad9ef51fc135aad9fcecba2a636f486", null ], + [ "vali", "modules__arrs_8F90.html#a2a706219ab0edde0511570bfa32093ed", null ], + [ "vtmp", "modules__arrs_8F90.html#ad4937a8d8159f5b7fff9d51b59c6324b", null ], + [ "vutmp", "modules__arrs_8F90.html#afcc556a5fac9b693f0be507fafccf973", null ], + [ "writ1", "modules__arrs_8F90.html#a8be10a997d67944a328d256bfc60bf02", null ], + [ "xtab", "modules__arrs_8F90.html#ada2721216de79b6527d89323df61956d", null ] +]; \ No newline at end of file diff --git a/previous_versions/v12.1.0/modules__arrs_8F90_source.html b/previous_versions/v12.1.0/modules__arrs_8F90_source.html new file mode 100644 index 000000000..ca6fc0250 --- /dev/null +++ b/previous_versions/v12.1.0/modules__arrs_8F90_source.html @@ -0,0 +1,606 @@ + + + + + + + +NCEPLIBS-bufr: modules_arrs.F90 Source File + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        +
                                                        modules_arrs.F90
                                                        +
                                                        +
                                                        +Go to the documentation of this file.
                                                        1 
                                                        +
                                                        5 
                                                        + +
                                                        12  integer :: maxbyt
                                                        +
                                                        14  integer, allocatable :: mbay(:,:)
                                                        +
                                                        16  integer, allocatable :: mbyt(:)
                                                        +
                                                        18  integer, allocatable :: ibay(:)
                                                        +
                                                        20  integer :: ibit
                                                        +
                                                        21 end module moda_bitbuf
                                                        +
                                                        22 
                                                        + +
                                                        33  integer :: nbtm
                                                        +
                                                        40  integer :: ntamc
                                                        +
                                                        44  integer :: lstnod
                                                        +
                                                        46  integer :: lstnodct
                                                        +
                                                        49  logical :: linbtm
                                                        +
                                                        51  integer, allocatable :: inodtamc(:)
                                                        +
                                                        55  integer, allocatable :: ntco(:)
                                                        +
                                                        57  character*6, allocatable :: ctco(:,:)
                                                        +
                                                        59  integer, allocatable :: inodtco(:,:)
                                                        +
                                                        61  integer, allocatable :: nbtmse(:)
                                                        +
                                                        64  integer, allocatable :: istbtm(:)
                                                        +
                                                        67  integer, allocatable :: iszbtm(:)
                                                        +
                                                        71  integer, allocatable :: ibtmse(:,:)
                                                        +
                                                        72 end module moda_bitmaps
                                                        +
                                                        73 
                                                        + +
                                                        83  integer, allocatable :: msglen(:)
                                                        +
                                                        85  integer, allocatable :: msgtxt(:,:)
                                                        +
                                                        86 end module moda_bufrmg
                                                        +
                                                        87 
                                                        + +
                                                        99  integer :: junn = 0
                                                        +
                                                        101  integer :: jill
                                                        +
                                                        103  integer :: jimm
                                                        +
                                                        105  integer, allocatable :: jbay(:)
                                                        +
                                                        107  integer :: jbit
                                                        +
                                                        109  integer :: jbyt
                                                        +
                                                        111  integer :: jmsg
                                                        +
                                                        113  integer :: jsub
                                                        +
                                                        115  integer, allocatable :: jsr(:)
                                                        +
                                                        116 end module moda_bufrsr
                                                        +
                                                        117 
                                                        + +
                                                        128  integer :: ncol
                                                        +
                                                        130  integer*8 :: incr
                                                        +
                                                        132  integer*8, allocatable :: matx(:,:)
                                                        +
                                                        134  character*(:), allocatable :: catx(:,:)
                                                        +
                                                        135 end module moda_comprs
                                                        +
                                                        136 
                                                        + +
                                                        147  integer :: nrow
                                                        +
                                                        149  integer :: lunc
                                                        +
                                                        151  integer :: kbyt
                                                        +
                                                        156  logical :: flush
                                                        +
                                                        159  logical :: writ1
                                                        +
                                                        161  integer*8, allocatable :: kmin(:)
                                                        +
                                                        163  integer*8, allocatable :: kmax(:)
                                                        +
                                                        165  integer*8 :: imiss
                                                        +
                                                        169  logical, allocatable :: kmis(:)
                                                        +
                                                        172  integer, allocatable :: kbit(:)
                                                        +
                                                        177  integer, allocatable :: ityp(:)
                                                        +
                                                        180  integer, allocatable :: iwid(:)
                                                        +
                                                        182  character*(:), allocatable :: cstr(:)
                                                        +
                                                        184  integer, allocatable :: jlnode(:)
                                                        +
                                                        185 end module moda_comprx
                                                        +
                                                        186 
                                                        + +
                                                        198  integer :: ncnem
                                                        +
                                                        200  character*8, allocatable :: cnem(:)
                                                        +
                                                        203  integer, allocatable :: ndc(:)
                                                        +
                                                        206  integer, allocatable :: idcach(:,:)
                                                        +
                                                        207 end module moda_dscach
                                                        +
                                                        208 
                                                        + +
                                                        218  integer :: nh4wlc = 0
                                                        +
                                                        220  integer, allocatable :: luh4wlc(:)
                                                        +
                                                        222  character*14, allocatable :: sth4wlc(:)
                                                        +
                                                        224  character*120, allocatable :: chh4wlc(:)
                                                        +
                                                        225 end module moda_h4wlc
                                                        +
                                                        226 
                                                        + +
                                                        238  integer, allocatable :: idrdm(:)
                                                        +
                                                        239 end module moda_idrdm
                                                        +
                                                        240 
                                                        +
                                                        247 module moda_ival
                                                        +
                                                        249  integer*8, allocatable :: ival(:)
                                                        +
                                                        250 end module moda_ival
                                                        +
                                                        251 
                                                        + +
                                                        261  character*10, allocatable :: ttmp(:)
                                                        +
                                                        263  integer, allocatable :: itmp(:)
                                                        +
                                                        265  real*8, allocatable :: vtmp(:)
                                                        +
                                                        266 end module moda_ivttmp
                                                        +
                                                        267 
                                                        + +
                                                        278  integer, allocatable :: lus(:)
                                                        +
                                                        279 end module moda_lushr
                                                        +
                                                        280 
                                                        +
                                                        286 module moda_mgwa
                                                        +
                                                        288  integer, allocatable :: mgwa(:)
                                                        +
                                                        289 end module moda_mgwa
                                                        +
                                                        290 
                                                        +
                                                        296 module moda_mgwb
                                                        +
                                                        298  integer, allocatable :: mgwb(:)
                                                        +
                                                        299 end module moda_mgwb
                                                        +
                                                        300 
                                                        + +
                                                        307  integer, allocatable :: ids3(:)
                                                        +
                                                        309  character*6, allocatable :: cds3(:)
                                                        +
                                                        310 end module moda_s3list
                                                        +
                                                        311 
                                                        + +
                                                        320  integer, allocatable :: nmsg(:)
                                                        +
                                                        322  integer, allocatable :: nsub(:)
                                                        +
                                                        324  integer, allocatable :: msub(:)
                                                        +
                                                        326  integer, allocatable :: inode(:)
                                                        +
                                                        328  integer, allocatable :: idate(:)
                                                        +
                                                        329 end module moda_msgcwd
                                                        +
                                                        330 
                                                        + +
                                                        346  integer, allocatable :: msglim(:)
                                                        +
                                                        347 end module moda_msglim
                                                        +
                                                        348 
                                                        + +
                                                        358  integer :: munit
                                                        +
                                                        360  integer :: mlast
                                                        +
                                                        362  integer :: ldxm
                                                        +
                                                        365  integer :: ndxm
                                                        +
                                                        369  integer :: ldxts
                                                        +
                                                        372  integer :: ndxts
                                                        +
                                                        374  integer :: mxdxm
                                                        +
                                                        376  integer :: mxdxw
                                                        +
                                                        380  integer, allocatable :: msgp(:)
                                                        +
                                                        382  integer, allocatable :: msgs(:)
                                                        +
                                                        385  integer, allocatable :: mdx(:)
                                                        +
                                                        387  integer, allocatable :: ipdxm(:)
                                                        +
                                                        389  integer, allocatable :: ifdxts(:)
                                                        +
                                                        392  integer, allocatable :: icdxts(:)
                                                        +
                                                        394  integer, allocatable :: ipmsgs(:)
                                                        +
                                                        395 end module moda_msgmem
                                                        +
                                                        396 
                                                        + +
                                                        405  integer :: nmtb
                                                        +
                                                        407  integer :: nmtd
                                                        +
                                                        409  integer, allocatable :: ibfxyn(:)
                                                        +
                                                        411  character, allocatable :: cbscl(:,:)
                                                        +
                                                        413  character, allocatable :: cbsref(:,:)
                                                        +
                                                        415  character, allocatable :: cbbw(:,:)
                                                        +
                                                        417  character, allocatable :: cbunit(:,:)
                                                        +
                                                        419  character, allocatable :: cbmnem(:,:)
                                                        +
                                                        421  character, allocatable :: cbelem(:,:)
                                                        +
                                                        423  integer, allocatable :: idfxyn(:)
                                                        +
                                                        425  character, allocatable :: cdseq(:,:)
                                                        +
                                                        427  character, allocatable :: cdmnem(:,:)
                                                        +
                                                        429  integer, allocatable :: ndelem(:)
                                                        +
                                                        431  integer, allocatable :: idefxy(:)
                                                        +
                                                        432 end module moda_mstabs
                                                        +
                                                        433 
                                                        + +
                                                        441  character*8, allocatable :: nem(:,:)
                                                        +
                                                        449  integer, allocatable :: irp(:,:)
                                                        +
                                                        454  integer, allocatable :: krp(:,:)
                                                        +
                                                        455 end module moda_nmikrp
                                                        +
                                                        456 
                                                        + +
                                                        467  integer :: nnrv
                                                        +
                                                        471  integer :: ibtnrv
                                                        +
                                                        476  integer :: ipfnrv
                                                        +
                                                        479  character*8, allocatable :: tagnrv(:)
                                                        +
                                                        481  integer, allocatable :: inodnrv(:)
                                                        +
                                                        483  integer*8, allocatable :: nrv(:)
                                                        +
                                                        487  integer, allocatable :: isnrv(:)
                                                        +
                                                        491  integer, allocatable :: ienrv(:)
                                                        +
                                                        492 end module moda_nrv203
                                                        +
                                                        493 
                                                        + +
                                                        514  integer, allocatable :: null(:)
                                                        +
                                                        515 end module moda_nulbfr
                                                        +
                                                        516 
                                                        + +
                                                        525  integer, allocatable :: iefxyn(:,:)
                                                        +
                                                        527  character*4, allocatable :: cmdscb(:)
                                                        +
                                                        529  character*4, allocatable :: cmdscd(:)
                                                        +
                                                        531  character*120, allocatable :: ceelem(:,:)
                                                        +
                                                        532 end module moda_rdmtb
                                                        +
                                                        533 
                                                        + +
                                                        542  integer :: nrst
                                                        +
                                                        544  integer, allocatable :: irnch(:)
                                                        +
                                                        546  integer, allocatable :: irbit(:)
                                                        +
                                                        548  character*10, allocatable :: crtag(:)
                                                        +
                                                        549 end module moda_rlccmn
                                                        +
                                                        550 
                                                        + +
                                                        561  integer, allocatable :: ivmnem(:)
                                                        +
                                                        563  character*8, allocatable :: cmnem(:)
                                                        +
                                                        565  integer :: ns01v = 0
                                                        +
                                                        566 end module moda_s01cm
                                                        +
                                                        567 
                                                        + +
                                                        587  integer, allocatable :: isc3(:)
                                                        +
                                                        589  character*8, allocatable :: tamnem(:)
                                                        +
                                                        590 end module moda_sc3bfr
                                                        +
                                                        591 
                                                        + +
                                                        604  integer, allocatable :: iolun(:)
                                                        +
                                                        609  integer, allocatable :: iomsg(:)
                                                        +
                                                        610 end module moda_stbfr
                                                        +
                                                        611 
                                                        + +
                                                        623  integer, allocatable :: iscodes(:)
                                                        +
                                                        624 end module moda_stcode
                                                        +
                                                        625 
                                                        + +
                                                        633  integer, allocatable :: ntba(:)
                                                        +
                                                        636  integer, allocatable :: ntbb(:)
                                                        +
                                                        639  integer, allocatable :: ntbd(:)
                                                        +
                                                        641  integer, allocatable :: mtab(:,:)
                                                        +
                                                        644  integer, allocatable :: idna(:,:,:)
                                                        +
                                                        646  Integer, allocatable :: idnb(:,:)
                                                        +
                                                        648  integer, allocatable :: idnd(:,:)
                                                        +
                                                        650  character*128, allocatable :: taba(:,:)
                                                        +
                                                        652  character*128, allocatable :: tabb(:,:)
                                                        +
                                                        654  character*600, allocatable :: tabd(:,:)
                                                        +
                                                        655 end module moda_tababd
                                                        +
                                                        656 
                                                        + +
                                                        666  integer :: ntab
                                                        +
                                                        668  character*10, allocatable :: tag(:)
                                                        +
                                                        683  character*3, allocatable :: typ(:)
                                                        +
                                                        685  integer, allocatable :: knt(:)
                                                        +
                                                        692  integer, allocatable :: jump(:)
                                                        +
                                                        699  integer, allocatable :: link(:)
                                                        +
                                                        706  integer, allocatable :: jmpb(:)
                                                        +
                                                        710  integer, allocatable :: ibt(:)
                                                        +
                                                        716  integer, allocatable :: irf(:)
                                                        +
                                                        722  integer, allocatable :: isc(:)
                                                        +
                                                        728  integer, allocatable :: itp(:)
                                                        +
                                                        732  real*8, allocatable :: vali(:)
                                                        +
                                                        738  integer, allocatable :: knti(:)
                                                        +
                                                        740  integer, allocatable :: iseq(:,:)
                                                        +
                                                        742  integer, allocatable :: jseq(:)
                                                        +
                                                        743 end module moda_tables
                                                        +
                                                        744 
                                                        + +
                                                        757  integer, allocatable :: luncpy(:)
                                                        +
                                                        758 end module moda_ufbcpl
                                                        +
                                                        759 
                                                        + +
                                                        771  integer, allocatable :: msgunp(:)
                                                        +
                                                        772 end module moda_unptyp
                                                        +
                                                        773 
                                                        + +
                                                        781  integer, allocatable :: nbit(:)
                                                        +
                                                        783  integer, allocatable :: mbit(:)
                                                        +
                                                        784 end module moda_usrbit
                                                        +
                                                        785 
                                                        + +
                                                        793  integer, allocatable :: nval(:)
                                                        +
                                                        795  integer, target, allocatable :: inv(:,:)
                                                        +
                                                        798  integer, allocatable :: nrfelm(:,:)
                                                        +
                                                        800  real*8, target, allocatable :: val(:,:)
                                                        +
                                                        801 end module moda_usrint
                                                        +
                                                        802 
                                                        + +
                                                        810  integer, allocatable :: iutmp(:,:)
                                                        +
                                                        812  real*8, allocatable :: vutmp(:,:)
                                                        +
                                                        813 end module moda_usrtmp
                                                        +
                                                        814 
                                                        +
                                                        826 module moda_xtab
                                                        +
                                                        831  logical, allocatable :: xtab(:)
                                                        +
                                                        832 end module moda_xtab
                                                        +
                                                        833 
                                                        + +
                                                        843  character*1 :: ctrt = 'N'
                                                        +
                                                        845  integer :: itryr
                                                        +
                                                        847  integer :: itrmo
                                                        +
                                                        849  integer :: itrdy
                                                        +
                                                        851  integer :: itrhr
                                                        +
                                                        853  integer :: itrmi
                                                        +
                                                        854 end module moda_tnkrcp
                                                        +
                                                        855 
                                                        + +
                                                        864  character :: csmf = 'N'
                                                        +
                                                        865 end module moda_msgstd
                                                        +
                                                        866 
                                                        + +
                                                        875  character :: ccmf = 'N'
                                                        +
                                                        876 end module moda_msgcmp
                                                        +
                                                        877 
                                                        + +
                                                        887  character :: cdmf = 'N'
                                                        +
                                                        888 end module moda_tablef
                                                        +
                                                        Declare arrays and variables used to store BUFR messages internally for multiple file IDs.
                                                        +
                                                        integer, dimension(:), allocatable ibay
                                                        Current data subset.
                                                        +
                                                        integer ibit
                                                        Bit pointer within ibay.
                                                        +
                                                        integer, dimension(:,:), allocatable mbay
                                                        Current BUFR message for each file ID.
                                                        +
                                                        integer, dimension(:), allocatable mbyt
                                                        Length (in bytes) of current BUFR message for each file ID.
                                                        +
                                                        integer maxbyt
                                                        Maximum length of an output BUFR message.
                                                        +
                                                        Declare arrays and variables used to store bitmaps internally within a data subset definition.
                                                        +
                                                        integer, dimension(:), allocatable iszbtm
                                                        Size of bitmap (total number of entries, whether "set" (set to a value of 0) or not).
                                                        +
                                                        integer lstnod
                                                        Most recent jump/link table entry that was processed by function igetrfel() and whose corresponding v...
                                                        +
                                                        integer, dimension(:,:), allocatable inodtco
                                                        Entries within jump/link table which contain Table C operators.
                                                        +
                                                        integer ntamc
                                                        Number of Table A mnemonics in jump/link table (up to a maximum of mxtamc) which contain at least one...
                                                        +
                                                        integer, dimension(:), allocatable istbtm
                                                        Ordinal position in data subset definition corresponding to the first entry of the bitmap.
                                                        +
                                                        integer nbtm
                                                        Number of stored bitmaps for the current data subset (up to a maximum of mxbtm).
                                                        +
                                                        integer, dimension(:), allocatable inodtamc
                                                        Entries within jump/link table which contain Table A mnemonics.
                                                        +
                                                        integer, dimension(:,:), allocatable ibtmse
                                                        Ordinal positions in bitmap of bits that were "set" (set to a value of 0); these ordinal positions ca...
                                                        +
                                                        integer lstnodct
                                                        Current count of consecutive occurrences of lstnod.
                                                        +
                                                        logical linbtm
                                                        true if a bitmap is in the process of being read for the current data subset; false otherwise.
                                                        +
                                                        integer, dimension(:), allocatable nbtmse
                                                        Number of "set" entries (set to a value of 0) in the bitmap.
                                                        +
                                                        character *6, dimension(:,:), allocatable ctco
                                                        Table C operators corresponding to inodtco.
                                                        +
                                                        integer, dimension(:), allocatable ntco
                                                        Number of Table C operators (with an XX value of 21 or greater) within the data subset definition of ...
                                                        +
                                                        Declare arrays used to store, for each output file ID, a copy of the BUFR message that was most recen...
                                                        +
                                                        integer, dimension(:), allocatable msglen
                                                        Length (in integers) of BUFR message most recently written to each output file ID.
                                                        +
                                                        integer, dimension(:,:), allocatable msgtxt
                                                        BUFR message most recently written to each output file ID.
                                                        +
                                                        Declare arrays and variables needed to store the current position within a BUFR file.
                                                        +
                                                        integer jill
                                                        File status indicator of BUFR file.
                                                        +
                                                        integer jimm
                                                        Message status indicator of BUFR file.
                                                        +
                                                        integer, dimension(:), allocatable jsr
                                                        Indicator of stack status when entering subroutine rewnbf().
                                                        +
                                                        integer jmsg
                                                        Sequential number of BUFR message, counting from the beginning of the file.
                                                        +
                                                        integer jbit
                                                        Bit pointer within BUFR message.
                                                        +
                                                        integer jsub
                                                        Sequential number of BUFR data subset, counting from the beginning of the current BUFR message.
                                                        +
                                                        integer junn
                                                        File ID of BUFR file.
                                                        +
                                                        integer jbyt
                                                        Length (in bytes) of BUFR message.
                                                        +
                                                        integer, dimension(:), allocatable jbay
                                                        BUFR message.
                                                        +
                                                        Declare arrays and variables needed for the storage of data values needed when writing compressed dat...
                                                        +
                                                        integer ncol
                                                        Number of data subsets in message.
                                                        +
                                                        integer *8 incr
                                                        Increment used when compressing non-character data values.
                                                        +
                                                        character *(:), dimension(:,:), allocatable catx
                                                        Character data values for all data subsets in message.
                                                        +
                                                        integer *8, dimension(:,:), allocatable matx
                                                        Non-character data values for all data subsets in message.
                                                        +
                                                        Declare arrays and variable needed for the storage of data values needed when writing compressed data...
                                                        +
                                                        character *(:), dimension(:), allocatable cstr
                                                        Character data value, if corresponding ityp value is set to 3.
                                                        +
                                                        integer kbyt
                                                        Number of bytes required to store Sections 0, 1, 2, and 3 of message.
                                                        +
                                                        logical flush
                                                        Flush flag.
                                                        +
                                                        integer nrow
                                                        Number of data values for each data subset in message.
                                                        +
                                                        integer *8 imiss
                                                        "Missing" value used when compressing non-character data values.
                                                        +
                                                        integer *8, dimension(:), allocatable kmax
                                                        Maximum of each data value across all data subsets in message.
                                                        +
                                                        integer, dimension(:), allocatable jlnode
                                                        Jump/link table node corresponding to each data value.
                                                        +
                                                        logical writ1
                                                        Write-out flag.
                                                        +
                                                        integer, dimension(:), allocatable ityp
                                                        Type of each data value:
                                                        +
                                                        integer, dimension(:), allocatable iwid
                                                        Bit width of underlying data descriptor as defined within Table B for each data value.
                                                        +
                                                        integer lunc
                                                        File ID for output file.
                                                        +
                                                        integer, dimension(:), allocatable kbit
                                                        Number of bits needed to hold the increments for this data value within each data subset of the messa...
                                                        +
                                                        logical, dimension(:), allocatable kmis
                                                        "Missing" values flag.
                                                        +
                                                        integer *8, dimension(:), allocatable kmin
                                                        Minimum of each data value across all data subsets in message.
                                                        +
                                                        Declare arrays and variables for the internal Table A mnemonic cache that is used for Section 3 decod...
                                                        +
                                                        character *8, dimension(:), allocatable cnem
                                                        Table A mnemonics.
                                                        +
                                                        integer ncnem
                                                        Number of entries in the internal Table A mnemonic cache (up to a maximum of mxcnem).
                                                        +
                                                        integer, dimension(:,:), allocatable idcach
                                                        WMO bit-wise representations of the child descriptors for the corresponding Table A mnemonic in cnem.
                                                        +
                                                        integer, dimension(:), allocatable ndc
                                                        Number of child descriptors for the corresponding Table A mnemonic in cnem.
                                                        +
                                                        Declare arrays and variables needed to store long character strings (greater than 8 bytes) via subrou...
                                                        +
                                                        integer nh4wlc
                                                        Number of long character strings being stored.
                                                        +
                                                        character *14, dimension(:), allocatable sth4wlc
                                                        Table B mnemonics associated with long character strings.
                                                        +
                                                        integer, dimension(:), allocatable luh4wlc
                                                        File ID for associated output file.
                                                        +
                                                        character *120, dimension(:), allocatable chh4wlc
                                                        Long character strings.
                                                        +
                                                        Declare an array used by subroutine readerme() to read in a new DX dictionary table as a consecutive ...
                                                        +
                                                        integer, dimension(:), allocatable idrdm
                                                        DX BUFR tables message count for each file ID.
                                                        +
                                                        Declare an array used to pack or unpack all of the values of a BUFR data subset.
                                                        +
                                                        integer *8, dimension(:), allocatable ival
                                                        BUFR data subset values.
                                                        +
                                                        Declare arrays which provide working space in several subprograms (usrtpl() and ufbcup()) which manip...
                                                        +
                                                        character *10, dimension(:), allocatable ttmp
                                                        tag array elements for new sections of a growing subset buffer.
                                                        +
                                                        real *8, dimension(:), allocatable vtmp
                                                        val array elements for new sections of a growing subset buffer.
                                                        +
                                                        integer, dimension(:), allocatable itmp
                                                        inv array elements for new sections of a growing subset buffer.
                                                        +
                                                        Declare an array used by subroutine makestab() to keep track of which logical units share DX BUFR tab...
                                                        +
                                                        integer, dimension(:), allocatable lus
                                                        Tracking index for each file ID.
                                                        +
                                                        Declare an array used by various subroutines and functions to hold a temporary working copy of a BUFR...
                                                        +
                                                        integer, dimension(:), allocatable mgwa
                                                        Temporary working copy of BUFR message.
                                                        +
                                                        Declare an array used by various subroutines and functions to hold a temporary working copy of a BUFR...
                                                        +
                                                        integer, dimension(:), allocatable mgwb
                                                        Temporary working copy of BUFR message.
                                                        +
                                                        Declare a variable used to indicate whether output BUFR messages should be compressed.
                                                        +
                                                        character ccmf
                                                        Flag indicating whether BUFR output messages are to be compressed; this variable is initialized to a ...
                                                        +
                                                        Declare arrays used to store information about the current BUFR message that is in the process of bei...
                                                        +
                                                        integer, dimension(:), allocatable inode
                                                        Table A mnemonic for type of BUFR message.
                                                        +
                                                        integer, dimension(:), allocatable idate
                                                        Section 1 date-time of message.
                                                        +
                                                        integer, dimension(:), allocatable nmsg
                                                        Current message pointer within logical unit.
                                                        +
                                                        integer, dimension(:), allocatable msub
                                                        Total number of data subsets in message.
                                                        +
                                                        integer, dimension(:), allocatable nsub
                                                        Current subset pointer within message.
                                                        +
                                                        Declare an array used to keep track of which logical units should not have any empty (zero data subse...
                                                        +
                                                        integer, dimension(:), allocatable msglim
                                                        Tracking index for each file ID.
                                                        +
                                                        Declare arrays and variables used to store the contents of one or more BUFR files within internal mem...
                                                        +
                                                        integer, dimension(:), allocatable msgp
                                                        Pointers to the beginning of each message within msgs (up to a maximum of maxmsg, and where array ele...
                                                        +
                                                        integer, dimension(:), allocatable ipmsgs
                                                        Pointers to first message within msgs for which each DX BUFR table applies.
                                                        +
                                                        integer, dimension(:), allocatable msgs
                                                        BUFR messages read from one or more BUFR files.
                                                        +
                                                        integer, dimension(:), allocatable icdxts
                                                        Number of consecutive messages within mdx which constitute each DX BUFR table, beginning with the cor...
                                                        +
                                                        integer mxdxm
                                                        Maximum number of DX BUFR table messages that can be stored within mdx.
                                                        +
                                                        integer, dimension(:), allocatable ifdxts
                                                        Pointers to the beginning of each DX BUFR table within mdx.
                                                        +
                                                        integer munit
                                                        Fortran logical unit number for use in accessing contents of BUFR files within internal memory.
                                                        +
                                                        integer ndxm
                                                        Number of DX BUFR table messages stored within mdx (up to a maximum of mxdxm).
                                                        +
                                                        integer ldxm
                                                        Number of array elements filled within mdx (up to a maximum of mxdxw).
                                                        +
                                                        integer mlast
                                                        Number of array elements filled within msgs (up to a maximum of maxmem).
                                                        +
                                                        integer ldxts
                                                        Number of DX BUFR table that is currently in scope, depending on which BUFR message within msgs is cu...
                                                        +
                                                        integer ndxts
                                                        Number of DX BUFR tables represented by the messages within mdx (up to a maximum of mxdxts).
                                                        +
                                                        integer, dimension(:), allocatable mdx
                                                        DX BUFR table messages read from one or more BUFR files, for use in decoding the messages in msgs.
                                                        +
                                                        integer mxdxw
                                                        Maximum number of entries that can be stored within mdx.
                                                        +
                                                        integer, dimension(:), allocatable ipdxm
                                                        Pointers to the beginning of each message within mdx.
                                                        +
                                                        Declare a variable used to indicate whether output BUFR messages should be standardized.
                                                        +
                                                        character csmf
                                                        Flag indicating whether BUFR output messages are to be standardized; this variable is initialized to ...
                                                        +
                                                        Declare arrays and variables used to store master Table B and Table D entries within internal memory.
                                                        +
                                                        integer, dimension(:), allocatable idfxyn
                                                        WMO bit-wise representations of FXY numbers for master Table D.
                                                        +
                                                        character, dimension(:,:), allocatable cbunit
                                                        Units corresponding to ibfxyn.
                                                        +
                                                        integer nmtb
                                                        Number of master Table B entries (up to a maximum of mxmtbb).
                                                        +
                                                        character, dimension(:,:), allocatable cbbw
                                                        Bit widths corresponding to ibfxyn.
                                                        +
                                                        character, dimension(:,:), allocatable cdseq
                                                        Sequence names corresponding to idfxyn.
                                                        +
                                                        character, dimension(:,:), allocatable cbmnem
                                                        Mnemonics corresponding to ibfxyn.
                                                        +
                                                        integer, dimension(:), allocatable ndelem
                                                        Numbers of child descriptors corresponding to idfxyn.
                                                        +
                                                        character, dimension(:,:), allocatable cbelem
                                                        Element names corresponding to ibfxyn.
                                                        +
                                                        character, dimension(:,:), allocatable cbscl
                                                        Scale factors corresponding to ibfxyn.
                                                        +
                                                        character, dimension(:,:), allocatable cdmnem
                                                        Mnemonics corresponding to idfxyn.
                                                        +
                                                        character, dimension(:,:), allocatable cbsref
                                                        Reference values corresponding to ibfxyn.
                                                        +
                                                        integer nmtd
                                                        Number of master Table D entries (up to a maximum of mxmtbd).
                                                        +
                                                        integer, dimension(:), allocatable idefxy
                                                        WMO bit-wise representations of child descriptors corresponding to idfxyn.
                                                        +
                                                        integer, dimension(:), allocatable ibfxyn
                                                        WMO bit-wise representations of FXY numbers for master Table B.
                                                        +
                                                        Declare arrays used by various subroutines to hold information about Table D sequences.
                                                        +
                                                        integer, dimension(:,:), allocatable krp
                                                        Replication counts corresponding to nem:
                                                        +
                                                        integer, dimension(:,:), allocatable irp
                                                        Replication indicators corresponding to nem:
                                                        +
                                                        character *8, dimension(:,:), allocatable nem
                                                        Child mnemonics within Table D sequences.
                                                        +
                                                        Declare arrays and variables for use with any 2-03-YYY (change reference value) operators present wit...
                                                        +
                                                        integer, dimension(:), allocatable ienrv
                                                        End of entry range in jump/link table, within which the corresponding new reference value in nrv will...
                                                        +
                                                        character *8, dimension(:), allocatable tagnrv
                                                        Table B mnemonic to which the corresponding new reference value in nrv applies.
                                                        +
                                                        integer, dimension(:), allocatable isnrv
                                                        Start of entry range in jump/link table, within which the corresponding new reference value in nrv wi...
                                                        +
                                                        integer nnrv
                                                        Number of entries in the jump/link table which contain new reference values (up to a maximum of mxnrv...
                                                        +
                                                        integer *8, dimension(:), allocatable nrv
                                                        New reference values corresponding to inodnrv.
                                                        +
                                                        integer ipfnrv
                                                        A number between 1 and nnrv, denoting the first entry within the module arrays which applies to the c...
                                                        +
                                                        integer, dimension(:), allocatable inodnrv
                                                        Entries within jump/link table which contain new reference values.
                                                        +
                                                        integer ibtnrv
                                                        Number of bits in Section 4 occupied by each new reference value for the current 2-03-YYY operator in...
                                                        +
                                                        Declare an array used to store a switch for each file ID, indicating whether any BUFR messages should...
                                                        +
                                                        integer, dimension(:), allocatable null
                                                        Output switch for each file ID:
                                                        +
                                                        Declare arrays and variables used to store master Table B and Table D entries within internal memory.
                                                        +
                                                        character *120, dimension(:,:), allocatable ceelem
                                                        Element names corresponding to iefxyn.
                                                        +
                                                        character *4, dimension(:), allocatable cmdscb
                                                        Descriptor codes for Table B elements.
                                                        +
                                                        integer, dimension(:,:), allocatable iefxyn
                                                        WMO bit-wise representations of child descriptors of Table D sequences.
                                                        +
                                                        character *4, dimension(:), allocatable cmdscd
                                                        Descriptor codes for Table D sequences.
                                                        +
                                                        Declare arrays and variables needed to store information about long character strings (greater than 8...
                                                        +
                                                        integer nrst
                                                        Number of long character strings in data subset.
                                                        +
                                                        integer, dimension(:), allocatable irnch
                                                        Lengths (in bytes) of long character strings.
                                                        +
                                                        integer, dimension(:), allocatable irbit
                                                        Pointers in data subset to first bits of long character strings.
                                                        +
                                                        character *10, dimension(:), allocatable crtag
                                                        Table B mnemonics associated with long character strings.
                                                        +
                                                        Declare arrays and variables used to store custom values for certain mnemonics within Sections 0 and ...
                                                        +
                                                        integer, dimension(:), allocatable ivmnem
                                                        Custom values for use within Sections 0 and 1 of all future output BUFR messages written to all Fortr...
                                                        +
                                                        integer ns01v
                                                        Number of custom values stored.
                                                        +
                                                        character *8, dimension(:), allocatable cmnem
                                                        Section 0 and 1 mnemonics corresponding to ivmnem.
                                                        +
                                                        Declare arrays used by various subroutines and functions to hold a temporary working copy of a Sectio...
                                                        +
                                                        integer, dimension(:), allocatable ids3
                                                        Temporary working copy of Section 3 descriptor list in integer form.
                                                        +
                                                        character *6, dimension(:), allocatable cds3
                                                        Temporary working copy of Section 3 descriptor list in character form.
                                                        +
                                                        Declare an array used to store a switch for each file ID, indicating whether BUFR messages read from ...
                                                        +
                                                        character *8, dimension(:), allocatable tamnem
                                                        Table A mnemonic most recently read from each file ID, if isc3 = 1 for that stream.
                                                        +
                                                        integer, dimension(:), allocatable isc3
                                                        Section 3 switch for each file ID:
                                                        +
                                                        Declare arrays used to store file and message status indicators for all logical units that have been ...
                                                        +
                                                        integer, dimension(:), allocatable iolun
                                                        File status indicators.
                                                        +
                                                        integer, dimension(:), allocatable iomsg
                                                        Message status indicator corresponding to iolun, denoting whether a BUFR message is currently open wi...
                                                        +
                                                        Declare an array used to store a status code for each file ID if an error or other abnormal result oc...
                                                        +
                                                        integer, dimension(:), allocatable iscodes
                                                        Abnormal status codes.
                                                        +
                                                        Declare arrays and variables used to store DX BUFR tables internally for multiple file IDs.
                                                        +
                                                        integer, dimension(:), allocatable ntba
                                                        Number of Table A entries for each file ID (up to a maximum of maxtba, whose value is stored in array...
                                                        +
                                                        character *600, dimension(:,:), allocatable tabd
                                                        Table D entries for each file ID.
                                                        +
                                                        character *128, dimension(:,:), allocatable taba
                                                        Table A entries for each file ID.
                                                        +
                                                        integer, dimension(:,:), allocatable mtab
                                                        Entries within jump/link table corresponding to taba.
                                                        +
                                                        integer, dimension(:,:,:), allocatable idna
                                                        Message types (in array element 1) and subtypes (in array element 2) corresponding to taba.
                                                        +
                                                        integer, dimension(:), allocatable ntbd
                                                        Number of Table D entries for each file ID (up to a maximum of maxtbd, whose value is stored in array...
                                                        +
                                                        integer, dimension(:), allocatable ntbb
                                                        Number of Table B entries for each file ID (up to a maximum of maxtbb, whose value is stored in array...
                                                        +
                                                        integer, dimension(:,:), allocatable idnd
                                                        WMO bit-wise representations of the FXY values corresponding to tabd.
                                                        +
                                                        integer, dimension(:,:), allocatable idnb
                                                        WMO bit-wise representations of the FXY values corresponding to tabb.
                                                        +
                                                        character *128, dimension(:,:), allocatable tabb
                                                        Table B entries for each file ID.
                                                        +
                                                        Declare a variable used to indicate whether master code and flag tables should be read.
                                                        +
                                                        character cdmf
                                                        Flag indicating whether to include code and flag table information during reads of master BUFR tables...
                                                        +
                                                        Declare arrays and variables used to store the internal jump/link table.
                                                        +
                                                        integer, dimension(:), allocatable jseq
                                                        Temporary storage used in expanding sequences.
                                                        +
                                                        integer, dimension(:), allocatable irf
                                                        Reference values corresponding to tag and typ:
                                                        +
                                                        integer, dimension(:,:), allocatable iseq
                                                        Temporary storage used in expanding sequences.
                                                        +
                                                        integer, dimension(:), allocatable isc
                                                        Scale factors corresponding to tag and typ:
                                                        +
                                                        integer, dimension(:), allocatable ibt
                                                        Bit widths corresponding to tag and typ:
                                                        +
                                                        integer, dimension(:), allocatable knt
                                                        Temporary storage used in calculating delayed replication counts.
                                                        +
                                                        real *8, dimension(:), allocatable vali
                                                        Initialized data values corresponding to typ:
                                                        +
                                                        character *3, dimension(:), allocatable typ
                                                        Type indicators corresponding to tag:
                                                        +
                                                        integer, dimension(:), allocatable jmpb
                                                        Jump backward indices corresponding to tag and typ:
                                                        +
                                                        character *10, dimension(:), allocatable tag
                                                        Mnemonics in the jump/link table.
                                                        +
                                                        integer ntab
                                                        Number of entries in the jump/link table.
                                                        +
                                                        integer, dimension(:), allocatable jump
                                                        Jump forward indices corresponding to tag and typ:
                                                        +
                                                        integer, dimension(:), allocatable itp
                                                        Integer type values corresponding to typ:
                                                        +
                                                        integer, dimension(:), allocatable link
                                                        Link indices corresponding to tag, typ and jmpb:
                                                        +
                                                        integer, dimension(:), allocatable knti
                                                        Initialized replication counts corresponding to typ and jump:
                                                        +
                                                        Declare variables used to store tank receipt time information within Section 1 of BUFR messages.
                                                        +
                                                        integer itrhr
                                                        Tank receipt hour.
                                                        +
                                                        integer itryr
                                                        Tank receipt year.
                                                        +
                                                        integer itrdy
                                                        Tank receipt day.
                                                        +
                                                        character *1 ctrt
                                                        Flag indicating whether tank receipt times are to be included within output BUFR messages; this varia...
                                                        +
                                                        integer itrmi
                                                        Tank receipt minute.
                                                        +
                                                        integer itrmo
                                                        Tank receipt month.
                                                        +
                                                        Declare an array used to store, for each file ID, the logical unit number corresponding to a separate...
                                                        +
                                                        integer, dimension(:), allocatable luncpy
                                                        Logical unit numbers used to copy long character strings between BUFR data subsets.
                                                        +
                                                        Declare an array used to store, for each file ID from which a BUFR message is currently being read as...
                                                        +
                                                        integer, dimension(:), allocatable msgunp
                                                        Flag indicating how to unpack data subsets from BUFR message:
                                                        +
                                                        Declare arrays for internal storage of pointers to BUFR data subset values.
                                                        +
                                                        integer, dimension(:), allocatable nbit
                                                        Length (in bits) of each packed data value in data subset.
                                                        +
                                                        integer, dimension(:), allocatable mbit
                                                        Pointer in data subset to first bit of each packed data value.
                                                        +
                                                        Declare arrays used to store data values and associated metadata for the current BUFR data subset in ...
                                                        +
                                                        integer, dimension(:), allocatable nval
                                                        Number of data values in BUFR data subset.
                                                        +
                                                        real *8, dimension(:,:), allocatable, target val
                                                        Data values.
                                                        +
                                                        integer, dimension(:,:), allocatable, target inv
                                                        Inventory pointer which links each data value to its corresponding node in the internal jump/link tab...
                                                        +
                                                        integer, dimension(:,:), allocatable nrfelm
                                                        Referenced data value, for data values which refer to a previous data value in the BUFR data subset v...
                                                        +
                                                        Declare arrays used in subroutine rcstpl() to store subset segments that are being copied from a subs...
                                                        +
                                                        integer, dimension(:,:), allocatable iutmp
                                                        inv array elements for new sections of a growing subset buffer.
                                                        +
                                                        real *8, dimension(:,:), allocatable vutmp
                                                        val array elements for new sections of a growing subset buffer.
                                                        +
                                                        Declare an array used to track, for each file ID, whether the DX BUFR table associated with the corre...
                                                        +
                                                        logical, dimension(:), allocatable xtab
                                                        Tracking index for each file ID.
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/modules__vars_8F90.html b/previous_versions/v12.1.0/modules__vars_8F90.html new file mode 100644 index 000000000..c1e2fbb7c --- /dev/null +++ b/previous_versions/v12.1.0/modules__vars_8F90.html @@ -0,0 +1,1125 @@ + + + + + + + +NCEPLIBS-bufr: modules_vars.F90 File Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        modules_vars.F90 File Reference
                                                        +
                                                        +
                                                        + +

                                                        Declare and initialize module variables. +More...

                                                        + +

                                                        Go to the source code of this file.

                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                                                        +Variables

                                                        character *6, dimension(10), parameter modv_vars::adsn = (/'101000','360001','360002','360003','360004', '101255','031002','031001','031001','031000'/)
                                                         FXY values corresponding to reps. More...
                                                         
                                                        real *8 modv_vars::bmiss = 10E10_8
                                                         Current placeholder value to represent "missing" data when reading from or writing to BUFR files; this value can be changed at any time via a call to subroutine setbmiss(). More...
                                                         
                                                        integer modv_vars::iac = 0
                                                         Status indicator to keep track of whether future calls to subroutine parusr() should allow an input mnemonic to exist in multiple replication sequences: More...
                                                         
                                                        integer modv_vars::iblock = 0
                                                         Status indicator to keep track of whether all future BUFR output messages should be encapsulated with IEEE Fortran control words: More...
                                                         
                                                        integer, dimension(10) modv_vars::idnr
                                                         WMO bit-wise representations of FXY values corresponding to reps. More...
                                                         
                                                        integer modv_vars::ifopbf = 0
                                                         Status indicator to keep track of whether subroutine openbf() has already been called: More...
                                                         
                                                        logical modv_vars::im8b = .false.
                                                         Status indicator to keep track of whether all future calls to NCEPLIBS-bufr subroutines and functions from a Fortran application program will be made using 8-byte integer arguments. More...
                                                         
                                                        integer, dimension(nbytw), parameter modv_vars::iordbe = (/1,2,3,4/)
                                                         Order of bytes within an integer on a big-endian machine, from most to least significant. More...
                                                         
                                                        integer, dimension(nbytw), parameter modv_vars::iordle = (/4,3,2,1/)
                                                         Order of bytes within an integer on a little-endian machine, from most to least significant. More...
                                                         
                                                        integer modv_vars::lendat = 8
                                                         Length of Section 1 date-time values to be output by all future calls to message-reading subroutines. More...
                                                         
                                                        integer, dimension(5), parameter modv_vars::lens = (/ 0, 16, 8, 8, 1/)
                                                         Lengths of delayed replication factors corresponding to each type of replication in reps. More...
                                                         
                                                        integer modv_vars::maxcd = 250
                                                         Maximum number of child descriptors that can be included within the sequence definition of a Table D descriptor, not counting the recursive resolution of any child descriptors which may themselves be Table D descriptors. More...
                                                         
                                                        integer modv_vars::maxjl = 96000
                                                         Maximum number of entries in the internal jump/link table. More...
                                                         
                                                        integer modv_vars::maxmem = 50000000
                                                         Maximum number of bytes that can be used to store BUFR messages within internal memory. More...
                                                         
                                                        integer modv_vars::maxmsg = 200000
                                                         Maximum number of BUFR messages that can be stored within internal memory. More...
                                                         
                                                        integer modv_vars::maxnc = 600
                                                         Maximum number of descriptors within Section 3 of a BUFR message. More...
                                                         
                                                        integer, parameter modv_vars::maxrcr = 100
                                                         Maximum number of recursion levels when expanding a subset template. More...
                                                         
                                                        integer modv_vars::maxss = 120000
                                                         Maximum number of data values that can be read from or written into a data subset by the NCEPLIBS-bufr software. More...
                                                         
                                                        integer modv_vars::maxtba = 150
                                                         Maximum number of entries in the internal BUFR Table A for each BUFR file that is connected to the NCEPLIBS-bufr software. More...
                                                         
                                                        integer modv_vars::maxtbb = 500
                                                         Maximum number of entries in the internal BUFR Table B for each BUFR file that is connected to the NCEPLIBS-bufr software. More...
                                                         
                                                        integer modv_vars::maxtbd = 500
                                                         Maximum number of entries in the internal BUFR Table D for each BUFR file that is connected to the NCEPLIBS-bufr software. More...
                                                         
                                                        integer modv_vars::mxbtm = 5
                                                         Maximum number of bitmaps that can be stored internally for a data subset. More...
                                                         
                                                        integer modv_vars::mxbtmse = 500
                                                         Maximum number of "set" entries (set to a value of 0) within a bitmap. More...
                                                         
                                                        integer modv_vars::mxcdv = 3000
                                                         Maximum number of data values that can be written into a data subset of a compressed BUFR message by the NCEPLIBS-bufr software. More...
                                                         
                                                        integer modv_vars::mxcnem = 450
                                                         Maximum number of entries in the internal Table A mnemonic cache that is used for Section 3 decoding of BUFR messages. More...
                                                         
                                                        integer modv_vars::mxcsb = 4000
                                                         Maximum number of data subsets that can be written into a compressed BUFR message by the NCEPLIBS-bufr software. More...
                                                         
                                                        integer modv_vars::mxdxts = 200
                                                         Maximum number of dictionary tables that can be stored for use with BUFR messages in internal memory. More...
                                                         
                                                        integer modv_vars::mxh4wlc = 10
                                                         Maximum number of long character strings that can be held for writing into an uncompressed BUFR subset by future internal calls to subroutine writlc(). More...
                                                         
                                                        integer modv_vars::mxlcc = 32
                                                         Maximum length (in bytes) of a character string that can be written into a data subset of a compressed BUFR message by the NCEPLIBS-bufr software. More...
                                                         
                                                        integer modv_vars::mxmsgl = 600000
                                                         Maximum length (in bytes) of a BUFR message that can be read or written by the NCEPLIBS-bufr software. More...
                                                         
                                                        integer modv_vars::mxmsgld4
                                                         The value of mxmsgl divided by 4. More...
                                                         
                                                        integer modv_vars::mxmtbb = 4000
                                                         Maximum number of entries in a master BUFR Table B. More...
                                                         
                                                        integer modv_vars::mxmtbd = 1000
                                                         Maximum number of entries in a master BUFR Table D. More...
                                                         
                                                        integer modv_vars::mxmtbf = 25000
                                                         Maximum number of entries in a master BUFR Code/Flag table, counting across all individual Code/Flag tables, and counting each defined code figure (within each individual Code table) or defined bit number (within each individual Flag table) as a separate entry. More...
                                                         
                                                        integer modv_vars::mxnaf = 4
                                                         Maximum number of associated fields that can be in effect at any given time for a Table B descriptor. More...
                                                         
                                                        integer modv_vars::mxnrv = 15
                                                         Maximum number of entries in the internal jump/link table that can contain new reference values. More...
                                                         
                                                        integer modv_vars::mxrst = 50
                                                         Maximum number of "long" character strings (greater than 8 bytes) that can be read from a data subset of a compressed BUFR message. More...
                                                         
                                                        integer, parameter modv_vars::mxs = 1000
                                                         Maximum number of entries in the internal string cache. More...
                                                         
                                                        integer modv_vars::mxs01v = 10
                                                         Maximum number of default Section 0 or Section 1 values that can be overwritten within an output BUFR message by the NCEPLIBS-bufr software. More...
                                                         
                                                        integer modv_vars::mxtamc = 15
                                                         Maximum number of Table A mnemonics in the internal jump/link table which contain at least one Table C operator with an XX value of 21 or greater in their definition. More...
                                                         
                                                        integer modv_vars::mxtco = 30
                                                         Maximum number of Table C operators with an XX value of 21 or greater that can appear within the data subset definition of a Table A mnemonic. More...
                                                         
                                                        integer, parameter modv_vars::nbitw = nbytw * 8
                                                         Number of bits within an integer. More...
                                                         
                                                        integer, parameter modv_vars::nbytw = 4
                                                         Number of bytes within an integer. More...
                                                         
                                                        integer modv_vars::nfiles = 32
                                                         Maximum number of BUFR files that can be connected to the NCEPLIBS-bufr software (for reading or writing) at any one time. More...
                                                         
                                                        character, dimension(10), parameter modv_vars::reps = (/ '"', '(', '{', '[', '<', '"', ')', '}', ']', '>'/)
                                                         Replication indicators used in DX BUFR tables. More...
                                                         
                                                        character *3, dimension(10), parameter modv_vars::typs = (/ 'REP', 'DRP', 'DRP', 'DRS', 'DRB', 'SEQ', 'RPC', 'RPC', 'RPS', 'SEQ'/)
                                                         Replication tags corresponding to reps. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Declare and initialize module variables.

                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2023-02-10
                                                        + +

                                                        Definition in file modules_vars.F90.

                                                        +

                                                        Variable Documentation

                                                        + +

                                                        ◆ adsn

                                                        + +
                                                        +
                                                        + + + + +
                                                        character*6, dimension(10), parameter modv_vars::adsn = (/'101000','360001','360002','360003','360004', '101255','031002','031001','031001','031000'/)
                                                        +
                                                        + +

                                                        FXY values corresponding to reps.

                                                        + +

                                                        Definition at line 70 of file modules_vars.F90.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ bmiss

                                                        + +
                                                        +
                                                        + + + + +
                                                        real*8 modv_vars::bmiss = 10E10_8
                                                        +
                                                        + +

                                                        Current placeholder value to represent "missing" data when reading from or writing to BUFR files; this value can be changed at any time via a call to subroutine setbmiss().

                                                        + +

                                                        Definition at line 41 of file modules_vars.F90.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ iac

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer modv_vars::iac = 0
                                                        +
                                                        + +

                                                        Status indicator to keep track of whether future calls to subroutine parusr() should allow an input mnemonic to exist in multiple replication sequences:

                                                        +
                                                          +
                                                        • 0 = No
                                                        • +
                                                        • 1 = Yes
                                                        • +
                                                        + +

                                                        Definition at line 52 of file modules_vars.F90.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ iblock

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer modv_vars::iblock = 0
                                                        +
                                                        + +

                                                        Status indicator to keep track of whether all future BUFR output messages should be encapsulated with IEEE Fortran control words:

                                                        +
                                                          +
                                                        • -1 = Yes, using little-endian control words
                                                        • +
                                                        • 0 = No
                                                        • +
                                                        • 1 = Yes, using big-endian control words The default value is 0, but this value can be changed at any time via a call to subroutine setblock().
                                                        • +
                                                        + +

                                                        Definition at line 36 of file modules_vars.F90.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ idnr

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer, dimension(10) modv_vars::idnr
                                                        +
                                                        + +

                                                        WMO bit-wise representations of FXY values corresponding to reps.

                                                        + +

                                                        Definition at line 74 of file modules_vars.F90.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ ifopbf

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer modv_vars::ifopbf = 0
                                                        +
                                                        + +

                                                        Status indicator to keep track of whether subroutine openbf() has already been called:

                                                        +
                                                          +
                                                        • 0 = No
                                                        • +
                                                        • 1 = Yes
                                                        • +
                                                        + +

                                                        Definition at line 46 of file modules_vars.F90.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ im8b

                                                        + +
                                                        +
                                                        + + + + +
                                                        logical modv_vars::im8b = .false.
                                                        +
                                                        + +

                                                        Status indicator to keep track of whether all future calls to NCEPLIBS-bufr subroutines and functions from a Fortran application program will be made using 8-byte integer arguments.

                                                        +

                                                        The default value is .false., meaning that all future calls to NCEPLIBS-bufr subroutines and functions will be made using 4-byte integer arguments. This value can be changed at any time via a call to subroutine setim8b().

                                                        + +

                                                        Definition at line 27 of file modules_vars.F90.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ iordbe

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer, dimension(nbytw), parameter modv_vars::iordbe = (/1,2,3,4/)
                                                        +
                                                        + +

                                                        Order of bytes within an integer on a big-endian machine, from most to least significant.

                                                        + +

                                                        Definition at line 12 of file modules_vars.F90.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ iordle

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer, dimension(nbytw), parameter modv_vars::iordle = (/4,3,2,1/)
                                                        +
                                                        + +

                                                        Order of bytes within an integer on a little-endian machine, from most to least significant.

                                                        + +

                                                        Definition at line 15 of file modules_vars.F90.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ lendat

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer modv_vars::lendat = 8
                                                        +
                                                        + +

                                                        Length of Section 1 date-time values to be output by all future calls to message-reading subroutines.

                                                        +

                                                        The default value is 8, meaning that future date-time values will be output in YYMMDDHH (2-digit year) format. However, this value can be changed to 10 via a call to subroutine datelen(), and in which case future date-time values will be output in YYYYMMDDHH (4-digit year) format.

                                                        + +

                                                        Definition at line 59 of file modules_vars.F90.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ lens

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer, dimension(5), parameter modv_vars::lens = (/ 0, 16, 8, 8, 1/)
                                                        +
                                                        + +

                                                        Lengths of delayed replication factors corresponding to each type of replication in reps.

                                                        + +

                                                        Definition at line 77 of file modules_vars.F90.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ maxcd

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer modv_vars::maxcd = 250
                                                        +
                                                        + +

                                                        Maximum number of child descriptors that can be included within the sequence definition of a Table D descriptor, not counting the recursive resolution of any child descriptors which may themselves be Table D descriptors.

                                                        +

                                                        This variable is initialized to a default value which can be overridden by a subsequent call to function isetprm() within the application program.

                                                        + +

                                                        Definition at line 86 of file modules_vars.F90.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ maxjl

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer modv_vars::maxjl = 96000
                                                        +
                                                        + +

                                                        Maximum number of entries in the internal jump/link table.

                                                        +

                                                        This variable is initialized to a default value which can be overridden by a subsequent call to function isetprm() within the application program.

                                                        + +

                                                        Definition at line 92 of file modules_vars.F90.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ maxmem

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer modv_vars::maxmem = 50000000
                                                        +
                                                        + +

                                                        Maximum number of bytes that can be used to store BUFR messages within internal memory.

                                                        +

                                                        This variable is initialized to a default value which can be overridden by a subsequent call to function isetprm() within the application program.

                                                        + +

                                                        Definition at line 99 of file modules_vars.F90.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ maxmsg

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer modv_vars::maxmsg = 200000
                                                        +
                                                        + +

                                                        Maximum number of BUFR messages that can be stored within internal memory.

                                                        +

                                                        This variable is initialized to a default value which can be overridden by a subsequent call to function isetprm() within the application program.

                                                        + +

                                                        Definition at line 106 of file modules_vars.F90.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ maxnc

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer modv_vars::maxnc = 600
                                                        +
                                                        + +

                                                        Maximum number of descriptors within Section 3 of a BUFR message.

                                                        +

                                                        This variable is initialized to a default value which can be overridden by a subsequent call to function isetprm() within the application program.

                                                        + +

                                                        Definition at line 112 of file modules_vars.F90.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ maxrcr

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer, parameter modv_vars::maxrcr = 100
                                                        +
                                                        + +

                                                        Maximum number of recursion levels when expanding a subset template.

                                                        + +

                                                        Definition at line 259 of file modules_vars.F90.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ maxss

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer modv_vars::maxss = 120000
                                                        +
                                                        + +

                                                        Maximum number of data values that can be read from or written into a data subset by the NCEPLIBS-bufr software.

                                                        +

                                                        This variable is initialized to a default value which can be overridden by a subsequent call to function isetprm() within the application program.

                                                        + +

                                                        Definition at line 119 of file modules_vars.F90.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ maxtba

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer modv_vars::maxtba = 150
                                                        +
                                                        + +

                                                        Maximum number of entries in the internal BUFR Table A for each BUFR file that is connected to the NCEPLIBS-bufr software.

                                                        +

                                                        This variable is initialized to a default value which can be overridden by a subsequent call to function isetprm() within the application program.

                                                        + +

                                                        Definition at line 126 of file modules_vars.F90.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ maxtbb

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer modv_vars::maxtbb = 500
                                                        +
                                                        + +

                                                        Maximum number of entries in the internal BUFR Table B for each BUFR file that is connected to the NCEPLIBS-bufr software.

                                                        +

                                                        This variable is initialized to a default value which can be overridden by a subsequent call to function isetprm() within the application program.

                                                        + +

                                                        Definition at line 133 of file modules_vars.F90.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ maxtbd

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer modv_vars::maxtbd = 500
                                                        +
                                                        + +

                                                        Maximum number of entries in the internal BUFR Table D for each BUFR file that is connected to the NCEPLIBS-bufr software.

                                                        +

                                                        This variable is initialized to a default value which can be overridden by a subsequent call to function isetprm() within the application program.

                                                        + +

                                                        Definition at line 140 of file modules_vars.F90.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ mxbtm

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer modv_vars::mxbtm = 5
                                                        +
                                                        + +

                                                        Maximum number of bitmaps that can be stored internally for a data subset.

                                                        +

                                                        This variable is initialized to a default value which can be overridden by a subsequent call to function isetprm() within the application program.

                                                        + +

                                                        Definition at line 146 of file modules_vars.F90.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ mxbtmse

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer modv_vars::mxbtmse = 500
                                                        +
                                                        + +

                                                        Maximum number of "set" entries (set to a value of 0) within a bitmap.

                                                        +

                                                        This variable is initialized to a default value which can be overridden by a subsequent call to function isetprm() within the application program.

                                                        + +

                                                        Definition at line 152 of file modules_vars.F90.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ mxcdv

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer modv_vars::mxcdv = 3000
                                                        +
                                                        + +

                                                        Maximum number of data values that can be written into a data subset of a compressed BUFR message by the NCEPLIBS-bufr software.

                                                        +

                                                        This variable is initialized to a default value which can be overridden by a subsequent call to function isetprm() within the application program.

                                                        + +

                                                        Definition at line 159 of file modules_vars.F90.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ mxcnem

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer modv_vars::mxcnem = 450
                                                        +
                                                        + +

                                                        Maximum number of entries in the internal Table A mnemonic cache that is used for Section 3 decoding of BUFR messages.

                                                        +

                                                        This variable is initialized to a default value which can be overridden by a subsequent call to function isetprm() within the application program.

                                                        + +

                                                        Definition at line 166 of file modules_vars.F90.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ mxcsb

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer modv_vars::mxcsb = 4000
                                                        +
                                                        + +

                                                        Maximum number of data subsets that can be written into a compressed BUFR message by the NCEPLIBS-bufr software.

                                                        +

                                                        This variable is initialized to a default value which can be overridden by a subsequent call to function isetprm() within the application program.

                                                        + +

                                                        Definition at line 173 of file modules_vars.F90.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ mxdxts

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer modv_vars::mxdxts = 200
                                                        +
                                                        + +

                                                        Maximum number of dictionary tables that can be stored for use with BUFR messages in internal memory.

                                                        +

                                                        This variable is initialized to a default value which can be overridden by a subsequent call to function isetprm() within the application program.

                                                        + +

                                                        Definition at line 180 of file modules_vars.F90.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ mxh4wlc

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer modv_vars::mxh4wlc = 10
                                                        +
                                                        + +

                                                        Maximum number of long character strings that can be held for writing into an uncompressed BUFR subset by future internal calls to subroutine writlc().

                                                        +

                                                        This variable is initialized to a default value which can be overridden by a subsequent call to function isetprm() within the application program.

                                                        + +

                                                        Definition at line 188 of file modules_vars.F90.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ mxlcc

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer modv_vars::mxlcc = 32
                                                        +
                                                        + +

                                                        Maximum length (in bytes) of a character string that can be written into a data subset of a compressed BUFR message by the NCEPLIBS-bufr software.

                                                        +

                                                        This variable is initialized to a default value which can be overridden by a subsequent call to function isetprm() within the application program.

                                                        + +

                                                        Definition at line 196 of file modules_vars.F90.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ mxmsgl

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer modv_vars::mxmsgl = 600000
                                                        +
                                                        + +

                                                        Maximum length (in bytes) of a BUFR message that can be read or written by the NCEPLIBS-bufr software.

                                                        +

                                                        This variable is initialized to a default value which can be overridden by a subsequent call to function isetprm() within the application program.

                                                        + +

                                                        Definition at line 203 of file modules_vars.F90.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ mxmsgld4

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer modv_vars::mxmsgld4
                                                        +
                                                        + +

                                                        The value of mxmsgl divided by 4.

                                                        + +

                                                        Definition at line 206 of file modules_vars.F90.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ mxmtbb

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer modv_vars::mxmtbb = 4000
                                                        +
                                                        + +

                                                        Maximum number of entries in a master BUFR Table B.

                                                        +

                                                        This variable is initialized to a default value which can be overridden by a subsequent call to function isetprm() within the application program.

                                                        + +

                                                        Definition at line 212 of file modules_vars.F90.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ mxmtbd

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer modv_vars::mxmtbd = 1000
                                                        +
                                                        + +

                                                        Maximum number of entries in a master BUFR Table D.

                                                        +

                                                        This variable is initialized to a default value which can be overridden by a subsequent call to function isetprm() within the application program.

                                                        + +

                                                        Definition at line 218 of file modules_vars.F90.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ mxmtbf

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer modv_vars::mxmtbf = 25000
                                                        +
                                                        + +

                                                        Maximum number of entries in a master BUFR Code/Flag table, counting across all individual Code/Flag tables, and counting each defined code figure (within each individual Code table) or defined bit number (within each individual Flag table) as a separate entry.

                                                        +

                                                        This variable is initialized to a default value which can be overridden by a subsequent call to function isetprm() within the application program.

                                                        + +

                                                        Definition at line 227 of file modules_vars.F90.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ mxnaf

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer modv_vars::mxnaf = 4
                                                        +
                                                        + +

                                                        Maximum number of associated fields that can be in effect at any given time for a Table B descriptor.

                                                        + +

                                                        Definition at line 231 of file modules_vars.F90.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ mxnrv

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer modv_vars::mxnrv = 15
                                                        +
                                                        + +

                                                        Maximum number of entries in the internal jump/link table that can contain new reference values.

                                                        +

                                                        This variable is initialized to a default value which can be overridden by a subsequent call to function isetprm() within the application program.

                                                        + +

                                                        Definition at line 238 of file modules_vars.F90.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ mxrst

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer modv_vars::mxrst = 50
                                                        +
                                                        + +

                                                        Maximum number of "long" character strings (greater than 8 bytes) that can be read from a data subset of a compressed BUFR message.

                                                        +

                                                        This variable is initialized to a default value which can be overridden by a subsequent call to function isetprm() within the application program.

                                                        + +

                                                        Definition at line 245 of file modules_vars.F90.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ mxs

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer, parameter modv_vars::mxs = 1000
                                                        +
                                                        + +

                                                        Maximum number of entries in the internal string cache.

                                                        + +

                                                        Definition at line 256 of file modules_vars.F90.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ mxs01v

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer modv_vars::mxs01v = 10
                                                        +
                                                        + +

                                                        Maximum number of default Section 0 or Section 1 values that can be overwritten within an output BUFR message by the NCEPLIBS-bufr software.

                                                        +

                                                        This variable is initialized to a default value which can be overridden by a subsequent call to function isetprm() within the application program.

                                                        + +

                                                        Definition at line 253 of file modules_vars.F90.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ mxtamc

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer modv_vars::mxtamc = 15
                                                        +
                                                        + +

                                                        Maximum number of Table A mnemonics in the internal jump/link table which contain at least one Table C operator with an XX value of 21 or greater in their definition.

                                                        +

                                                        This variable is initialized to a default value which can be overridden by a subsequent call to function isetprm() within the application program.

                                                        + +

                                                        Definition at line 267 of file modules_vars.F90.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ mxtco

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer modv_vars::mxtco = 30
                                                        +
                                                        + +

                                                        Maximum number of Table C operators with an XX value of 21 or greater that can appear within the data subset definition of a Table A mnemonic.

                                                        +

                                                        This variable is initialized to a default value which can be overridden by a subsequent call to function isetprm() within the application program.

                                                        + +

                                                        Definition at line 275 of file modules_vars.F90.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ nbitw

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer, parameter modv_vars::nbitw = nbytw * 8
                                                        +
                                                        + +

                                                        Number of bits within an integer.

                                                        + +

                                                        Definition at line 18 of file modules_vars.F90.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ nbytw

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer, parameter modv_vars::nbytw = 4
                                                        +
                                                        + +

                                                        Number of bytes within an integer.

                                                        + +

                                                        Definition at line 9 of file modules_vars.F90.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ nfiles

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer modv_vars::nfiles = 32
                                                        +
                                                        + +

                                                        Maximum number of BUFR files that can be connected to the NCEPLIBS-bufr software (for reading or writing) at any one time.

                                                        +

                                                        This variable is initialized to a default value which can be overridden by a subsequent call to function isetprm() within the application program.

                                                        + +

                                                        Definition at line 282 of file modules_vars.F90.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ reps

                                                        + +
                                                        +
                                                        + + + + +
                                                        character, dimension(10), parameter modv_vars::reps = (/ '"', '(', '{', '[', '<', '"', ')', '}', ']', '>'/)
                                                        +
                                                        + +

                                                        Replication indicators used in DX BUFR tables.

                                                        + +

                                                        Definition at line 62 of file modules_vars.F90.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ typs

                                                        + +
                                                        +
                                                        + + + + +
                                                        character*3, dimension(10), parameter modv_vars::typs = (/ 'REP', 'DRP', 'DRP', 'DRS', 'DRB', 'SEQ', 'RPC', 'RPC', 'RPS', 'SEQ'/)
                                                        +
                                                        + +

                                                        Replication tags corresponding to reps.

                                                        + +

                                                        Definition at line 66 of file modules_vars.F90.

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/modules__vars_8F90.js b/previous_versions/v12.1.0/modules__vars_8F90.js new file mode 100644 index 000000000..1cd42b563 --- /dev/null +++ b/previous_versions/v12.1.0/modules__vars_8F90.js @@ -0,0 +1,49 @@ +var modules__vars_8F90 = +[ + [ "adsn", "modules__vars_8F90.html#a7a129734d8b06649619e8e9ee42eca62", null ], + [ "bmiss", "modules__vars_8F90.html#a745e8be4bf52246db47090996854736b", null ], + [ "iac", "modules__vars_8F90.html#a7db5428bb409dc91391908e3f6005da0", null ], + [ "iblock", "modules__vars_8F90.html#a8623e746f63272cf61b014607d998345", null ], + [ "idnr", "modules__vars_8F90.html#a181516c96f53bedb9774c83ebfeb0a23", null ], + [ "ifopbf", "modules__vars_8F90.html#a6007e8a5d98440d7bb16ce63bbf007e6", null ], + [ "im8b", "modules__vars_8F90.html#a4ff59bf9f9ee31e187bf7f8ecb61f4dd", null ], + [ "iordbe", "modules__vars_8F90.html#a2588ca33cb30f0316759c9ca7735bbb3", null ], + [ "iordle", "modules__vars_8F90.html#a7376f8406ce5e5e420d4d012aea93416", null ], + [ "lendat", "modules__vars_8F90.html#a9776bd15698bdb2c211a2326f0ca61dc", null ], + [ "lens", "modules__vars_8F90.html#a3eaffbddfb28ae6f90cff4ec580463c1", null ], + [ "maxcd", "modules__vars_8F90.html#ae8a681bd9096d6c9a2466b3c71f6ec7e", null ], + [ "maxjl", "modules__vars_8F90.html#ad2e54a398ee4fd5c87669a2883e7a37d", null ], + [ "maxmem", "modules__vars_8F90.html#ab5934a6a2f8cd3e09418203c1d3c20de", null ], + [ "maxmsg", "modules__vars_8F90.html#a61162c966b964b3039b9180818d0e7ee", null ], + [ "maxnc", "modules__vars_8F90.html#a6c14025516cc65ace5f17fc2c4e4a9a3", null ], + [ "maxrcr", "modules__vars_8F90.html#a656c690a79e927a6d824a1e8cef901e9", null ], + [ "maxss", "modules__vars_8F90.html#adaae2c5fadf243ece139cc7e84688d75", null ], + [ "maxtba", "modules__vars_8F90.html#aec19b6418a5d88f574f4b196b93a5cf5", null ], + [ "maxtbb", "modules__vars_8F90.html#a14452fc0317594bd880c9abba582ae74", null ], + [ "maxtbd", "modules__vars_8F90.html#ab5fc7a78bb32e9a0fa7cbb1f402e7528", null ], + [ "mxbtm", "modules__vars_8F90.html#a9c06e9ba0f47cbeecfb1e6d1972e1e4f", null ], + [ "mxbtmse", "modules__vars_8F90.html#aa7b24da237033a528cb05754d5736cc6", null ], + [ "mxcdv", "modules__vars_8F90.html#ae330052e2bcc0a81949c5ef8d6e7cc9e", null ], + [ "mxcnem", "modules__vars_8F90.html#ad5cda585f8b55a9e6e3a81808c23630f", null ], + [ "mxcsb", "modules__vars_8F90.html#a6780f1f07eeec5333e01ca17588f7d39", null ], + [ "mxdxts", "modules__vars_8F90.html#a179ebe33ab923f74ef05e2851a86d33b", null ], + [ "mxh4wlc", "modules__vars_8F90.html#a59f64f9f847d2171ecac822482b2f0a9", null ], + [ "mxlcc", "modules__vars_8F90.html#a739ea87803beaa51dd172adb95af9b86", null ], + [ "mxmsgl", "modules__vars_8F90.html#a6062176c0f51fa9f593310f46cc14fe0", null ], + [ "mxmsgld4", "modules__vars_8F90.html#a5a89be3220392c5b182d4d475d22e3e1", null ], + [ "mxmtbb", "modules__vars_8F90.html#ab2c78405872b159e107674c2fc2a12f7", null ], + [ "mxmtbd", "modules__vars_8F90.html#ae0bf7b02df4e070e72a90672e3eded90", null ], + [ "mxmtbf", "modules__vars_8F90.html#a9242cd091e5ab5d3956740035f6b6207", null ], + [ "mxnaf", "modules__vars_8F90.html#a7b92c0b0ed1fb2b80b048414fa1e54ce", null ], + [ "mxnrv", "modules__vars_8F90.html#a009fea23b90695d1556e33a557d4b7f1", null ], + [ "mxrst", "modules__vars_8F90.html#ae2e923a33b968adc577317f6cef8f24e", null ], + [ "mxs", "modules__vars_8F90.html#a695fe6ca7714604e88e1fc4d21cc839d", null ], + [ "mxs01v", "modules__vars_8F90.html#a61b398d330ce6937423db44f080b93fd", null ], + [ "mxtamc", "modules__vars_8F90.html#a85bed6c0b0a9aa339abd8fb7b3a136b5", null ], + [ "mxtco", "modules__vars_8F90.html#a68ea76a4751743e58280e061b43313e7", null ], + [ "nbitw", "modules__vars_8F90.html#a18a87ef02ab98d62e7fa272b20acd77a", null ], + [ "nbytw", "modules__vars_8F90.html#a2b80f794fded7bf159ff58796ec31a7c", null ], + [ "nfiles", "modules__vars_8F90.html#aa9124552f5c640e47f8decc9499688d8", null ], + [ "reps", "modules__vars_8F90.html#a5b163d0f13c16e94bdac566d2495faf7", null ], + [ "typs", "modules__vars_8F90.html#a9d4bd8b03fd20102645f0a43d8867bff", null ] +]; \ No newline at end of file diff --git a/previous_versions/v12.1.0/modules__vars_8F90_source.html b/previous_versions/v12.1.0/modules__vars_8F90_source.html new file mode 100644 index 000000000..e5f694553 --- /dev/null +++ b/previous_versions/v12.1.0/modules__vars_8F90_source.html @@ -0,0 +1,199 @@ + + + + + + + +NCEPLIBS-bufr: modules_vars.F90 Source File + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        +
                                                        modules_vars.F90
                                                        +
                                                        +
                                                        +Go to the documentation of this file.
                                                        1 
                                                        +
                                                        5 
                                                        +
                                                        6 module modv_vars
                                                        +
                                                        7 
                                                        +
                                                        9  integer, parameter :: nbytw = 4
                                                        +
                                                        10 
                                                        +
                                                        12  integer, parameter :: iordbe(nbytw) = (/1,2,3,4/)
                                                        +
                                                        13 
                                                        +
                                                        15  integer, parameter :: iordle(nbytw) = (/4,3,2,1/)
                                                        +
                                                        16 
                                                        +
                                                        18  integer, parameter :: nbitw = nbytw * 8
                                                        +
                                                        19 
                                                        +
                                                        27  logical :: im8b = .false.
                                                        +
                                                        28 
                                                        +
                                                        36  integer :: iblock = 0
                                                        +
                                                        37 
                                                        +
                                                        41  real*8 :: bmiss = 10e10_8
                                                        +
                                                        42 
                                                        +
                                                        46  integer :: ifopbf = 0
                                                        +
                                                        47 
                                                        +
                                                        52  integer :: iac = 0
                                                        +
                                                        53 
                                                        +
                                                        59  integer :: lendat = 8
                                                        +
                                                        60 
                                                        +
                                                        62  character, parameter :: reps(10) = (/ '"', '(', '{', '[', '<', &
                                                        +
                                                        63  '"', ')', '}', ']', '>'/)
                                                        +
                                                        64 
                                                        +
                                                        66  character*3, parameter :: typs(10) = (/ 'REP', 'DRP', 'DRP', 'DRS', 'DRB', &
                                                        +
                                                        67  'SEQ', 'RPC', 'RPC', 'RPS', 'SEQ'/)
                                                        +
                                                        68 
                                                        +
                                                        70  character*6, parameter :: adsn(10) = (/'101000','360001','360002','360003','360004', &
                                                        +
                                                        71  '101255','031002','031001','031001','031000'/)
                                                        +
                                                        72 
                                                        +
                                                        74  integer :: idnr(10)
                                                        +
                                                        75 
                                                        +
                                                        77  integer, parameter :: lens(5) = (/ 0, 16, 8, 8, 1/)
                                                        +
                                                        78 
                                                        +
                                                        86  integer :: maxcd = 250
                                                        +
                                                        87 
                                                        +
                                                        92  integer :: maxjl = 96000
                                                        +
                                                        93 
                                                        +
                                                        99  integer :: maxmem = 50000000
                                                        +
                                                        100 
                                                        +
                                                        106  integer :: maxmsg = 200000
                                                        +
                                                        107 
                                                        +
                                                        112  integer :: maxnc = 600
                                                        +
                                                        113 
                                                        +
                                                        119  integer :: maxss = 120000
                                                        +
                                                        120 
                                                        +
                                                        126  integer :: maxtba = 150
                                                        +
                                                        127 
                                                        +
                                                        133  integer :: maxtbb = 500
                                                        +
                                                        134 
                                                        +
                                                        140  integer :: maxtbd = 500
                                                        +
                                                        141 
                                                        +
                                                        146  integer :: mxbtm = 5
                                                        +
                                                        147 
                                                        +
                                                        152  integer :: mxbtmse = 500
                                                        +
                                                        153 
                                                        +
                                                        159  integer :: mxcdv = 3000
                                                        +
                                                        160 
                                                        +
                                                        166  integer :: mxcnem = 450
                                                        +
                                                        167 
                                                        +
                                                        173  integer :: mxcsb = 4000
                                                        +
                                                        174 
                                                        +
                                                        180  integer :: mxdxts = 200
                                                        +
                                                        181 
                                                        +
                                                        188  integer :: mxh4wlc = 10
                                                        +
                                                        189 
                                                        +
                                                        196  integer :: mxlcc = 32
                                                        +
                                                        197 
                                                        +
                                                        203  integer :: mxmsgl = 600000
                                                        +
                                                        204 
                                                        +
                                                        206  integer :: mxmsgld4
                                                        +
                                                        207 
                                                        +
                                                        212  integer :: mxmtbb = 4000
                                                        +
                                                        213 
                                                        +
                                                        218  integer :: mxmtbd = 1000
                                                        +
                                                        219 
                                                        +
                                                        227  integer :: mxmtbf = 25000
                                                        +
                                                        228 
                                                        +
                                                        231  integer :: mxnaf = 4
                                                        +
                                                        232 
                                                        +
                                                        238  integer :: mxnrv = 15
                                                        +
                                                        239 
                                                        +
                                                        245  integer :: mxrst = 50
                                                        +
                                                        246 
                                                        +
                                                        253  integer :: mxs01v = 10
                                                        +
                                                        254 
                                                        +
                                                        256  integer, parameter :: mxs = 1000
                                                        +
                                                        257 
                                                        +
                                                        259  integer, parameter :: maxrcr = 100
                                                        +
                                                        260 
                                                        +
                                                        267  integer :: mxtamc = 15
                                                        +
                                                        268 
                                                        +
                                                        275  integer :: mxtco = 30
                                                        +
                                                        276 
                                                        +
                                                        282  integer :: nfiles = 32
                                                        +
                                                        283 
                                                        +
                                                        284 end module modv_vars
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/mstabs_8h.html b/previous_versions/v12.1.0/mstabs_8h.html new file mode 100644 index 000000000..80bf2977c --- /dev/null +++ b/previous_versions/v12.1.0/mstabs_8h.html @@ -0,0 +1,553 @@ + + + + + + + +NCEPLIBS-bufr: mstabs.h File Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        mstabs.h File Reference
                                                        +
                                                        +
                                                        + +

                                                        Declare variables for internal storage of master Table B and Table D entries. +More...

                                                        + +

                                                        Go to the source code of this file.

                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                                                        +Variables

                                                        char(* cbbw_c )[4]
                                                         Master Table B bit widths; copied from Fortran cbbw array. More...
                                                         
                                                        char(* cbelem_c )[120]
                                                         Master Table B element names; copied from Fortran cbelem array. More...
                                                         
                                                        char(* cbmnem_c )[8]
                                                         Master Table B mnemonics; copied from Fortran cbmnem array. More...
                                                         
                                                        char(* cbscl_c )[4]
                                                         Master Table B scale factors; copied from Fortran cbscl array. More...
                                                         
                                                        char(* cbsref_c )[12]
                                                         Master Table B reference values; copied from Fortran cbsref array. More...
                                                         
                                                        char(* cbunit_c )[24]
                                                         Master Table B units; copied from Fortran cbunit array. More...
                                                         
                                                        char(* cdmnem_c )[8]
                                                         Master Table D mnemonics; copied from Fortran cdmnem array. More...
                                                         
                                                        char(* cdseq_c )[120]
                                                         Master Table D sequence names; copied from Fortran cdseq array. More...
                                                         
                                                        int * iafpk
                                                         WMO bit-wise representations of associated fields within master Table D sequences. More...
                                                         
                                                        int * ibfxyn_c
                                                         WMO bit-wise representations of master Table B FXY numbers; copied from Fortran ibfxyn array. More...
                                                         
                                                        int * idefxy_c
                                                         WMO bit-wise representations of child descriptors for master Table D sequences; copied from Fortran idefxy array. More...
                                                         
                                                        int * idfxyn_c
                                                         WMO bit-wise representations of master Table D FXY numbers; copied from Fortran idfxyn array. More...
                                                         
                                                        int * ndelem_c
                                                         Number of child descriptors for master Table D sequences; copied from Fortran ndelem array. More...
                                                         
                                                        int nmtb_c
                                                         Number of master Table B entries; copied from Fortran nmtb variable. More...
                                                         
                                                        int nmtd_c
                                                         Number of master Table D entries; copied from Fortran nmtd variable. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Declare variables for internal storage of master Table B and Table D entries.

                                                        +

                                                        Since the arrays in Fortran module moda_mstabs are dynamically allocated and their size isn't known at compile time, then we can't directly access them from within C. Instead, we need to allocate separate array space in C and then use subroutine cpmstabs() to copy the relevant information from the module arrays to these C arrays at run time, in order to be able to access this information from within C.

                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2014-12-04
                                                        + +

                                                        Definition in file mstabs.h.

                                                        +

                                                        Variable Documentation

                                                        + +

                                                        ◆ cbbw_c

                                                        + +
                                                        +
                                                        + + + + + +
                                                        + + + + +
                                                        cbbw_c
                                                        +
                                                        +extern
                                                        +
                                                        + +

                                                        Master Table B bit widths; copied from Fortran cbbw array.

                                                        + +

                                                        Referenced by arallocc(), ardllocc(), cpmstabs(), and stseq().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ cbelem_c

                                                        + +
                                                        +
                                                        + + + + + +
                                                        + + + + +
                                                        cbelem_c
                                                        +
                                                        +extern
                                                        +
                                                        + +

                                                        Master Table B element names; copied from Fortran cbelem array.

                                                        + +

                                                        Referenced by arallocc(), ardllocc(), cpmstabs(), and stseq().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ cbmnem_c

                                                        + +
                                                        +
                                                        + + + + + +
                                                        + + + + +
                                                        cbmnem_c
                                                        +
                                                        +extern
                                                        +
                                                        + +

                                                        Master Table B mnemonics; copied from Fortran cbmnem array.

                                                        + +

                                                        Referenced by arallocc(), ardllocc(), cpmstabs(), and stseq().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ cbscl_c

                                                        + +
                                                        +
                                                        + + + + + +
                                                        + + + + +
                                                        cbscl_c
                                                        +
                                                        +extern
                                                        +
                                                        + +

                                                        Master Table B scale factors; copied from Fortran cbscl array.

                                                        + +

                                                        Referenced by arallocc(), ardllocc(), cpmstabs(), and stseq().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ cbsref_c

                                                        + +
                                                        +
                                                        + + + + + +
                                                        + + + + +
                                                        cbsref_c
                                                        +
                                                        +extern
                                                        +
                                                        + +

                                                        Master Table B reference values; copied from Fortran cbsref array.

                                                        + +

                                                        Referenced by arallocc(), ardllocc(), cpmstabs(), and stseq().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ cbunit_c

                                                        + +
                                                        +
                                                        + + + + + +
                                                        + + + + +
                                                        cbunit_c
                                                        +
                                                        +extern
                                                        +
                                                        + +

                                                        Master Table B units; copied from Fortran cbunit array.

                                                        + +

                                                        Referenced by arallocc(), ardllocc(), cpmstabs(), and stseq().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ cdmnem_c

                                                        + +
                                                        +
                                                        + + + + + +
                                                        + + + + +
                                                        cdmnem_c
                                                        +
                                                        +extern
                                                        +
                                                        + +

                                                        Master Table D mnemonics; copied from Fortran cdmnem array.

                                                        + +

                                                        Referenced by arallocc(), ardllocc(), cpmstabs(), and stseq().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ cdseq_c

                                                        + +
                                                        +
                                                        + + + + + +
                                                        + + + + +
                                                        cdseq_c
                                                        +
                                                        +extern
                                                        +
                                                        + +

                                                        Master Table D sequence names; copied from Fortran cdseq array.

                                                        + +

                                                        Referenced by arallocc(), ardllocc(), cpmstabs(), and stseq().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ iafpk

                                                        + +
                                                        +
                                                        + + + + + +
                                                        + + + + +
                                                        iafpk
                                                        +
                                                        +extern
                                                        +
                                                        + +

                                                        WMO bit-wise representations of associated fields within master Table D sequences.

                                                        + +

                                                        Referenced by arallocc(), ardllocc(), and stseq().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ ibfxyn_c

                                                        + +
                                                        +
                                                        + + + + + +
                                                        + + + + +
                                                        ibfxyn_c
                                                        +
                                                        +extern
                                                        +
                                                        + +

                                                        WMO bit-wise representations of master Table B FXY numbers; copied from Fortran ibfxyn array.

                                                        + +

                                                        Referenced by arallocc(), ardllocc(), cpmstabs(), and nummtb().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ idefxy_c

                                                        + +
                                                        +
                                                        + + + + + +
                                                        + + + + +
                                                        idefxy_c
                                                        +
                                                        +extern
                                                        +
                                                        + +

                                                        WMO bit-wise representations of child descriptors for master Table D sequences; copied from Fortran idefxy array.

                                                        + +

                                                        Referenced by arallocc(), ardllocc(), cpmstabs(), and stseq().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ idfxyn_c

                                                        + +
                                                        +
                                                        + + + + + +
                                                        + + + + +
                                                        idfxyn_c
                                                        +
                                                        +extern
                                                        +
                                                        + +

                                                        WMO bit-wise representations of master Table D FXY numbers; copied from Fortran idfxyn array.

                                                        + +

                                                        Referenced by arallocc(), ardllocc(), cpmstabs(), and nummtb().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ ndelem_c

                                                        + +
                                                        +
                                                        + + + + + +
                                                        + + + + +
                                                        ndelem_c
                                                        +
                                                        +extern
                                                        +
                                                        + +

                                                        Number of child descriptors for master Table D sequences; copied from Fortran ndelem array.

                                                        + +

                                                        Referenced by arallocc(), ardllocc(), cpmstabs(), and stseq().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ nmtb_c

                                                        + +
                                                        +
                                                        + + + + + +
                                                        + + + + +
                                                        nmtb_c
                                                        +
                                                        +extern
                                                        +
                                                        + +

                                                        Number of master Table B entries; copied from Fortran nmtb variable.

                                                        + +

                                                        Referenced by cpmstabs(), and nummtb().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ nmtd_c

                                                        + +
                                                        +
                                                        + + + + + +
                                                        + + + + +
                                                        nmtd_c
                                                        +
                                                        +extern
                                                        +
                                                        + +

                                                        Number of master Table D entries; copied from Fortran nmtd variable.

                                                        + +

                                                        Referenced by cpmstabs(), and nummtb().

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/mstabs_8h.js b/previous_versions/v12.1.0/mstabs_8h.js new file mode 100644 index 000000000..eb82011e5 --- /dev/null +++ b/previous_versions/v12.1.0/mstabs_8h.js @@ -0,0 +1,18 @@ +var mstabs_8h = +[ + [ "cbbw_c", "mstabs_8h.html#aa0f8eb7c3a1ca9a66a0933d97a3422ab", null ], + [ "cbelem_c", "mstabs_8h.html#a19c8207a7b2c18f50438f51f066bad7b", null ], + [ "cbmnem_c", "mstabs_8h.html#a7c0149a5419b96753491953e92ce35b0", null ], + [ "cbscl_c", "mstabs_8h.html#a49e37dddeae6e1e71da2444d40c6d232", null ], + [ "cbsref_c", "mstabs_8h.html#a1209038da13334a450146c0caa5ae9ad", null ], + [ "cbunit_c", "mstabs_8h.html#a558051c0c39c5c6181019fb4231797d1", null ], + [ "cdmnem_c", "mstabs_8h.html#a309b9730283bc44b297b44f4e32db7f1", null ], + [ "cdseq_c", "mstabs_8h.html#a3e8f3bcd901b3809309c431d2825d636", null ], + [ "iafpk", "mstabs_8h.html#aaa7c3e504e98938c63caeb866c071c59", null ], + [ "ibfxyn_c", "mstabs_8h.html#acdfc509abed04b3bc643a4171c419fa4", null ], + [ "idefxy_c", "mstabs_8h.html#a006ec50bbb9f20fad017eb980cc7afa0", null ], + [ "idfxyn_c", "mstabs_8h.html#a2798d24f3443eeee2999eddf34d24c19", null ], + [ "ndelem_c", "mstabs_8h.html#ad9af08676809848df12a73ece2a37182", null ], + [ "nmtb_c", "mstabs_8h.html#ad93c9a8906bf4b63fba3143c8d9d5da5", null ], + [ "nmtd_c", "mstabs_8h.html#aaa17913e195f9e3cf457d748d2c8f60e", null ] +]; \ No newline at end of file diff --git a/previous_versions/v12.1.0/mstabs_8h_source.html b/previous_versions/v12.1.0/mstabs_8h_source.html new file mode 100644 index 000000000..99b10812f --- /dev/null +++ b/previous_versions/v12.1.0/mstabs_8h_source.html @@ -0,0 +1,148 @@ + + + + + + + +NCEPLIBS-bufr: mstabs.h Source File + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        +
                                                        mstabs.h
                                                        +
                                                        +
                                                        +Go to the documentation of this file.
                                                        1 
                                                        +
                                                        60 #ifdef IN_ARALLOCC
                                                        +
                                                        61  int nmtb_c;
                                                        +
                                                        62  int *ibfxyn_c;
                                                        +
                                                        63  char (*cbscl_c)[4];
                                                        +
                                                        64  char (*cbsref_c)[12];
                                                        +
                                                        65  char (*cbbw_c)[4];
                                                        +
                                                        66  char (*cbunit_c)[24];
                                                        +
                                                        67  char (*cbmnem_c)[8];
                                                        +
                                                        68  char (*cbelem_c)[120];
                                                        +
                                                        69  int nmtd_c;
                                                        +
                                                        70  int *idfxyn_c;
                                                        +
                                                        71  char (*cdseq_c)[120];
                                                        +
                                                        72  char (*cdmnem_c)[8];
                                                        +
                                                        73  int *ndelem_c;
                                                        +
                                                        74  int *idefxy_c;
                                                        +
                                                        75  int *iafpk;
                                                        +
                                                        76 #else
                                                        +
                                                        77  extern int nmtb_c;
                                                        +
                                                        78  extern int *ibfxyn_c;
                                                        +
                                                        79  extern char (*cbscl_c)[4];
                                                        +
                                                        80  extern char (*cbsref_c)[12];
                                                        +
                                                        81  extern char (*cbbw_c)[4];
                                                        +
                                                        82  extern char (*cbunit_c)[24];
                                                        +
                                                        83  extern char (*cbmnem_c)[8];
                                                        +
                                                        84  extern char (*cbelem_c)[120];
                                                        +
                                                        85  extern int nmtd_c;
                                                        +
                                                        86  extern int *idfxyn_c;
                                                        +
                                                        87  extern char (*cdseq_c)[120];
                                                        +
                                                        88  extern char (*cdmnem_c)[8];
                                                        +
                                                        89  extern int *ndelem_c;
                                                        +
                                                        90  extern int *idefxy_c;
                                                        +
                                                        91  extern int *iafpk;
                                                        +
                                                        92 #endif
                                                        +
                                                        int * idefxy_c
                                                        WMO bit-wise representations of child descriptors for master Table D sequences; copied from Fortran i...
                                                        +
                                                        char(* cbsref_c)[12]
                                                        Master Table B reference values; copied from Fortran cbsref array.
                                                        +
                                                        char(* cbelem_c)[120]
                                                        Master Table B element names; copied from Fortran cbelem array.
                                                        +
                                                        int * idfxyn_c
                                                        WMO bit-wise representations of master Table D FXY numbers; copied from Fortran idfxyn array.
                                                        +
                                                        char(* cdmnem_c)[8]
                                                        Master Table D mnemonics; copied from Fortran cdmnem array.
                                                        +
                                                        char(* cdseq_c)[120]
                                                        Master Table D sequence names; copied from Fortran cdseq array.
                                                        +
                                                        char(* cbscl_c)[4]
                                                        Master Table B scale factors; copied from Fortran cbscl array.
                                                        +
                                                        char(* cbunit_c)[24]
                                                        Master Table B units; copied from Fortran cbunit array.
                                                        +
                                                        char(* cbmnem_c)[8]
                                                        Master Table B mnemonics; copied from Fortran cbmnem array.
                                                        +
                                                        char(* cbbw_c)[4]
                                                        Master Table B bit widths; copied from Fortran cbbw array.
                                                        +
                                                        int nmtd_c
                                                        Number of master Table D entries; copied from Fortran nmtd variable.
                                                        +
                                                        int * iafpk
                                                        WMO bit-wise representations of associated fields within master Table D sequences.
                                                        +
                                                        int * ibfxyn_c
                                                        WMO bit-wise representations of master Table B FXY numbers; copied from Fortran ibfxyn array.
                                                        +
                                                        int nmtb_c
                                                        Number of master Table B entries; copied from Fortran nmtb variable.
                                                        +
                                                        int * ndelem_c
                                                        Number of child descriptors for master Table D sequences; copied from Fortran ndelem array.
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/namespacebufr__c2f__interface.html b/previous_versions/v12.1.0/namespacebufr__c2f__interface.html new file mode 100644 index 000000000..7f4332f8c --- /dev/null +++ b/previous_versions/v12.1.0/namespacebufr__c2f__interface.html @@ -0,0 +1,2734 @@ + + + + + + + +NCEPLIBS-bufr: bufr_c2f_interface Module Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        bufr_c2f_interface Module Reference
                                                        +
                                                        +
                                                        + +

                                                        Wrap Fortran NCEPLIBS-bufr subprograms and variables so they can be called from within C. +More...

                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                                                        +Functions/Subroutines

                                                        subroutine, public bort_c (errstr)
                                                         Log one error message and abort application program. More...
                                                         
                                                        subroutine, public bvers_c (cverstr, cverstr_len)
                                                         Get the version number of the NCEPLIBS-bufr software. More...
                                                         
                                                        subroutine, public cadn30_c (idn, adn, adn_str_len)
                                                         Convert an FXY value from its WMO bit-wise representation to its six-character representation. More...
                                                         
                                                        subroutine, public closbf_c (bufr_unit)
                                                         Close a previously opened file and disconnect it from the library. More...
                                                         
                                                        subroutine, public close_c (lunit)
                                                         Close a Fortran file from a C program. More...
                                                         
                                                        subroutine, public delete_table_data_c ()
                                                         Deletes the copies of the moda_tables arrays. More...
                                                         
                                                        subroutine, public elemdx_c (card, lun)
                                                         Decode the scale factor, reference value, bit width, and units from a Table B mnemonic definition. More...
                                                         
                                                        subroutine, public exitbufr_c ()
                                                         Reset the library. More...
                                                         
                                                        subroutine, public get_inode_c (lun, start_node)
                                                         Get the bufr node idx for the start node of the subset. More...
                                                         
                                                        subroutine, public get_inv_c (lun, inv_ptr, inv_size)
                                                         Get pointer to the moda_usrint INV array. More...
                                                         
                                                        subroutine, public get_irf_c (irf_ptr, irf_size)
                                                         Get copy of the moda_tables IRF array. More...
                                                         
                                                        subroutine, public get_isc_c (isc_ptr, isc_size)
                                                         Get copy of the moda_tables ISC array. More...
                                                         
                                                        subroutine, public get_itp_c (itp_ptr, itp_size)
                                                         Get copy of the moda_tables ITP array. More...
                                                         
                                                        subroutine, public get_jmpb_c (jmpb_ptr, jmpb_size)
                                                         Get copy of the moda_tables JMPB array. More...
                                                         
                                                        subroutine, public get_link_c (link_ptr, link_size)
                                                         Get copy of the moda_tables LINK array. More...
                                                         
                                                        subroutine, public get_nval_c (lun, num_nodes)
                                                         Get the number of values in the current subset. More...
                                                         
                                                        subroutine, public get_tag_c (tag_ptr, tag_len, mem_size)
                                                         Get copy of the moda_tables TAG array. More...
                                                         
                                                        subroutine, public get_typ_c (typ_ptr, typ_len, mem_size)
                                                         Get copy of the moda_tables TYP array. More...
                                                         
                                                        subroutine, public get_val_c (lun, val_ptr, val_size)
                                                         Get pointer to the moda_usrint VAL array. More...
                                                         
                                                        integer(c_int) function, public ibfms_c (r8val)
                                                         Test whether a data value is "missing". More...
                                                         
                                                        integer(c_int) function, public ifxy_c (cfxy)
                                                         Convert an FXY value from its 6 character representation to its WMO bit-wise representation. More...
                                                         
                                                        integer(c_int) function, public igetmxby_c ()
                                                         Get the maximum length of a BUFR message that can be written to an output file. More...
                                                         
                                                        integer(c_int) function, public igetntbi_c (lun, table_type)
                                                         Get the next index for storing an entry within an internal DX BUFR table. More...
                                                         
                                                        integer(c_int) function, public igetprm_c (cprmnm)
                                                         Get the current value of a parameter. More...
                                                         
                                                        integer(c_int) function, public igettdi_c (iflag)
                                                         Get the next usable Table D index for the current master table, or reset the index. More...
                                                         
                                                        integer(c_int) function, public imrkopr_c (nemo)
                                                         Check whether a specified mnemonic is a Table C marker operator. More...
                                                         
                                                        integer(c_int) function, public ireadmg_c (bufr_unit, c_subset, iddate, subset_str_len)
                                                         Read the next message from a BUFR file. More...
                                                         
                                                        integer(c_int) function, public ireadns_c (bufr_unit, c_subset, iddate, subset_str_len)
                                                         Read the next data subset from a BUFR file. More...
                                                         
                                                        integer(c_int) function, public ireadsb_c (bufr_unit)
                                                         Read the next data subset from a BUFR message. More...
                                                         
                                                        integer(c_int) function, public isetprm_c (cprmnm, ipval)
                                                         Define a customized parameter value for dynamic allocation. More...
                                                         
                                                        integer(c_int) function, public istdesc_c (idn)
                                                         Check whether a descriptor is WMO-standard. More...
                                                         
                                                        integer(c_int) function, public iupbs01_c (bufr, mnemonic)
                                                         Read a data value from Section 0 or Section 1 of a BUFR message. More...
                                                         
                                                        subroutine, public maxout_c (max0)
                                                         Define a customized maximum length for output BUFR messages. More...
                                                         
                                                        subroutine, public mtinfo_c (path, file_unit_1, file_unit_2)
                                                         Specify location of master BUFR tables on local file system. More...
                                                         
                                                        subroutine, public nemdefs_c (file_unit, mnemonic, unit_c, unit_str_len, desc_c, desc_str_len, iret)
                                                         Get the element name and units associated with a Table B mnemonic. More...
                                                         
                                                        subroutine, public nemspecs_c (file_unit, mnemonic, mnemonic_idx, scale, reference, bits, iret)
                                                         Get the scale factor, reference value and bit width associated with a specified occurrence of a Table B mnemonic. More...
                                                         
                                                        subroutine, public nemtab_c (lun, mnemonic, descriptor, table_type, table_idx)
                                                         Get information about a descriptor. More...
                                                         
                                                        subroutine, public nemtbb_c (lun, table_idx, unit_str, unit_str_len, scale, reference, bits)
                                                         Get information about a Table B descriptor. More...
                                                         
                                                        subroutine, public numtbd_c (lun, idn, nemo, nemo_str_len, tab, iret)
                                                         Search for a Table B or Table D descriptor within the internal DX BUFR tables. More...
                                                         
                                                        subroutine, public open_c (lunit, filepath)
                                                         Open a Fortran file from a C program. More...
                                                         
                                                        subroutine, public openbf_c (bufr_unit, cio, table_file_id)
                                                         Connect a new file to the library, or initialize the library, or change verbosity associated with already-connected file. More...
                                                         
                                                        subroutine, public openmb_c (bufr_unit, c_subset, iddate)
                                                         Open a new message for output in a BUFR file that was previously opened for writing. More...
                                                         
                                                        subroutine, public pktdd_c (id, lun, idn, iret)
                                                         Store information about a child mnemonic within the internal arrays. More...
                                                         
                                                        subroutine, public readlc_c (lunit, str_id, output_str, output_str_len)
                                                         Function used to get long strings from the BUFR file. More...
                                                         
                                                        subroutine, public status_c (file_unit, lun, il, im)
                                                         Check whether a file is connected to the library. More...
                                                         
                                                        subroutine, public stntbi_c (n, lun, numb, nemo, celsq)
                                                         Store a new entry within the internal BUFR Table B or D. More...
                                                         
                                                        subroutine, public strnum_c (str, num, iret)
                                                         Decode an integer from a character string. More...
                                                         
                                                        subroutine, public ufbint_c (bufr_unit, c_data, dim_1, dim_2, iret, table_b_mnemonic)
                                                         Read/write one or more data values from/to a data subset. More...
                                                         
                                                        subroutine, public ufbrep_c (bufr_unit, c_data, dim_1, dim_2, iret, table_b_mnemonic)
                                                         Read/write one or more data values from/to a data subset. More...
                                                         
                                                        subroutine, public ufbseq_c (bufr_unit, c_data, dim_1, dim_2, iret, table_d_mnemonic)
                                                         Read/write an entire sequence of data values from/to a data subset. More...
                                                         
                                                        subroutine, public uptdd_c (id, lun, ient, iret)
                                                         Get the WMO bit-wise representation of the FXY value corresponding to a child mnemonic of a Table D sequence. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Wrap Fortran NCEPLIBS-bufr subprograms and variables so they can be called from within C.

                                                        +

                                                        Local copies of some Fortran variables are stored as allocatable objects, especially isc, link, jmpb, tag and typ. It's the application program's responsibility to call delete_table_data_f in order to properly delete these variables.

                                                        +
                                                        Author
                                                        Ronald Mclaren
                                                        +
                                                        Date
                                                        2020-07-29
                                                        +

                                                        Function/Subroutine Documentation

                                                        + +

                                                        ◆ bort_c()

                                                        + +
                                                        +
                                                        + + + + + + + + +
                                                        subroutine, public bufr_c2f_interface::bort_c (character(kind=c_char, len=1), dimension(*), intent(in) errstr)
                                                        +
                                                        + +

                                                        Log one error message and abort application program.

                                                        +

                                                        Wraps bort() subroutine.

                                                        +
                                                        Parameters
                                                        + + +
                                                        errstr- Error message.
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2023-04-07
                                                        + +

                                                        Definition at line 1039 of file bufr_c2f_interface.F90.

                                                        + +

                                                        References bort().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ bvers_c()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        subroutine, public bufr_c2f_interface::bvers_c (character(kind=c_char, len=1), dimension(*), intent(out) cverstr,
                                                        integer(c_int), intent(in), value cverstr_len 
                                                        )
                                                        +
                                                        + +

                                                        Get the version number of the NCEPLIBS-bufr software.

                                                        +

                                                        Wraps bvers() subroutine.

                                                        +
                                                        Parameters
                                                        + + + +
                                                        cverstr- Version string.
                                                        cverstr_len- Length of the version string.
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2023-04-07
                                                        + +

                                                        Definition at line 1070 of file bufr_c2f_interface.F90.

                                                        + +

                                                        References bvers(), and cmpmsg().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ cadn30_c()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        subroutine, public bufr_c2f_interface::cadn30_c (integer(c_int), intent(in), value idn,
                                                        character(kind=c_char, len=1), dimension(*), intent(out) adn,
                                                        integer(c_int), intent(in), value adn_str_len 
                                                        )
                                                        +
                                                        + +

                                                        Convert an FXY value from its WMO bit-wise representation to its six-character representation.

                                                        +

                                                        Wraps cadn30() function.

                                                        +
                                                        Parameters
                                                        + + + + +
                                                        idn- WMO bit-wise representation of FXY value.
                                                        adn- FXY value.
                                                        adn_str_len- Length of adn string.
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2023-04-07
                                                        + +

                                                        Definition at line 725 of file bufr_c2f_interface.F90.

                                                        + +

                                                        References cadn30().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ closbf_c()

                                                        + +
                                                        +
                                                        + + + + + + + + +
                                                        subroutine, public bufr_c2f_interface::closbf_c (integer(c_int), intent(in), value bufr_unit)
                                                        +
                                                        + +

                                                        Close a previously opened file and disconnect it from the library.

                                                        +

                                                        Wraps closbf() subroutine.

                                                        +
                                                        Parameters
                                                        + + +
                                                        bufr_unit- Fortran logical unit number to close
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        Ronald McLaren
                                                        +
                                                        Date
                                                        2020-07-29
                                                        + +

                                                        Definition at line 137 of file bufr_c2f_interface.F90.

                                                        + +

                                                        References closbf().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ close_c()

                                                        + +
                                                        +
                                                        + + + + + + + + +
                                                        subroutine, public bufr_c2f_interface::close_c (integer(c_int), intent(in), value lunit)
                                                        +
                                                        + +

                                                        Close a Fortran file from a C program.

                                                        +
                                                        Parameters
                                                        + + +
                                                        lunit- Fortran logical unit
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        Ronald McLaren
                                                        +
                                                        Date
                                                        2020-07-29
                                                        + +

                                                        Definition at line 106 of file bufr_c2f_interface.F90.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ delete_table_data_c()

                                                        + +
                                                        +
                                                        + + + + +
                                                        subroutine, public bufr_c2f_interface::delete_table_data_c
                                                        +
                                                        + +

                                                        Deletes the copies of the moda_tables arrays.

                                                        +
                                                        Author
                                                        Ronald McLaren
                                                        +
                                                        Date
                                                        2022-03-23
                                                        + +

                                                        Definition at line 617 of file bufr_c2f_interface.F90.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ elemdx_c()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        subroutine, public bufr_c2f_interface::elemdx_c (character(kind=c_char, len=1), dimension(*), intent(in) card,
                                                        integer(c_int), intent(in), value lun 
                                                        )
                                                        +
                                                        + +

                                                        Decode the scale factor, reference value, bit width, and units from a Table B mnemonic definition.

                                                        +

                                                        Wraps elemdx() subroutine.

                                                        +
                                                        Parameters
                                                        + + + +
                                                        card- Mnemonic definition card.
                                                        lun- File ID.
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2003-11-04
                                                        + +

                                                        Definition at line 765 of file bufr_c2f_interface.F90.

                                                        + +

                                                        References elemdx().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ exitbufr_c()

                                                        + +
                                                        +
                                                        + + + + +
                                                        subroutine, public bufr_c2f_interface::exitbufr_c
                                                        +
                                                        + +

                                                        Reset the library.

                                                        +

                                                        Wraps exitbufr() subroutine.

                                                        +
                                                        Author
                                                        Ronald McLaren
                                                        +
                                                        Date
                                                        2020-07-29
                                                        + +

                                                        Definition at line 148 of file bufr_c2f_interface.F90.

                                                        + +

                                                        References exitbufr().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ get_inode_c()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        subroutine, public bufr_c2f_interface::get_inode_c (integer(c_int), intent(in), value lun,
                                                        integer(c_int), intent(out) start_node 
                                                        )
                                                        +
                                                        + +

                                                        Get the bufr node idx for the start node of the subset.

                                                        +
                                                        Parameters
                                                        + + + +
                                                        lun- File ID.
                                                        start_node- The start node of the subset
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        Ronald McLaren
                                                        +
                                                        Date
                                                        2022-03-23
                                                        + +

                                                        Definition at line 534 of file bufr_c2f_interface.F90.

                                                        + +

                                                        References moda_msgcwd::inode.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ get_inv_c()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        subroutine, public bufr_c2f_interface::get_inv_c (integer(c_int), intent(in), value lun,
                                                        type(c_ptr), intent(inout) inv_ptr,
                                                        integer(c_int), intent(out) inv_size 
                                                        )
                                                        +
                                                        + +

                                                        Get pointer to the moda_usrint INV array.

                                                        +
                                                        Parameters
                                                        + + + + +
                                                        lun- File ID.
                                                        inv_ptr- C-style pointer to the INV array
                                                        inv_size- Length of the array
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        Ronald McLaren
                                                        +
                                                        Date
                                                        2022-03-23
                                                        + +

                                                        Definition at line 580 of file bufr_c2f_interface.F90.

                                                        + +

                                                        References moda_usrint::inv.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ get_irf_c()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        subroutine, public bufr_c2f_interface::get_irf_c (type(c_ptr), intent(inout) irf_ptr,
                                                        integer(c_int), intent(out) irf_size 
                                                        )
                                                        +
                                                        + +

                                                        Get copy of the moda_tables IRF array.

                                                        +
                                                        Parameters
                                                        + + + +
                                                        irf_ptr- C-style pointer to the IRF array
                                                        irf_size- Length of the array
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        Ronald McLaren
                                                        +
                                                        Date
                                                        2023-04-05
                                                        + +

                                                        Definition at line 517 of file bufr_c2f_interface.F90.

                                                        + +

                                                        References moda_tables::irf, and moda_tables::ntab.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ get_isc_c()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        subroutine, public bufr_c2f_interface::get_isc_c (type(c_ptr), intent(inout) isc_ptr,
                                                        integer(c_int), intent(out) isc_size 
                                                        )
                                                        +
                                                        + +

                                                        Get copy of the moda_tables ISC array.

                                                        +
                                                        Parameters
                                                        + + + +
                                                        isc_ptr- C-style pointer to the ISC array
                                                        isc_size- Size of the ISC array
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        Ronald McLaren
                                                        +
                                                        Date
                                                        2022-03-23
                                                        + +

                                                        Definition at line 409 of file bufr_c2f_interface.F90.

                                                        + +

                                                        References moda_tables::isc, and moda_tables::ntab.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ get_itp_c()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        subroutine, public bufr_c2f_interface::get_itp_c (type(c_ptr), intent(inout) itp_ptr,
                                                        integer(c_int), intent(out) itp_size 
                                                        )
                                                        +
                                                        + +

                                                        Get copy of the moda_tables ITP array.

                                                        +
                                                        Parameters
                                                        + + + +
                                                        itp_ptr- C-style pointer to the ITP array
                                                        itp_size- Size of the ITP array
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        Ronald McLaren
                                                        +
                                                        Date
                                                        2022-03-23
                                                        + +

                                                        Definition at line 443 of file bufr_c2f_interface.F90.

                                                        + +

                                                        References moda_tables::itp, and moda_tables::ntab.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ get_jmpb_c()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        subroutine, public bufr_c2f_interface::get_jmpb_c (type(c_ptr), intent(inout) jmpb_ptr,
                                                        integer(c_int), intent(out) jmpb_size 
                                                        )
                                                        +
                                                        + +

                                                        Get copy of the moda_tables JMPB array.

                                                        +
                                                        Parameters
                                                        + + + +
                                                        jmpb_ptr- C-style pointer to the JMPB array
                                                        jmpb_size- Length of the array
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        Ronald McLaren
                                                        +
                                                        Date
                                                        2022-03-23
                                                        + +

                                                        Definition at line 500 of file bufr_c2f_interface.F90.

                                                        + +

                                                        References moda_tables::jmpb, and moda_tables::ntab.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ get_link_c()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        subroutine, public bufr_c2f_interface::get_link_c (type(c_ptr), intent(inout) link_ptr,
                                                        integer(c_int), intent(out) link_size 
                                                        )
                                                        +
                                                        + +

                                                        Get copy of the moda_tables LINK array.

                                                        +
                                                        Parameters
                                                        + + + +
                                                        link_ptr- C-style pointer to the LINK array
                                                        link_size- Size of the LINK array
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        Ronald McLaren
                                                        +
                                                        Date
                                                        2022-03-23
                                                        + +

                                                        Definition at line 426 of file bufr_c2f_interface.F90.

                                                        + +

                                                        References moda_tables::link, and moda_tables::ntab.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ get_nval_c()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        subroutine, public bufr_c2f_interface::get_nval_c (integer(c_int), intent(in), value lun,
                                                        integer(c_int), intent(out) num_nodes 
                                                        )
                                                        +
                                                        + +

                                                        Get the number of values in the current subset.

                                                        +
                                                        Parameters
                                                        + + + +
                                                        lun- File ID.
                                                        num_nodes- number of values in the subset
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        Ronald McLaren
                                                        +
                                                        Date
                                                        2022-03-23
                                                        + +

                                                        Definition at line 548 of file bufr_c2f_interface.F90.

                                                        + +

                                                        References moda_usrint::nval.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ get_tag_c()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        subroutine, public bufr_c2f_interface::get_tag_c (type(c_ptr), intent(inout) tag_ptr,
                                                        integer(c_int), intent(out) tag_len,
                                                        integer(c_int), intent(out) mem_size 
                                                        )
                                                        +
                                                        + +

                                                        Get copy of the moda_tables TAG array.

                                                        +
                                                        Parameters
                                                        + + + + +
                                                        tag_ptr- C-style pointer to the TAG array
                                                        tag_len- Length of the tag string
                                                        mem_size- Size of TAG array
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        Ronald McLaren
                                                        +
                                                        Date
                                                        2022-03-23
                                                        + +

                                                        Definition at line 481 of file bufr_c2f_interface.F90.

                                                        + +

                                                        References moda_tables::ntab, and moda_tables::tag.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ get_typ_c()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        subroutine, public bufr_c2f_interface::get_typ_c (type(c_ptr), intent(inout) typ_ptr,
                                                        integer(c_int), intent(out) typ_len,
                                                        integer(c_int), intent(out) mem_size 
                                                        )
                                                        +
                                                        + +

                                                        Get copy of the moda_tables TYP array.

                                                        +
                                                        Parameters
                                                        + + + + +
                                                        typ_ptr- C-style pointer to the TYP array
                                                        typ_len- Size of each string within the TYP array
                                                        mem_size- Size of the TYP array
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        Ronald McLaren
                                                        +
                                                        Date
                                                        2022-03-23
                                                        + +

                                                        Definition at line 461 of file bufr_c2f_interface.F90.

                                                        + +

                                                        References moda_tables::ntab, and moda_tables::typ.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ get_val_c()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        subroutine, public bufr_c2f_interface::get_val_c (integer(c_int), intent(in), value lun,
                                                        type(c_ptr), intent(inout) val_ptr,
                                                        integer(c_int), intent(out) val_size 
                                                        )
                                                        +
                                                        + +

                                                        Get pointer to the moda_usrint VAL array.

                                                        +
                                                        Parameters
                                                        + + + + +
                                                        lun- File ID.
                                                        val_ptr- C-style pointer to the VAL array
                                                        val_size- Length of the array
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        Ronald McLaren
                                                        +
                                                        Date
                                                        2022-03-23
                                                        + +

                                                        Definition at line 563 of file bufr_c2f_interface.F90.

                                                        + +

                                                        References moda_usrint::val.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ ibfms_c()

                                                        + +
                                                        +
                                                        + + + + + + + + +
                                                        integer(c_int) function, public bufr_c2f_interface::ibfms_c (real(c_double), intent(in), value r8val)
                                                        +
                                                        + +

                                                        Test whether a data value is "missing".

                                                        +

                                                        Wraps ibfms() function.

                                                        +
                                                        Parameters
                                                        + + +
                                                        r8val- Data value.
                                                        +
                                                        +
                                                        +
                                                        Returns
                                                        ibfms_c - 1 if r8val is "missing", or 0 otherwise.
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2023-04-07
                                                        + +

                                                        Definition at line 940 of file bufr_c2f_interface.F90.

                                                        + +

                                                        References ibfms().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ ifxy_c()

                                                        + +
                                                        +
                                                        + + + + + + + + +
                                                        integer(c_int) function, public bufr_c2f_interface::ifxy_c (character(kind=c_char, len=1), dimension(*), intent(in) cfxy)
                                                        +
                                                        + +

                                                        Convert an FXY value from its 6 character representation to its WMO bit-wise representation.

                                                        +

                                                        Wraps ifxy() function.

                                                        +
                                                        Parameters
                                                        + + +
                                                        cfxy- FXY value.
                                                        +
                                                        +
                                                        +
                                                        Returns
                                                        ifxy_c - WMO bit-wise representation of FXY value.
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2023-04-07
                                                        + +

                                                        Definition at line 813 of file bufr_c2f_interface.F90.

                                                        + +

                                                        References ifxy().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ igetmxby_c()

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer(c_int) function, public bufr_c2f_interface::igetmxby_c
                                                        +
                                                        + +

                                                        Get the maximum length of a BUFR message that can be written to an output file.

                                                        +

                                                        Wraps igetmxby() function.

                                                        +
                                                        Returns
                                                        igetmxby_c - Maximum length of a BUFR message that can be written to an output file.
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2023-04-07
                                                        + +

                                                        Definition at line 708 of file bufr_c2f_interface.F90.

                                                        + +

                                                        References igetmxby().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ igetntbi_c()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        integer(c_int) function, public bufr_c2f_interface::igetntbi_c (integer(c_int), intent(in), value lun,
                                                        character(kind=c_char,len=1), dimension(*), intent(in) table_type 
                                                        )
                                                        +
                                                        + +

                                                        Get the next index for storing an entry within an internal DX BUFR table.

                                                        +

                                                        Wraps igetntbi() subroutine.

                                                        +
                                                        Parameters
                                                        + + + +
                                                        lun- File ID.
                                                        table_type- Type of internal DX BUFR table ('A', 'B', or 'D')
                                                        +
                                                        +
                                                        +
                                                        Returns
                                                        igetntbi_c - Next available index within table_type.
                                                        +
                                                        Author
                                                        Ronald McLaren
                                                        +
                                                        Date
                                                        2022-08-16
                                                        + +

                                                        Definition at line 744 of file bufr_c2f_interface.F90.

                                                        + +

                                                        References igetntbi().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ igetprm_c()

                                                        + +
                                                        +
                                                        + + + + + + + + +
                                                        integer(c_int) function, public bufr_c2f_interface::igetprm_c (character(kind=c_char, len=1), dimension(*), intent(in) cprmnm)
                                                        +
                                                        + +

                                                        Get the current value of a parameter.

                                                        +

                                                        Wraps igetprm() function.

                                                        +
                                                        Parameters
                                                        + + +
                                                        cprmnm- Parameter.
                                                        +
                                                        +
                                                        +
                                                        Returns
                                                        igetprm_c - Value corresponding to cprmnm, or -1 if not found or other error occurred.
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2023-04-07
                                                        + +

                                                        Definition at line 658 of file bufr_c2f_interface.F90.

                                                        + +

                                                        References igetprm().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ igettdi_c()

                                                        + +
                                                        +
                                                        + + + + + + + + +
                                                        integer(c_int) function, public bufr_c2f_interface::igettdi_c (integer(c_int), intent(in), value iflag)
                                                        +
                                                        + +

                                                        Get the next usable Table D index for the current master table, or reset the index.

                                                        +

                                                        Wraps igettdi() function.

                                                        +
                                                        Parameters
                                                        + + +
                                                        iflag- if 0, will reset the index.
                                                        +
                                                        +
                                                        +
                                                        Returns
                                                        igettdi_c - -1 if iflag=0, otherwise the next usable index.
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2023-04-07
                                                        + +

                                                        Definition at line 1005 of file bufr_c2f_interface.F90.

                                                        + +

                                                        References igettdi().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ imrkopr_c()

                                                        + +
                                                        +
                                                        + + + + + + + + +
                                                        integer(c_int) function, public bufr_c2f_interface::imrkopr_c (character(kind=c_char, len=1), dimension(*), intent(in) nemo)
                                                        +
                                                        + +

                                                        Check whether a specified mnemonic is a Table C marker operator.

                                                        +

                                                        Wraps imrkopr() function.

                                                        +
                                                        Parameters
                                                        + + +
                                                        nemo- Mnemonic.
                                                        +
                                                        +
                                                        +
                                                        Returns
                                                        imrkopr_c - 1 if nemo is a Table C marker operator, else 0.
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2023-04-07
                                                        + +

                                                        Definition at line 853 of file bufr_c2f_interface.F90.

                                                        + +

                                                        References imrkopr().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ ireadmg_c()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        integer(c_int) function, public bufr_c2f_interface::ireadmg_c (integer(c_int), intent(in), value bufr_unit,
                                                        character(kind=c_char, len=1), dimension(*), intent(out) c_subset,
                                                        integer(c_int), intent(out) iddate,
                                                        integer(c_int), intent(in), value subset_str_len 
                                                        )
                                                        +
                                                        + +

                                                        Read the next message from a BUFR file.

                                                        +

                                                        Wraps ireadmg() function.

                                                        +
                                                        Parameters
                                                        + + + + + +
                                                        bufr_unit- Fortran logical unit number to read from
                                                        c_subset- Subset string
                                                        iddate- Datetime of message
                                                        subset_str_len- Length of the subset string
                                                        +
                                                        +
                                                        +
                                                        Returns
                                                        ireadmg_c - Return code:
                                                          +
                                                        • 0 new BUFR message was successfully read into internal arrays.
                                                        • +
                                                        • -1 there are no more BUFR messages in bufr_unit.
                                                        • +
                                                        +
                                                        +
                                                        Author
                                                        Ronald McLaren
                                                        +
                                                        Date
                                                        2020-07-29
                                                        + +

                                                        Definition at line 166 of file bufr_c2f_interface.F90.

                                                        + +

                                                        References ireadmg().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ ireadns_c()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        integer(c_int) function, public bufr_c2f_interface::ireadns_c (integer(c_int), intent(in), value bufr_unit,
                                                        character(kind=c_char, len=1), dimension(*), intent(out) c_subset,
                                                        integer(c_int), intent(out) iddate,
                                                        integer(c_int), intent(in), value subset_str_len 
                                                        )
                                                        +
                                                        + +

                                                        Read the next data subset from a BUFR file.

                                                        +

                                                        Wraps ireadns() function.

                                                        +
                                                        Parameters
                                                        + + + + + +
                                                        bufr_unit- Fortran logical unit number to read from.
                                                        c_subset- Subset string.
                                                        iddate- Datetime of message.
                                                        subset_str_len- Length of the subset string.
                                                        +
                                                        +
                                                        +
                                                        Returns
                                                        ireadns_c - Return code:
                                                          +
                                                        • 0 new BUFR data subset was successfully read into internal arrays.
                                                        • +
                                                        • -1 there are no more BUFR data subsets in bufr_unit.
                                                        • +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2023-04-07
                                                        + +

                                                        Definition at line 915 of file bufr_c2f_interface.F90.

                                                        + +

                                                        References ireadns().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ ireadsb_c()

                                                        + +
                                                        +
                                                        + + + + + + + + +
                                                        integer(c_int) function, public bufr_c2f_interface::ireadsb_c (integer(c_int), intent(in), value bufr_unit)
                                                        +
                                                        + +

                                                        Read the next data subset from a BUFR message.

                                                        +

                                                        Wraps ireadsb() function.

                                                        +
                                                        Parameters
                                                        + + +
                                                        bufr_unit- Fortran logical unit number to read from
                                                        +
                                                        +
                                                        +
                                                        Returns
                                                        ireadsb_c - Return code:
                                                          +
                                                        • 0 new BUFR data subset was successfully read into internal arrays.
                                                        • +
                                                        • -1 there are no more BUFR data subsets in the BUFR message associated with bufr_unit
                                                        • +
                                                        +
                                                        +
                                                        Author
                                                        Ronald McLaren
                                                        +
                                                        Date
                                                        2020-07-29
                                                        + +

                                                        Definition at line 192 of file bufr_c2f_interface.F90.

                                                        + +

                                                        References ireadsb().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ isetprm_c()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        integer(c_int) function, public bufr_c2f_interface::isetprm_c (character(kind=c_char, len=1), dimension(*), intent(in) cprmnm,
                                                        integer(c_int), intent(in), value ipval 
                                                        )
                                                        +
                                                        + +

                                                        Define a customized parameter value for dynamic allocation.

                                                        +

                                                        Wraps isetprm() function.

                                                        +
                                                        Parameters
                                                        + + + +
                                                        cprmnm- Parameter.
                                                        ipval- Value to be set for cprmnm.
                                                        +
                                                        +
                                                        +
                                                        Returns
                                                        isetprm_c - 0 if successful, or -1 if cprmnm unknown.
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2023-04-07
                                                        + +

                                                        Definition at line 676 of file bufr_c2f_interface.F90.

                                                        + +

                                                        References isetprm().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ istdesc_c()

                                                        + +
                                                        +
                                                        + + + + + + + + +
                                                        integer(c_int) function, public bufr_c2f_interface::istdesc_c (integer(c_int), intent(in), value idn)
                                                        +
                                                        + +

                                                        Check whether a descriptor is WMO-standard.

                                                        +

                                                        Wraps istdesc() function.

                                                        +
                                                        Parameters
                                                        + + +
                                                        idn- WMO bit-wise representation of FXY value for descriptor.
                                                        +
                                                        +
                                                        +
                                                        Returns
                                                        istdesc_c - 1 if idn is WMO-standard, else 0.
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2023-04-07
                                                        + +

                                                        Definition at line 870 of file bufr_c2f_interface.F90.

                                                        + +

                                                        References istdesc().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ iupbs01_c()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        integer(c_int) function, public bufr_c2f_interface::iupbs01_c (integer(c_int), dimension(*), intent(in) bufr,
                                                        character(kind=c_char, len=1), dimension(*), intent(in) mnemonic 
                                                        )
                                                        +
                                                        + +

                                                        Read a data value from Section 0 or Section 1 of a BUFR message.

                                                        +

                                                        Wraps iupbs01() function.

                                                        +
                                                        Parameters
                                                        + + + +
                                                        bufr- BUFR message.
                                                        mnemonic- Value to be read from Section 0 or Section 1 of BUFR message.
                                                        +
                                                        +
                                                        +
                                                        Returns
                                                        iupbs01_c - Value corresponding to mnemonic, or -1 if not found or other error occurred.
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2023-04-07
                                                        + +

                                                        Definition at line 639 of file bufr_c2f_interface.F90.

                                                        + +

                                                        References iupbs01().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ maxout_c()

                                                        + +
                                                        +
                                                        + + + + + + + + +
                                                        subroutine, public bufr_c2f_interface::maxout_c (integer(c_int), intent(in), value max0)
                                                        +
                                                        + +

                                                        Define a customized maximum length for output BUFR messages.

                                                        +

                                                        Wraps maxout() subroutine.

                                                        +
                                                        Parameters
                                                        + + +
                                                        max0- New maximum length (in bytes) for all BUFR messages written to all output files.
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2023-04-07
                                                        + +

                                                        Definition at line 693 of file bufr_c2f_interface.F90.

                                                        + +

                                                        References maxout().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ mtinfo_c()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        subroutine, public bufr_c2f_interface::mtinfo_c (character(kind=c_char, len=1), dimension(*), intent(in) path,
                                                        integer(c_int), intent(in), value file_unit_1,
                                                        integer(c_int), intent(in), value file_unit_2 
                                                        )
                                                        +
                                                        + +

                                                        Specify location of master BUFR tables on local file system.

                                                        +

                                                        Wraps mtinfo() subroutine.

                                                        +
                                                        Parameters
                                                        + + + + +
                                                        path- Path where the WMO tables are stored
                                                        file_unit_1- Number to use for first logical unit
                                                        file_unit_2- Number to use for second logical unit
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        Ronald McLaren
                                                        +
                                                        Date
                                                        2020-07-29
                                                        + +

                                                        Definition at line 255 of file bufr_c2f_interface.F90.

                                                        + +

                                                        References mtinfo().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ nemdefs_c()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        subroutine, public bufr_c2f_interface::nemdefs_c (integer(c_int), intent(in), value file_unit,
                                                        character(kind=c_char,len=1), dimension(*), intent(in) mnemonic,
                                                        character(kind=c_char, len=1), dimension(*), intent(out) unit_c,
                                                        integer(c_int), intent(in), value unit_str_len,
                                                        character(kind=c_char, len=1), dimension(*), intent(out) desc_c,
                                                        integer(c_int), intent(in), value desc_str_len,
                                                        integer(c_int), intent(out) iret 
                                                        )
                                                        +
                                                        + +

                                                        Get the element name and units associated with a Table B mnemonic.

                                                        +

                                                        Wraps nemdefs() subroutine.

                                                        +
                                                        Parameters
                                                        + + + + + + + + +
                                                        file_unit- Fortran logical unit for the open file.
                                                        mnemonic- Mnemonic.
                                                        unit_c- Unit string.
                                                        unit_str_len- Unit string length.
                                                        desc_c- Description string.
                                                        desc_str_len- Description string length.
                                                        iret- Return value. 0 indicates success -1 indicates failure.
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        Ronald McLaren
                                                        +
                                                        Date
                                                        2022-08-08
                                                        + +

                                                        Definition at line 295 of file bufr_c2f_interface.F90.

                                                        + +

                                                        References nemdefs().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ nemspecs_c()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        subroutine, public bufr_c2f_interface::nemspecs_c (integer(c_int), intent(in), value file_unit,
                                                        character(kind=c_char,len=1), dimension(*), intent(in) mnemonic,
                                                        integer(c_int), intent(in), value mnemonic_idx,
                                                        integer(c_int), intent(out) scale,
                                                        integer(c_int), intent(out) reference,
                                                        integer(c_int), intent(out) bits,
                                                        integer(c_int), intent(out) iret 
                                                        )
                                                        +
                                                        + +

                                                        Get the scale factor, reference value and bit width associated with a specified occurrence of a Table B mnemonic.

                                                        +

                                                        Wraps nemspecs() subroutine.

                                                        +
                                                        Parameters
                                                        + + + + + + + + +
                                                        file_unit- Fortran logical unit for the open file.
                                                        mnemonic- Mnemonic.
                                                        mnemonic_idx- Ordinal indicator of specific mnemonic element (if repeated).
                                                        scale- Scale of element.
                                                        reference- Reference value of element.
                                                        bits- Number of bits representing the element.
                                                        iret- Return value. 0 indicates success -1 indicates failure.
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        Ronald McLaren
                                                        +
                                                        Date
                                                        2022-08-08
                                                        + +

                                                        Definition at line 333 of file bufr_c2f_interface.F90.

                                                        + +

                                                        References nemspecs().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ nemtab_c()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        subroutine, public bufr_c2f_interface::nemtab_c (integer(c_int), intent(in), value lun,
                                                        character(kind=c_char,len=1), dimension(*), intent(in) mnemonic,
                                                        integer(c_int), intent(out) descriptor,
                                                        character(kind=c_char,len=1), dimension(*), intent(out) table_type,
                                                        integer(c_int), intent(out) table_idx 
                                                        )
                                                        +
                                                        + +

                                                        Get information about a descriptor.

                                                        +

                                                        Wraps nemtab() subroutine.

                                                        +
                                                        Parameters
                                                        + + + + + + +
                                                        lun- File ID.
                                                        mnemonic- Mnemonic
                                                        descriptor- The binary descriptor for the mnemonic
                                                        table_type- Type of internal DX BUFR table ('B', 'C', or 'D').
                                                        table_idx- The table index, or 0 if not found
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        Ronald McLaren
                                                        +
                                                        Date
                                                        2022-08-16
                                                        + +

                                                        Definition at line 358 of file bufr_c2f_interface.F90.

                                                        + +

                                                        References nemtab().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ nemtbb_c()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        subroutine, public bufr_c2f_interface::nemtbb_c (integer(c_int), intent(in), value lun,
                                                        integer(c_int), intent(in), value table_idx,
                                                        character(kind=c_char,len=1), dimension(*), intent(out) unit_str,
                                                        integer(c_int), intent(in), value unit_str_len,
                                                        integer(c_int), intent(out) scale,
                                                        integer(c_int), intent(out) reference,
                                                        integer(c_int), intent(out) bits 
                                                        )
                                                        +
                                                        + +

                                                        Get information about a Table B descriptor.

                                                        +

                                                        Wraps nemtbb() subroutine.

                                                        +
                                                        Parameters
                                                        + + + + + + + + +
                                                        lun- File ID.
                                                        table_idx- Table B index.
                                                        unit_str- Unit string.
                                                        unit_str_len- Unit string length.
                                                        scale- Scale of element.
                                                        reference- Reference value of element.
                                                        bits- Number of bits representing the element.
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        Ronald McLaren
                                                        +
                                                        Date
                                                        2022-08-16
                                                        + +

                                                        Definition at line 386 of file bufr_c2f_interface.F90.

                                                        + +

                                                        References nemtbb().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ numtbd_c()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        subroutine, public bufr_c2f_interface::numtbd_c (integer(c_int), intent(in), value lun,
                                                        integer(c_int), intent(in), value idn,
                                                        character(kind=c_char,len=1), dimension(*), intent(out) nemo,
                                                        integer(c_int), intent(in), value nemo_str_len,
                                                        character(kind=c_char,len=1), dimension(*), intent(out) tab,
                                                        integer(c_int), intent(out) iret 
                                                        )
                                                        +
                                                        + +

                                                        Search for a Table B or Table D descriptor within the internal DX BUFR tables.

                                                        +

                                                        Wraps numtbd() subroutine.

                                                        +
                                                        Parameters
                                                        + + + + + + + +
                                                        lun- File ID.
                                                        idn- WMO bit-wise representation of FXY value.
                                                        nemo- Mnemonic.
                                                        nemo_str_len- Length of nemo string.
                                                        tab- Type of internal DX BUFR table ('B', or 'D').
                                                        iret- Positional index of idn within Table B or D, or 0 if not found.
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2003-11-04
                                                        + +

                                                        Definition at line 789 of file bufr_c2f_interface.F90.

                                                        + +

                                                        References numtbd().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ open_c()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        subroutine, public bufr_c2f_interface::open_c (integer(c_int), intent(in), value lunit,
                                                        character(kind=c_char, len=1) filepath 
                                                        )
                                                        +
                                                        + +

                                                        Open a Fortran file from a C program.

                                                        +
                                                        Parameters
                                                        + + + +
                                                        lunit- Fortran logical unit
                                                        filepath- Path to the file we want to open.
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        Ronald McLaren
                                                        +
                                                        Date
                                                        2020-07-29
                                                        + +

                                                        Definition at line 94 of file bufr_c2f_interface.F90.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ openbf_c()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        subroutine, public bufr_c2f_interface::openbf_c (integer(c_int), intent(in), value bufr_unit,
                                                        character(kind=c_char, len=1), dimension(*), intent(in) cio,
                                                        integer(c_int), intent(in), value table_file_id 
                                                        )
                                                        +
                                                        + +

                                                        Connect a new file to the library, or initialize the library, or change verbosity associated with already-connected file.

                                                        +

                                                        Wraps openbf() subroutine.

                                                        +
                                                        Parameters
                                                        + + + + +
                                                        bufr_unit- Fortran logical unit number
                                                        cio- cio string
                                                        table_file_id- table_file unit number
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        Ronald McLaren
                                                        +
                                                        Date
                                                        2020-07-29
                                                        + +

                                                        Definition at line 122 of file bufr_c2f_interface.F90.

                                                        + +

                                                        References openbf().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ openmb_c()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        subroutine, public bufr_c2f_interface::openmb_c (integer(c_int), intent(in), value bufr_unit,
                                                        character(kind=c_char, len=1), dimension(*), intent(in) c_subset,
                                                        integer(c_int), intent(in), value iddate 
                                                        )
                                                        +
                                                        + +

                                                        Open a new message for output in a BUFR file that was previously opened for writing.

                                                        +

                                                        Wraps openmb() subroutine.

                                                        +
                                                        Parameters
                                                        + + + + +
                                                        bufr_unit- Fortran logical unit number to write to.
                                                        c_subset- Table A mnemonic of message.
                                                        iddate- Date-time to be stored within Section 1 of message.
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2023-04-07
                                                        + +

                                                        Definition at line 1055 of file bufr_c2f_interface.F90.

                                                        + +

                                                        References openmb().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ pktdd_c()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        subroutine, public bufr_c2f_interface::pktdd_c (integer(c_int), intent(in), value id,
                                                        integer(c_int), intent(in), value lun,
                                                        integer(c_int), intent(in), value idn,
                                                        integer(c_int), intent(out) iret 
                                                        )
                                                        +
                                                        + +

                                                        Store information about a child mnemonic within the internal arrays.

                                                        +

                                                        Wraps pktdd() subroutine.

                                                        +
                                                        Parameters
                                                        + + + + + +
                                                        id- Index of parent mnemonic within internal BUFR Table D array.
                                                        lun- File ID.
                                                        idn- WMO bit-wise representation of FXY value corresponding to child mnemonic; set to 0 to delete all child mnemonic information.
                                                        iret- 0 if idn=0; -1 if error occurred; otherwise, the total number of child mnemonics stored so far for parent mnemonic id.
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2023-04-07
                                                        + +

                                                        Definition at line 1025 of file bufr_c2f_interface.F90.

                                                        + +

                                                        References pktdd().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ readlc_c()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        subroutine, public bufr_c2f_interface::readlc_c (integer(c_int), intent(in), value lunit,
                                                        character(kind=c_char, len=1), dimension(*), intent(in) str_id,
                                                        character(kind=c_char, len=1), dimension(*), intent(out) output_str,
                                                        integer(c_int), intent(in), value output_str_len 
                                                        )
                                                        +
                                                        + +

                                                        Function used to get long strings from the BUFR file.

                                                        +
                                                        Parameters
                                                        + + + + + +
                                                        lunit- Fortran logical unit.
                                                        str_id- Mnemonic for the string for the source field plus the index number (ex: 'IDMN#2')
                                                        output_str- The pre-allocated result string
                                                        output_str_len- Size of the result string buffer
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        Ronald McLaren
                                                        +
                                                        Date
                                                        2023-07-03
                                                        + +

                                                        Definition at line 599 of file bufr_c2f_interface.F90.

                                                        + +

                                                        References readlc().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ status_c()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        subroutine, public bufr_c2f_interface::status_c (integer(c_int), intent(in), value file_unit,
                                                        integer(c_int), intent(out) lun,
                                                        integer(c_int), intent(out) il,
                                                        integer(c_int), intent(out) im 
                                                        )
                                                        +
                                                        + +

                                                        Check whether a file is connected to the library.

                                                        +

                                                        Wraps status() subroutine.

                                                        +
                                                        Parameters
                                                        + + + + + +
                                                        file_unit- Fortran logical unit number of file.
                                                        lun- File ID.
                                                        il- File status.
                                                        im- Message status.
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        Ronald McLaren
                                                        +
                                                        Date
                                                        2022-03-23
                                                        + +

                                                        Definition at line 273 of file bufr_c2f_interface.F90.

                                                        + +

                                                        References status().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ stntbi_c()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        subroutine, public bufr_c2f_interface::stntbi_c (integer(c_int), intent(in), value n,
                                                        integer(c_int), intent(in), value lun,
                                                        character(kind=c_char, len=1), dimension(*), intent(in) numb,
                                                        character(kind=c_char, len=1), dimension(*), intent(in) nemo,
                                                        character(kind=c_char, len=1), dimension(*), intent(in) celsq 
                                                        )
                                                        +
                                                        + +

                                                        Store a new entry within the internal BUFR Table B or D.

                                                        +

                                                        Wraps stntbi() subroutine.

                                                        +
                                                        Parameters
                                                        + + + + + + +
                                                        n- Storage index into internal Table B or D.
                                                        lun- File ID.
                                                        numb- FXY number for new entry.
                                                        nemo- Mnemonic corresponding to numb.
                                                        celsq- Element or sequence description corresponding to numb.
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2023-04-07
                                                        + +

                                                        Definition at line 975 of file bufr_c2f_interface.F90.

                                                        + +

                                                        References stntbi().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ strnum_c()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        subroutine, public bufr_c2f_interface::strnum_c (character(kind=c_char, len=1), dimension(*), intent(in) str,
                                                        integer(c_int), intent(out) num,
                                                        integer(c_int), intent(out) iret 
                                                        )
                                                        +
                                                        + +

                                                        Decode an integer from a character string.

                                                        +

                                                        Wraps strnum() subroutine.

                                                        +
                                                        Parameters
                                                        + + + + +
                                                        str- String.
                                                        num- Value decoded from str.
                                                        iret- 0 if successful, -1 otherwise.
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2003-11-04
                                                        + +

                                                        Definition at line 957 of file bufr_c2f_interface.F90.

                                                        + +

                                                        References strnum().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ ufbint_c()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        subroutine, public bufr_c2f_interface::ufbint_c (integer(c_int), intent(in), value bufr_unit,
                                                        type(c_ptr), intent(inout) c_data,
                                                        integer(c_int), intent(in), value dim_1,
                                                        integer(c_int), intent(in), value dim_2,
                                                        integer(c_int), intent(out) iret,
                                                        character(kind=c_char, len=1), dimension(*), intent(in) table_b_mnemonic 
                                                        )
                                                        +
                                                        + +

                                                        Read/write one or more data values from/to a data subset.

                                                        +

                                                        Wraps ufbint() subroutine.

                                                        +
                                                        Parameters
                                                        + + + + + + +
                                                        bufr_unit- Fortran logical unit number to read from
                                                        c_data- C-style pointer to a pre-allocated buffer
                                                        dim_1,dim_2- Dimensionality of data to read or write
                                                        iret- Return value, length of data read
                                                        table_b_mnemonic- String of mnemonics
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        Ronald McLaren
                                                        +
                                                        Date
                                                        2020-07-29
                                                        + +

                                                        Definition at line 211 of file bufr_c2f_interface.F90.

                                                        + +

                                                        References ufbint().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ ufbrep_c()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        subroutine, public bufr_c2f_interface::ufbrep_c (integer(c_int), intent(in), value bufr_unit,
                                                        type(c_ptr), intent(inout) c_data,
                                                        integer(c_int), intent(in), value dim_1,
                                                        integer(c_int), intent(in), value dim_2,
                                                        integer(c_int), intent(out) iret,
                                                        character(kind=c_char, len=1), dimension(*), intent(in) table_b_mnemonic 
                                                        )
                                                        +
                                                        + +

                                                        Read/write one or more data values from/to a data subset.

                                                        +

                                                        Wraps ufbrep() subroutine.

                                                        +
                                                        Parameters
                                                        + + + + + + +
                                                        bufr_unit- Fortran logical unit number to read from
                                                        c_data- C-style pointer to a pre-allocated buffer
                                                        dim_1,dim_2- Dimensionality of data to read or write
                                                        iret- Return value, length of data read
                                                        table_b_mnemonic- String of mnemonics
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        Ronald McLaren
                                                        +
                                                        Date
                                                        2020-07-29
                                                        + +

                                                        Definition at line 234 of file bufr_c2f_interface.F90.

                                                        + +

                                                        References ufbrep().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ ufbseq_c()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        subroutine, public bufr_c2f_interface::ufbseq_c (integer(c_int), intent(in), value bufr_unit,
                                                        type(c_ptr), intent(inout) c_data,
                                                        integer(c_int), intent(in), value dim_1,
                                                        integer(c_int), intent(in), value dim_2,
                                                        integer(c_int), intent(out) iret,
                                                        character(kind=c_char, len=1), dimension(*), intent(in) table_d_mnemonic 
                                                        )
                                                        +
                                                        + +

                                                        Read/write an entire sequence of data values from/to a data subset.

                                                        +

                                                        Wraps ufbseq() subroutine.

                                                        +
                                                        Parameters
                                                        + + + + + + +
                                                        bufr_unit- Fortran logical unit number to read from
                                                        c_data- C-style pointer to a pre-allocated buffer
                                                        dim_1,dim_2- Dimensionality of data to read or write
                                                        iret- Return value, length of data read
                                                        table_d_mnemonic- Table A or Table D mnemonic.
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2023-04-07
                                                        + +

                                                        Definition at line 889 of file bufr_c2f_interface.F90.

                                                        + +

                                                        References ufbseq().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ uptdd_c()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        subroutine, public bufr_c2f_interface::uptdd_c (integer(c_int), intent(in), value id,
                                                        integer(c_int), intent(in), value lun,
                                                        integer(c_int), intent(in), value ient,
                                                        integer(c_int), intent(out) iret 
                                                        )
                                                        +
                                                        + +

                                                        Get the WMO bit-wise representation of the FXY value corresponding to a child mnemonic of a Table D sequence.

                                                        +

                                                        Wraps uptdd() subroutine.

                                                        +
                                                        Parameters
                                                        + + + + + +
                                                        id- Positional index of parent mnemonic within internal BUFR Table D array.
                                                        lun- File ID.
                                                        ient- Ordinal indicator of child mnemonic to return from within parent sequence; set to 0 to request a count of the total number of child mnemonics.
                                                        iret- Total number of child mnemonics if ient = 0; otherwise the WMO bit-wise representation of the FXY value corresponding to the ient'th mnemonic.
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2023-04-07
                                                        + +

                                                        Definition at line 837 of file bufr_c2f_interface.F90.

                                                        + +

                                                        References uptdd().

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/namespacebufr__interface.html b/previous_versions/v12.1.0/namespacebufr__interface.html new file mode 100644 index 000000000..742bb9aeb --- /dev/null +++ b/previous_versions/v12.1.0/namespacebufr__interface.html @@ -0,0 +1,122 @@ + + + + + + + +NCEPLIBS-bufr: bufr_interface Module Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        bufr_interface Module Reference
                                                        +
                                                        +
                                                        + +

                                                        Wrap C NCEPLIBS-bufr functions so they can be called from within Fortran application programs. +More...

                                                        + + + + + + + + + + + + +

                                                        +Data Types

                                                        interface  ccbfl_c
                                                         
                                                        interface  cobfl_c
                                                         
                                                        interface  crbmg_c
                                                         
                                                        interface  cwbmg_c
                                                         
                                                        interface  dlloctbf_c
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Wrap C NCEPLIBS-bufr functions so they can be called from within Fortran application programs.

                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2023-03-22
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/namespacebufr__interface.js b/previous_versions/v12.1.0/namespacebufr__interface.js new file mode 100644 index 000000000..a614a1be7 --- /dev/null +++ b/previous_versions/v12.1.0/namespacebufr__interface.js @@ -0,0 +1,8 @@ +var namespacebufr__interface = +[ + [ "ccbfl_c", "interfacebufr__interface_1_1ccbfl__c.html", "interfacebufr__interface_1_1ccbfl__c" ], + [ "cobfl_c", "interfacebufr__interface_1_1cobfl__c.html", "interfacebufr__interface_1_1cobfl__c" ], + [ "crbmg_c", "interfacebufr__interface_1_1crbmg__c.html", "interfacebufr__interface_1_1crbmg__c" ], + [ "cwbmg_c", "interfacebufr__interface_1_1cwbmg__c.html", "interfacebufr__interface_1_1cwbmg__c" ], + [ "dlloctbf_c", "interfacebufr__interface_1_1dlloctbf__c.html", "interfacebufr__interface_1_1dlloctbf__c" ] +]; \ No newline at end of file diff --git a/previous_versions/v12.1.0/namespacebufrlib.html b/previous_versions/v12.1.0/namespacebufrlib.html new file mode 100644 index 000000000..15bb295bb --- /dev/null +++ b/previous_versions/v12.1.0/namespacebufrlib.html @@ -0,0 +1,148 @@ + + + + + + + +NCEPLIBS-bufr: bufrlib Module Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        bufrlib Module Reference
                                                        +
                                                        +
                                                        + +

                                                        Wrap C NCEPLIBS-bufr functions so they can be called from within the Fortran part of the library. +More...

                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                                                        +Data Types

                                                        interface  arallocc_c
                                                         
                                                        interface  ardllocc_c
                                                         
                                                        interface  backbufr_c
                                                         
                                                        interface  cewind_c
                                                         
                                                        interface  closfb_c
                                                         
                                                        interface  cpmstabs_c
                                                         
                                                        interface  crdbufr_c
                                                         
                                                        interface  cwrbufr_c
                                                         
                                                        interface  icvidx_c
                                                         
                                                        interface  inittbf_c
                                                         
                                                        interface  openab_c
                                                         
                                                        interface  openrb_c
                                                         
                                                        interface  openwb_c
                                                         
                                                        interface  restd_c
                                                         
                                                        interface  sorttbf_c
                                                         
                                                        interface  srchtbf_c
                                                         
                                                        interface  strtbfe_c
                                                         
                                                        interface  stseq_c
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Wrap C NCEPLIBS-bufr functions so they can be called from within the Fortran part of the library.

                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2023-03-22
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/namespacebufrlib.js b/previous_versions/v12.1.0/namespacebufrlib.js new file mode 100644 index 000000000..d90648a79 --- /dev/null +++ b/previous_versions/v12.1.0/namespacebufrlib.js @@ -0,0 +1,21 @@ +var namespacebufrlib = +[ + [ "arallocc_c", "interfacebufrlib_1_1arallocc__c.html", "interfacebufrlib_1_1arallocc__c" ], + [ "ardllocc_c", "interfacebufrlib_1_1ardllocc__c.html", "interfacebufrlib_1_1ardllocc__c" ], + [ "backbufr_c", "interfacebufrlib_1_1backbufr__c.html", "interfacebufrlib_1_1backbufr__c" ], + [ "cewind_c", "interfacebufrlib_1_1cewind__c.html", "interfacebufrlib_1_1cewind__c" ], + [ "closfb_c", "interfacebufrlib_1_1closfb__c.html", "interfacebufrlib_1_1closfb__c" ], + [ "cpmstabs_c", "interfacebufrlib_1_1cpmstabs__c.html", "interfacebufrlib_1_1cpmstabs__c" ], + [ "crdbufr_c", "interfacebufrlib_1_1crdbufr__c.html", "interfacebufrlib_1_1crdbufr__c" ], + [ "cwrbufr_c", "interfacebufrlib_1_1cwrbufr__c.html", "interfacebufrlib_1_1cwrbufr__c" ], + [ "icvidx_c", "interfacebufrlib_1_1icvidx__c.html", "interfacebufrlib_1_1icvidx__c" ], + [ "inittbf_c", "interfacebufrlib_1_1inittbf__c.html", "interfacebufrlib_1_1inittbf__c" ], + [ "openab_c", "interfacebufrlib_1_1openab__c.html", "interfacebufrlib_1_1openab__c" ], + [ "openrb_c", "interfacebufrlib_1_1openrb__c.html", "interfacebufrlib_1_1openrb__c" ], + [ "openwb_c", "interfacebufrlib_1_1openwb__c.html", "interfacebufrlib_1_1openwb__c" ], + [ "restd_c", "interfacebufrlib_1_1restd__c.html", "interfacebufrlib_1_1restd__c" ], + [ "sorttbf_c", "interfacebufrlib_1_1sorttbf__c.html", "interfacebufrlib_1_1sorttbf__c" ], + [ "srchtbf_c", "interfacebufrlib_1_1srchtbf__c.html", "interfacebufrlib_1_1srchtbf__c" ], + [ "strtbfe_c", "interfacebufrlib_1_1strtbfe__c.html", "interfacebufrlib_1_1strtbfe__c" ], + [ "stseq_c", "interfacebufrlib_1_1stseq__c.html", "interfacebufrlib_1_1stseq__c" ] +]; \ No newline at end of file diff --git a/previous_versions/v12.1.0/namespacemembers.html b/previous_versions/v12.1.0/namespacemembers.html new file mode 100644 index 000000000..ae28fb317 --- /dev/null +++ b/previous_versions/v12.1.0/namespacemembers.html @@ -0,0 +1,104 @@ + + + + + + + +NCEPLIBS-bufr: Module Members + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        Here is a list of all documented module members with links to the modules they belong to:
                                                        + +

                                                        - b -

                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/namespacemembers_c.html b/previous_versions/v12.1.0/namespacemembers_c.html new file mode 100644 index 000000000..e3e0b34d2 --- /dev/null +++ b/previous_versions/v12.1.0/namespacemembers_c.html @@ -0,0 +1,176 @@ + + + + + + + +NCEPLIBS-bufr: Module Members + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        Here is a list of all documented module members with links to the modules they belong to:
                                                        + +

                                                        - c -

                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/namespacemembers_d.html b/previous_versions/v12.1.0/namespacemembers_d.html new file mode 100644 index 000000000..32d7e2f7e --- /dev/null +++ b/previous_versions/v12.1.0/namespacemembers_d.html @@ -0,0 +1,101 @@ + + + + + + + +NCEPLIBS-bufr: Module Members + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        Here is a list of all documented module members with links to the modules they belong to:
                                                        + +

                                                        - d -

                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/namespacemembers_dup.js b/previous_versions/v12.1.0/namespacemembers_dup.js new file mode 100644 index 000000000..97d6c45eb --- /dev/null +++ b/previous_versions/v12.1.0/namespacemembers_dup.js @@ -0,0 +1,24 @@ +var namespacemembers_dup = +[ + [ "b", "namespacemembers.html", null ], + [ "c", "namespacemembers_c.html", null ], + [ "d", "namespacemembers_d.html", null ], + [ "e", "namespacemembers_e.html", null ], + [ "f", "namespacemembers_f.html", null ], + [ "g", "namespacemembers_g.html", null ], + [ "i", "namespacemembers_i.html", null ], + [ "j", "namespacemembers_j.html", null ], + [ "k", "namespacemembers_k.html", null ], + [ "l", "namespacemembers_l.html", null ], + [ "m", "namespacemembers_m.html", null ], + [ "n", "namespacemembers_n.html", null ], + [ "o", "namespacemembers_o.html", null ], + [ "p", "namespacemembers_p.html", null ], + [ "r", "namespacemembers_r.html", null ], + [ "s", "namespacemembers_s.html", null ], + [ "t", "namespacemembers_t.html", null ], + [ "u", "namespacemembers_u.html", null ], + [ "v", "namespacemembers_v.html", null ], + [ "w", "namespacemembers_w.html", null ], + [ "x", "namespacemembers_x.html", null ] +]; \ No newline at end of file diff --git a/previous_versions/v12.1.0/namespacemembers_e.html b/previous_versions/v12.1.0/namespacemembers_e.html new file mode 100644 index 000000000..c82641762 --- /dev/null +++ b/previous_versions/v12.1.0/namespacemembers_e.html @@ -0,0 +1,104 @@ + + + + + + + +NCEPLIBS-bufr: Module Members + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        Here is a list of all documented module members with links to the modules they belong to:
                                                        + +

                                                        - e -

                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/namespacemembers_f.html b/previous_versions/v12.1.0/namespacemembers_f.html new file mode 100644 index 000000000..fb4dbd37d --- /dev/null +++ b/previous_versions/v12.1.0/namespacemembers_f.html @@ -0,0 +1,101 @@ + + + + + + + +NCEPLIBS-bufr: Module Members + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        Here is a list of all documented module members with links to the modules they belong to:
                                                        + +

                                                        - f -

                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/namespacemembers_func.html b/previous_versions/v12.1.0/namespacemembers_func.html new file mode 100644 index 000000000..69f7c4ec0 --- /dev/null +++ b/previous_versions/v12.1.0/namespacemembers_func.html @@ -0,0 +1,299 @@ + + + + + + + +NCEPLIBS-bufr: Module Members + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +  + +

                                                        - b -

                                                        + + +

                                                        - c -

                                                        + + +

                                                        - d -

                                                        + + +

                                                        - e -

                                                        + + +

                                                        - g -

                                                        + + +

                                                        - i -

                                                        + + +

                                                        - m -

                                                        + + +

                                                        - n -

                                                        + + +

                                                        - o -

                                                        + + +

                                                        - p -

                                                        + + +

                                                        - r -

                                                        + + +

                                                        - s -

                                                        + + +

                                                        - u -

                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/namespacemembers_g.html b/previous_versions/v12.1.0/namespacemembers_g.html new file mode 100644 index 000000000..66232e7b3 --- /dev/null +++ b/previous_versions/v12.1.0/namespacemembers_g.html @@ -0,0 +1,131 @@ + + + + + + + +NCEPLIBS-bufr: Module Members + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        Here is a list of all documented module members with links to the modules they belong to:
                                                        + +

                                                        - g -

                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/namespacemembers_i.html b/previous_versions/v12.1.0/namespacemembers_i.html new file mode 100644 index 000000000..99feb5809 --- /dev/null +++ b/previous_versions/v12.1.0/namespacemembers_i.html @@ -0,0 +1,299 @@ + + + + + + + +NCEPLIBS-bufr: Module Members + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        Here is a list of all documented module members with links to the modules they belong to:
                                                        + +

                                                        - i -

                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/namespacemembers_j.html b/previous_versions/v12.1.0/namespacemembers_j.html new file mode 100644 index 000000000..25bba7ff4 --- /dev/null +++ b/previous_versions/v12.1.0/namespacemembers_j.html @@ -0,0 +1,137 @@ + + + + + + + +NCEPLIBS-bufr: Module Members + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        Here is a list of all documented module members with links to the modules they belong to:
                                                        + +

                                                        - j -

                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/namespacemembers_k.html b/previous_versions/v12.1.0/namespacemembers_k.html new file mode 100644 index 000000000..8dd601840 --- /dev/null +++ b/previous_versions/v12.1.0/namespacemembers_k.html @@ -0,0 +1,122 @@ + + + + + + + +NCEPLIBS-bufr: Module Members + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        Here is a list of all documented module members with links to the modules they belong to:
                                                        + +

                                                        - k -

                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/namespacemembers_l.html b/previous_versions/v12.1.0/namespacemembers_l.html new file mode 100644 index 000000000..e8a29d609 --- /dev/null +++ b/previous_versions/v12.1.0/namespacemembers_l.html @@ -0,0 +1,134 @@ + + + + + + + +NCEPLIBS-bufr: Module Members + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        Here is a list of all documented module members with links to the modules they belong to:
                                                        + +

                                                        - l -

                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/namespacemembers_m.html b/previous_versions/v12.1.0/namespacemembers_m.html new file mode 100644 index 000000000..d2ff3b072 --- /dev/null +++ b/previous_versions/v12.1.0/namespacemembers_m.html @@ -0,0 +1,164 @@ + + + + + + + +NCEPLIBS-bufr: Module Members + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        Here is a list of all documented module members with links to the modules they belong to:
                                                        + +

                                                        - m -

                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/namespacemembers_n.html b/previous_versions/v12.1.0/namespacemembers_n.html new file mode 100644 index 000000000..8641fe7c8 --- /dev/null +++ b/previous_versions/v12.1.0/namespacemembers_n.html @@ -0,0 +1,200 @@ + + + + + + + +NCEPLIBS-bufr: Module Members + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        Here is a list of all documented module members with links to the modules they belong to:
                                                        + +

                                                        - n -

                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/namespacemembers_o.html b/previous_versions/v12.1.0/namespacemembers_o.html new file mode 100644 index 000000000..91fcccfa6 --- /dev/null +++ b/previous_versions/v12.1.0/namespacemembers_o.html @@ -0,0 +1,107 @@ + + + + + + + +NCEPLIBS-bufr: Module Members + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        Here is a list of all documented module members with links to the modules they belong to:
                                                        + +

                                                        - o -

                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/namespacemembers_p.html b/previous_versions/v12.1.0/namespacemembers_p.html new file mode 100644 index 000000000..6ebee18fa --- /dev/null +++ b/previous_versions/v12.1.0/namespacemembers_p.html @@ -0,0 +1,101 @@ + + + + + + + +NCEPLIBS-bufr: Module Members + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        Here is a list of all documented module members with links to the modules they belong to:
                                                        + +

                                                        - p -

                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/namespacemembers_r.html b/previous_versions/v12.1.0/namespacemembers_r.html new file mode 100644 index 000000000..b535f9fe0 --- /dev/null +++ b/previous_versions/v12.1.0/namespacemembers_r.html @@ -0,0 +1,101 @@ + + + + + + + +NCEPLIBS-bufr: Module Members + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        Here is a list of all documented module members with links to the modules they belong to:
                                                        + +

                                                        - r -

                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/namespacemembers_s.html b/previous_versions/v12.1.0/namespacemembers_s.html new file mode 100644 index 000000000..8d5bcb90a --- /dev/null +++ b/previous_versions/v12.1.0/namespacemembers_s.html @@ -0,0 +1,110 @@ + + + + + + + +NCEPLIBS-bufr: Module Members + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        Here is a list of all documented module members with links to the modules they belong to:
                                                        + +

                                                        - s -

                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/namespacemembers_t.html b/previous_versions/v12.1.0/namespacemembers_t.html new file mode 100644 index 000000000..4b1809f44 --- /dev/null +++ b/previous_versions/v12.1.0/namespacemembers_t.html @@ -0,0 +1,125 @@ + + + + + + + +NCEPLIBS-bufr: Module Members + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        Here is a list of all documented module members with links to the modules they belong to:
                                                        + +

                                                        - t -

                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/namespacemembers_u.html b/previous_versions/v12.1.0/namespacemembers_u.html new file mode 100644 index 000000000..fe0573101 --- /dev/null +++ b/previous_versions/v12.1.0/namespacemembers_u.html @@ -0,0 +1,110 @@ + + + + + + + +NCEPLIBS-bufr: Module Members + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        Here is a list of all documented module members with links to the modules they belong to:
                                                        + +

                                                        - u -

                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/namespacemembers_v.html b/previous_versions/v12.1.0/namespacemembers_v.html new file mode 100644 index 000000000..d5aff54be --- /dev/null +++ b/previous_versions/v12.1.0/namespacemembers_v.html @@ -0,0 +1,110 @@ + + + + + + + +NCEPLIBS-bufr: Module Members + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        Here is a list of all documented module members with links to the modules they belong to:
                                                        + +

                                                        - v -

                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/namespacemembers_vars.html b/previous_versions/v12.1.0/namespacemembers_vars.html new file mode 100644 index 000000000..27706b940 --- /dev/null +++ b/previous_versions/v12.1.0/namespacemembers_vars.html @@ -0,0 +1,674 @@ + + + + + + + +NCEPLIBS-bufr: Module Members + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +  + +

                                                        - c -

                                                        + + +

                                                        - f -

                                                        + + +

                                                        - i -

                                                        + + +

                                                        - j -

                                                        + + +

                                                        - k -

                                                        + + +

                                                        - l -

                                                        + + +

                                                        - m -

                                                        + + +

                                                        - n -

                                                        + + +

                                                        - s -

                                                        + + +

                                                        - t -

                                                        + + +

                                                        - v -

                                                        + + +

                                                        - w -

                                                        + + +

                                                        - x -

                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/namespacemembers_w.html b/previous_versions/v12.1.0/namespacemembers_w.html new file mode 100644 index 000000000..4eda8de4b --- /dev/null +++ b/previous_versions/v12.1.0/namespacemembers_w.html @@ -0,0 +1,101 @@ + + + + + + + +NCEPLIBS-bufr: Module Members + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        Here is a list of all documented module members with links to the modules they belong to:
                                                        + +

                                                        - w -

                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/namespacemembers_x.html b/previous_versions/v12.1.0/namespacemembers_x.html new file mode 100644 index 000000000..77a3ca52d --- /dev/null +++ b/previous_versions/v12.1.0/namespacemembers_x.html @@ -0,0 +1,101 @@ + + + + + + + +NCEPLIBS-bufr: Module Members + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        Here is a list of all documented module members with links to the modules they belong to:
                                                        + +

                                                        - x -

                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/namespacemoda__bitbuf.html b/previous_versions/v12.1.0/namespacemoda__bitbuf.html new file mode 100644 index 000000000..cec5e0350 --- /dev/null +++ b/previous_versions/v12.1.0/namespacemoda__bitbuf.html @@ -0,0 +1,228 @@ + + + + + + + +NCEPLIBS-bufr: moda_bitbuf Module Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        moda_bitbuf Module Reference
                                                        +
                                                        +
                                                        + +

                                                        Declare arrays and variables used to store BUFR messages internally for multiple file IDs. +More...

                                                        + + + + + + + + + + + + + + + + + +

                                                        +Variables

                                                        integer, dimension(:), allocatable ibay
                                                         Current data subset. More...
                                                         
                                                        integer ibit
                                                         Bit pointer within ibay. More...
                                                         
                                                        integer maxbyt
                                                         Maximum length of an output BUFR message. More...
                                                         
                                                        integer, dimension(:,:), allocatable mbay
                                                         Current BUFR message for each file ID. More...
                                                         
                                                        integer, dimension(:), allocatable mbyt
                                                         Length (in bytes) of current BUFR message for each file ID. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Declare arrays and variables used to store BUFR messages internally for multiple file IDs.

                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2014-12-10
                                                        +

                                                        Variable Documentation

                                                        + +

                                                        ◆ ibay

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer, dimension(:), allocatable moda_bitbuf::ibay
                                                        +
                                                        + +

                                                        Current data subset.

                                                        + +

                                                        Definition at line 18 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), msgupd(), wrcmps(), and wrtree().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ ibit

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer moda_bitbuf::ibit
                                                        +
                                                        + +

                                                        Bit pointer within ibay.

                                                        + +

                                                        Definition at line 20 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by copysb(), msgupd(), rdcmps(), rdtree(), readsb(), restd(), rewnbf(), ufbtab(), ufbtam(), wrcmps(), writlc(), and wrtree().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ maxbyt

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer moda_bitbuf::maxbyt
                                                        +
                                                        + +

                                                        Maximum length of an output BUFR message.

                                                        + +

                                                        Definition at line 12 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by bfrini(), cpyupd(), igetmxby(), maxout(), msgupd(), and wrcmps().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ mbay

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer, dimension(:,:), allocatable moda_bitbuf::mbay
                                                        +
                                                        +
                                                        + +

                                                        ◆ mbyt

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer, dimension(:), allocatable moda_bitbuf::mbyt
                                                        +
                                                        + +

                                                        Length (in bytes) of current BUFR message for each file ID.

                                                        + +

                                                        Definition at line 16 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), cktaba(), closmg(), copysb(), cpyupd(), msgini(), msgupd(), rdcmps(), rdmems(), readsb(), rewnbf(), ufbget(), ufbtab(), and ufbtam().

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/namespacemoda__bitmaps.html b/previous_versions/v12.1.0/namespacemoda__bitmaps.html new file mode 100644 index 000000000..07e65fbdd --- /dev/null +++ b/previous_versions/v12.1.0/namespacemoda__bitmaps.html @@ -0,0 +1,413 @@ + + + + + + + +NCEPLIBS-bufr: moda_bitmaps Module Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        moda_bitmaps Module Reference
                                                        +
                                                        +
                                                        + +

                                                        Declare arrays and variables used to store bitmaps internally within a data subset definition. +More...

                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                                                        +Variables

                                                        character *6, dimension(:,:), allocatable ctco
                                                         Table C operators corresponding to inodtco. More...
                                                         
                                                        integer, dimension(:,:), allocatable ibtmse
                                                         Ordinal positions in bitmap of bits that were "set" (set to a value of 0); these ordinal positions can range in value from 1 to iszbtm for each stored bitmap. More...
                                                         
                                                        integer, dimension(:), allocatable inodtamc
                                                         Entries within jump/link table which contain Table A mnemonics. More...
                                                         
                                                        integer, dimension(:,:), allocatable inodtco
                                                         Entries within jump/link table which contain Table C operators. More...
                                                         
                                                        integer, dimension(:), allocatable istbtm
                                                         Ordinal position in data subset definition corresponding to the first entry of the bitmap. More...
                                                         
                                                        integer, dimension(:), allocatable iszbtm
                                                         Size of bitmap (total number of entries, whether "set" (set to a value of 0) or not). More...
                                                         
                                                        logical linbtm
                                                         true if a bitmap is in the process of being read for the current data subset; false otherwise. More...
                                                         
                                                        integer lstnod
                                                         Most recent jump/link table entry that was processed by function igetrfel() and whose corresponding value type was either numeric or CCITT IA5. More...
                                                         
                                                        integer lstnodct
                                                         Current count of consecutive occurrences of lstnod. More...
                                                         
                                                        integer nbtm
                                                         Number of stored bitmaps for the current data subset (up to a maximum of mxbtm). More...
                                                         
                                                        integer, dimension(:), allocatable nbtmse
                                                         Number of "set" entries (set to a value of 0) in the bitmap. More...
                                                         
                                                        integer ntamc
                                                         Number of Table A mnemonics in jump/link table (up to a maximum of mxtamc) which contain at least one Table C operator with an XX value of 21 or greater in their data subset definition; only Table C operators with an XX value of 21 or greater are tracked within this module, since all others are automatically processed within subroutines tabsub() and tabent(). More...
                                                         
                                                        integer, dimension(:), allocatable ntco
                                                         Number of Table C operators (with an XX value of 21 or greater) within the data subset definition of the corresponding Table A mnemonic in inodtamc. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Declare arrays and variables used to store bitmaps internally within a data subset definition.

                                                        +

                                                        Data values within this module are stored by subprograms strbtm(), igetrfel(), makestab() and tabsub().

                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2016-05-27
                                                        +

                                                        Variable Documentation

                                                        + +

                                                        ◆ ctco

                                                        + +
                                                        +
                                                        + + + + +
                                                        character*6, dimension(:,:), allocatable moda_bitmaps::ctco
                                                        +
                                                        + +

                                                        Table C operators corresponding to inodtco.

                                                        + +

                                                        Definition at line 57 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), igetrfel(), strbtm(), and tabsub().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ ibtmse

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer, dimension(:,:), allocatable moda_bitmaps::ibtmse
                                                        +
                                                        + +

                                                        Ordinal positions in bitmap of bits that were "set" (set to a value of 0); these ordinal positions can range in value from 1 to iszbtm for each stored bitmap.

                                                        + +

                                                        Definition at line 71 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), igetrfel(), and strbtm().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ inodtamc

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer, dimension(:), allocatable moda_bitmaps::inodtamc
                                                        +
                                                        + +

                                                        Entries within jump/link table which contain Table A mnemonics.

                                                        + +

                                                        Definition at line 51 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), igetrfel(), strbtm(), and tabsub().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ inodtco

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer, dimension(:,:), allocatable moda_bitmaps::inodtco
                                                        +
                                                        + +

                                                        Entries within jump/link table which contain Table C operators.

                                                        + +

                                                        Definition at line 59 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), igetrfel(), strbtm(), and tabsub().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ istbtm

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer, dimension(:), allocatable moda_bitmaps::istbtm
                                                        +
                                                        + +

                                                        Ordinal position in data subset definition corresponding to the first entry of the bitmap.

                                                        + +

                                                        Definition at line 64 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), igetrfel(), and strbtm().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ iszbtm

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer, dimension(:), allocatable moda_bitmaps::iszbtm
                                                        +
                                                        + +

                                                        Size of bitmap (total number of entries, whether "set" (set to a value of 0) or not).

                                                        + +

                                                        Definition at line 67 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), igetrfel(), and strbtm().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ linbtm

                                                        + +
                                                        +
                                                        + + + + +
                                                        logical moda_bitmaps::linbtm
                                                        +
                                                        + +

                                                        true if a bitmap is in the process of being read for the current data subset; false otherwise.

                                                        + +

                                                        Definition at line 49 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by readsb(), and strbtm().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ lstnod

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer moda_bitmaps::lstnod
                                                        +
                                                        + +

                                                        Most recent jump/link table entry that was processed by function igetrfel() and whose corresponding value type was either numeric or CCITT IA5.

                                                        + +

                                                        Definition at line 44 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by igetrfel(), and readsb().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ lstnodct

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer moda_bitmaps::lstnodct
                                                        +
                                                        + +

                                                        Current count of consecutive occurrences of lstnod.

                                                        + +

                                                        Definition at line 46 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by igetrfel(), and readsb().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ nbtm

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer moda_bitmaps::nbtm
                                                        +
                                                        + +

                                                        Number of stored bitmaps for the current data subset (up to a maximum of mxbtm).

                                                        + +

                                                        Definition at line 33 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by igetrfel(), readsb(), and strbtm().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ nbtmse

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer, dimension(:), allocatable moda_bitmaps::nbtmse
                                                        +
                                                        + +

                                                        Number of "set" entries (set to a value of 0) in the bitmap.

                                                        + +

                                                        Definition at line 61 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), igetrfel(), and strbtm().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ ntamc

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer moda_bitmaps::ntamc
                                                        +
                                                        + +

                                                        Number of Table A mnemonics in jump/link table (up to a maximum of mxtamc) which contain at least one Table C operator with an XX value of 21 or greater in their data subset definition; only Table C operators with an XX value of 21 or greater are tracked within this module, since all others are automatically processed within subroutines tabsub() and tabent().

                                                        + +

                                                        Definition at line 40 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by igetrfel(), makestab(), strbtm(), and tabsub().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ ntco

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer, dimension(:), allocatable moda_bitmaps::ntco
                                                        +
                                                        + +

                                                        Number of Table C operators (with an XX value of 21 or greater) within the data subset definition of the corresponding Table A mnemonic in inodtamc.

                                                        + +

                                                        Definition at line 55 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), igetrfel(), strbtm(), and tabsub().

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/namespacemoda__bufrmg.html b/previous_versions/v12.1.0/namespacemoda__bufrmg.html new file mode 100644 index 000000000..b38472289 --- /dev/null +++ b/previous_versions/v12.1.0/namespacemoda__bufrmg.html @@ -0,0 +1,159 @@ + + + + + + + +NCEPLIBS-bufr: moda_bufrmg Module Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        moda_bufrmg Module Reference
                                                        +
                                                        +
                                                        + +

                                                        Declare arrays used to store, for each output file ID, a copy of the BUFR message that was most recently written to that ID, for possible later retrieval via subroutine writsa(). +More...

                                                        + + + + + + + + +

                                                        +Variables

                                                        integer, dimension(:), allocatable msglen
                                                         Length (in integers) of BUFR message most recently written to each output file ID. More...
                                                         
                                                        integer, dimension(:,:), allocatable msgtxt
                                                         BUFR message most recently written to each output file ID. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Declare arrays used to store, for each output file ID, a copy of the BUFR message that was most recently written to that ID, for possible later retrieval via subroutine writsa().

                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2014-12-10
                                                        +

                                                        Variable Documentation

                                                        + +

                                                        ◆ msglen

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer, dimension(:), allocatable moda_bufrmg::msglen
                                                        +
                                                        + +

                                                        Length (in integers) of BUFR message most recently written to each output file ID.

                                                        + +

                                                        Definition at line 83 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), bfrini(), main(), msgwrt(), and writsa().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ msgtxt

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer, dimension(:,:), allocatable moda_bufrmg::msgtxt
                                                        +
                                                        + +

                                                        BUFR message most recently written to each output file ID.

                                                        + +

                                                        Definition at line 85 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), msgwrt(), and writsa().

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/namespacemoda__bufrsr.html b/previous_versions/v12.1.0/namespacemoda__bufrsr.html new file mode 100644 index 000000000..797129d76 --- /dev/null +++ b/previous_versions/v12.1.0/namespacemoda__bufrsr.html @@ -0,0 +1,322 @@ + + + + + + + +NCEPLIBS-bufr: moda_bufrsr Module Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        moda_bufrsr Module Reference
                                                        +
                                                        +
                                                        + +

                                                        Declare arrays and variables needed to store the current position within a BUFR file. +More...

                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                                                        +Variables

                                                        integer, dimension(:), allocatable jbay
                                                         BUFR message. More...
                                                         
                                                        integer jbit
                                                         Bit pointer within BUFR message. More...
                                                         
                                                        integer jbyt
                                                         Length (in bytes) of BUFR message. More...
                                                         
                                                        integer jill
                                                         File status indicator of BUFR file. More...
                                                         
                                                        integer jimm
                                                         Message status indicator of BUFR file. More...
                                                         
                                                        integer jmsg
                                                         Sequential number of BUFR message, counting from the beginning of the file. More...
                                                         
                                                        integer, dimension(:), allocatable jsr
                                                         Indicator of stack status when entering subroutine rewnbf(). More...
                                                         
                                                        integer jsub
                                                         Sequential number of BUFR data subset, counting from the beginning of the current BUFR message. More...
                                                         
                                                        integer junn = 0
                                                         File ID of BUFR file. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Declare arrays and variables needed to store the current position within a BUFR file.

                                                        +

                                                        This allows a rewind back to the first message within the file, while retaining the capability to return to the original file position at a later point within the application program.

                                                        +

                                                        The current position can be stored for only one BUFR file at a time.

                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2014-12-10
                                                        +

                                                        Variable Documentation

                                                        + +

                                                        ◆ jbay

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer, dimension(:), allocatable moda_bufrsr::jbay
                                                        +
                                                        + +

                                                        BUFR message.

                                                        + +

                                                        Definition at line 105 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), and rewnbf().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ jbit

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer moda_bufrsr::jbit
                                                        +
                                                        + +

                                                        Bit pointer within BUFR message.

                                                        + +

                                                        Definition at line 107 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by rewnbf().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ jbyt

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer moda_bufrsr::jbyt
                                                        +
                                                        + +

                                                        Length (in bytes) of BUFR message.

                                                        + +

                                                        Definition at line 109 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by rewnbf().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ jill

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer moda_bufrsr::jill
                                                        +
                                                        + +

                                                        File status indicator of BUFR file.

                                                        + +

                                                        Definition at line 101 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by rewnbf().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ jimm

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer moda_bufrsr::jimm
                                                        +
                                                        + +

                                                        Message status indicator of BUFR file.

                                                        + +

                                                        Definition at line 103 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by rewnbf().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ jmsg

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer moda_bufrsr::jmsg
                                                        +
                                                        + +

                                                        Sequential number of BUFR message, counting from the beginning of the file.

                                                        + +

                                                        Definition at line 111 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by rewnbf().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ jsr

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer, dimension(:), allocatable moda_bufrsr::jsr
                                                        +
                                                        + +

                                                        Indicator of stack status when entering subroutine rewnbf().

                                                        + +

                                                        Definition at line 115 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), bfrini(), and rewnbf().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ jsub

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer moda_bufrsr::jsub
                                                        +
                                                        + +

                                                        Sequential number of BUFR data subset, counting from the beginning of the current BUFR message.

                                                        + +

                                                        Definition at line 113 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by rewnbf().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ junn

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer moda_bufrsr::junn = 0
                                                        +
                                                        + +

                                                        File ID of BUFR file.

                                                        + +

                                                        Definition at line 99 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by rewnbf().

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/namespacemoda__comprs.html b/previous_versions/v12.1.0/namespacemoda__comprs.html new file mode 100644 index 000000000..8294ad9ac --- /dev/null +++ b/previous_versions/v12.1.0/namespacemoda__comprs.html @@ -0,0 +1,206 @@ + + + + + + + +NCEPLIBS-bufr: moda_comprs Module Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        moda_comprs Module Reference
                                                        +
                                                        +
                                                        + +

                                                        Declare arrays and variables needed for the storage of data values needed when writing compressed data subsets to a BUFR message for output. +More...

                                                        + + + + + + + + + + + + + + +

                                                        +Variables

                                                        character *(:), dimension(:,:), allocatable catx
                                                         Character data values for all data subsets in message. More...
                                                         
                                                        integer *8 incr
                                                         Increment used when compressing non-character data values. More...
                                                         
                                                        integer *8, dimension(:,:), allocatable matx
                                                         Non-character data values for all data subsets in message. More...
                                                         
                                                        integer ncol
                                                         Number of data subsets in message. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Declare arrays and variables needed for the storage of data values needed when writing compressed data subsets to a BUFR message for output.

                                                        +

                                                        These values can only be stored for one compressed BUFR message at any given time.

                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        2002-05-14
                                                        +

                                                        Variable Documentation

                                                        + +

                                                        ◆ catx

                                                        + +
                                                        +
                                                        + + + + +
                                                        character*(:), dimension(:,:), allocatable moda_comprs::catx
                                                        +
                                                        + +

                                                        Character data values for all data subsets in message.

                                                        + +

                                                        Definition at line 134 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by ardllocf(), wrcmps(), and writlc().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ incr

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer*8 moda_comprs::incr
                                                        +
                                                        + +

                                                        Increment used when compressing non-character data values.

                                                        + +

                                                        Definition at line 130 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by wrcmps().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ matx

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer*8, dimension(:,:), allocatable moda_comprs::matx
                                                        +
                                                        + +

                                                        Non-character data values for all data subsets in message.

                                                        + +

                                                        Definition at line 132 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), wrcmps(), and writlc().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ ncol

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer moda_comprs::ncol
                                                        +
                                                        + +

                                                        Number of data subsets in message.

                                                        + +

                                                        Definition at line 128 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by wrcmps(), and writlc().

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/namespacemoda__comprx.html b/previous_versions/v12.1.0/namespacemoda__comprx.html new file mode 100644 index 000000000..4c842016f --- /dev/null +++ b/previous_versions/v12.1.0/namespacemoda__comprx.html @@ -0,0 +1,444 @@ + + + + + + + +NCEPLIBS-bufr: moda_comprx Module Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        moda_comprx Module Reference
                                                        +
                                                        +
                                                        + +

                                                        Declare arrays and variable needed for the storage of data values needed when writing compressed data subsets to a BUFR message for output. +More...

                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                                                        +Variables

                                                        character *(:), dimension(:), allocatable cstr
                                                         Character data value, if corresponding ityp value is set to 3. More...
                                                         
                                                        logical flush
                                                         Flush flag. More...
                                                         
                                                        integer *8 imiss
                                                         "Missing" value used when compressing non-character data values. More...
                                                         
                                                        integer, dimension(:), allocatable ityp
                                                         Type of each data value: More...
                                                         
                                                        integer, dimension(:), allocatable iwid
                                                         Bit width of underlying data descriptor as defined within Table B for each data value. More...
                                                         
                                                        integer, dimension(:), allocatable jlnode
                                                         Jump/link table node corresponding to each data value. More...
                                                         
                                                        integer, dimension(:), allocatable kbit
                                                         Number of bits needed to hold the increments for this data value within each data subset of the message. More...
                                                         
                                                        integer kbyt
                                                         Number of bytes required to store Sections 0, 1, 2, and 3 of message. More...
                                                         
                                                        integer *8, dimension(:), allocatable kmax
                                                         Maximum of each data value across all data subsets in message. More...
                                                         
                                                        integer *8, dimension(:), allocatable kmin
                                                         Minimum of each data value across all data subsets in message. More...
                                                         
                                                        logical, dimension(:), allocatable kmis
                                                         "Missing" values flag. More...
                                                         
                                                        integer lunc
                                                         File ID for output file. More...
                                                         
                                                        integer nrow
                                                         Number of data values for each data subset in message. More...
                                                         
                                                        logical writ1
                                                         Write-out flag. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Declare arrays and variable needed for the storage of data values needed when writing compressed data subsets to a BUFR message for output.

                                                        +

                                                        These values can only be stored for one compressed BUFR message at any given time.

                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        2002-05-14
                                                        +

                                                        Variable Documentation

                                                        + +

                                                        ◆ cstr

                                                        + +
                                                        +
                                                        + + + + +
                                                        character*(:), dimension(:), allocatable moda_comprx::cstr
                                                        +
                                                        + +

                                                        Character data value, if corresponding ityp value is set to 3.

                                                        + +

                                                        Definition at line 182 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by ardllocf(), and wrcmps().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ flush

                                                        + +
                                                        +
                                                        + + + + +
                                                        logical moda_comprx::flush
                                                        +
                                                        + +

                                                        Flush flag.

                                                        +

                                                        Set to .true. if a subroutine call was made to force the writing of the message to the corresponding output file, even if there may still be room in the message for additional data subsets. Otherwise set to .false.

                                                        + +

                                                        Definition at line 156 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by wrcmps().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ imiss

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer*8 moda_comprx::imiss
                                                        +
                                                        + +

                                                        "Missing" value used when compressing non-character data values.

                                                        + +

                                                        Definition at line 165 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by wrcmps().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ ityp

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer, dimension(:), allocatable moda_comprx::ityp
                                                        +
                                                        + +

                                                        Type of each data value:

                                                        +
                                                          +
                                                        • 1 Delayed descriptor replication factor.
                                                        • +
                                                        • 2 Other non-character data.
                                                        • +
                                                        • 3 Character data.
                                                        • +
                                                        + +

                                                        Definition at line 177 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), and wrcmps().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ iwid

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer, dimension(:), allocatable moda_comprx::iwid
                                                        +
                                                        + +

                                                        Bit width of underlying data descriptor as defined within Table B for each data value.

                                                        + +

                                                        Definition at line 180 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), and wrcmps().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ jlnode

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer, dimension(:), allocatable moda_comprx::jlnode
                                                        +
                                                        + +

                                                        Jump/link table node corresponding to each data value.

                                                        + +

                                                        Definition at line 184 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), and wrcmps().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ kbit

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer, dimension(:), allocatable moda_comprx::kbit
                                                        +
                                                        + +

                                                        Number of bits needed to hold the increments for this data value within each data subset of the message.

                                                        + +

                                                        Definition at line 172 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), and wrcmps().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ kbyt

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer moda_comprx::kbyt
                                                        +
                                                        + +

                                                        Number of bytes required to store Sections 0, 1, 2, and 3 of message.

                                                        + +

                                                        Definition at line 151 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by wrcmps().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ kmax

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer*8, dimension(:), allocatable moda_comprx::kmax
                                                        +
                                                        + +

                                                        Maximum of each data value across all data subsets in message.

                                                        + +

                                                        Definition at line 163 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), and wrcmps().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ kmin

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer*8, dimension(:), allocatable moda_comprx::kmin
                                                        +
                                                        + +

                                                        Minimum of each data value across all data subsets in message.

                                                        + +

                                                        Definition at line 161 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), and wrcmps().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ kmis

                                                        + +
                                                        +
                                                        + + + + +
                                                        logical, dimension(:), allocatable moda_comprx::kmis
                                                        +
                                                        + +

                                                        "Missing" values flag.

                                                        +

                                                        Set to .true. if at least one occurrence of this data value is "missing" within any data subset of the message. Otherwise set to .false.

                                                        + +

                                                        Definition at line 169 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), and wrcmps().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ lunc

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer moda_comprx::lunc
                                                        +
                                                        + +

                                                        File ID for output file.

                                                        + +

                                                        Definition at line 149 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by wrcmps().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ nrow

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer moda_comprx::nrow
                                                        +
                                                        + +

                                                        Number of data values for each data subset in message.

                                                        + +

                                                        Definition at line 147 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by wrcmps().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ writ1

                                                        + +
                                                        +
                                                        + + + + +
                                                        logical moda_comprx::writ1
                                                        +
                                                        + +

                                                        Write-out flag.

                                                        +

                                                        Set to .true. if the message needs to be written to the corresponding output file. Otherwise set to .false.

                                                        + +

                                                        Definition at line 159 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by wrcmps().

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/namespacemoda__dscach.html b/previous_versions/v12.1.0/namespacemoda__dscach.html new file mode 100644 index 000000000..f11a1103c --- /dev/null +++ b/previous_versions/v12.1.0/namespacemoda__dscach.html @@ -0,0 +1,206 @@ + + + + + + + +NCEPLIBS-bufr: moda_dscach Module Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        moda_dscach Module Reference
                                                        +
                                                        +
                                                        + +

                                                        Declare arrays and variables for the internal Table A mnemonic cache that is used for Section 3 decoding of BUFR messages. +More...

                                                        + + + + + + + + + + + + + + +

                                                        +Variables

                                                        character *8, dimension(:), allocatable cnem
                                                         Table A mnemonics. More...
                                                         
                                                        integer, dimension(:,:), allocatable idcach
                                                         WMO bit-wise representations of the child descriptors for the corresponding Table A mnemonic in cnem. More...
                                                         
                                                        integer ncnem
                                                         Number of entries in the internal Table A mnemonic cache (up to a maximum of mxcnem). More...
                                                         
                                                        integer, dimension(:), allocatable ndc
                                                         Number of child descriptors for the corresponding Table A mnemonic in cnem. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Declare arrays and variables for the internal Table A mnemonic cache that is used for Section 3 decoding of BUFR messages.

                                                        +

                                                        Data values within this module are stored by subroutine reads3().

                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2012-03-02
                                                        +

                                                        Variable Documentation

                                                        + +

                                                        ◆ cnem

                                                        + +
                                                        +
                                                        + + + + +
                                                        character*8, dimension(:), allocatable moda_dscach::cnem
                                                        +
                                                        + +

                                                        Table A mnemonics.

                                                        + +

                                                        Definition at line 200 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), and reads3().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ idcach

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer, dimension(:,:), allocatable moda_dscach::idcach
                                                        +
                                                        + +

                                                        WMO bit-wise representations of the child descriptors for the corresponding Table A mnemonic in cnem.

                                                        + +

                                                        Definition at line 206 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), and reads3().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ ncnem

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer moda_dscach::ncnem
                                                        +
                                                        + +

                                                        Number of entries in the internal Table A mnemonic cache (up to a maximum of mxcnem).

                                                        + +

                                                        Definition at line 198 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by bfrini(), and reads3().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ ndc

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer, dimension(:), allocatable moda_dscach::ndc
                                                        +
                                                        + +

                                                        Number of child descriptors for the corresponding Table A mnemonic in cnem.

                                                        + +

                                                        Definition at line 203 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), and reads3().

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/namespacemoda__h4wlc.html b/previous_versions/v12.1.0/namespacemoda__h4wlc.html new file mode 100644 index 000000000..4e049e146 --- /dev/null +++ b/previous_versions/v12.1.0/namespacemoda__h4wlc.html @@ -0,0 +1,206 @@ + + + + + + + +NCEPLIBS-bufr: moda_h4wlc Module Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        moda_h4wlc Module Reference
                                                        +
                                                        +
                                                        + +

                                                        Declare arrays and variables needed to store long character strings (greater than 8 bytes) via subroutine hold4wlc(). +More...

                                                        + + + + + + + + + + + + + + +

                                                        +Variables

                                                        character *120, dimension(:), allocatable chh4wlc
                                                         Long character strings. More...
                                                         
                                                        integer, dimension(:), allocatable luh4wlc
                                                         File ID for associated output file. More...
                                                         
                                                        integer nh4wlc = 0
                                                         Number of long character strings being stored. More...
                                                         
                                                        character *14, dimension(:), allocatable sth4wlc
                                                         Table B mnemonics associated with long character strings. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Declare arrays and variables needed to store long character strings (greater than 8 bytes) via subroutine hold4wlc().

                                                        +

                                                        These strings can be held for writing into an uncompressed BUFR data subset via future internal calls to subroutine writlc().

                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2014-02-05
                                                        +

                                                        Variable Documentation

                                                        + +

                                                        ◆ chh4wlc

                                                        + +
                                                        +
                                                        + + + + +
                                                        character*120, dimension(:), allocatable moda_h4wlc::chh4wlc
                                                        +
                                                        + +

                                                        Long character strings.

                                                        + +

                                                        Definition at line 224 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), hold4wlc(), and msgupd().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ luh4wlc

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer, dimension(:), allocatable moda_h4wlc::luh4wlc
                                                        +
                                                        + +

                                                        File ID for associated output file.

                                                        + +

                                                        Definition at line 220 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), hold4wlc(), and msgupd().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ nh4wlc

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer moda_h4wlc::nh4wlc = 0
                                                        +
                                                        + +

                                                        Number of long character strings being stored.

                                                        + +

                                                        Definition at line 218 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by hold4wlc(), and msgupd().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ sth4wlc

                                                        + +
                                                        +
                                                        + + + + +
                                                        character*14, dimension(:), allocatable moda_h4wlc::sth4wlc
                                                        +
                                                        + +

                                                        Table B mnemonics associated with long character strings.

                                                        + +

                                                        Definition at line 222 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), hold4wlc(), and msgupd().

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/namespacemoda__idrdm.html b/previous_versions/v12.1.0/namespacemoda__idrdm.html new file mode 100644 index 000000000..327d82461 --- /dev/null +++ b/previous_versions/v12.1.0/namespacemoda__idrdm.html @@ -0,0 +1,137 @@ + + + + + + + +NCEPLIBS-bufr: moda_idrdm Module Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        moda_idrdm Module Reference
                                                        +
                                                        +
                                                        + +

                                                        Declare an array used by subroutine readerme() to read in a new DX dictionary table as a consecutive set of one or more DX BUFR tables messages. +More...

                                                        + + + + + +

                                                        +Variables

                                                        integer, dimension(:), allocatable idrdm
                                                         DX BUFR tables message count for each file ID. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Declare an array used by subroutine readerme() to read in a new DX dictionary table as a consecutive set of one or more DX BUFR tables messages.

                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2009-03-23
                                                        +

                                                        Variable Documentation

                                                        + +

                                                        ◆ idrdm

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer, dimension(:), allocatable moda_idrdm::idrdm
                                                        +
                                                        + +

                                                        DX BUFR tables message count for each file ID.

                                                        +

                                                        Set to a value of zero unless a new DX dictionary table is in the process of being read in by subroutine readerme() for the associated logical unit, and in which case it keeps track of how many such messages have been read in so far.

                                                        + +

                                                        Definition at line 238 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), bfrini(), and readerme().

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/namespacemoda__ival.html b/previous_versions/v12.1.0/namespacemoda__ival.html new file mode 100644 index 000000000..09e60340b --- /dev/null +++ b/previous_versions/v12.1.0/namespacemoda__ival.html @@ -0,0 +1,137 @@ + + + + + + + +NCEPLIBS-bufr: moda_ival Module Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        moda_ival Module Reference
                                                        +
                                                        +
                                                        + +

                                                        Declare an array used to pack or unpack all of the values of a BUFR data subset. +More...

                                                        + + + + + +

                                                        +Variables

                                                        integer *8, dimension(:), allocatable ival
                                                         BUFR data subset values. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Declare an array used to pack or unpack all of the values of a BUFR data subset.

                                                        +

                                                        This array is used when packing a data subset for output via subroutine wrtree(), or when unpacking an input data subset via subroutine rdtree().

                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        +

                                                        Variable Documentation

                                                        + +

                                                        ◆ ival

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer*8, dimension(:), allocatable moda_ival::ival
                                                        +
                                                        + +

                                                        BUFR data subset values.

                                                        + +

                                                        Definition at line 249 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), rdtree(), strtbfe(), and wrtree().

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/namespacemoda__ivttmp.html b/previous_versions/v12.1.0/namespacemoda__ivttmp.html new file mode 100644 index 000000000..c4d0ce2b8 --- /dev/null +++ b/previous_versions/v12.1.0/namespacemoda__ivttmp.html @@ -0,0 +1,182 @@ + + + + + + + +NCEPLIBS-bufr: moda_ivttmp Module Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        moda_ivttmp Module Reference
                                                        +
                                                        +
                                                        + +

                                                        Declare arrays which provide working space in several subprograms (usrtpl() and ufbcup()) which manipulate the contents of internal subset buffers where the contents of an evolving BUFR message are accumulated and stored under user control prior to being written out. +More...

                                                        + + + + + + + + + + + +

                                                        +Variables

                                                        integer, dimension(:), allocatable itmp
                                                         inv array elements for new sections of a growing subset buffer. More...
                                                         
                                                        character *10, dimension(:), allocatable ttmp
                                                         tag array elements for new sections of a growing subset buffer. More...
                                                         
                                                        real *8, dimension(:), allocatable vtmp
                                                         val array elements for new sections of a growing subset buffer. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Declare arrays which provide working space in several subprograms (usrtpl() and ufbcup()) which manipulate the contents of internal subset buffers where the contents of an evolving BUFR message are accumulated and stored under user control prior to being written out.

                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        +

                                                        Variable Documentation

                                                        + +

                                                        ◆ itmp

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer, dimension(:), allocatable moda_ivttmp::itmp
                                                        +
                                                        + +

                                                        inv array elements for new sections of a growing subset buffer.

                                                        + +

                                                        Definition at line 263 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), ufbcup(), and usrtpl().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ ttmp

                                                        + +
                                                        +
                                                        + + + + +
                                                        character*10, dimension(:), allocatable moda_ivttmp::ttmp
                                                        +
                                                        + +

                                                        tag array elements for new sections of a growing subset buffer.

                                                        + +

                                                        Definition at line 261 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), and ufbcup().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ vtmp

                                                        + +
                                                        +
                                                        + + + + +
                                                        real*8, dimension(:), allocatable moda_ivttmp::vtmp
                                                        +
                                                        + +

                                                        val array elements for new sections of a growing subset buffer.

                                                        + +

                                                        Definition at line 265 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), and usrtpl().

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/namespacemoda__lushr.html b/previous_versions/v12.1.0/namespacemoda__lushr.html new file mode 100644 index 000000000..0d4d4c5f8 --- /dev/null +++ b/previous_versions/v12.1.0/namespacemoda__lushr.html @@ -0,0 +1,137 @@ + + + + + + + +NCEPLIBS-bufr: moda_lushr Module Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        moda_lushr Module Reference
                                                        +
                                                        +
                                                        + +

                                                        Declare an array used by subroutine makestab() to keep track of which logical units share DX BUFR table information. +More...

                                                        + + + + + +

                                                        +Variables

                                                        integer, dimension(:), allocatable lus
                                                         Tracking index for each file ID. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Declare an array used by subroutine makestab() to keep track of which logical units share DX BUFR table information.

                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        +

                                                        Variable Documentation

                                                        + +

                                                        ◆ lus

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer, dimension(:), allocatable moda_lushr::lus
                                                        +
                                                        + +

                                                        Tracking index for each file ID.

                                                        +

                                                        Set to a value of zero if the corresponding logical unit does not share DX BUFR table information with any other logical unit. Otherwise set to a non-zero value within subroutine makestab().

                                                        + +

                                                        Definition at line 278 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), makestab(), and openbf().

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/namespacemoda__mgwa.html b/previous_versions/v12.1.0/namespacemoda__mgwa.html new file mode 100644 index 000000000..663c9c097 --- /dev/null +++ b/previous_versions/v12.1.0/namespacemoda__mgwa.html @@ -0,0 +1,136 @@ + + + + + + + +NCEPLIBS-bufr: moda_mgwa Module Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        moda_mgwa Module Reference
                                                        +
                                                        +
                                                        + +

                                                        Declare an array used by various subroutines and functions to hold a temporary working copy of a BUFR message. +More...

                                                        + + + + + +

                                                        +Variables

                                                        integer, dimension(:), allocatable mgwa
                                                         Temporary working copy of BUFR message. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Declare an array used by various subroutines and functions to hold a temporary working copy of a BUFR message.

                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        +

                                                        Variable Documentation

                                                        + +

                                                        ◆ mgwa

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer, dimension(:), allocatable moda_mgwa::mgwa
                                                        +
                                                        + +

                                                        Temporary working copy of BUFR message.

                                                        + +

                                                        Definition at line 288 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), copybf(), cpdxmm(), datebf(), dumpbf(), mesgbc(), mesgbf(), msgwrt(), posapx(), rdbfdx(), rdmemm(), ufbmem(), ufbmex(), wrcmps(), and wrdxtb().

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/namespacemoda__mgwb.html b/previous_versions/v12.1.0/namespacemoda__mgwb.html new file mode 100644 index 000000000..47064323b --- /dev/null +++ b/previous_versions/v12.1.0/namespacemoda__mgwb.html @@ -0,0 +1,136 @@ + + + + + + + +NCEPLIBS-bufr: moda_mgwb Module Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        moda_mgwb Module Reference
                                                        +
                                                        +
                                                        + +

                                                        Declare an array used by various subroutines and functions to hold a temporary working copy of a BUFR message. +More...

                                                        + + + + + +

                                                        +Variables

                                                        integer, dimension(:), allocatable mgwb
                                                         Temporary working copy of BUFR message. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Declare an array used by various subroutines and functions to hold a temporary working copy of a BUFR message.

                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        +

                                                        Variable Documentation

                                                        + +

                                                        ◆ mgwb

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer, dimension(:), allocatable moda_mgwb::mgwb
                                                        +
                                                        + +

                                                        Temporary working copy of BUFR message.

                                                        + +

                                                        Definition at line 298 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), and msgwrt().

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/namespacemoda__msgcmp.html b/previous_versions/v12.1.0/namespacemoda__msgcmp.html new file mode 100644 index 000000000..90e98c2e9 --- /dev/null +++ b/previous_versions/v12.1.0/namespacemoda__msgcmp.html @@ -0,0 +1,140 @@ + + + + + + + +NCEPLIBS-bufr: moda_msgcmp Module Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        moda_msgcmp Module Reference
                                                        +
                                                        +
                                                        + +

                                                        Declare a variable used to indicate whether output BUFR messages should be compressed. +More...

                                                        + + + + + +

                                                        +Variables

                                                        character ccmf = 'N'
                                                         Flag indicating whether BUFR output messages are to be compressed; this variable is initialized to a default value which can be overridden by a subsequent call to subroutine cmpmsg() within the application program: More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Declare a variable used to indicate whether output BUFR messages should be compressed.

                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2024-05-29
                                                        +

                                                        Variable Documentation

                                                        + +

                                                        ◆ ccmf

                                                        + +
                                                        +
                                                        + + + + +
                                                        character moda_msgcmp::ccmf = 'N'
                                                        +
                                                        + +

                                                        Flag indicating whether BUFR output messages are to be compressed; this variable is initialized to a default value which can be overridden by a subsequent call to subroutine cmpmsg() within the application program:

                                                        +
                                                          +
                                                        • 'N' = No (default)
                                                        • +
                                                        • 'Y' = Yes
                                                        • +
                                                        + +

                                                        Definition at line 875 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by cmpmsg(), writsa(), and writsb().

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/namespacemoda__msgcwd.html b/previous_versions/v12.1.0/namespacemoda__msgcwd.html new file mode 100644 index 000000000..cb51a40a1 --- /dev/null +++ b/previous_versions/v12.1.0/namespacemoda__msgcwd.html @@ -0,0 +1,228 @@ + + + + + + + +NCEPLIBS-bufr: moda_msgcwd Module Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        moda_msgcwd Module Reference
                                                        +
                                                        +
                                                        + +

                                                        Declare arrays used to store information about the current BUFR message that is in the process of being read from or written to the logical unit associated with each file ID. +More...

                                                        + + + + + + + + + + + + + + + + + +

                                                        +Variables

                                                        integer, dimension(:), allocatable idate
                                                         Section 1 date-time of message. More...
                                                         
                                                        integer, dimension(:), allocatable inode
                                                         Table A mnemonic for type of BUFR message. More...
                                                         
                                                        integer, dimension(:), allocatable msub
                                                         Total number of data subsets in message. More...
                                                         
                                                        integer, dimension(:), allocatable nmsg
                                                         Current message pointer within logical unit. More...
                                                         
                                                        integer, dimension(:), allocatable nsub
                                                         Current subset pointer within message. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Declare arrays used to store information about the current BUFR message that is in the process of being read from or written to the logical unit associated with each file ID.

                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        +

                                                        Variable Documentation

                                                        + +

                                                        ◆ idate

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer, dimension(:), allocatable moda_msgcwd::idate
                                                        +
                                                        + +

                                                        Section 1 date-time of message.

                                                        + +

                                                        Definition at line 328 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), cktaba(), copymg(), cpymem(), msgini(), openbf(), openmb(), openmg(), readmg(), readns(), and wrcmps().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ inode

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer, dimension(:), allocatable moda_msgcwd::inode
                                                        +
                                                        +
                                                        + +

                                                        ◆ msub

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer, dimension(:), allocatable moda_msgcwd::msub
                                                        +
                                                        + +

                                                        Total number of data subsets in message.

                                                        + +

                                                        Definition at line 324 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), cktaba(), copymg(), copysb(), cpymem(), ifbget(), nmsub(), openbf(), rdcmps(), rdmems(), readsb(), ufbget(), ufbmms(), ufbrms(), ufbtab(), and ufbtam().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ nmsg

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer, dimension(:), allocatable moda_msgcwd::nmsg
                                                        +
                                                        + +

                                                        Current message pointer within logical unit.

                                                        + +

                                                        Definition at line 320 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), cktaba(), closmg(), copymg(), cpymem(), msgini(), openbf(), rdmemm(), rewnbf(), ufbcnt(), ufbpos(), ufbtab(), and ufbtam().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ nsub

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer, dimension(:), allocatable moda_msgcwd::nsub
                                                        +
                                                        + +

                                                        Current subset pointer within message.

                                                        + +

                                                        Definition at line 322 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), cktaba(), closmg(), copymg(), copysb(), cpymem(), cpyupd(), ifbget(), msgini(), msgupd(), openbf(), rdcmps(), rdmems(), readsb(), rewnbf(), ufbcnt(), ufbget(), ufbpos(), ufbtab(), ufbtam(), ufdump(), wrcmps(), and writlc().

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/namespacemoda__msglim.html b/previous_versions/v12.1.0/namespacemoda__msglim.html new file mode 100644 index 000000000..b69d352b1 --- /dev/null +++ b/previous_versions/v12.1.0/namespacemoda__msglim.html @@ -0,0 +1,138 @@ + + + + + + + +NCEPLIBS-bufr: moda_msglim Module Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        moda_msglim Module Reference
                                                        +
                                                        +
                                                        + +

                                                        Declare an array used to keep track of which logical units should not have any empty (zero data subset) BUFR messages written to them. +More...

                                                        + + + + + +

                                                        +Variables

                                                        integer, dimension(:), allocatable msglim
                                                         Tracking index for each file ID. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Declare an array used to keep track of which logical units should not have any empty (zero data subset) BUFR messages written to them.

                                                        +

                                                        This setting is turned on via a call to subroutine closmg() with LUNIN < 0 for the logical unit in question, and once set it remains in effect for the remainder of the life of the application program for that particular logical unit.

                                                        +
                                                        Author
                                                        D. Keyser
                                                        +
                                                        Date
                                                        2005-05-26
                                                        +

                                                        Variable Documentation

                                                        + +

                                                        ◆ msglim

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer, dimension(:), allocatable moda_msglim::msglim
                                                        +
                                                        + +

                                                        Tracking index for each file ID.

                                                        +

                                                        Initialized to a value of 3 within subroutine bfrini(), and then reset to a value of 0 within subroutine closmg() if the corresponding logical unit should not have any empty (zero data subset) BUFR messages written to it.

                                                        + +

                                                        Definition at line 346 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), bfrini(), and closmg().

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/namespacemoda__msgmem.html b/previous_versions/v12.1.0/namespacemoda__msgmem.html new file mode 100644 index 000000000..83974f2b2 --- /dev/null +++ b/previous_versions/v12.1.0/namespacemoda__msgmem.html @@ -0,0 +1,459 @@ + + + + + + + +NCEPLIBS-bufr: moda_msgmem Module Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        moda_msgmem Module Reference
                                                        +
                                                        +
                                                        + +

                                                        Declare arrays and variables used to store the contents of one or more BUFR files within internal memory. +More...

                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                                                        +Variables

                                                        integer, dimension(:), allocatable icdxts
                                                         Number of consecutive messages within mdx which constitute each DX BUFR table, beginning with the corresponding ifdxts. More...
                                                         
                                                        integer, dimension(:), allocatable ifdxts
                                                         Pointers to the beginning of each DX BUFR table within mdx. More...
                                                         
                                                        integer, dimension(:), allocatable ipdxm
                                                         Pointers to the beginning of each message within mdx. More...
                                                         
                                                        integer, dimension(:), allocatable ipmsgs
                                                         Pointers to first message within msgs for which each DX BUFR table applies. More...
                                                         
                                                        integer ldxm
                                                         Number of array elements filled within mdx (up to a maximum of mxdxw). More...
                                                         
                                                        integer ldxts
                                                         Number of DX BUFR table that is currently in scope, depending on which BUFR message within msgs is currently in scope from the most recent call to subroutine rdmemm() or readmm(). More...
                                                         
                                                        integer, dimension(:), allocatable mdx
                                                         DX BUFR table messages read from one or more BUFR files, for use in decoding the messages in msgs. More...
                                                         
                                                        integer mlast
                                                         Number of array elements filled within msgs (up to a maximum of maxmem). More...
                                                         
                                                        integer, dimension(:), allocatable msgp
                                                         Pointers to the beginning of each message within msgs (up to a maximum of maxmsg, and where array element 0 contains the actual number of messages stored within msgs). More...
                                                         
                                                        integer, dimension(:), allocatable msgs
                                                         BUFR messages read from one or more BUFR files. More...
                                                         
                                                        integer munit
                                                         Fortran logical unit number for use in accessing contents of BUFR files within internal memory. More...
                                                         
                                                        integer mxdxm
                                                         Maximum number of DX BUFR table messages that can be stored within mdx. More...
                                                         
                                                        integer mxdxw
                                                         Maximum number of entries that can be stored within mdx. More...
                                                         
                                                        integer ndxm
                                                         Number of DX BUFR table messages stored within mdx (up to a maximum of mxdxm). More...
                                                         
                                                        integer ndxts
                                                         Number of DX BUFR tables represented by the messages within mdx (up to a maximum of mxdxts). More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Declare arrays and variables used to store the contents of one or more BUFR files within internal memory.

                                                        +

                                                        Data values within this module are stored by subroutines ufbmem() and cpdxmm().

                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2014-12-10
                                                        +

                                                        Variable Documentation

                                                        + +

                                                        ◆ icdxts

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer, dimension(:), allocatable moda_msgmem::icdxts
                                                        +
                                                        + +

                                                        Number of consecutive messages within mdx which constitute each DX BUFR table, beginning with the corresponding ifdxts.

                                                        + +

                                                        Definition at line 392 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), cpdxmm(), and rdmemm().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ ifdxts

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer, dimension(:), allocatable moda_msgmem::ifdxts
                                                        +
                                                        + +

                                                        Pointers to the beginning of each DX BUFR table within mdx.

                                                        + +

                                                        Definition at line 389 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), cpdxmm(), and rdmemm().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ ipdxm

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer, dimension(:), allocatable moda_msgmem::ipdxm
                                                        +
                                                        + +

                                                        Pointers to the beginning of each message within mdx.

                                                        + +

                                                        Definition at line 387 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), cpdxmm(), and rdmemm().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ ipmsgs

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer, dimension(:), allocatable moda_msgmem::ipmsgs
                                                        +
                                                        + +

                                                        Pointers to first message within msgs for which each DX BUFR table applies.

                                                        + +

                                                        Definition at line 394 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), cpdxmm(), rdmemm(), and ufbmex().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ ldxm

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer moda_msgmem::ldxm
                                                        +
                                                        + +

                                                        Number of array elements filled within mdx (up to a maximum of mxdxw).

                                                        + +

                                                        Definition at line 362 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by cpdxmm(), rdmemm(), ufbmem(), and ufbmex().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ ldxts

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer moda_msgmem::ldxts
                                                        +
                                                        + +

                                                        Number of DX BUFR table that is currently in scope, depending on which BUFR message within msgs is currently in scope from the most recent call to subroutine rdmemm() or readmm().

                                                        + +

                                                        Definition at line 369 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by rdmemm(), ufbmem(), ufbmex(), and ufbtam().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ mdx

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer, dimension(:), allocatable moda_msgmem::mdx
                                                        +
                                                        + +

                                                        DX BUFR table messages read from one or more BUFR files, for use in decoding the messages in msgs.

                                                        + +

                                                        Definition at line 385 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), cpdxmm(), and rdmemm().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ mlast

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer moda_msgmem::mlast
                                                        +
                                                        + +

                                                        Number of array elements filled within msgs (up to a maximum of maxmem).

                                                        + +

                                                        Definition at line 360 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by rdmemm(), ufbmem(), and ufbmex().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ msgp

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer, dimension(:), allocatable moda_msgmem::msgp
                                                        +
                                                        + +

                                                        Pointers to the beginning of each message within msgs (up to a maximum of maxmsg, and where array element 0 contains the actual number of messages stored within msgs).

                                                        + +

                                                        Definition at line 380 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), cpdxmm(), rdmemm(), ufbmem(), ufbmex(), ufbmms(), ufbrms(), and ufbtam().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ msgs

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer, dimension(:), allocatable moda_msgmem::msgs
                                                        +
                                                        + +

                                                        BUFR messages read from one or more BUFR files.

                                                        + +

                                                        Definition at line 382 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), rdmemm(), ufbmem(), and ufbmex().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ munit

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer moda_msgmem::munit
                                                        +
                                                        + +

                                                        Fortran logical unit number for use in accessing contents of BUFR files within internal memory.

                                                        + +

                                                        Definition at line 358 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by cpymem(), rdmemm(), rdmems(), ufbmem(), ufbmex(), ufbmms(), ufbmns(), ufbrms(), and ufbtam().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ mxdxm

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer moda_msgmem::mxdxm
                                                        +
                                                        + +

                                                        Maximum number of DX BUFR table messages that can be stored within mdx.

                                                        + +

                                                        Definition at line 374 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), and cpdxmm().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ mxdxw

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer moda_msgmem::mxdxw
                                                        +
                                                        + +

                                                        Maximum number of entries that can be stored within mdx.

                                                        + +

                                                        Definition at line 376 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), and cpdxmm().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ ndxm

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer moda_msgmem::ndxm
                                                        +
                                                        + +

                                                        Number of DX BUFR table messages stored within mdx (up to a maximum of mxdxm).

                                                        + +

                                                        Definition at line 365 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by cpdxmm(), rdmemm(), ufbmem(), and ufbmex().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ ndxts

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer moda_msgmem::ndxts
                                                        +
                                                        + +

                                                        Number of DX BUFR tables represented by the messages within mdx (up to a maximum of mxdxts).

                                                        + +

                                                        Definition at line 372 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by cpdxmm(), rdmemm(), ufbmem(), and ufbmex().

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/namespacemoda__msgstd.html b/previous_versions/v12.1.0/namespacemoda__msgstd.html new file mode 100644 index 000000000..eda5eae17 --- /dev/null +++ b/previous_versions/v12.1.0/namespacemoda__msgstd.html @@ -0,0 +1,140 @@ + + + + + + + +NCEPLIBS-bufr: moda_msgstd Module Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        moda_msgstd Module Reference
                                                        +
                                                        +
                                                        + +

                                                        Declare a variable used to indicate whether output BUFR messages should be standardized. +More...

                                                        + + + + + +

                                                        +Variables

                                                        character csmf = 'N'
                                                         Flag indicating whether BUFR output messages are to be standardized; this variable is initialized to a default value which can be overridden by a subsequent call to subroutine stdmsg() within the application program: More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Declare a variable used to indicate whether output BUFR messages should be standardized.

                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2024-03-22
                                                        +

                                                        Variable Documentation

                                                        + +

                                                        ◆ csmf

                                                        + +
                                                        +
                                                        + + + + +
                                                        character moda_msgstd::csmf = 'N'
                                                        +
                                                        + +

                                                        Flag indicating whether BUFR output messages are to be standardized; this variable is initialized to a default value which can be overridden by a subsequent call to subroutine stdmsg() within the application program:

                                                        +
                                                          +
                                                        • 'N' = No (default)
                                                        • +
                                                        • 'Y' = Yes
                                                        • +
                                                        + +

                                                        Definition at line 864 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by msgfull(), msgwrt(), and stdmsg().

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/namespacemoda__mstabs.html b/previous_versions/v12.1.0/namespacemoda__mstabs.html new file mode 100644 index 000000000..85b4ebcfa --- /dev/null +++ b/previous_versions/v12.1.0/namespacemoda__mstabs.html @@ -0,0 +1,436 @@ + + + + + + + +NCEPLIBS-bufr: moda_mstabs Module Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        moda_mstabs Module Reference
                                                        +
                                                        +
                                                        + +

                                                        Declare arrays and variables used to store master Table B and Table D entries within internal memory. +More...

                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                                                        +Variables

                                                        character, dimension(:,:), allocatable cbbw
                                                         Bit widths corresponding to ibfxyn. More...
                                                         
                                                        character, dimension(:,:), allocatable cbelem
                                                         Element names corresponding to ibfxyn. More...
                                                         
                                                        character, dimension(:,:), allocatable cbmnem
                                                         Mnemonics corresponding to ibfxyn. More...
                                                         
                                                        character, dimension(:,:), allocatable cbscl
                                                         Scale factors corresponding to ibfxyn. More...
                                                         
                                                        character, dimension(:,:), allocatable cbsref
                                                         Reference values corresponding to ibfxyn. More...
                                                         
                                                        character, dimension(:,:), allocatable cbunit
                                                         Units corresponding to ibfxyn. More...
                                                         
                                                        character, dimension(:,:), allocatable cdmnem
                                                         Mnemonics corresponding to idfxyn. More...
                                                         
                                                        character, dimension(:,:), allocatable cdseq
                                                         Sequence names corresponding to idfxyn. More...
                                                         
                                                        integer, dimension(:), allocatable ibfxyn
                                                         WMO bit-wise representations of FXY numbers for master Table B. More...
                                                         
                                                        integer, dimension(:), allocatable idefxy
                                                         WMO bit-wise representations of child descriptors corresponding to idfxyn. More...
                                                         
                                                        integer, dimension(:), allocatable idfxyn
                                                         WMO bit-wise representations of FXY numbers for master Table D. More...
                                                         
                                                        integer, dimension(:), allocatable ndelem
                                                         Numbers of child descriptors corresponding to idfxyn. More...
                                                         
                                                        integer nmtb
                                                         Number of master Table B entries (up to a maximum of mxmtbb). More...
                                                         
                                                        integer nmtd
                                                         Number of master Table D entries (up to a maximum of mxmtbd). More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Declare arrays and variables used to store master Table B and Table D entries within internal memory.

                                                        +

                                                        Data values within this module are stored by subroutine ireadmt().

                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2014-12-10
                                                        +

                                                        Variable Documentation

                                                        + +

                                                        ◆ cbbw

                                                        + +
                                                        +
                                                        + + + + +
                                                        character, dimension(:,:), allocatable moda_mstabs::cbbw
                                                        +
                                                        + +

                                                        Bit widths corresponding to ibfxyn.

                                                        + +

                                                        Definition at line 415 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), cpmstabs(), and ireadmt().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ cbelem

                                                        + +
                                                        +
                                                        + + + + +
                                                        character, dimension(:,:), allocatable moda_mstabs::cbelem
                                                        +
                                                        + +

                                                        Element names corresponding to ibfxyn.

                                                        + +

                                                        Definition at line 421 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), cpmstabs(), and ireadmt().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ cbmnem

                                                        + +
                                                        +
                                                        + + + + +
                                                        character, dimension(:,:), allocatable moda_mstabs::cbmnem
                                                        +
                                                        + +

                                                        Mnemonics corresponding to ibfxyn.

                                                        + +

                                                        Definition at line 419 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), cpmstabs(), and ireadmt().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ cbscl

                                                        + +
                                                        +
                                                        + + + + +
                                                        character, dimension(:,:), allocatable moda_mstabs::cbscl
                                                        +
                                                        + +

                                                        Scale factors corresponding to ibfxyn.

                                                        + +

                                                        Definition at line 411 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), cpmstabs(), and ireadmt().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ cbsref

                                                        + +
                                                        +
                                                        + + + + +
                                                        character, dimension(:,:), allocatable moda_mstabs::cbsref
                                                        +
                                                        + +

                                                        Reference values corresponding to ibfxyn.

                                                        + +

                                                        Definition at line 413 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), cpmstabs(), and ireadmt().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ cbunit

                                                        + +
                                                        +
                                                        + + + + +
                                                        character, dimension(:,:), allocatable moda_mstabs::cbunit
                                                        +
                                                        + +

                                                        Units corresponding to ibfxyn.

                                                        + +

                                                        Definition at line 417 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), cpmstabs(), and ireadmt().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ cdmnem

                                                        + +
                                                        +
                                                        + + + + +
                                                        character, dimension(:,:), allocatable moda_mstabs::cdmnem
                                                        +
                                                        + +

                                                        Mnemonics corresponding to idfxyn.

                                                        + +

                                                        Definition at line 427 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), cpmstabs(), and ireadmt().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ cdseq

                                                        + +
                                                        +
                                                        + + + + +
                                                        character, dimension(:,:), allocatable moda_mstabs::cdseq
                                                        +
                                                        + +

                                                        Sequence names corresponding to idfxyn.

                                                        + +

                                                        Definition at line 425 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), cpmstabs(), and ireadmt().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ ibfxyn

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer, dimension(:), allocatable moda_mstabs::ibfxyn
                                                        +
                                                        + +

                                                        WMO bit-wise representations of FXY numbers for master Table B.

                                                        + +

                                                        Definition at line 409 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), cpmstabs(), and ireadmt().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ idefxy

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer, dimension(:), allocatable moda_mstabs::idefxy
                                                        +
                                                        + +

                                                        WMO bit-wise representations of child descriptors corresponding to idfxyn.

                                                        + +

                                                        Definition at line 431 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), cpmstabs(), and ireadmt().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ idfxyn

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer, dimension(:), allocatable moda_mstabs::idfxyn
                                                        +
                                                        + +

                                                        WMO bit-wise representations of FXY numbers for master Table D.

                                                        + +

                                                        Definition at line 423 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), cpmstabs(), and ireadmt().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ ndelem

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer, dimension(:), allocatable moda_mstabs::ndelem
                                                        +
                                                        + +

                                                        Numbers of child descriptors corresponding to idfxyn.

                                                        + +

                                                        Definition at line 429 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), cpmstabs(), and ireadmt().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ nmtb

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer moda_mstabs::nmtb
                                                        +
                                                        + +

                                                        Number of master Table B entries (up to a maximum of mxmtbb).

                                                        + +

                                                        Definition at line 405 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by cpmstabs(), and ireadmt().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ nmtd

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer moda_mstabs::nmtd
                                                        +
                                                        + +

                                                        Number of master Table D entries (up to a maximum of mxmtbd).

                                                        + +

                                                        Definition at line 407 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by cpmstabs(), and ireadmt().

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/namespacemoda__nmikrp.html b/previous_versions/v12.1.0/namespacemoda__nmikrp.html new file mode 100644 index 000000000..32fd21098 --- /dev/null +++ b/previous_versions/v12.1.0/namespacemoda__nmikrp.html @@ -0,0 +1,195 @@ + + + + + + + +NCEPLIBS-bufr: moda_nmikrp Module Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        moda_nmikrp Module Reference
                                                        +
                                                        +
                                                        + +

                                                        Declare arrays used by various subroutines to hold information about Table D sequences. +More...

                                                        + + + + + + + + + + + +

                                                        +Variables

                                                        integer, dimension(:,:), allocatable irp
                                                         Replication indicators corresponding to nem: More...
                                                         
                                                        integer, dimension(:,:), allocatable krp
                                                         Replication counts corresponding to nem: More...
                                                         
                                                        character *8, dimension(:,:), allocatable nem
                                                         Child mnemonics within Table D sequences. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Declare arrays used by various subroutines to hold information about Table D sequences.

                                                        +

                                                        The values in these arrays are set via an internal call to subroutine nemtbd().

                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        +

                                                        Variable Documentation

                                                        + +

                                                        ◆ irp

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer, dimension(:,:), allocatable moda_nmikrp::irp
                                                        +
                                                        + +

                                                        Replication indicators corresponding to nem:

                                                        +
                                                          +
                                                        • 5, if corresponding nem is a Table D mnemonic using 1-bit delayed replication
                                                        • +
                                                        • 4, if corresponding nem is a Table D mnemonic using 8-bit delayed (stack) replication
                                                        • +
                                                        • 3, if corresponding nem is a Table D mnemonic using 8-bit delayed replication
                                                        • +
                                                        • 2, if corresponding nem is a Table D mnemonic using 16-bit delayed replication
                                                        • +
                                                        • 1, if corresponding nem is a Table D mnemonic using regular (non-delayed) replication
                                                        • +
                                                        • 0, otherwise
                                                        • +
                                                        + +

                                                        Definition at line 449 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), chekstab(), dxdump(), getabdb(), and tabsub().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ krp

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer, dimension(:,:), allocatable moda_nmikrp::krp
                                                        +
                                                        + +

                                                        Replication counts corresponding to nem:

                                                        +
                                                          +
                                                        • Number of replications, if corresponding nem is a Table D mnemonic using regular (non-delayed) replication
                                                        • +
                                                        • 0, otherwise
                                                        • +
                                                        + +

                                                        Definition at line 454 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), chekstab(), dxdump(), getabdb(), and tabsub().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ nem

                                                        + +
                                                        +
                                                        + + + + +
                                                        character*8, dimension(:,:), allocatable moda_nmikrp::nem
                                                        +
                                                        + +

                                                        Child mnemonics within Table D sequences.

                                                        + +

                                                        Definition at line 441 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), chekstab(), dxdump(), getabdb(), and tabsub().

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/namespacemoda__nrv203.html b/previous_versions/v12.1.0/namespacemoda__nrv203.html new file mode 100644 index 000000000..209ff4c72 --- /dev/null +++ b/previous_versions/v12.1.0/namespacemoda__nrv203.html @@ -0,0 +1,298 @@ + + + + + + + +NCEPLIBS-bufr: moda_nrv203 Module Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        moda_nrv203 Module Reference
                                                        +
                                                        +
                                                        + +

                                                        Declare arrays and variables for use with any 2-03-YYY (change reference value) operators present within the internal jump/link table. +More...

                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + +

                                                        +Variables

                                                        integer ibtnrv
                                                         Number of bits in Section 4 occupied by each new reference value for the current 2-03-YYY operator in scope; set to 0 if no such operator is currently in scope. More...
                                                         
                                                        integer, dimension(:), allocatable ienrv
                                                         End of entry range in jump/link table, within which the corresponding new reference value in nrv will be applied to all occurrences of the corresponding Table B mnemonic in tagnrv. More...
                                                         
                                                        integer, dimension(:), allocatable inodnrv
                                                         Entries within jump/link table which contain new reference values. More...
                                                         
                                                        integer ipfnrv
                                                         A number between 1 and nnrv, denoting the first entry within the module arrays which applies to the current data subset in scope; set to 0 if no 2-03-YYY operators have been applied to the current data subset in scope. More...
                                                         
                                                        integer, dimension(:), allocatable isnrv
                                                         Start of entry range in jump/link table, within which the corresponding new reference value in nrv will be applied to all occurrences of the corresponding Table B mnemonic in tagnrv. More...
                                                         
                                                        integer nnrv
                                                         Number of entries in the jump/link table which contain new reference values (up to a maximum of mxnrv). More...
                                                         
                                                        integer *8, dimension(:), allocatable nrv
                                                         New reference values corresponding to inodnrv. More...
                                                         
                                                        character *8, dimension(:), allocatable tagnrv
                                                         Table B mnemonic to which the corresponding new reference value in nrv applies. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Declare arrays and variables for use with any 2-03-YYY (change reference value) operators present within the internal jump/link table.

                                                        +

                                                        Data values within this module are stored by subroutine tabsub().

                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2012-03-02
                                                        +

                                                        Variable Documentation

                                                        + +

                                                        ◆ ibtnrv

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer moda_nrv203::ibtnrv
                                                        +
                                                        + +

                                                        Number of bits in Section 4 occupied by each new reference value for the current 2-03-YYY operator in scope; set to 0 if no such operator is currently in scope.

                                                        + +

                                                        Definition at line 471 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by tabent(), and tabsub().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ ienrv

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer, dimension(:), allocatable moda_nrv203::ienrv
                                                        +
                                                        + +

                                                        End of entry range in jump/link table, within which the corresponding new reference value in nrv will be applied to all occurrences of the corresponding Table B mnemonic in tagnrv.

                                                        + +

                                                        Definition at line 491 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), igetrfel(), ipks(), nemspecs(), tabsub(), and ups().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ inodnrv

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer, dimension(:), allocatable moda_nrv203::inodnrv
                                                        +
                                                        + +

                                                        Entries within jump/link table which contain new reference values.

                                                        + +

                                                        Definition at line 481 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), igetrfel(), ipks(), nemspecs(), tabent(), ufdump(), and ups().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ ipfnrv

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer moda_nrv203::ipfnrv
                                                        +
                                                        + +

                                                        A number between 1 and nnrv, denoting the first entry within the module arrays which applies to the current data subset in scope; set to 0 if no 2-03-YYY operators have been applied to the current data subset in scope.

                                                        + +

                                                        Definition at line 476 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by tabent(), and tabsub().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ isnrv

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer, dimension(:), allocatable moda_nrv203::isnrv
                                                        +
                                                        + +

                                                        Start of entry range in jump/link table, within which the corresponding new reference value in nrv will be applied to all occurrences of the corresponding Table B mnemonic in tagnrv.

                                                        + +

                                                        Definition at line 487 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), igetrfel(), ipks(), nemspecs(), tabent(), and ups().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ nnrv

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer moda_nrv203::nnrv
                                                        +
                                                        + +

                                                        Number of entries in the jump/link table which contain new reference values (up to a maximum of mxnrv).

                                                        + +

                                                        Definition at line 467 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by igetrfel(), ipks(), makestab(), nemspecs(), tabent(), tabsub(), ufdump(), and ups().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ nrv

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer*8, dimension(:), allocatable moda_nrv203::nrv
                                                        +
                                                        + +

                                                        New reference values corresponding to inodnrv.

                                                        + +

                                                        Definition at line 483 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), igetrfel(), ipks(), nemspecs(), and ups().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ tagnrv

                                                        + +
                                                        +
                                                        + + + + +
                                                        character*8, dimension(:), allocatable moda_nrv203::tagnrv
                                                        +
                                                        + +

                                                        Table B mnemonic to which the corresponding new reference value in nrv applies.

                                                        + +

                                                        Definition at line 479 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), igetrfel(), ipks(), nemspecs(), tabent(), and ups().

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/namespacemoda__nulbfr.html b/previous_versions/v12.1.0/namespacemoda__nulbfr.html new file mode 100644 index 000000000..6bd70d61a --- /dev/null +++ b/previous_versions/v12.1.0/namespacemoda__nulbfr.html @@ -0,0 +1,141 @@ + + + + + + + +NCEPLIBS-bufr: moda_nulbfr Module Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        moda_nulbfr Module Reference
                                                        +
                                                        +
                                                        + +

                                                        Declare an array used to store a switch for each file ID, indicating whether any BUFR messages should actually be written to the corresponding logical unit. +More...

                                                        + + + + + +

                                                        +Variables

                                                        integer, dimension(:), allocatable null
                                                         Output switch for each file ID: More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Declare an array used to store a switch for each file ID, indicating whether any BUFR messages should actually be written to the corresponding logical unit.

                                                        +

                                                        The default value is "on", indicating that BUFR messages should be written to the corresponding logical unit, but it can be switched to a value of "off" if it is connected to the library via a call to subroutine openbf() with IO = 'NUL', and in which case no output will actually be written to the corresponding logical unit. This can be useful if, for example, an application program is planning to use subroutine writsa() to return output BUFR messages via a memory array and doesn't want to also have them automatically written out to a file.

                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        2003-11-04
                                                        +

                                                        Variable Documentation

                                                        + +

                                                        ◆ null

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer, dimension(:), allocatable moda_nulbfr::null
                                                        +
                                                        + +

                                                        Output switch for each file ID:

                                                        +
                                                          +
                                                        • 0 BUFR messages will be written to corresponding logical unit (default)
                                                        • +
                                                        • 1 no BUFR messages will be written to corresponding logical unit
                                                        • +
                                                        + +

                                                        Definition at line 514 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), closbf(), msgwrt(), and openbf().

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/namespacemoda__rdmtb.html b/previous_versions/v12.1.0/namespacemoda__rdmtb.html new file mode 100644 index 000000000..0758c5b1f --- /dev/null +++ b/previous_versions/v12.1.0/namespacemoda__rdmtb.html @@ -0,0 +1,206 @@ + + + + + + + +NCEPLIBS-bufr: moda_rdmtb Module Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        moda_rdmtb Module Reference
                                                        +
                                                        +
                                                        + +

                                                        Declare arrays and variables used to store master Table B and Table D entries within internal memory. +More...

                                                        + + + + + + + + + + + + + + +

                                                        +Variables

                                                        character *120, dimension(:,:), allocatable ceelem
                                                         Element names corresponding to iefxyn. More...
                                                         
                                                        character *4, dimension(:), allocatable cmdscb
                                                         Descriptor codes for Table B elements. More...
                                                         
                                                        character *4, dimension(:), allocatable cmdscd
                                                         Descriptor codes for Table D sequences. More...
                                                         
                                                        integer, dimension(:,:), allocatable iefxyn
                                                         WMO bit-wise representations of child descriptors of Table D sequences. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Declare arrays and variables used to store master Table B and Table D entries within internal memory.

                                                        +

                                                        Data values within this module are stored by subroutine ireadmt().

                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2014-12-10
                                                        +

                                                        Variable Documentation

                                                        + +

                                                        ◆ ceelem

                                                        + +
                                                        +
                                                        + + + + +
                                                        character*120, dimension(:,:), allocatable moda_rdmtb::ceelem
                                                        +
                                                        + +

                                                        Element names corresponding to iefxyn.

                                                        + +

                                                        Definition at line 531 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), and ireadmt().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ cmdscb

                                                        + +
                                                        +
                                                        + + + + +
                                                        character*4, dimension(:), allocatable moda_rdmtb::cmdscb
                                                        +
                                                        + +

                                                        Descriptor codes for Table B elements.

                                                        + +

                                                        Definition at line 527 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), and ireadmt().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ cmdscd

                                                        + +
                                                        +
                                                        + + + + +
                                                        character*4, dimension(:), allocatable moda_rdmtb::cmdscd
                                                        +
                                                        + +

                                                        Descriptor codes for Table D sequences.

                                                        + +

                                                        Definition at line 529 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), and ireadmt().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ iefxyn

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer, dimension(:,:), allocatable moda_rdmtb::iefxyn
                                                        +
                                                        + +

                                                        WMO bit-wise representations of child descriptors of Table D sequences.

                                                        + +

                                                        Definition at line 525 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), and ireadmt().

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/namespacemoda__rlccmn.html b/previous_versions/v12.1.0/namespacemoda__rlccmn.html new file mode 100644 index 000000000..bab46d1b2 --- /dev/null +++ b/previous_versions/v12.1.0/namespacemoda__rlccmn.html @@ -0,0 +1,205 @@ + + + + + + + +NCEPLIBS-bufr: moda_rlccmn Module Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        moda_rlccmn Module Reference
                                                        +
                                                        +
                                                        + +

                                                        Declare arrays and variables needed to store information about long character strings (greater than 8 bytes) when reading them from input data subsets in compressed BUFR messages via subroutines rdcmps() and readlc(). +More...

                                                        + + + + + + + + + + + + + + +

                                                        +Variables

                                                        character *10, dimension(:), allocatable crtag
                                                         Table B mnemonics associated with long character strings. More...
                                                         
                                                        integer, dimension(:), allocatable irbit
                                                         Pointers in data subset to first bits of long character strings. More...
                                                         
                                                        integer, dimension(:), allocatable irnch
                                                         Lengths (in bytes) of long character strings. More...
                                                         
                                                        integer nrst
                                                         Number of long character strings in data subset. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Declare arrays and variables needed to store information about long character strings (greater than 8 bytes) when reading them from input data subsets in compressed BUFR messages via subroutines rdcmps() and readlc().

                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        2009-03-23
                                                        +

                                                        Variable Documentation

                                                        + +

                                                        ◆ crtag

                                                        + +
                                                        +
                                                        + + + + +
                                                        character*10, dimension(:), allocatable moda_rlccmn::crtag
                                                        +
                                                        + +

                                                        Table B mnemonics associated with long character strings.

                                                        + +

                                                        Definition at line 548 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), rdcmps(), and readlc().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ irbit

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer, dimension(:), allocatable moda_rlccmn::irbit
                                                        +
                                                        + +

                                                        Pointers in data subset to first bits of long character strings.

                                                        + +

                                                        Definition at line 546 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), rdcmps(), and readlc().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ irnch

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer, dimension(:), allocatable moda_rlccmn::irnch
                                                        +
                                                        + +

                                                        Lengths (in bytes) of long character strings.

                                                        + +

                                                        Definition at line 544 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), rdcmps(), and readlc().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ nrst

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer moda_rlccmn::nrst
                                                        +
                                                        + +

                                                        Number of long character strings in data subset.

                                                        + +

                                                        Definition at line 542 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by rdcmps(), and readlc().

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/namespacemoda__s01cm.html b/previous_versions/v12.1.0/namespacemoda__s01cm.html new file mode 100644 index 000000000..b3b1c5936 --- /dev/null +++ b/previous_versions/v12.1.0/namespacemoda__s01cm.html @@ -0,0 +1,183 @@ + + + + + + + +NCEPLIBS-bufr: moda_s01cm Module Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        moda_s01cm Module Reference
                                                        +
                                                        +
                                                        + +

                                                        Declare arrays and variables used to store custom values for certain mnemonics within Sections 0 and 1 of all future output BUFR messages written to all Fortran logical units. +More...

                                                        + + + + + + + + + + + +

                                                        +Variables

                                                        character *8, dimension(:), allocatable cmnem
                                                         Section 0 and 1 mnemonics corresponding to ivmnem. More...
                                                         
                                                        integer, dimension(:), allocatable ivmnem
                                                         Custom values for use within Sections 0 and 1 of all future output BUFR messages written to all Fortran logical units. More...
                                                         
                                                        integer ns01v = 0
                                                         Number of custom values stored. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Declare arrays and variables used to store custom values for certain mnemonics within Sections 0 and 1 of all future output BUFR messages written to all Fortran logical units.

                                                        +

                                                        These values are specified via one or more calls to subroutine pkvs01(). Otherwise, default values for these mnemonics are used as defined within subroutines msgini(), cmsgini(), or dxmini().

                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2015-03-03
                                                        +

                                                        Variable Documentation

                                                        + +

                                                        ◆ cmnem

                                                        + +
                                                        +
                                                        + + + + +
                                                        character*8, dimension(:), allocatable moda_s01cm::cmnem
                                                        +
                                                        + +

                                                        Section 0 and 1 mnemonics corresponding to ivmnem.

                                                        + +

                                                        Definition at line 563 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), msgwrt(), pkvs01(), and wrcmps().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ ivmnem

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer, dimension(:), allocatable moda_s01cm::ivmnem
                                                        +
                                                        + +

                                                        Custom values for use within Sections 0 and 1 of all future output BUFR messages written to all Fortran logical units.

                                                        + +

                                                        Definition at line 561 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), msgwrt(), pkvs01(), and wrcmps().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ ns01v

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer moda_s01cm::ns01v = 0
                                                        +
                                                        + +

                                                        Number of custom values stored.

                                                        + +

                                                        Definition at line 565 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by exitbufr(), msgwrt(), pkvs01(), and wrcmps().

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/namespacemoda__s3list.html b/previous_versions/v12.1.0/namespacemoda__s3list.html new file mode 100644 index 000000000..1c22be532 --- /dev/null +++ b/previous_versions/v12.1.0/namespacemoda__s3list.html @@ -0,0 +1,159 @@ + + + + + + + +NCEPLIBS-bufr: moda_s3list Module Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        moda_s3list Module Reference
                                                        +
                                                        +
                                                        + +

                                                        Declare arrays used by various subroutines and functions to hold a temporary working copy of a Section 3 descriptor list. +More...

                                                        + + + + + + + + +

                                                        +Variables

                                                        character *6, dimension(:), allocatable cds3
                                                         Temporary working copy of Section 3 descriptor list in character form. More...
                                                         
                                                        integer, dimension(:), allocatable ids3
                                                         Temporary working copy of Section 3 descriptor list in integer form. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Declare arrays used by various subroutines and functions to hold a temporary working copy of a Section 3 descriptor list.

                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2024-02-27
                                                        +

                                                        Variable Documentation

                                                        + +

                                                        ◆ cds3

                                                        + +
                                                        +
                                                        + + + + +
                                                        character*6, dimension(:), allocatable moda_s3list::cds3
                                                        +
                                                        + +

                                                        Temporary working copy of Section 3 descriptor list in character form.

                                                        + +

                                                        Definition at line 309 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), ireadmt(), and reads3().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ ids3

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer, dimension(:), allocatable moda_s3list::ids3
                                                        +
                                                        + +

                                                        Temporary working copy of Section 3 descriptor list in integer form.

                                                        + +

                                                        Definition at line 307 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), reads3(), and stndrd().

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/namespacemoda__sc3bfr.html b/previous_versions/v12.1.0/namespacemoda__sc3bfr.html new file mode 100644 index 000000000..9386baedd --- /dev/null +++ b/previous_versions/v12.1.0/namespacemoda__sc3bfr.html @@ -0,0 +1,164 @@ + + + + + + + +NCEPLIBS-bufr: moda_sc3bfr Module Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        moda_sc3bfr Module Reference
                                                        +
                                                        +
                                                        + +

                                                        Declare an array used to store a switch for each file ID, indicating whether BUFR messages read from the corresponding logical unit should be decoded according to the contents of Section 3 and using master BUFR tables, rather than using DX BUFR tables. +More...

                                                        + + + + + + + + +

                                                        +Variables

                                                        integer, dimension(:), allocatable isc3
                                                         Section 3 switch for each file ID: More...
                                                         
                                                        character *8, dimension(:), allocatable tamnem
                                                         Table A mnemonic most recently read from each file ID, if isc3 = 1 for that stream. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Declare an array used to store a switch for each file ID, indicating whether BUFR messages read from the corresponding logical unit should be decoded according to the contents of Section 3 and using master BUFR tables, rather than using DX BUFR tables.

                                                        +

                                                        The default value is "off", indicating that BUFR messages read from the corresponding logical unit should be decoded using DX BUFR tables, but it can be switched to a value of "on" if the corresponding logical unit is connected to the library via a call to subroutine openbf() with IO = 'SEC3', and in which case each BUFR message will be decoded according to the contents of Section 3 and using master BUFR tables.

                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2009-03-23
                                                        +

                                                        Variable Documentation

                                                        + +

                                                        ◆ isc3

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer, dimension(:), allocatable moda_sc3bfr::isc3
                                                        +
                                                        + +

                                                        Section 3 switch for each file ID:

                                                        +
                                                          +
                                                        • 0 BUFR messages read from corresponding logical unit will be decoded using DX BUFR tables (default)
                                                        • +
                                                        • 1 BUFR messages read from corresponding logical unit will be decoded using master BUFR tables
                                                        • +
                                                        + +

                                                        Definition at line 587 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), cktaba(), ireadmt(), openbf(), readerme(), and readmg().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ tamnem

                                                        + +
                                                        +
                                                        + + + + +
                                                        character*8, dimension(:), allocatable moda_sc3bfr::tamnem
                                                        +
                                                        + +

                                                        Table A mnemonic most recently read from each file ID, if isc3 = 1 for that stream.

                                                        + +

                                                        Definition at line 589 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), cktaba(), and reads3().

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/namespacemoda__stbfr.html b/previous_versions/v12.1.0/namespacemoda__stbfr.html new file mode 100644 index 000000000..3a41b10e2 --- /dev/null +++ b/previous_versions/v12.1.0/namespacemoda__stbfr.html @@ -0,0 +1,167 @@ + + + + + + + +NCEPLIBS-bufr: moda_stbfr Module Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        moda_stbfr Module Reference
                                                        +
                                                        +
                                                        + +

                                                        Declare arrays used to store file and message status indicators for all logical units that have been connected to the library via previous calls to subroutine openbf(). +More...

                                                        + + + + + + + + +

                                                        +Variables

                                                        integer, dimension(:), allocatable iolun
                                                         File status indicators. More...
                                                         
                                                        integer, dimension(:), allocatable iomsg
                                                         Message status indicator corresponding to iolun, denoting whether a BUFR message is currently open within the internal arrays for the corresponding logical unit: More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Declare arrays used to store file and message status indicators for all logical units that have been connected to the library via previous calls to subroutine openbf().

                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        +

                                                        Variable Documentation

                                                        + +

                                                        ◆ iolun

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer, dimension(:), allocatable moda_stbfr::iolun
                                                        +
                                                        + +

                                                        File status indicators.

                                                        +

                                                        Every connected file ID has a non-zero value in this array:

                                                          +
                                                        • if the value is positive, then the logical unit number of this same value is connected for output (i.e. writing/encoding) BUFR
                                                        • +
                                                        • if the value is negative, then the logical unit number of the absolute value of this same value is connected for input (i.e. reading/decoding) BUFR
                                                        • +
                                                        + +

                                                        Definition at line 604 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), bfrini(), exitbufr(), makestab(), status(), and wtstat().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ iomsg

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer, dimension(:), allocatable moda_stbfr::iomsg
                                                        +
                                                        + +

                                                        Message status indicator corresponding to iolun, denoting whether a BUFR message is currently open within the internal arrays for the corresponding logical unit:

                                                        +
                                                          +
                                                        • 0 no
                                                        • +
                                                        • 1 yes
                                                        • +
                                                        + +

                                                        Definition at line 609 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), bfrini(), makestab(), status(), and wtstat().

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/namespacemoda__stcode.html b/previous_versions/v12.1.0/namespacemoda__stcode.html new file mode 100644 index 000000000..b2031b946 --- /dev/null +++ b/previous_versions/v12.1.0/namespacemoda__stcode.html @@ -0,0 +1,141 @@ + + + + + + + +NCEPLIBS-bufr: moda_stcode Module Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        moda_stcode Module Reference
                                                        +
                                                        +
                                                        + +

                                                        Declare an array used to store a status code for each file ID if an error or other abnormal result occurs while processing a BUFR message within the associated logical unit. +More...

                                                        + + + + + +

                                                        +Variables

                                                        integer, dimension(:), allocatable iscodes
                                                         Abnormal status codes. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Declare an array used to store a status code for each file ID if an error or other abnormal result occurs while processing a BUFR message within the associated logical unit.

                                                        +

                                                        The status code can be retrieved at any time by the application program via a call to subroutine igetsc().

                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2010-05-11
                                                        +

                                                        Variable Documentation

                                                        + +

                                                        ◆ iscodes

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer, dimension(:), allocatable moda_stcode::iscodes
                                                        +
                                                        + +

                                                        Abnormal status codes.

                                                        +
                                                          +
                                                        • 0 all is normal; no error occurred
                                                        • +
                                                        • 1 replication factor overflow in subroutine usrtpl()
                                                        • +
                                                        + +

                                                        Definition at line 623 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), igetsc(), openbf(), rdcmps(), readsb(), and usrtpl().

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/namespacemoda__tababd.html b/previous_versions/v12.1.0/namespacemoda__tababd.html new file mode 100644 index 000000000..fd540750c --- /dev/null +++ b/previous_versions/v12.1.0/namespacemoda__tababd.html @@ -0,0 +1,343 @@ + + + + + + + +NCEPLIBS-bufr: moda_tababd Module Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        moda_tababd Module Reference
                                                        +
                                                        +
                                                        + +

                                                        Declare arrays and variables used to store DX BUFR tables internally for multiple file IDs. +More...

                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                                                        +Variables

                                                        integer, dimension(:,:,:), allocatable idna
                                                         Message types (in array element 1) and subtypes (in array element 2) corresponding to taba. More...
                                                         
                                                        integer, dimension(:,:), allocatable idnb
                                                         WMO bit-wise representations of the FXY values corresponding to tabb. More...
                                                         
                                                        integer, dimension(:,:), allocatable idnd
                                                         WMO bit-wise representations of the FXY values corresponding to tabd. More...
                                                         
                                                        integer, dimension(:,:), allocatable mtab
                                                         Entries within jump/link table corresponding to taba. More...
                                                         
                                                        integer, dimension(:), allocatable ntba
                                                         Number of Table A entries for each file ID (up to a maximum of maxtba, whose value is stored in array element 0). More...
                                                         
                                                        integer, dimension(:), allocatable ntbb
                                                         Number of Table B entries for each file ID (up to a maximum of maxtbb, whose value is stored in array element 0). More...
                                                         
                                                        integer, dimension(:), allocatable ntbd
                                                         Number of Table D entries for each file ID (up to a maximum of maxtbd, whose value is stored in array element 0). More...
                                                         
                                                        character *128, dimension(:,:), allocatable taba
                                                         Table A entries for each file ID. More...
                                                         
                                                        character *128, dimension(:,:), allocatable tabb
                                                         Table B entries for each file ID. More...
                                                         
                                                        character *600, dimension(:,:), allocatable tabd
                                                         Table D entries for each file ID. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Declare arrays and variables used to store DX BUFR tables internally for multiple file IDs.

                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2014-12-10
                                                        +

                                                        Variable Documentation

                                                        + +

                                                        ◆ idna

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer, dimension(:,:,:), allocatable moda_tababd::idna
                                                        +
                                                        + +

                                                        Message types (in array element 1) and subtypes (in array element 2) corresponding to taba.

                                                        + +

                                                        Definition at line 644 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), cpbfdx(), icmpdx(), nemtbax(), rdusdx(), and stntbia().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ idnb

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer, dimension(:,:), allocatable moda_tababd::idnb
                                                        +
                                                        + +

                                                        WMO bit-wise representations of the FXY values corresponding to tabb.

                                                        + +

                                                        Definition at line 646 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), cpbfdx(), dxinit(), icmpdx(), nemtab(), nemtbb(), numtbd(), stbfdx(), and stntbi().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ idnd

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer, dimension(:,:), allocatable moda_tababd::idnd
                                                        +
                                                        + +

                                                        WMO bit-wise representations of the FXY values corresponding to tabd.

                                                        + +

                                                        Definition at line 648 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), cpbfdx(), dxinit(), icmpdx(), nemtab(), nemtbd(), numtbd(), stbfdx(), and stntbi().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ mtab

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer, dimension(:,:), allocatable moda_tababd::mtab
                                                        +
                                                        + +

                                                        Entries within jump/link table corresponding to taba.

                                                        + +

                                                        Definition at line 641 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), cpbfdx(), dxinit(), ishrdx(), makestab(), and nemtbax().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ ntba

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer, dimension(:), allocatable moda_tababd::ntba
                                                        +
                                                        + +

                                                        Number of Table A entries for each file ID (up to a maximum of maxtba, whose value is stored in array element 0).

                                                        + +

                                                        Definition at line 633 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), bfrini(), chekstab(), cpbfdx(), dxdump(), dxinit(), icmpdx(), igetntbi(), ishrdx(), makestab(), nemtbax(), stntbia(), and wrdxtb().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ ntbb

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer, dimension(:), allocatable moda_tababd::ntbb
                                                        +
                                                        + +

                                                        Number of Table B entries for each file ID (up to a maximum of maxtbb, whose value is stored in array element 0).

                                                        + +

                                                        Definition at line 636 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), bfrini(), chekstab(), cpbfdx(), dxdump(), dxinit(), getabdb(), icmpdx(), igetntbi(), nemtab(), nemtbb(), nenubd(), numtbd(), stbfdx(), stntbi(), and wrdxtb().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ ntbd

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer, dimension(:), allocatable moda_tababd::ntbd
                                                        +
                                                        + +

                                                        Number of Table D entries for each file ID (up to a maximum of maxtbd, whose value is stored in array element 0).

                                                        + +

                                                        Definition at line 639 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), bfrini(), chekstab(), cpbfdx(), dxdump(), dxinit(), getabdb(), icmpdx(), igetntbi(), nemtab(), nemtbd(), nenubd(), numtbd(), stbfdx(), stntbi(), and wrdxtb().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ taba

                                                        + +
                                                        +
                                                        + + + + +
                                                        character*128, dimension(:,:), allocatable moda_tababd::taba
                                                        +
                                                        + +

                                                        Table A entries for each file ID.

                                                        + +

                                                        Definition at line 650 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), chekstab(), cpbfdx(), dxdump(), dxinit(), icmpdx(), makestab(), nemtbax(), stbfdx(), stntbia(), and wrdxtb().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ tabb

                                                        + +
                                                        +
                                                        + + + + +
                                                        character*128, dimension(:,:), allocatable moda_tababd::tabb
                                                        +
                                                        + +

                                                        Table B entries for each file ID.

                                                        + +

                                                        Definition at line 652 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), cpbfdx(), dxdump(), dxinit(), elemdx(), getabdb(), getcfmng(), icmpdx(), nemdefs(), nemtab(), nemtbb(), nenubd(), numtbd(), stbfdx(), stntbi(), ufbdmp(), ufdump(), upftbv(), and wrdxtb().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ tabd

                                                        + +
                                                        +
                                                        + + + + +
                                                        character*600, dimension(:,:), allocatable moda_tababd::tabd
                                                        +
                                                        + +

                                                        Table D entries for each file ID.

                                                        + +

                                                        Definition at line 654 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), cpbfdx(), dxdump(), dxinit(), getabdb(), icmpdx(), nemtab(), nemtbd(), nenubd(), numtbd(), pktdd(), stbfdx(), stntbi(), uptdd(), and wrdxtb().

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/namespacemoda__tablef.html b/previous_versions/v12.1.0/namespacemoda__tablef.html new file mode 100644 index 000000000..0c4d0eba2 --- /dev/null +++ b/previous_versions/v12.1.0/namespacemoda__tablef.html @@ -0,0 +1,140 @@ + + + + + + + +NCEPLIBS-bufr: moda_tablef Module Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        moda_tablef Module Reference
                                                        +
                                                        +
                                                        + +

                                                        Declare a variable used to indicate whether master code and flag tables should be read. +More...

                                                        + + + + + +

                                                        +Variables

                                                        character cdmf = 'N'
                                                         Flag indicating whether to include code and flag table information during reads of master BUFR tables; this variable is initialized to a default value which can be overridden by a subsequent call to subroutine codflg() within the application program: More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Declare a variable used to indicate whether master code and flag tables should be read.

                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2024-05-29
                                                        +

                                                        Variable Documentation

                                                        + +

                                                        ◆ cdmf

                                                        + +
                                                        +
                                                        + + + + +
                                                        character moda_tablef::cdmf = 'N'
                                                        +
                                                        + +

                                                        Flag indicating whether to include code and flag table information during reads of master BUFR tables; this variable is initialized to a default value which can be overridden by a subsequent call to subroutine codflg() within the application program:

                                                        +
                                                          +
                                                        • 'N' = No (default)
                                                        • +
                                                        • 'Y' = Yes
                                                        • +
                                                        + +

                                                        Definition at line 887 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by codflg(), exitbufr(), getcfmng(), ireadmt(), and ufdump().

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/namespacemoda__tables.html b/previous_versions/v12.1.0/namespacemoda__tables.html new file mode 100644 index 000000000..637a2bd59 --- /dev/null +++ b/previous_versions/v12.1.0/namespacemoda__tables.html @@ -0,0 +1,514 @@ + + + + + + + +NCEPLIBS-bufr: moda_tables Module Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        moda_tables Module Reference
                                                        +
                                                        +
                                                        + +

                                                        Declare arrays and variables used to store the internal jump/link table. +More...

                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                                                        +Variables

                                                        integer, dimension(:), allocatable ibt
                                                         Bit widths corresponding to tag and typ: More...
                                                         
                                                        integer, dimension(:), allocatable irf
                                                         Reference values corresponding to tag and typ: More...
                                                         
                                                        integer, dimension(:), allocatable isc
                                                         Scale factors corresponding to tag and typ: More...
                                                         
                                                        integer, dimension(:,:), allocatable iseq
                                                         Temporary storage used in expanding sequences. More...
                                                         
                                                        integer, dimension(:), allocatable itp
                                                         Integer type values corresponding to typ: More...
                                                         
                                                        integer, dimension(:), allocatable jmpb
                                                         Jump backward indices corresponding to tag and typ: More...
                                                         
                                                        integer, dimension(:), allocatable jseq
                                                         Temporary storage used in expanding sequences. More...
                                                         
                                                        integer, dimension(:), allocatable jump
                                                         Jump forward indices corresponding to tag and typ: More...
                                                         
                                                        integer, dimension(:), allocatable knt
                                                         Temporary storage used in calculating delayed replication counts. More...
                                                         
                                                        integer, dimension(:), allocatable knti
                                                         Initialized replication counts corresponding to typ and jump: More...
                                                         
                                                        integer, dimension(:), allocatable link
                                                         Link indices corresponding to tag, typ and jmpb: More...
                                                         
                                                        integer ntab
                                                         Number of entries in the jump/link table. More...
                                                         
                                                        character *10, dimension(:), allocatable tag
                                                         Mnemonics in the jump/link table. More...
                                                         
                                                        character *3, dimension(:), allocatable typ
                                                         Type indicators corresponding to tag: More...
                                                         
                                                        real *8, dimension(:), allocatable vali
                                                         Initialized data values corresponding to typ: More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Declare arrays and variables used to store the internal jump/link table.

                                                        +

                                                        Data values within this module are stored by subroutines makestab(), tabsub() and tabent().

                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2014-12-10
                                                        +

                                                        Variable Documentation

                                                        + +

                                                        ◆ ibt

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer, dimension(:), allocatable moda_tables::ibt
                                                        +
                                                        + +

                                                        Bit widths corresponding to tag and typ:

                                                        +
                                                          +
                                                        • Bit width of corresponding tag entry, if corresponding typ entry is "CHR", "NUM", "DRB" or "DRP"
                                                        • +
                                                        • 0, otherwise
                                                        • +
                                                        + +

                                                        Definition at line 710 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), igetrfel(), iok2cpy(), ipks(), lcmgdf(), makestab(), nemspecs(), rcstpl(), rdcmps(), rdtree(), tabent(), tabsub(), ufbdmp(), ufbget(), ufbtab(), ufbtam(), ufdump(), ups(), usrtpl(), wrcmps(), writlc(), and wrtree().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ irf

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer, dimension(:), allocatable moda_tables::irf
                                                        +
                                                        + +

                                                        Reference values corresponding to tag and typ:

                                                        +
                                                          +
                                                        • Reference value of corresponding tag entry, if corresponding typ entry is "NUM"
                                                        • +
                                                        • Number of regular (non-delayed) replications of Table D mnemonic referenced by corresponding jump entry, if corresponding typ entry is "REP"
                                                        • +
                                                        • 0, otherwise
                                                        • +
                                                        + +

                                                        Definition at line 716 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), bufr_c2f_interface::get_irf_c(), igetrfel(), iok2cpy(), ipks(), makestab(), nemspecs(), tabent(), tabsub(), ufbdmp(), ufdump(), and ups().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ isc

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer, dimension(:), allocatable moda_tables::isc
                                                        +
                                                        + +

                                                        Scale factors corresponding to tag and typ:

                                                        +
                                                          +
                                                        • Scale factor of corresponding tag entry, if corresponding typ entry is "NUM"
                                                        • +
                                                        • Jump/link table entry for Table B or Table D mnemonic which is the last sequential child descriptor of the corresponding tag entry, if the corresponding typ entry is "SUB"
                                                        • +
                                                        • 0, otherwise
                                                        • +
                                                        + +

                                                        Definition at line 722 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), bufr_c2f_interface::get_isc_c(), igetrfel(), iok2cpy(), ipks(), lcmgdf(), lstjpb(), makestab(), nemspecs(), parutg(), strbtm(), tabent(), tabsub(), ufbdmp(), ufbseq(), ufdump(), and ups().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ iseq

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer, dimension(:,:), allocatable moda_tables::iseq
                                                        +
                                                        + +

                                                        Temporary storage used in expanding sequences.

                                                        + +

                                                        Definition at line 740 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), makestab(), rcstpl(), and usrtpl().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ itp

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer, dimension(:), allocatable moda_tables::itp
                                                        +
                                                        + +

                                                        Integer type values corresponding to typ:

                                                        +
                                                          +
                                                        • 1, if corresponding typ entry is "DRS", "DRP" or "DRB"
                                                        • +
                                                        • 2, if corresponding typ entry is "NUM"
                                                        • +
                                                        • 3, if corresponding typ entry is "CHR"
                                                        • +
                                                        • 0, otherwise
                                                        • +
                                                        + +

                                                        Definition at line 728 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), drfini(), bufr_c2f_interface::get_itp_c(), igetrfel(), invmrg(), makestab(), rcstpl(), rdcmps(), rdtree(), readlc(), strbtm(), ufbcup(), ufbdmp(), ufbget(), ufbseq(), ufbtab(), ufbtam(), ufdump(), usrtpl(), wrcmps(), writlc(), and wrtree().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ jmpb

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer, dimension(:), allocatable moda_tables::jmpb
                                                        +
                                                        + +

                                                        Jump backward indices corresponding to tag and typ:

                                                        +
                                                          +
                                                        • 0, if corresponding typ entry is "SUB"
                                                        • +
                                                        • Jump/link table entry denoting the replication of corresponding tag entry, if corresponding typ entry is "RPC", or if corresponding typ entry is "SEQ" and corresponding tag entry uses either short (1-bit) or regular (non-delayed) replication
                                                        • +
                                                        • Jump/link table entry for Table A or D mnemonic of which corresponding tag entry is a child descriptor, otherwise
                                                        • +
                                                        + +

                                                        Definition at line 706 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), drstpl(), bufr_c2f_interface::get_jmpb_c(), gettagpr(), lstjpb(), makestab(), tabent(), tabsub(), ufbdmp(), ufbseq(), and usrtpl().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ jseq

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer, dimension(:), allocatable moda_tables::jseq
                                                        +
                                                        + +

                                                        Temporary storage used in expanding sequences.

                                                        + +

                                                        Definition at line 742 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), makestab(), rcstpl(), and usrtpl().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ jump

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer, dimension(:), allocatable moda_tables::jump
                                                        +
                                                        + +

                                                        Jump forward indices corresponding to tag and typ:

                                                        +
                                                          +
                                                        • 0, if corresponding typ entry is "CHR" or "NUM"
                                                        • +
                                                        • Jump/link table entry for Table D mnemonic whose replication is denoted by corresponding tag entry, if corresponding typ entry is "DRB", "DRP" or "REP"
                                                        • +
                                                        • Jump/link table entry for Table B or D mnemonic which is the first sequential child descriptor of the corresponding tag entry, otherwise
                                                        • +
                                                        + +

                                                        Definition at line 692 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), makestab(), tabent(), tabsub(), and ufbdmp().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ knt

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer, dimension(:), allocatable moda_tables::knt
                                                        +
                                                        + +

                                                        Temporary storage used in calculating delayed replication counts.

                                                        + +

                                                        Definition at line 685 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), and makestab().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ knti

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer, dimension(:), allocatable moda_tables::knti
                                                        +
                                                        + +

                                                        Initialized replication counts corresponding to typ and jump:

                                                        +
                                                          +
                                                        • 0, if corresponding typ entry is "RPC", "RPS" or "DRB"
                                                        • +
                                                        • Number of regular (non-delayed) replications of Table D mnemonic referenced by corresponding jump entry, if corresponding typ entry is "REP"
                                                        • +
                                                        • 1, otherwise
                                                        • +
                                                        + +

                                                        Definition at line 738 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), and makestab().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ link

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer, dimension(:), allocatable moda_tables::link
                                                        +
                                                        + +

                                                        Link indices corresponding to tag, typ and jmpb:

                                                        +
                                                          +
                                                        • 0, if corresponding typ entry is "SUB" or "RPC", or if corresponding typ entry is "SEQ" and corresponding tag entry uses either short (1-bit) or regular (non-delayed) replication, or if corresponding tag entry is the last sequential child descriptor of the Table A or D mnemonic referenced by corresponding jmpb entry
                                                        • +
                                                        • Jump/link table entry for Table B or D mnemonic which follows the corresponding tag entry as the next sequential child descriptor of the Table A or D mnemonic referenced by corresponding jmpb entry, otherwise
                                                        • +
                                                        + +

                                                        Definition at line 699 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), bufr_c2f_interface::get_link_c(), makestab(), tabent(), tabsub(), ufbdmp(), and ufbseq().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ ntab

                                                        + + + +

                                                        ◆ tag

                                                        + +
                                                        +
                                                        + + + + +
                                                        character*10, dimension(:), allocatable moda_tables::tag
                                                        +
                                                        +
                                                        + +

                                                        ◆ typ

                                                        + +
                                                        +
                                                        + + + + +
                                                        character*3, dimension(:), allocatable moda_tables::typ
                                                        +
                                                        + +

                                                        Type indicators corresponding to tag:

                                                        +
                                                          +
                                                        • "SUB", if corresponding tag entry is a Table A mnemonic
                                                        • +
                                                        • "SEQ", if corresponding tag entry is a Table D mnemonic using either short (1-bit) delayed replication, regular (non-delayed) replication, or no replication at all
                                                        • +
                                                        • "RPC", if corresponding tag entry is a Table D mnemonic using either medium (8-bit) or long (16-bit) delayed replication
                                                        • +
                                                        • "RPS", if corresponding tag entry is a Table D mnemonic using medium (8-bit) delayed replication in a stack
                                                        • +
                                                        • "DRB", if corresponding tag entry denotes the short (1-bit) delayed replication of a Table D mnemonic
                                                        • +
                                                        • "DRP", if corresponding tag entry denotes the medium (8-bit) or long (16-bit) delayed replication of a Table D mnemonic
                                                        • +
                                                        • "DRS", if corresponding tag entry denotes the medium (8-bit) delayed replication of a Table D mnemonic in a stack
                                                        • +
                                                        • "REP", if corresponding tag entry denotes the regular (non-delayed) replication of a Table D mnemonic
                                                        • +
                                                        • "CHR", if corresponding tag entry is a Table B mnemonic with units of CCITT IA5
                                                        • +
                                                        • "NUM", if corresponding tag entry is a Table B mnemonic with any units other than CCITT IA5
                                                        • +
                                                        + +

                                                        Definition at line 683 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), drstpl(), bufr_c2f_interface::get_typ_c(), inctab(), invmrg(), iok2cpy(), lcmgdf(), lstjpb(), makestab(), nemspecs(), parutg(), ufbdmp(), ufbseq(), ufdump(), usrtpl(), writlc(), and wrtree().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ vali

                                                        + +
                                                        +
                                                        + + + + +
                                                        real*8, dimension(:), allocatable moda_tables::vali
                                                        +
                                                        + +

                                                        Initialized data values corresponding to typ:

                                                        +
                                                          +
                                                        • Current placeholder value for "missing" data, if corresponding typ entry is "REP", "NUM" or "CHR"
                                                        • +
                                                        • 0, otherwise
                                                        • +
                                                        + +

                                                        Definition at line 732 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), makestab(), rcstpl(), and usrtpl().

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/namespacemoda__tnkrcp.html b/previous_versions/v12.1.0/namespacemoda__tnkrcp.html new file mode 100644 index 000000000..d6b5786dd --- /dev/null +++ b/previous_versions/v12.1.0/namespacemoda__tnkrcp.html @@ -0,0 +1,255 @@ + + + + + + + +NCEPLIBS-bufr: moda_tnkrcp Module Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        moda_tnkrcp Module Reference
                                                        +
                                                        +
                                                        + +

                                                        Declare variables used to store tank receipt time information within Section 1 of BUFR messages. +More...

                                                        + + + + + + + + + + + + + + + + + + + + +

                                                        +Variables

                                                        character *1 ctrt = 'N'
                                                         Flag indicating whether tank receipt times are to be included within output BUFR messages; this variable is initialized to a default value which can be overridden by a subsequent call to subroutine strcpt() within the application program: More...
                                                         
                                                        integer itrdy
                                                         Tank receipt day. More...
                                                         
                                                        integer itrhr
                                                         Tank receipt hour. More...
                                                         
                                                        integer itrmi
                                                         Tank receipt minute. More...
                                                         
                                                        integer itrmo
                                                         Tank receipt month. More...
                                                         
                                                        integer itryr
                                                         Tank receipt year. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Declare variables used to store tank receipt time information within Section 1 of BUFR messages.

                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2024-03-20
                                                        +

                                                        Variable Documentation

                                                        + +

                                                        ◆ ctrt

                                                        + +
                                                        +
                                                        + + + + +
                                                        character*1 moda_tnkrcp::ctrt = 'N'
                                                        +
                                                        + +

                                                        Flag indicating whether tank receipt times are to be included within output BUFR messages; this variable is initialized to a default value which can be overridden by a subsequent call to subroutine strcpt() within the application program:

                                                        +
                                                          +
                                                        • 'N' = No (default)
                                                        • +
                                                        • 'Y' = Yes
                                                        • +
                                                        + +

                                                        Definition at line 843 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by msgfull(), msgwrt(), and strcpt().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ itrdy

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer moda_tnkrcp::itrdy
                                                        +
                                                        + +

                                                        Tank receipt day.

                                                        + +

                                                        Definition at line 849 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by atrcpt(), and strcpt().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ itrhr

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer moda_tnkrcp::itrhr
                                                        +
                                                        + +

                                                        Tank receipt hour.

                                                        + +

                                                        Definition at line 851 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by atrcpt(), and strcpt().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ itrmi

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer moda_tnkrcp::itrmi
                                                        +
                                                        + +

                                                        Tank receipt minute.

                                                        + +

                                                        Definition at line 853 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by atrcpt(), and strcpt().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ itrmo

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer moda_tnkrcp::itrmo
                                                        +
                                                        + +

                                                        Tank receipt month.

                                                        + +

                                                        Definition at line 847 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by atrcpt(), and strcpt().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ itryr

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer moda_tnkrcp::itryr
                                                        +
                                                        + +

                                                        Tank receipt year.

                                                        + +

                                                        Definition at line 845 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by atrcpt(), and strcpt().

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/namespacemoda__ufbcpl.html b/previous_versions/v12.1.0/namespacemoda__ufbcpl.html new file mode 100644 index 000000000..4f5c89739 --- /dev/null +++ b/previous_versions/v12.1.0/namespacemoda__ufbcpl.html @@ -0,0 +1,137 @@ + + + + + + + +NCEPLIBS-bufr: moda_ufbcpl Module Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        moda_ufbcpl Module Reference
                                                        +
                                                        +
                                                        + +

                                                        Declare an array used to store, for each file ID, the logical unit number corresponding to a separate file ID whenever BUFR data subsets are being copied from the latter to the former via subroutine ufbcpy(). +More...

                                                        + + + + + +

                                                        +Variables

                                                        integer, dimension(:), allocatable luncpy
                                                         Logical unit numbers used to copy long character strings between BUFR data subsets. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Declare an array used to store, for each file ID, the logical unit number corresponding to a separate file ID whenever BUFR data subsets are being copied from the latter to the former via subroutine ufbcpy().

                                                        +

                                                        In such cases, this stored logical unit number is later accessed within subroutine wrtree() to enable the copying of long character strings (greater than 8 bytes) between the two logical units.

                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        2009-08-11
                                                        +

                                                        Variable Documentation

                                                        + +

                                                        ◆ luncpy

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer, dimension(:), allocatable moda_ufbcpl::luncpy
                                                        +
                                                        + +

                                                        Logical unit numbers used to copy long character strings between BUFR data subsets.

                                                        + +

                                                        Definition at line 757 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), msgini(), ufbcpy(), and wrtree().

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/namespacemoda__unptyp.html b/previous_versions/v12.1.0/namespacemoda__unptyp.html new file mode 100644 index 000000000..f0ed0ff10 --- /dev/null +++ b/previous_versions/v12.1.0/namespacemoda__unptyp.html @@ -0,0 +1,141 @@ + + + + + + + +NCEPLIBS-bufr: moda_unptyp Module Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        moda_unptyp Module Reference
                                                        +
                                                        +
                                                        + +

                                                        Declare an array used to store, for each file ID from which a BUFR message is currently being read as input, a flag indicating how to unpack the data subsets from the message. +More...

                                                        + + + + + +

                                                        +Variables

                                                        integer, dimension(:), allocatable msgunp
                                                         Flag indicating how to unpack data subsets from BUFR message: More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Declare an array used to store, for each file ID from which a BUFR message is currently being read as input, a flag indicating how to unpack the data subsets from the message.

                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        +

                                                        Variable Documentation

                                                        + +

                                                        ◆ msgunp

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer, dimension(:), allocatable moda_unptyp::msgunp
                                                        +
                                                        + +

                                                        Flag indicating how to unpack data subsets from BUFR message:

                                                        +
                                                          +
                                                        • 0 message contains data subset byte counters and other non-standard enhancements
                                                        • +
                                                        • 1 message is fully standard and contains no non-standard enhancements
                                                        • +
                                                        • 2 message is compressed
                                                        • +
                                                        + +

                                                        Definition at line 771 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), cktaba(), rdmems(), readlc(), readsb(), and ufbtab().

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/namespacemoda__usrbit.html b/previous_versions/v12.1.0/namespacemoda__usrbit.html new file mode 100644 index 000000000..7e5908ff4 --- /dev/null +++ b/previous_versions/v12.1.0/namespacemoda__usrbit.html @@ -0,0 +1,160 @@ + + + + + + + +NCEPLIBS-bufr: moda_usrbit Module Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        moda_usrbit Module Reference
                                                        +
                                                        +
                                                        + +

                                                        Declare arrays for internal storage of pointers to BUFR data subset values. +More...

                                                        + + + + + + + + +

                                                        +Variables

                                                        integer, dimension(:), allocatable mbit
                                                         Pointer in data subset to first bit of each packed data value. More...
                                                         
                                                        integer, dimension(:), allocatable nbit
                                                         Length (in bits) of each packed data value in data subset. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Declare arrays for internal storage of pointers to BUFR data subset values.

                                                        +

                                                        These are used when unpacking an input data subset via subroutines rcstpl() and rdtree().

                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        +

                                                        Variable Documentation

                                                        + +

                                                        ◆ mbit

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer, dimension(:), allocatable moda_usrbit::mbit
                                                        +
                                                        + +

                                                        Pointer in data subset to first bit of each packed data value.

                                                        + +

                                                        Definition at line 783 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), rcstpl(), rdtree(), readlc(), and ufbget().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ nbit

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer, dimension(:), allocatable moda_usrbit::nbit
                                                        +
                                                        + +

                                                        Length (in bits) of each packed data value in data subset.

                                                        + +

                                                        Definition at line 781 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), rcstpl(), rdtree(), readlc(), and ufbget().

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/namespacemoda__usrint.html b/previous_versions/v12.1.0/namespacemoda__usrint.html new file mode 100644 index 000000000..f91d834ad --- /dev/null +++ b/previous_versions/v12.1.0/namespacemoda__usrint.html @@ -0,0 +1,205 @@ + + + + + + + +NCEPLIBS-bufr: moda_usrint Module Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        moda_usrint Module Reference
                                                        +
                                                        +
                                                        + +

                                                        Declare arrays used to store data values and associated metadata for the current BUFR data subset in scope for each file ID. +More...

                                                        + + + + + + + + + + + + + + +

                                                        +Variables

                                                        integer, dimension(:,:), allocatable, target inv
                                                         Inventory pointer which links each data value to its corresponding node in the internal jump/link table. More...
                                                         
                                                        integer, dimension(:,:), allocatable nrfelm
                                                         Referenced data value, for data values which refer to a previous data value in the BUFR data subset via an internal bitmap. More...
                                                         
                                                        integer, dimension(:), allocatable nval
                                                         Number of data values in BUFR data subset. More...
                                                         
                                                        real *8, dimension(:,:), allocatable, target val
                                                         Data values. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Declare arrays used to store data values and associated metadata for the current BUFR data subset in scope for each file ID.

                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        +

                                                        Variable Documentation

                                                        + +

                                                        ◆ inv

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer, dimension(:,:), allocatable, target moda_usrint::inv
                                                        +
                                                        +
                                                        + +

                                                        ◆ nrfelm

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer, dimension(:,:), allocatable moda_usrint::nrfelm
                                                        +
                                                        + +

                                                        Referenced data value, for data values which refer to a previous data value in the BUFR data subset via an internal bitmap.

                                                        + +

                                                        Definition at line 798 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), gettagre(), rcstpl(), rdcmps(), ufbcpy(), and ufdump().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ nval

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer, dimension(:), allocatable moda_usrint::nval
                                                        +
                                                        +
                                                        + +

                                                        ◆ val

                                                        + +
                                                        +
                                                        + + + + +
                                                        real*8, dimension(:,:), allocatable, target moda_usrint::val
                                                        +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/namespacemoda__usrtmp.html b/previous_versions/v12.1.0/namespacemoda__usrtmp.html new file mode 100644 index 000000000..fecff3451 --- /dev/null +++ b/previous_versions/v12.1.0/namespacemoda__usrtmp.html @@ -0,0 +1,158 @@ + + + + + + + +NCEPLIBS-bufr: moda_usrtmp Module Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        moda_usrtmp Module Reference
                                                        +
                                                        +
                                                        + +

                                                        Declare arrays used in subroutine rcstpl() to store subset segments that are being copied from a subset template into internal subset arrays. +More...

                                                        + + + + + + + + +

                                                        +Variables

                                                        integer, dimension(:,:), allocatable iutmp
                                                         inv array elements for new sections of a growing subset buffer. More...
                                                         
                                                        real *8, dimension(:,:), allocatable vutmp
                                                         val array elements for new sections of a growing subset buffer. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Declare arrays used in subroutine rcstpl() to store subset segments that are being copied from a subset template into internal subset arrays.

                                                        +
                                                        Author
                                                        J. Woollen 1994-01-06
                                                        +

                                                        Variable Documentation

                                                        + +

                                                        ◆ iutmp

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer, dimension(:,:), allocatable moda_usrtmp::iutmp
                                                        +
                                                        + +

                                                        inv array elements for new sections of a growing subset buffer.

                                                        + +

                                                        Definition at line 810 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), and rcstpl().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ vutmp

                                                        + +
                                                        +
                                                        + + + + +
                                                        real*8, dimension(:,:), allocatable moda_usrtmp::vutmp
                                                        +
                                                        + +

                                                        val array elements for new sections of a growing subset buffer.

                                                        + +

                                                        Definition at line 812 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), and rcstpl().

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/namespacemoda__xtab.html b/previous_versions/v12.1.0/namespacemoda__xtab.html new file mode 100644 index 000000000..380fdc977 --- /dev/null +++ b/previous_versions/v12.1.0/namespacemoda__xtab.html @@ -0,0 +1,138 @@ + + + + + + + +NCEPLIBS-bufr: moda_xtab Module Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        moda_xtab Module Reference
                                                        +
                                                        +
                                                        + +

                                                        Declare an array used to track, for each file ID, whether the DX BUFR table associated with the corresponding logical unit has changed during the life of the application program. +More...

                                                        + + + + + +

                                                        +Variables

                                                        logical, dimension(:), allocatable xtab
                                                         Tracking index for each file ID. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Declare an array used to track, for each file ID, whether the DX BUFR table associated with the corresponding logical unit has changed during the life of the application program.

                                                        +

                                                        This information is stored and tracked within subroutine makestab(), which checks each time it is called to see if the DX BUFR table has changed for any file ID since the last time it was called.

                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        2009-03-18
                                                        +

                                                        Variable Documentation

                                                        + +

                                                        ◆ xtab

                                                        + +
                                                        +
                                                        + + + + +
                                                        logical, dimension(:), allocatable moda_xtab::xtab
                                                        +
                                                        + +

                                                        Tracking index for each file ID.

                                                        +

                                                        Set to .true. if the DX BUFR table for the corresponding logical unit has changed since the previous call to subroutine makestab(); set to .false. otherwise.

                                                        + +

                                                        Definition at line 831 of file modules_arrs.F90.

                                                        + +

                                                        Referenced by arallocf(), ardllocf(), and makestab().

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/namespaces.html b/previous_versions/v12.1.0/namespaces.html new file mode 100644 index 000000000..67c345dc1 --- /dev/null +++ b/previous_versions/v12.1.0/namespaces.html @@ -0,0 +1,170 @@ + + + + + + + +NCEPLIBS-bufr: Modules List + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        +
                                                        Modules List
                                                        +
                                                        +
                                                        +
                                                        Here is a list of all documented modules with brief descriptions:
                                                        +
                                                        [detail level 12]
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                         Nbufr_c2f_interfaceWrap Fortran NCEPLIBS-bufr subprograms and variables so they can be called from within C
                                                         Nbufr_interfaceWrap C NCEPLIBS-bufr functions so they can be called from within Fortran application programs
                                                         Cccbfl_c
                                                         Ccobfl_c
                                                         Ccrbmg_c
                                                         Ccwbmg_c
                                                         Cdlloctbf_c
                                                         NbufrlibWrap C NCEPLIBS-bufr functions so they can be called from within the Fortran part of the library
                                                         Carallocc_c
                                                         Cardllocc_c
                                                         Cbackbufr_c
                                                         Ccewind_c
                                                         Cclosfb_c
                                                         Ccpmstabs_c
                                                         Ccrdbufr_c
                                                         Ccwrbufr_c
                                                         Cicvidx_c
                                                         Cinittbf_c
                                                         Copenab_c
                                                         Copenrb_c
                                                         Copenwb_c
                                                         Crestd_c
                                                         Csorttbf_c
                                                         Csrchtbf_c
                                                         Cstrtbfe_c
                                                         Cstseq_c
                                                         Nmoda_bitbufDeclare arrays and variables used to store BUFR messages internally for multiple file IDs
                                                         Nmoda_bitmapsDeclare arrays and variables used to store bitmaps internally within a data subset definition
                                                         Nmoda_bufrmgDeclare arrays used to store, for each output file ID, a copy of the BUFR message that was most recently written to that ID, for possible later retrieval via subroutine writsa()
                                                         Nmoda_bufrsrDeclare arrays and variables needed to store the current position within a BUFR file
                                                         Nmoda_comprsDeclare arrays and variables needed for the storage of data values needed when writing compressed data subsets to a BUFR message for output
                                                         Nmoda_comprxDeclare arrays and variable needed for the storage of data values needed when writing compressed data subsets to a BUFR message for output
                                                         Nmoda_dscachDeclare arrays and variables for the internal Table A mnemonic cache that is used for Section 3 decoding of BUFR messages
                                                         Nmoda_h4wlcDeclare arrays and variables needed to store long character strings (greater than 8 bytes) via subroutine hold4wlc()
                                                         Nmoda_idrdmDeclare an array used by subroutine readerme() to read in a new DX dictionary table as a consecutive set of one or more DX BUFR tables messages
                                                         Nmoda_ivalDeclare an array used to pack or unpack all of the values of a BUFR data subset
                                                         Nmoda_ivttmpDeclare arrays which provide working space in several subprograms (usrtpl() and ufbcup()) which manipulate the contents of internal subset buffers where the contents of an evolving BUFR message are accumulated and stored under user control prior to being written out
                                                         Nmoda_lushrDeclare an array used by subroutine makestab() to keep track of which logical units share DX BUFR table information
                                                         Nmoda_mgwaDeclare an array used by various subroutines and functions to hold a temporary working copy of a BUFR message
                                                         Nmoda_mgwbDeclare an array used by various subroutines and functions to hold a temporary working copy of a BUFR message
                                                         Nmoda_msgcmpDeclare a variable used to indicate whether output BUFR messages should be compressed
                                                         Nmoda_msgcwdDeclare arrays used to store information about the current BUFR message that is in the process of being read from or written to the logical unit associated with each file ID
                                                         Nmoda_msglimDeclare an array used to keep track of which logical units should not have any empty (zero data subset) BUFR messages written to them
                                                         Nmoda_msgmemDeclare arrays and variables used to store the contents of one or more BUFR files within internal memory
                                                         Nmoda_msgstdDeclare a variable used to indicate whether output BUFR messages should be standardized
                                                         Nmoda_mstabsDeclare arrays and variables used to store master Table B and Table D entries within internal memory
                                                         Nmoda_nmikrpDeclare arrays used by various subroutines to hold information about Table D sequences
                                                         Nmoda_nrv203Declare arrays and variables for use with any 2-03-YYY (change reference value) operators present within the internal jump/link table
                                                         Nmoda_nulbfrDeclare an array used to store a switch for each file ID, indicating whether any BUFR messages should actually be written to the corresponding logical unit
                                                         Nmoda_rdmtbDeclare arrays and variables used to store master Table B and Table D entries within internal memory
                                                         Nmoda_rlccmnDeclare arrays and variables needed to store information about long character strings (greater than 8 bytes) when reading them from input data subsets in compressed BUFR messages via subroutines rdcmps() and readlc()
                                                         Nmoda_s01cmDeclare arrays and variables used to store custom values for certain mnemonics within Sections 0 and 1 of all future output BUFR messages written to all Fortran logical units
                                                         Nmoda_s3listDeclare arrays used by various subroutines and functions to hold a temporary working copy of a Section 3 descriptor list
                                                         Nmoda_sc3bfrDeclare an array used to store a switch for each file ID, indicating whether BUFR messages read from the corresponding logical unit should be decoded according to the contents of Section 3 and using master BUFR tables, rather than using DX BUFR tables
                                                         Nmoda_stbfrDeclare arrays used to store file and message status indicators for all logical units that have been connected to the library via previous calls to subroutine openbf()
                                                         Nmoda_stcodeDeclare an array used to store a status code for each file ID if an error or other abnormal result occurs while processing a BUFR message within the associated logical unit
                                                         Nmoda_tababdDeclare arrays and variables used to store DX BUFR tables internally for multiple file IDs
                                                         Nmoda_tablefDeclare a variable used to indicate whether master code and flag tables should be read
                                                         Nmoda_tablesDeclare arrays and variables used to store the internal jump/link table
                                                         Nmoda_tnkrcpDeclare variables used to store tank receipt time information within Section 1 of BUFR messages
                                                         Nmoda_ufbcplDeclare an array used to store, for each file ID, the logical unit number corresponding to a separate file ID whenever BUFR data subsets are being copied from the latter to the former via subroutine ufbcpy()
                                                         Nmoda_unptypDeclare an array used to store, for each file ID from which a BUFR message is currently being read as input, a flag indicating how to unpack the data subsets from the message
                                                         Nmoda_usrbitDeclare arrays for internal storage of pointers to BUFR data subset values
                                                         Nmoda_usrintDeclare arrays used to store data values and associated metadata for the current BUFR data subset in scope for each file ID
                                                         Nmoda_usrtmpDeclare arrays used in subroutine rcstpl() to store subset segments that are being copied from a subset template into internal subset arrays
                                                         Nmoda_xtabDeclare an array used to track, for each file ID, whether the DX BUFR table associated with the corresponding logical unit has changed during the life of the application program
                                                         Nmodv_vars
                                                         Nshare_table_infoThis module is used within the debufr utility to share information between subroutine fdebufr_c() and subroutine openbt(), since the latter is not called by the former but rather is called directly from within the NCEPLIBS-bufr software
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/namespaces_dup.js b/previous_versions/v12.1.0/namespaces_dup.js new file mode 100644 index 000000000..0d9491927 --- /dev/null +++ b/previous_versions/v12.1.0/namespaces_dup.js @@ -0,0 +1,374 @@ +var namespaces_dup = +[ + [ "bufr_c2f_interface", "namespacebufr__c2f__interface.html", [ + [ "bort_c", "namespacebufr__c2f__interface.html#a70b99a494d9f5ef152ec115a139b1c1f", null ], + [ "bvers_c", "namespacebufr__c2f__interface.html#adc050cbf79f756c7db30f7c4c6b129a0", null ], + [ "c_f_string", "namespacebufr__c2f__interface.html#a7c95d71e3921bb7093e56dbc458de10c", null ], + [ "cadn30_c", "namespacebufr__c2f__interface.html#a6a463f38336dcbedb5f125a242f69eb5", null ], + [ "closbf_c", "namespacebufr__c2f__interface.html#a3ac93c0105f2d2e934b5fa1f6581c02d", null ], + [ "close_c", "namespacebufr__c2f__interface.html#a3c7ddfd5eb36a9904e9886e2d04bfdf3", null ], + [ "cmpmsg_c", "namespacebufr__c2f__interface.html#acc6413f0b94cba90a23f594d70e11291", null ], + [ "copy_f_c_str", "namespacebufr__c2f__interface.html#a139959903905b228c3228e3b3a09e025", null ], + [ "delete_table_data_c", "namespacebufr__c2f__interface.html#ab653ca4701372fddd02deddbd1b8d88e", null ], + [ "elemdx_c", "namespacebufr__c2f__interface.html#a9f5656efe692227be66cfc8e50e24241", null ], + [ "exitbufr_c", "namespacebufr__c2f__interface.html#a5fc80078fb40ff91f250dbb9edb247ab", null ], + [ "get_inode_c", "namespacebufr__c2f__interface.html#ab1ced3757361e769756fee2f722de32f", null ], + [ "get_inv_c", "namespacebufr__c2f__interface.html#a60f38d89e2da19b4396ca8c3ec8ffff6", null ], + [ "get_irf_c", "namespacebufr__c2f__interface.html#af73382fa68e368c201131fd89d1be252", null ], + [ "get_isc_c", "namespacebufr__c2f__interface.html#a020cf7bcf489ecc2ade71dfa4b7db102", null ], + [ "get_itp_c", "namespacebufr__c2f__interface.html#adffb9acbdd17d4ef3f35baee918c733d", null ], + [ "get_jmpb_c", "namespacebufr__c2f__interface.html#aa9ab4e0c2b6bc184aa70d7a36ac6114f", null ], + [ "get_link_c", "namespacebufr__c2f__interface.html#ac9e08232d75383f1f64a36b9834598c9", null ], + [ "get_nval_c", "namespacebufr__c2f__interface.html#a124b885560b4d31170993c7921f55503", null ], + [ "get_tag_c", "namespacebufr__c2f__interface.html#a6515df3d0f5fdcccd422fcac3b2f700a", null ], + [ "get_typ_c", "namespacebufr__c2f__interface.html#a86ce772b48d76dc923f9ae87dfd44102", null ], + [ "get_val_c", "namespacebufr__c2f__interface.html#af7e6742b654813bd1922947049c42a54", null ], + [ "ibfms_c", "namespacebufr__c2f__interface.html#a437d60612140092ed5cea7516b5b093c", null ], + [ "ifxy_c", "namespacebufr__c2f__interface.html#a081831085335c5a2d1a60040bf4a68b6", null ], + [ "igetmxby_c", "namespacebufr__c2f__interface.html#af1cdfa1f4b3b097464a0bcd4da3ddeeb", null ], + [ "igetntbi_c", "namespacebufr__c2f__interface.html#a558946e761c0246444bcd3c2fcdcb37e", null ], + [ "igetprm_c", "namespacebufr__c2f__interface.html#a32a449b5c117d53b4b4374dd0e8bea8b", null ], + [ "igettdi_c", "namespacebufr__c2f__interface.html#a606519361d6b6db6e153fd809387399d", null ], + [ "imrkopr_c", "namespacebufr__c2f__interface.html#aa7df2e3f4575affeab5df95d00aad75f", null ], + [ "ireadmg_c", "namespacebufr__c2f__interface.html#a31bb70cc0fe1b242d4dee68ed843391b", null ], + [ "ireadns_c", "namespacebufr__c2f__interface.html#a89153453f5db4c56685d3b309a517da7", null ], + [ "ireadsb_c", "namespacebufr__c2f__interface.html#ac349c058a2cd324d8cfe5a85ebf2acb1", null ], + [ "isetprm_c", "namespacebufr__c2f__interface.html#ad1dcef9962b409b6448c928d0dfb9490", null ], + [ "istdesc_c", "namespacebufr__c2f__interface.html#a7968999c9eda822f79eec9178762a2ae", null ], + [ "iupbs01_c", "namespacebufr__c2f__interface.html#a583019d0b109031d8f8aedb4d48e2afd", null ], + [ "maxout_c", "namespacebufr__c2f__interface.html#aa7f319cef617f458cbaf40cdeea42d42", null ], + [ "mtinfo_c", "namespacebufr__c2f__interface.html#a550c1c61605eca9fa6cf04aba7612364", null ], + [ "nemdefs_c", "namespacebufr__c2f__interface.html#a7ee256962a48d99336f255aad04abf48", null ], + [ "nemspecs_c", "namespacebufr__c2f__interface.html#a5b9e80deaefcabb2b18ecbf55cbc2c55", null ], + [ "nemtab_c", "namespacebufr__c2f__interface.html#ac07a6f6ec1555c09041853d4c81081e9", null ], + [ "nemtbb_c", "namespacebufr__c2f__interface.html#ae352def57bda0cd117486a03a8594cf2", null ], + [ "numtbd_c", "namespacebufr__c2f__interface.html#ab70a5dfe76eb5f9bce5015c3bce3bf64", null ], + [ "open_c", "namespacebufr__c2f__interface.html#a05ac8542818be260a3c1dc15d5dc2f53", null ], + [ "openbf_c", "namespacebufr__c2f__interface.html#a6a97fe37e5caced81c5c6b769644832d", null ], + [ "openmb_c", "namespacebufr__c2f__interface.html#aad56de517eff0435b805addbf0692f44", null ], + [ "pktdd_c", "namespacebufr__c2f__interface.html#a9a8d8f66405c9b1679e92e0d908877e0", null ], + [ "readlc_c", "namespacebufr__c2f__interface.html#acce5eddf8c8e56d5b47d45251ac75abc", null ], + [ "status_c", "namespacebufr__c2f__interface.html#a233844a8f03de391d28d20a7bd5d8ef0", null ], + [ "stntbi_c", "namespacebufr__c2f__interface.html#a1c04fd789a555e4a08d798172a07b2e6", null ], + [ "strnum_c", "namespacebufr__c2f__interface.html#af9137b87796fbc3395e596227515c4f2", null ], + [ "ufbint_c", "namespacebufr__c2f__interface.html#a4d3f0201945123b06c7d198065cf2f67", null ], + [ "ufbrep_c", "namespacebufr__c2f__interface.html#a57a1b4956a89ed60a934a02d4140eb93", null ], + [ "ufbseq_c", "namespacebufr__c2f__interface.html#af0b721af91340e7a261e8014455bd6ca", null ], + [ "uptdd_c", "namespacebufr__c2f__interface.html#aa3ea9ef5bab8e3ceb1118f0e8cafaeea", null ], + [ "irf_f", "namespacebufr__c2f__interface.html#a2efc35235defecb306c8324c0599d0b9", null ], + [ "isc_f", "namespacebufr__c2f__interface.html#a2b81bdfdb8a2380ba294b375c67d343a", null ], + [ "itp_f", "namespacebufr__c2f__interface.html#a5c0b51f6d15b30a289d69c36e19b1264", null ], + [ "jmpb_f", "namespacebufr__c2f__interface.html#ad5ac970a71d7050263e85a2e17d11cf6", null ], + [ "link_f", "namespacebufr__c2f__interface.html#a415acfb9ec053e0ef1a931b0eac2ee4a", null ], + [ "tag_f", "namespacebufr__c2f__interface.html#ad33aa8215beed2cd017faf769a7a2dc2", null ], + [ "typ_f", "namespacebufr__c2f__interface.html#aea7e3ac1560fbe3760ff6c4c3f72b78b", null ] + ] ], + [ "bufr_interface", "namespacebufr__interface.html", "namespacebufr__interface" ], + [ "bufrlib", "namespacebufrlib.html", "namespacebufrlib" ], + [ "moda_bitbuf", "namespacemoda__bitbuf.html", [ + [ "ibay", "namespacemoda__bitbuf.html#a4910f483014af612d37ea34a1f477434", null ], + [ "ibit", "namespacemoda__bitbuf.html#a8c052fc732472f6f329209ac2db75cf9", null ], + [ "maxbyt", "namespacemoda__bitbuf.html#aeb00e574adb63bf7cc809d540d5a02bc", null ], + [ "mbay", "namespacemoda__bitbuf.html#aad8a1595878ac1a9907c708067c4c050", null ], + [ "mbyt", "namespacemoda__bitbuf.html#acfcd2b4391b00ae43bdb026de8573c7a", null ] + ] ], + [ "moda_bitmaps", "namespacemoda__bitmaps.html", [ + [ "ctco", "namespacemoda__bitmaps.html#adbe38c29980443a65ff0bb0cfa1bb753", null ], + [ "ibtmse", "namespacemoda__bitmaps.html#ab3096b8b9d713e5183ac8275305e002a", null ], + [ "inodtamc", "namespacemoda__bitmaps.html#a6ab1ee23535fd8b352c4f5d863a1c458", null ], + [ "inodtco", "namespacemoda__bitmaps.html#a481c60320ac88f9d5b5d85d1af3a60cf", null ], + [ "istbtm", "namespacemoda__bitmaps.html#a5a7267a967fec712c56a680893698965", null ], + [ "iszbtm", "namespacemoda__bitmaps.html#a2648b6b58fd6cf4c983b5c4c23b29574", null ], + [ "linbtm", "namespacemoda__bitmaps.html#acd6cd1e5190bdc17381e81624a7e2e80", null ], + [ "lstnod", "namespacemoda__bitmaps.html#a352a33aaf989dcaab7646f86aa41e27d", null ], + [ "lstnodct", "namespacemoda__bitmaps.html#accaa0826b48e876c29f6bb8ebe21c83e", null ], + [ "nbtm", "namespacemoda__bitmaps.html#a6530eb70f0a9131f659c61a74652c93d", null ], + [ "nbtmse", "namespacemoda__bitmaps.html#ad03b1bbbb4eb8366a77af6da12f0793c", null ], + [ "ntamc", "namespacemoda__bitmaps.html#a4dfbf13c3d38b007276cb0f5c5418396", null ], + [ "ntco", "namespacemoda__bitmaps.html#aef82673973ab814f34658d9a1e5f3404", null ] + ] ], + [ "moda_bufrmg", "namespacemoda__bufrmg.html", [ + [ "msglen", "namespacemoda__bufrmg.html#a2514f74da635c6ba7047ec108ce4e211", null ], + [ "msgtxt", "namespacemoda__bufrmg.html#a67590bc418c6aeb7792572c11a6bc793", null ] + ] ], + [ "moda_bufrsr", "namespacemoda__bufrsr.html", [ + [ "jbay", "namespacemoda__bufrsr.html#adff426f406bb1f795e94c0af6d68d856", null ], + [ "jbit", "namespacemoda__bufrsr.html#a80dd6be1ed3b93e6cb6fcfef1e87ee08", null ], + [ "jbyt", "namespacemoda__bufrsr.html#ab23685bcce40ee0d9f71f881bdfa0d07", null ], + [ "jill", "namespacemoda__bufrsr.html#a157bb0cb25913753748822ce3c384b06", null ], + [ "jimm", "namespacemoda__bufrsr.html#a225d75cc454938f8da4ed39857ff2c5c", null ], + [ "jmsg", "namespacemoda__bufrsr.html#a4971d723fe9c86ed7741f7cfae61f2f0", null ], + [ "jsr", "namespacemoda__bufrsr.html#a38470e8cca9ad2afce56dd577ddd5b51", null ], + [ "jsub", "namespacemoda__bufrsr.html#a821fcf75cf865aaebdba3527d04190e0", null ], + [ "junn", "namespacemoda__bufrsr.html#a9ec76b10297b2e9521682a1e2014370d", null ] + ] ], + [ "moda_comprs", "namespacemoda__comprs.html", [ + [ "catx", "namespacemoda__comprs.html#a94ea2c3cfc88079d837ac29324d61937", null ], + [ "incr", "namespacemoda__comprs.html#a7e5d5589bde01337616f2527beed519f", null ], + [ "matx", "namespacemoda__comprs.html#ac4fd15b3e268548d17edca4e1e5e5675", null ], + [ "ncol", "namespacemoda__comprs.html#a0bab4a779995493580b46f231516e133", null ] + ] ], + [ "moda_comprx", "namespacemoda__comprx.html", [ + [ "cstr", "namespacemoda__comprx.html#a07c74b931e7ddbba553f8391b8e24aaf", null ], + [ "flush", "namespacemoda__comprx.html#a47438a5eff5e61065fce0dc3df1694a7", null ], + [ "imiss", "namespacemoda__comprx.html#a7a0967a79c236a16f1fa11ebb8f99b0f", null ], + [ "ityp", "namespacemoda__comprx.html#a8ecc5d87d79c8c3aa778665041bcb522", null ], + [ "iwid", "namespacemoda__comprx.html#aa945d27bc1c5cf32ea5ba624ef289808", null ], + [ "jlnode", "namespacemoda__comprx.html#a7caf741d65ff0b68932fa7d207c689ba", null ], + [ "kbit", "namespacemoda__comprx.html#ad9b27559a7e05f9939764fa6688d7147", null ], + [ "kbyt", "namespacemoda__comprx.html#a243a2baa283f951be51ea9466cca35b8", null ], + [ "kmax", "namespacemoda__comprx.html#a7c3104f9c9731b91a8a105bcc5212542", null ], + [ "kmin", "namespacemoda__comprx.html#af3c2aa97661a37d85840d480e611695e", null ], + [ "kmis", "namespacemoda__comprx.html#aedf59ef218e980c24d128aa7bc8884b1", null ], + [ "lunc", "namespacemoda__comprx.html#ac17dd8dc0aeb695a1046a884673b1fc3", null ], + [ "nrow", "namespacemoda__comprx.html#a574b3c666f5e8aa725910e20a739f561", null ], + [ "writ1", "namespacemoda__comprx.html#a8be10a997d67944a328d256bfc60bf02", null ] + ] ], + [ "moda_dscach", "namespacemoda__dscach.html", [ + [ "cnem", "namespacemoda__dscach.html#a141173c549e506cd4637af33c4efdece", null ], + [ "idcach", "namespacemoda__dscach.html#ab79409e1e5c6d8e2542bac564283a5ef", null ], + [ "ncnem", "namespacemoda__dscach.html#aa768890377f016eaae82cb56404ecdc6", null ], + [ "ndc", "namespacemoda__dscach.html#abbb9e570ae869b4abdf6e18c14475485", null ] + ] ], + [ "moda_h4wlc", "namespacemoda__h4wlc.html", [ + [ "chh4wlc", "namespacemoda__h4wlc.html#afbc0cd7c0f91147bca16c7fd909a0d75", null ], + [ "luh4wlc", "namespacemoda__h4wlc.html#aec0b91e9c09fffd506b27ea574b7da71", null ], + [ "nh4wlc", "namespacemoda__h4wlc.html#a013b7b1f0e72002222c0ee2ae5a3dcac", null ], + [ "sth4wlc", "namespacemoda__h4wlc.html#a25deca91911dc2223155e55c8b47f889", null ] + ] ], + [ "moda_idrdm", "namespacemoda__idrdm.html", [ + [ "idrdm", "namespacemoda__idrdm.html#a24e12e5c288360f0e7e6483094773db6", null ] + ] ], + [ "moda_ival", "namespacemoda__ival.html", [ + [ "ival", "namespacemoda__ival.html#a354161b574c84bfd3401bc0b287335c7", null ] + ] ], + [ "moda_ivttmp", "namespacemoda__ivttmp.html", [ + [ "itmp", "namespacemoda__ivttmp.html#af59d63e63df8f925e55a922d70a37785", null ], + [ "ttmp", "namespacemoda__ivttmp.html#a126e6cfde8da74741042004b33f48a9e", null ], + [ "vtmp", "namespacemoda__ivttmp.html#ad4937a8d8159f5b7fff9d51b59c6324b", null ] + ] ], + [ "moda_lushr", "namespacemoda__lushr.html", [ + [ "lus", "namespacemoda__lushr.html#a3baea9191da6d91a8590cba5181493a6", null ] + ] ], + [ "moda_mgwa", "namespacemoda__mgwa.html", [ + [ "mgwa", "namespacemoda__mgwa.html#abe572c04d3aa498e8135d20e656d0e6a", null ] + ] ], + [ "moda_mgwb", "namespacemoda__mgwb.html", [ + [ "mgwb", "namespacemoda__mgwb.html#ac38651460e5e05dd70fe8c19fc1a9caa", null ] + ] ], + [ "moda_msgcmp", "namespacemoda__msgcmp.html", [ + [ "ccmf", "namespacemoda__msgcmp.html#a748ff156e2c817957765b05119f74270", null ] + ] ], + [ "moda_msgcwd", "namespacemoda__msgcwd.html", [ + [ "idate", "namespacemoda__msgcwd.html#a37df9d6a60023612be784db0b759da3b", null ], + [ "inode", "namespacemoda__msgcwd.html#a034d50224d3416c855472ead1043b1aa", null ], + [ "msub", "namespacemoda__msgcwd.html#aaf25479459e35ef12ce20eecfc632295", null ], + [ "nmsg", "namespacemoda__msgcwd.html#a43a1031d5c017c6f61ba6deabe22daad", null ], + [ "nsub", "namespacemoda__msgcwd.html#ac477545b5d44685da84af7f23d7baa59", null ] + ] ], + [ "moda_msglim", "namespacemoda__msglim.html", [ + [ "msglim", "namespacemoda__msglim.html#abe63e3ddf9a739b073e8dd5b01460ddf", null ] + ] ], + [ "moda_msgmem", "namespacemoda__msgmem.html", [ + [ "icdxts", "namespacemoda__msgmem.html#a52a37b6bcc7ed3492325f47e1f8018ab", null ], + [ "ifdxts", "namespacemoda__msgmem.html#a55020aca1118bb6f09f8b3d1f68a5c74", null ], + [ "ipdxm", "namespacemoda__msgmem.html#af55ccb71d40a6980f3e18dee2ea3a9db", null ], + [ "ipmsgs", "namespacemoda__msgmem.html#a07ee8cbf949167ffea7e2ac9ceddd536", null ], + [ "ldxm", "namespacemoda__msgmem.html#a79bdd90460fa467a8e9130089d7963a5", null ], + [ "ldxts", "namespacemoda__msgmem.html#aa92c2a9b9faf87958775d45a00ee866f", null ], + [ "mdx", "namespacemoda__msgmem.html#ab991cce44554fb17b1c1cd0474929a94", null ], + [ "mlast", "namespacemoda__msgmem.html#a9905d8bc2ddc7681086ea0319442d0d9", null ], + [ "msgp", "namespacemoda__msgmem.html#a030ff35af84549af17fe0b0e4315ebf2", null ], + [ "msgs", "namespacemoda__msgmem.html#a0db33f8017f2c46947f0a5589ba98227", null ], + [ "munit", "namespacemoda__msgmem.html#a5ac2ef8f11fcf81b55a5353dbfda18cc", null ], + [ "mxdxm", "namespacemoda__msgmem.html#a549e012729bbc3cb18894d34380ce5bd", null ], + [ "mxdxw", "namespacemoda__msgmem.html#af2710ff69575fa7a323c654e7998e142", null ], + [ "ndxm", "namespacemoda__msgmem.html#a6e754cd1cdefe0c8c93ab497fcb33637", null ], + [ "ndxts", "namespacemoda__msgmem.html#ab1873371ca3b5f3e44a5d19ebf30af23", null ] + ] ], + [ "moda_msgstd", "namespacemoda__msgstd.html", [ + [ "csmf", "namespacemoda__msgstd.html#a23356dfd7172ae4d2ff05d657234d6ab", null ] + ] ], + [ "moda_mstabs", "namespacemoda__mstabs.html", [ + [ "cbbw", "namespacemoda__mstabs.html#a31164f84ab9d27493a19afee2fda502a", null ], + [ "cbelem", "namespacemoda__mstabs.html#aa842e38ba6243a4ff1ab1e56404c2cb7", null ], + [ "cbmnem", "namespacemoda__mstabs.html#a4c761088ff4243b661ec78773c07adaa", null ], + [ "cbscl", "namespacemoda__mstabs.html#aab2cc4c7c57e7c7d111f49187aff44ea", null ], + [ "cbsref", "namespacemoda__mstabs.html#ac34001b0c39f1c7b156214adaf3381d0", null ], + [ "cbunit", "namespacemoda__mstabs.html#a0ccfcc43067ef6debce2218ad50abb0b", null ], + [ "cdmnem", "namespacemoda__mstabs.html#ab2e77035e8e8a5f8e6a2f544279ab168", null ], + [ "cdseq", "namespacemoda__mstabs.html#a37a325646f12fe6d0dd3ae3c341f20d7", null ], + [ "ibfxyn", "namespacemoda__mstabs.html#af0d2b78411b01dc1aabe9baf6c946b38", null ], + [ "idefxy", "namespacemoda__mstabs.html#aeabc918978c598efc0231fc59d2bfd24", null ], + [ "idfxyn", "namespacemoda__mstabs.html#a089cf80d582ff75c6596063d0ed8c049", null ], + [ "ndelem", "namespacemoda__mstabs.html#a5f77a3f33df1fc46f007160428b674d1", null ], + [ "nmtb", "namespacemoda__mstabs.html#a2861db4fcd6083b5f6d194c92e873c95", null ], + [ "nmtd", "namespacemoda__mstabs.html#ae8e13371b82ad223284aeac9d6ad9aae", null ] + ] ], + [ "moda_nmikrp", "namespacemoda__nmikrp.html", [ + [ "irp", "namespacemoda__nmikrp.html#a6e3f292bfc1ab7b63b783bdf0266c812", null ], + [ "krp", "namespacemoda__nmikrp.html#a547378be8180b17844161916eca1e876", null ], + [ "nem", "namespacemoda__nmikrp.html#a94ad19bfc71bbfcd6f1caf4a744d5eb3", null ] + ] ], + [ "moda_nrv203", "namespacemoda__nrv203.html", [ + [ "ibtnrv", "namespacemoda__nrv203.html#af1ca5281543dc4ce645d861f7f744c6d", null ], + [ "ienrv", "namespacemoda__nrv203.html#a2784f03b6c19452c601b1377a3ed59a1", null ], + [ "inodnrv", "namespacemoda__nrv203.html#ad4299c9b916b83272f07cba8d2d22d4f", null ], + [ "ipfnrv", "namespacemoda__nrv203.html#aadd51c4f00c0c4a12b922aace0ed04f7", null ], + [ "isnrv", "namespacemoda__nrv203.html#a61eaac2cb0e3dd6de4d02e9986cab602", null ], + [ "nnrv", "namespacemoda__nrv203.html#a7f37665c0422638e65824c8b9183169e", null ], + [ "nrv", "namespacemoda__nrv203.html#a9c4d7ff754fd79feb908c6858f7e4e5f", null ], + [ "tagnrv", "namespacemoda__nrv203.html#a5f80cd868154c06f202e5886d40750de", null ] + ] ], + [ "moda_nulbfr", "namespacemoda__nulbfr.html", [ + [ "null", "namespacemoda__nulbfr.html#a1b6c0eaf2305df7abddd8c6c66723526", null ] + ] ], + [ "moda_rdmtb", "namespacemoda__rdmtb.html", [ + [ "ceelem", "namespacemoda__rdmtb.html#a1152389e5fc9eadddbea89bd76abc653", null ], + [ "cmdscb", "namespacemoda__rdmtb.html#a21983afeacfaf7e7755271343aca9055", null ], + [ "cmdscd", "namespacemoda__rdmtb.html#ab8fe0a01ea7ba06916fd450273c1c38f", null ], + [ "iefxyn", "namespacemoda__rdmtb.html#ab26bcc9dccfa0b250af20392755adf93", null ] + ] ], + [ "moda_rlccmn", "namespacemoda__rlccmn.html", [ + [ "crtag", "namespacemoda__rlccmn.html#acaa72aa1ab54d9a7a82f83e58c8aeed1", null ], + [ "irbit", "namespacemoda__rlccmn.html#a90cc348c7156330efc75a45e5e5860ca", null ], + [ "irnch", "namespacemoda__rlccmn.html#a76b8845911215f91b5a91128facb7cbd", null ], + [ "nrst", "namespacemoda__rlccmn.html#a6ee3ae8f4cfb91d15189834b8b62d41f", null ] + ] ], + [ "moda_s01cm", "namespacemoda__s01cm.html", [ + [ "cmnem", "namespacemoda__s01cm.html#ab7e403dca694be4ae4d4c3803e7bc4c7", null ], + [ "ivmnem", "namespacemoda__s01cm.html#a320a25005a0063e8a0713fc66973b655", null ], + [ "ns01v", "namespacemoda__s01cm.html#a7dfdd248050c7cc36f38933711526888", null ] + ] ], + [ "moda_s3list", "namespacemoda__s3list.html", [ + [ "cds3", "namespacemoda__s3list.html#a2ceee9741718460b614f37fb6b976259", null ], + [ "ids3", "namespacemoda__s3list.html#a07f44b4772abffacaba7e9be5fbb7fda", null ] + ] ], + [ "moda_sc3bfr", "namespacemoda__sc3bfr.html", [ + [ "isc3", "namespacemoda__sc3bfr.html#ac3bbd45f25c8071e161bf7898230695a", null ], + [ "tamnem", "namespacemoda__sc3bfr.html#aa480a82940946343d0d30d8f65c27584", null ] + ] ], + [ "moda_stbfr", "namespacemoda__stbfr.html", [ + [ "iolun", "namespacemoda__stbfr.html#aa6ed42f02eb5933c83e7acf1422b8d99", null ], + [ "iomsg", "namespacemoda__stbfr.html#ac23d0e71777440374b51773ab34d31c7", null ] + ] ], + [ "moda_stcode", "namespacemoda__stcode.html", [ + [ "iscodes", "namespacemoda__stcode.html#a81b647a972ded879adf10cb98bfaab2e", null ] + ] ], + [ "moda_tababd", "namespacemoda__tababd.html", [ + [ "idna", "namespacemoda__tababd.html#a6e28d53baf8dce1d6a5c4b91546cfcca", null ], + [ "idnb", "namespacemoda__tababd.html#ab09abac79a48acf677cf36764ffe5db5", null ], + [ "idnd", "namespacemoda__tababd.html#a9e14841d9a084410d3ee7d5d08d3bf5e", null ], + [ "mtab", "namespacemoda__tababd.html#a29788f9aef200e10d2f557c16abfaa56", null ], + [ "ntba", "namespacemoda__tababd.html#a02ea2421e524ac9f2f8e213dd0151558", null ], + [ "ntbb", "namespacemoda__tababd.html#a8f322e3d7724bb96f7ce06beec989c0f", null ], + [ "ntbd", "namespacemoda__tababd.html#a875c0ff90cd5fdc88e3f10ae7b5bc556", null ], + [ "taba", "namespacemoda__tababd.html#a21f38471f40c0eaecdf011d5b594de65", null ], + [ "tabb", "namespacemoda__tababd.html#ad3fddde254d512cae401fc3f5532fe7c", null ], + [ "tabd", "namespacemoda__tababd.html#a043c64825f8bdb44c4e6b69d2f5c253c", null ] + ] ], + [ "moda_tablef", "namespacemoda__tablef.html", [ + [ "cdmf", "namespacemoda__tablef.html#a61847a8129d1a6c6909c2ea4727d67f6", null ] + ] ], + [ "moda_tables", "namespacemoda__tables.html", [ + [ "ibt", "namespacemoda__tables.html#a1ff254e3c0f169340a16225a17c5a2c2", null ], + [ "irf", "namespacemoda__tables.html#a17c04e8d3d8d361463e3f2fc0b3dd599", null ], + [ "isc", "namespacemoda__tables.html#a1c370e229cc62002283ca2462296273e", null ], + [ "iseq", "namespacemoda__tables.html#a18e681f9bedbaadf3526641e19598901", null ], + [ "itp", "namespacemoda__tables.html#ab12171885e93720ae2716b4b1ecae251", null ], + [ "jmpb", "namespacemoda__tables.html#a5a1f71e4a27babbf5eadd01f7b3dcdcb", null ], + [ "jseq", "namespacemoda__tables.html#a0b8b25c6365505c5045ab473f54e03f6", null ], + [ "jump", "namespacemoda__tables.html#a945fc956c1c6ba8c37bfe63c04837b36", null ], + [ "knt", "namespacemoda__tables.html#a28b0f02b81a535890fc64ec13fdfc35b", null ], + [ "knti", "namespacemoda__tables.html#af5a5b5688cbfbea4a3d5d0705172fba3", null ], + [ "link", "namespacemoda__tables.html#ac0c5953da2d8867d81acad1800fec53c", null ], + [ "ntab", "namespacemoda__tables.html#a74976394b2b70036d27222507ba4bfcc", null ], + [ "tag", "namespacemoda__tables.html#a5f03be0ecd3fa7e059b9c74fb67cd4e4", null ], + [ "typ", "namespacemoda__tables.html#a4ff0c6b9328407caa52c08dd22d7525c", null ], + [ "vali", "namespacemoda__tables.html#a2a706219ab0edde0511570bfa32093ed", null ] + ] ], + [ "moda_tnkrcp", "namespacemoda__tnkrcp.html", [ + [ "ctrt", "namespacemoda__tnkrcp.html#aba2ec73dacc32807332a7c1e38468f38", null ], + [ "itrdy", "namespacemoda__tnkrcp.html#a97f45bd4e10b6016c9ef17bbd0efc2ca", null ], + [ "itrhr", "namespacemoda__tnkrcp.html#a12d35afcaacac53905061f928377d92b", null ], + [ "itrmi", "namespacemoda__tnkrcp.html#aceb65be824d657fa109be2d9059a3a2b", null ], + [ "itrmo", "namespacemoda__tnkrcp.html#af081362974b0ae4f5be67c4bea20bae6", null ], + [ "itryr", "namespacemoda__tnkrcp.html#a3f402734944f1438bc986b0d877a0bd7", null ] + ] ], + [ "moda_ufbcpl", "namespacemoda__ufbcpl.html", [ + [ "luncpy", "namespacemoda__ufbcpl.html#abf94758379c91be61fcf18f6c9dae5cf", null ] + ] ], + [ "moda_unptyp", "namespacemoda__unptyp.html", [ + [ "msgunp", "namespacemoda__unptyp.html#abc7e7be12befacea858a7f249c9425ca", null ] + ] ], + [ "moda_usrbit", "namespacemoda__usrbit.html", [ + [ "mbit", "namespacemoda__usrbit.html#ab5ade5e51c2620a6e6be9cad890baf7a", null ], + [ "nbit", "namespacemoda__usrbit.html#a99268fc2b9168fcbbd5f8ab70e6da0b7", null ] + ] ], + [ "moda_usrint", "namespacemoda__usrint.html", [ + [ "inv", "namespacemoda__usrint.html#a7e27d4bdf5a372fd7dac8ede033f969e", null ], + [ "nrfelm", "namespacemoda__usrint.html#ab05877244c7131b445de4326efd8aa8a", null ], + [ "nval", "namespacemoda__usrint.html#a2269ddd572fded029ca62080b38f6261", null ], + [ "val", "namespacemoda__usrint.html#a7ad9ef51fc135aad9fcecba2a636f486", null ] + ] ], + [ "moda_usrtmp", "namespacemoda__usrtmp.html", [ + [ "iutmp", "namespacemoda__usrtmp.html#a77349b5f0a6f8916850dcb253aee1f30", null ], + [ "vutmp", "namespacemoda__usrtmp.html#afcc556a5fac9b693f0be507fafccf973", null ] + ] ], + [ "moda_xtab", "namespacemoda__xtab.html", [ + [ "xtab", "namespacemoda__xtab.html#ada2721216de79b6527d89323df61956d", null ] + ] ], + [ "modv_vars", null, [ + [ "adsn", "modules__vars_8F90.html#a7a129734d8b06649619e8e9ee42eca62", null ], + [ "bmiss", "modules__vars_8F90.html#a745e8be4bf52246db47090996854736b", null ], + [ "iac", "modules__vars_8F90.html#a7db5428bb409dc91391908e3f6005da0", null ], + [ "iblock", "modules__vars_8F90.html#a8623e746f63272cf61b014607d998345", null ], + [ "idnr", "modules__vars_8F90.html#a181516c96f53bedb9774c83ebfeb0a23", null ], + [ "ifopbf", "modules__vars_8F90.html#a6007e8a5d98440d7bb16ce63bbf007e6", null ], + [ "im8b", "modules__vars_8F90.html#a4ff59bf9f9ee31e187bf7f8ecb61f4dd", null ], + [ "iordbe", "modules__vars_8F90.html#a2588ca33cb30f0316759c9ca7735bbb3", null ], + [ "iordle", "modules__vars_8F90.html#a7376f8406ce5e5e420d4d012aea93416", null ], + [ "lendat", "modules__vars_8F90.html#a9776bd15698bdb2c211a2326f0ca61dc", null ], + [ "lens", "modules__vars_8F90.html#a3eaffbddfb28ae6f90cff4ec580463c1", null ], + [ "maxcd", "modules__vars_8F90.html#ae8a681bd9096d6c9a2466b3c71f6ec7e", null ], + [ "maxjl", "modules__vars_8F90.html#ad2e54a398ee4fd5c87669a2883e7a37d", null ], + [ "maxmem", "modules__vars_8F90.html#ab5934a6a2f8cd3e09418203c1d3c20de", null ], + [ "maxmsg", "modules__vars_8F90.html#a61162c966b964b3039b9180818d0e7ee", null ], + [ "maxnc", "modules__vars_8F90.html#a6c14025516cc65ace5f17fc2c4e4a9a3", null ], + [ "maxrcr", "modules__vars_8F90.html#a656c690a79e927a6d824a1e8cef901e9", null ], + [ "maxss", "modules__vars_8F90.html#adaae2c5fadf243ece139cc7e84688d75", null ], + [ "maxtba", "modules__vars_8F90.html#aec19b6418a5d88f574f4b196b93a5cf5", null ], + [ "maxtbb", "modules__vars_8F90.html#a14452fc0317594bd880c9abba582ae74", null ], + [ "maxtbd", "modules__vars_8F90.html#ab5fc7a78bb32e9a0fa7cbb1f402e7528", null ], + [ "mxbtm", "modules__vars_8F90.html#a9c06e9ba0f47cbeecfb1e6d1972e1e4f", null ], + [ "mxbtmse", "modules__vars_8F90.html#aa7b24da237033a528cb05754d5736cc6", null ], + [ "mxcdv", "modules__vars_8F90.html#ae330052e2bcc0a81949c5ef8d6e7cc9e", null ], + [ "mxcnem", "modules__vars_8F90.html#ad5cda585f8b55a9e6e3a81808c23630f", null ], + [ "mxcsb", "modules__vars_8F90.html#a6780f1f07eeec5333e01ca17588f7d39", null ], + [ "mxdxts", "modules__vars_8F90.html#a179ebe33ab923f74ef05e2851a86d33b", null ], + [ "mxh4wlc", "modules__vars_8F90.html#a59f64f9f847d2171ecac822482b2f0a9", null ], + [ "mxlcc", "modules__vars_8F90.html#a739ea87803beaa51dd172adb95af9b86", null ], + [ "mxmsgl", "modules__vars_8F90.html#a6062176c0f51fa9f593310f46cc14fe0", null ], + [ "mxmsgld4", "modules__vars_8F90.html#a5a89be3220392c5b182d4d475d22e3e1", null ], + [ "mxmtbb", "modules__vars_8F90.html#ab2c78405872b159e107674c2fc2a12f7", null ], + [ "mxmtbd", "modules__vars_8F90.html#ae0bf7b02df4e070e72a90672e3eded90", null ], + [ "mxmtbf", "modules__vars_8F90.html#a9242cd091e5ab5d3956740035f6b6207", null ], + [ "mxnaf", "modules__vars_8F90.html#a7b92c0b0ed1fb2b80b048414fa1e54ce", null ], + [ "mxnrv", "modules__vars_8F90.html#a009fea23b90695d1556e33a557d4b7f1", null ], + [ "mxrst", "modules__vars_8F90.html#ae2e923a33b968adc577317f6cef8f24e", null ], + [ "mxs", "modules__vars_8F90.html#a695fe6ca7714604e88e1fc4d21cc839d", null ], + [ "mxs01v", "modules__vars_8F90.html#a61b398d330ce6937423db44f080b93fd", null ], + [ "mxtamc", "modules__vars_8F90.html#a85bed6c0b0a9aa339abd8fb7b3a136b5", null ], + [ "mxtco", "modules__vars_8F90.html#a68ea76a4751743e58280e061b43313e7", null ], + [ "nbitw", "modules__vars_8F90.html#a18a87ef02ab98d62e7fa272b20acd77a", null ], + [ "nbytw", "modules__vars_8F90.html#a2b80f794fded7bf159ff58796ec31a7c", null ], + [ "nfiles", "modules__vars_8F90.html#aa9124552f5c640e47f8decc9499688d8", null ], + [ "reps", "modules__vars_8F90.html#a5b163d0f13c16e94bdac566d2495faf7", null ], + [ "typs", "modules__vars_8F90.html#a9d4bd8b03fd20102645f0a43d8867bff", null ] + ] ], + [ "share_table_info", "namespaceshare__table__info.html", [ + [ "ltbd", "namespaceshare__table__info.html#a9cb558bc60eed8b777532f56fff8a08c", null ], + [ "ludx", "namespaceshare__table__info.html#a88fbe3e8e14e3810e1dc3f1560d1c51f", null ], + [ "tbldir_f", "namespaceshare__table__info.html#ad7e71b6c16362d8d65d97662bcdd7d02", null ] + ] ] +]; \ No newline at end of file diff --git a/previous_versions/v12.1.0/namespaceshare__table__info.html b/previous_versions/v12.1.0/namespaceshare__table__info.html new file mode 100644 index 000000000..a8124e4a4 --- /dev/null +++ b/previous_versions/v12.1.0/namespaceshare__table__info.html @@ -0,0 +1,182 @@ + + + + + + + +NCEPLIBS-bufr: share_table_info Module Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        share_table_info Module Reference
                                                        +
                                                        +
                                                        + +

                                                        This module is used within the debufr utility to share information between subroutine fdebufr_c() and subroutine openbt(), since the latter is not called by the former but rather is called directly from within the NCEPLIBS-bufr software. +More...

                                                        + + + + + + + + + + + +

                                                        +Variables

                                                        integer ltbd
                                                         Length (in characters) of tbldir_f. More...
                                                         
                                                        integer ludx
                                                         Fortran logical unit number to use for referencing a DX table. More...
                                                         
                                                        character(len=:), allocatable tbldir_f
                                                         Directory containing DX BUFR tables to be used for decoding. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        This module is used within the debufr utility to share information between subroutine fdebufr_c() and subroutine openbt(), since the latter is not called by the former but rather is called directly from within the NCEPLIBS-bufr software.

                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2009-07-01
                                                        +

                                                        Variable Documentation

                                                        + +

                                                        ◆ ltbd

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer share_table_info::ltbd
                                                        +
                                                        + +

                                                        Length (in characters) of tbldir_f.

                                                        + +

                                                        Definition at line 17 of file debufr.F90.

                                                        + +

                                                        Referenced by fdebufr_c(), and openbt().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ ludx

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer share_table_info::ludx
                                                        +
                                                        + +

                                                        Fortran logical unit number to use for referencing a DX table.

                                                        + +

                                                        Definition at line 20 of file debufr.F90.

                                                        + +

                                                        Referenced by fdebufr_c(), and openbt().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ tbldir_f

                                                        + +
                                                        +
                                                        + + + + +
                                                        character(len=:), allocatable share_table_info::tbldir_f
                                                        +
                                                        + +

                                                        Directory containing DX BUFR tables to be used for decoding.

                                                        + +

                                                        Definition at line 14 of file debufr.F90.

                                                        + +

                                                        Referenced by openbt().

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/nav_f.png b/previous_versions/v12.1.0/nav_f.png new file mode 100644 index 0000000000000000000000000000000000000000..72a58a529ed3a9ed6aa0c51a79cf207e026deee2 GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQVE_ejv*C{Z|{2ZH7M}7UYxc) zn!W8uqtnIQ>_z8U literal 0 HcmV?d00001 diff --git a/previous_versions/v12.1.0/nav_g.png b/previous_versions/v12.1.0/nav_g.png new file mode 100644 index 0000000000000000000000000000000000000000..2093a237a94f6c83e19ec6e5fd42f7ddabdafa81 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrB!3HFm1ilyoDK$?Q$B+ufw|5PB85lU25BhtE tr?otc=hd~V+ws&_A@j8Fiv!KF$B+ufw|5=67#uj90@pIL wZ=Q8~_Ju`#59=RjDrmm`tMD@M=!-l18IR?&vFVdQ&MBb@0HFXL=0 ? varName.substring(i+1) : varName; + return eval(n.replace(/\-/g,'_')); +} + +function stripPath(uri) +{ + return uri.substring(uri.lastIndexOf('/')+1); +} + +function stripPath2(uri) +{ + var i = uri.lastIndexOf('/'); + var s = uri.substring(i+1); + var m = uri.substring(0,i+1).match(/\/d\w\/d\w\w\/$/); + return m ? uri.substring(i-6) : s; +} + +function hashValue() +{ + return $(location).attr('hash').substring(1).replace(/[^\w\-]/g,''); +} + +function hashUrl() +{ + return '#'+hashValue(); +} + +function pathName() +{ + return $(location).attr('pathname').replace(/[^-A-Za-z0-9+&@#/%?=~_|!:,.;\(\)]/g, ''); +} + +function localStorageSupported() +{ + try { + return 'localStorage' in window && window['localStorage'] !== null && window.localStorage.getItem; + } + catch(e) { + return false; + } +} + +function storeLink(link) +{ + if (!$("#nav-sync").hasClass('sync') && localStorageSupported()) { + window.localStorage.setItem('navpath',link); + } +} + +function deleteLink() +{ + if (localStorageSupported()) { + window.localStorage.setItem('navpath',''); + } +} + +function cachedLink() +{ + if (localStorageSupported()) { + return window.localStorage.getItem('navpath'); + } else { + return ''; + } +} + +function getScript(scriptName,func,show) +{ + var head = document.getElementsByTagName("head")[0]; + var script = document.createElement('script'); + script.id = scriptName; + script.type = 'text/javascript'; + script.onload = func; + script.src = scriptName+'.js'; + head.appendChild(script); +} + +function createIndent(o,domNode,node,level) +{ + var level=-1; + var n = node; + while (n.parentNode) { level++; n=n.parentNode; } + if (node.childrenData) { + var imgNode = document.createElement("span"); + imgNode.className = 'arrow'; + imgNode.style.paddingLeft=(16*level).toString()+'px'; + imgNode.innerHTML=arrowRight; + node.plus_img = imgNode; + node.expandToggle = document.createElement("a"); + node.expandToggle.href = "javascript:void(0)"; + node.expandToggle.onclick = function() { + if (node.expanded) { + $(node.getChildrenUL()).slideUp("fast"); + node.plus_img.innerHTML=arrowRight; + node.expanded = false; + } else { + expandNode(o, node, false, false); + } + } + node.expandToggle.appendChild(imgNode); + domNode.appendChild(node.expandToggle); + } else { + var span = document.createElement("span"); + span.className = 'arrow'; + span.style.width = 16*(level+1)+'px'; + span.innerHTML = ' '; + domNode.appendChild(span); + } +} + +var animationInProgress = false; + +function gotoAnchor(anchor,aname,updateLocation) +{ + var pos, docContent = $('#doc-content'); + var ancParent = $(anchor.parent()); + if (ancParent.hasClass('memItemLeft') || + ancParent.hasClass('memtitle') || + ancParent.hasClass('fieldname') || + ancParent.hasClass('fieldtype') || + ancParent.is(':header')) + { + pos = ancParent.position().top; + } else if (anchor.position()) { + pos = anchor.position().top; + } + if (pos) { + var dist = Math.abs(Math.min( + pos-docContent.offset().top, + docContent[0].scrollHeight- + docContent.height()-docContent.scrollTop())); + animationInProgress=true; + docContent.animate({ + scrollTop: pos + docContent.scrollTop() - docContent.offset().top + },Math.max(50,Math.min(500,dist)),function(){ + if (updateLocation) window.location.href=aname; + animationInProgress=false; + }); + } +} + +function newNode(o, po, text, link, childrenData, lastNode) +{ + var node = new Object(); + node.children = Array(); + node.childrenData = childrenData; + node.depth = po.depth + 1; + node.relpath = po.relpath; + node.isLast = lastNode; + + node.li = document.createElement("li"); + po.getChildrenUL().appendChild(node.li); + node.parentNode = po; + + node.itemDiv = document.createElement("div"); + node.itemDiv.className = "item"; + + node.labelSpan = document.createElement("span"); + node.labelSpan.className = "label"; + + createIndent(o,node.itemDiv,node,0); + node.itemDiv.appendChild(node.labelSpan); + node.li.appendChild(node.itemDiv); + + var a = document.createElement("a"); + node.labelSpan.appendChild(a); + node.label = document.createTextNode(text); + node.expanded = false; + a.appendChild(node.label); + if (link) { + var url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + link = url; + } else { + url = node.relpath+link; + } + a.className = stripPath(link.replace('#',':')); + if (link.indexOf('#')!=-1) { + var aname = '#'+link.split('#')[1]; + var srcPage = stripPath(pathName()); + var targetPage = stripPath(link.split('#')[0]); + a.href = srcPage!=targetPage ? url : "javascript:void(0)"; + a.onclick = function(){ + storeLink(link); + if (!$(a).parent().parent().hasClass('selected')) + { + $('.item').removeClass('selected'); + $('.item').removeAttr('id'); + $(a).parent().parent().addClass('selected'); + $(a).parent().parent().attr('id','selected'); + } + var anchor = $(aname); + gotoAnchor(anchor,aname,true); + }; + } else { + a.href = url; + a.onclick = function() { storeLink(link); } + } + } else { + if (childrenData != null) + { + a.className = "nolink"; + a.href = "javascript:void(0)"; + a.onclick = node.expandToggle.onclick; + } + } + + node.childrenUL = null; + node.getChildrenUL = function() { + if (!node.childrenUL) { + node.childrenUL = document.createElement("ul"); + node.childrenUL.className = "children_ul"; + node.childrenUL.style.display = "none"; + node.li.appendChild(node.childrenUL); + } + return node.childrenUL; + }; + + return node; +} + +function showRoot() +{ + var headerHeight = $("#top").height(); + var footerHeight = $("#nav-path").height(); + var windowHeight = $(window).height() - headerHeight - footerHeight; + (function (){ // retry until we can scroll to the selected item + try { + var navtree=$('#nav-tree'); + navtree.scrollTo('#selected',100,{offset:-windowHeight/2}); + } catch (err) { + setTimeout(arguments.callee, 0); + } + })(); +} + +function expandNode(o, node, imm, showRoot) +{ + if (node.childrenData && !node.expanded) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + expandNode(o, node, imm, showRoot); + }, showRoot); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } + $(node.getChildrenUL()).slideDown("fast"); + node.plus_img.innerHTML = arrowDown; + node.expanded = true; + } + } +} + +function glowEffect(n,duration) +{ + n.addClass('glow').delay(duration).queue(function(next){ + $(this).removeClass('glow');next(); + }); +} + +function highlightAnchor() +{ + var aname = hashUrl(); + var anchor = $(aname); + if (anchor.parent().attr('class')=='memItemLeft'){ + var rows = $('.memberdecls tr[class$="'+hashValue()+'"]'); + glowEffect(rows.children(),300); // member without details + } else if (anchor.parent().attr('class')=='fieldname'){ + glowEffect(anchor.parent().parent(),1000); // enum value + } else if (anchor.parent().attr('class')=='fieldtype'){ + glowEffect(anchor.parent().parent(),1000); // struct field + } else if (anchor.parent().is(":header")) { + glowEffect(anchor.parent(),1000); // section header + } else { + glowEffect(anchor.next(),1000); // normal member + } +} + +function selectAndHighlight(hash,n) +{ + var a; + if (hash) { + var link=stripPath(pathName())+':'+hash.substring(1); + a=$('.item a[class$="'+link+'"]'); + } + if (a && a.length) { + a.parent().parent().addClass('selected'); + a.parent().parent().attr('id','selected'); + highlightAnchor(); + } else if (n) { + $(n.itemDiv).addClass('selected'); + $(n.itemDiv).attr('id','selected'); + } + if ($('#nav-tree-contents .item:first').hasClass('selected')) { + $('#nav-sync').css('top','30px'); + } else { + $('#nav-sync').css('top','5px'); + } + showRoot(); +} + +function showNode(o, node, index, hash) +{ + if (node && node.childrenData) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + showNode(o,node,index,hash); + },true); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } + $(node.getChildrenUL()).css({'display':'block'}); + node.plus_img.innerHTML = arrowDown; + node.expanded = true; + var n = node.children[o.breadcrumbs[index]]; + if (index+11) hash = '#'+parts[1].replace(/[^\w\-]/g,''); + else hash=''; + } + if (hash.match(/^#l\d+$/)) { + var anchor=$('a[name='+hash.substring(1)+']'); + glowEffect(anchor.parent(),1000); // line number + hash=''; // strip line number anchors + } + var url=root+hash; + var i=-1; + while (NAVTREEINDEX[i+1]<=url) i++; + if (i==-1) { i=0; root=NAVTREE[0][1]; } // fallback: show index + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath) + } else { + getScript(relpath+'navtreeindex'+i,function(){ + navTreeSubIndices[i] = eval('NAVTREEINDEX'+i); + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath); + } + },true); + } +} + +function showSyncOff(n,relpath) +{ + n.html(''); +} + +function showSyncOn(n,relpath) +{ + n.html(''); +} + +function toggleSyncButton(relpath) +{ + var navSync = $('#nav-sync'); + if (navSync.hasClass('sync')) { + navSync.removeClass('sync'); + showSyncOff(navSync,relpath); + storeLink(stripPath2(pathName())+hashUrl()); + } else { + navSync.addClass('sync'); + showSyncOn(navSync,relpath); + deleteLink(); + } +} + +var loadTriggered = false; +var readyTriggered = false; +var loadObject,loadToRoot,loadUrl,loadRelPath; + +$(window).on('load',function(){ + if (readyTriggered) { // ready first + navTo(loadObject,loadToRoot,loadUrl,loadRelPath); + showRoot(); + } + loadTriggered=true; +}); + +function initNavTree(toroot,relpath) +{ + var o = new Object(); + o.toroot = toroot; + o.node = new Object(); + o.node.li = document.getElementById("nav-tree-contents"); + o.node.childrenData = NAVTREE; + o.node.children = new Array(); + o.node.childrenUL = document.createElement("ul"); + o.node.getChildrenUL = function() { return o.node.childrenUL; }; + o.node.li.appendChild(o.node.childrenUL); + o.node.depth = 0; + o.node.relpath = relpath; + o.node.expanded = false; + o.node.isLast = true; + o.node.plus_img = document.createElement("span"); + o.node.plus_img.className = 'arrow'; + o.node.plus_img.innerHTML = arrowRight; + + if (localStorageSupported()) { + var navSync = $('#nav-sync'); + if (cachedLink()) { + showSyncOff(navSync,relpath); + navSync.removeClass('sync'); + } else { + showSyncOn(navSync,relpath); + } + navSync.click(function(){ toggleSyncButton(relpath); }); + } + + if (loadTriggered) { // load before ready + navTo(o,toroot,hashUrl(),relpath); + showRoot(); + } else { // ready before load + loadObject = o; + loadToRoot = toroot; + loadUrl = hashUrl(); + loadRelPath = relpath; + readyTriggered=true; + } + + $(window).bind('hashchange', function(){ + if (window.location.hash && window.location.hash.length>1){ + var a; + if ($(location).attr('hash')){ + var clslink=stripPath(pathName())+':'+hashValue(); + a=$('.item a[class$="'+clslink.replace(/1|%O$WD@{VPM$7~Ar*{o?;hlAFyLXmaDC0y znK1_#cQqJWPES%4Uujug^TE?jMft$}Eq^WaR~)%f)vSNs&gek&x%A9X9sM + + + + + + +NCEPLIBS-bufr: openbt.F90 File Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        openbt.F90 File Reference
                                                        +
                                                        +
                                                        + +

                                                        Specify DX BUFR table file of last resort. +More...

                                                        + +

                                                        Go to the source code of this file.

                                                        + + + + + +

                                                        +Functions/Subroutines

                                                        recursive subroutine openbt (lundx, mtyp)
                                                         Specify a DX BUFR table of last resort, in case subroutine cktaba() is unable to locate a DX BUFR table on its own when reading/decoding a BUFR message. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Specify DX BUFR table file of last resort.

                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1998-07-08
                                                        + +

                                                        Definition in file openbt.F90.

                                                        +

                                                        Function/Subroutine Documentation

                                                        + +

                                                        ◆ openbt()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        recursive subroutine openbt (integer, intent(out) lundx,
                                                        integer, intent(in) mtyp 
                                                        )
                                                        +
                                                        + +

                                                        Specify a DX BUFR table of last resort, in case subroutine cktaba() is unable to locate a DX BUFR table on its own when reading/decoding a BUFR message.

                                                        +

                                                        Within the NCEPLIBS-bufr distribution package, this subroutine is a default placeholder which always returns lundx = 0 and is only included to allow application programs to compile without generating a link error for an unresolved external reference. However, users are free to define their own inline version of this subroutine with the same name and calling sequence and include it within the compilation of their application program in order to override the default placeholder version of this subroutine. In such cases, subroutine cktaba() will then use the inline version of this subroutine as a last resort when attempting to locate the required DX BUFR table file.

                                                        +
                                                        Parameters
                                                        + + + +
                                                        mtyp- Data category of BUFR message for which subroutine cktaba() was unable to locate a DX BUFR table file
                                                        lundx- Fortran logical unit number for file containing DX BUFR table information to be used in decoding message
                                                          +
                                                        • 0 = No such file is available
                                                        • +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        Remarks
                                                          +
                                                        • See DX BUFR Tables for more information about the format and contents of DX BUFR table files.
                                                        • +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1998-07-08
                                                        + +

                                                        Definition at line 30 of file openbt.F90.

                                                        + +

                                                        References errwrt(), x48(), and x84().

                                                        + +

                                                        Referenced by cktaba().

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/openbt_8F90.js b/previous_versions/v12.1.0/openbt_8F90.js new file mode 100644 index 000000000..6585aad73 --- /dev/null +++ b/previous_versions/v12.1.0/openbt_8F90.js @@ -0,0 +1,4 @@ +var openbt_8F90 = +[ + [ "openbt", "openbt_8F90.html#a7e64e80a4c6a00f66c7dc1cbdeab96ef", null ] +]; \ No newline at end of file diff --git a/previous_versions/v12.1.0/openbt_8F90_source.html b/previous_versions/v12.1.0/openbt_8F90_source.html new file mode 100644 index 000000000..17ac047cc --- /dev/null +++ b/previous_versions/v12.1.0/openbt_8F90_source.html @@ -0,0 +1,142 @@ + + + + + + + +NCEPLIBS-bufr: openbt.F90 Source File + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        +
                                                        openbt.F90
                                                        +
                                                        +
                                                        +Go to the documentation of this file.
                                                        1 
                                                        +
                                                        5 
                                                        +
                                                        30 recursive subroutine openbt(lundx,mtyp)
                                                        +
                                                        31 
                                                        +
                                                        32  use modv_vars, only: im8b
                                                        +
                                                        33 
                                                        +
                                                        34  implicit none
                                                        +
                                                        35 
                                                        +
                                                        36  integer, intent(in) :: mtyp
                                                        +
                                                        37  integer, intent(out) :: lundx
                                                        +
                                                        38  integer iprt, my_mtyp
                                                        +
                                                        39 
                                                        +
                                                        40  common /quiet/ iprt
                                                        +
                                                        41 
                                                        +
                                                        42  character*128 errstr
                                                        +
                                                        43 
                                                        +
                                                        44  ! Check for I8 integers
                                                        +
                                                        45  if(im8b) then
                                                        +
                                                        46  im8b=.false.
                                                        +
                                                        47  call x84(mtyp,my_mtyp,1)
                                                        +
                                                        48  call openbt(lundx,my_mtyp)
                                                        +
                                                        49  call x48(lundx,lundx,1)
                                                        +
                                                        50  im8b=.true.
                                                        +
                                                        51  return
                                                        +
                                                        52  endif
                                                        +
                                                        53 
                                                        +
                                                        54  if(iprt>=0) then
                                                        +
                                                        55  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        56  errstr = 'BUFRLIB: OPENBT - THIS IS A DUMMY BUFRLIB ROUTINE'// &
                                                        +
                                                        57  ' CALLED BY CKTABA OR APPL. PGM; OPENBT SHOULD BE INCL. IN-LINE IN APPL. PGM'
                                                        +
                                                        58  call errwrt(errstr)
                                                        +
                                                        59  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        60  call errwrt(' ')
                                                        +
                                                        61  endif
                                                        +
                                                        62 
                                                        +
                                                        63  lundx = 0
                                                        +
                                                        64 
                                                        +
                                                        65  return
                                                        +
                                                        66 end subroutine openbt
                                                        +
                                                        subroutine errwrt(str)
                                                        Specify a custom location for the logging of error and diagnostic messages generated by the NCEPLIBS-...
                                                        Definition: errwrt.F90:32
                                                        +
                                                        recursive subroutine openbt(lundx, mtyp)
                                                        Specify a DX BUFR table of last resort, in case subroutine cktaba() is unable to locate a DX BUFR tab...
                                                        Definition: openbt.F90:31
                                                        +
                                                        subroutine x48(iin4, iout8, nval)
                                                        Encode one or more 4-byte integer values as 8-byte integer values.
                                                        Definition: x4884.F90:18
                                                        +
                                                        subroutine x84(iin8, iout4, nval)
                                                        Encode one or more 8-byte integer values as 4-byte integer values.
                                                        Definition: x4884.F90:65
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/openclosebf_8F90.html b/previous_versions/v12.1.0/openclosebf_8F90.html new file mode 100644 index 000000000..2e098ec7f --- /dev/null +++ b/previous_versions/v12.1.0/openclosebf_8F90.html @@ -0,0 +1,753 @@ + + + + + + + +NCEPLIBS-bufr: openclosebf.F90 File Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        openclosebf.F90 File Reference
                                                        +
                                                        +
                                                        + +

                                                        Open or close a file to the library. +More...

                                                        + +

                                                        Go to the source code of this file.

                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                                                        +Functions/Subroutines

                                                        recursive subroutine closbf (lunit)
                                                         Close the connection between logical unit lunit and the NCEPLIBS-bufr software. More...
                                                         
                                                        recursive subroutine fortran_close (lunit, iret)
                                                         Close a Fortran file on the local system. More...
                                                         
                                                        recursive subroutine fortran_open (filename, lunit, format, position, iret)
                                                         Open a Fortran file on the local system. More...
                                                         
                                                        recursive subroutine openbf (lunit, io, lundx)
                                                         Connect a new file to the NCEPLIBS-bufr software for input or output operations, or initialize the library without connecting to a file, or change the verbosity of the library for an already-connected BUFR file. More...
                                                         
                                                        subroutine posapx (lunxx)
                                                         Position an output BUFR file for appending. More...
                                                         
                                                        subroutine rewnbf (lunit, isr)
                                                         Store or restore parameters associated with a BUFR file. More...
                                                         
                                                        recursive subroutine status (lunit, lun, il, im)
                                                         Check whether a specified Fortran logical unit number is currently connected to the NCEPLIBS-bufr software. More...
                                                         
                                                        recursive subroutine ufbcnt (lunit, kmsg, ksub)
                                                         Get the current location of the file pointer within a BUFR file, in terms of a message number counting from the beginning of the file, and a data subset number counting from the beginning of that message. More...
                                                         
                                                        recursive subroutine ufbtab (lunin, tab, i1, i2, iret, str)
                                                         Read through every data subset in a BUFR file and return one or more specified data values from each subset. More...
                                                         
                                                        subroutine wtstat (lunit, lun, il, im)
                                                         Update file status in library internals. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Open or close a file to the library.

                                                        +
                                                        Authors
                                                        J. Woollen, J. Ator, D. Keyser
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition in file openclosebf.F90.

                                                        +

                                                        Function/Subroutine Documentation

                                                        + +

                                                        ◆ closbf()

                                                        + +
                                                        +
                                                        + + + + + + + + +
                                                        recursive subroutine closbf (integer, intent(in) lunit)
                                                        +
                                                        + +

                                                        Close the connection between logical unit lunit and the NCEPLIBS-bufr software.

                                                        +
                                                        Remarks
                                                          +
                                                        • This subroutine will execute a Fortran "CLOSE" on logical unit lunit, even though subroutine openbf() didn't previously handle the corresponding Fortran "OPEN" of the same file.
                                                        • +
                                                        • It's a good idea to call this subroutine for every lunit that was opened to the software via openbf(); however, it's especially important to do so when writing/encoding a BUFR file, in order to ensure that all output is properly flushed to lunit.
                                                        • +
                                                        +
                                                        +
                                                        Parameters
                                                        + + +
                                                        lunit- Fortran logical unit number for BUFR file
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen, J. Ator
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 337 of file openclosebf.F90.

                                                        + +

                                                        References closmg(), errwrt(), moda_nulbfr::null, status(), wtstat(), and x84().

                                                        + +

                                                        Referenced by apxdx(), bufr_c2f_interface::closbf_c(), copybf(), datebf(), dumpbf(), exitbufr(), gettab(), mesgbc(), mesgbf(), split_by_subset(), ufbinx(), ufbmem(), ufbmex(), and ufbtab().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ fortran_close()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        recursive subroutine fortran_close (integer, intent(in) lunit,
                                                        integer, intent(out) iret 
                                                        )
                                                        +
                                                        + +

                                                        Close a Fortran file on the local system.

                                                        +
                                                        Parameters
                                                        + + + +
                                                        lunit- Fortran logical unit number for Fortran file
                                                        iret- return code from the Fortran close statement
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        Jeff Whitaker
                                                        +
                                                        Date
                                                        2015-08-30
                                                        + +

                                                        Definition at line 48 of file openclosebf.F90.

                                                        + +

                                                        References x48(), and x84().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ fortran_open()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        recursive subroutine fortran_open (character*(*), intent(in) filename,
                                                        integer, intent(in) lunit,
                                                        character*(*), intent(in) format,
                                                        character*(*), intent(in) position,
                                                        integer, intent(out) iret 
                                                        )
                                                        +
                                                        + +

                                                        Open a Fortran file on the local system.

                                                        +
                                                        Parameters
                                                        + + + + + + +
                                                        filename- name of the file to be opened
                                                        lunit- Fortran logical unit number for Fortran file
                                                        format- format of the Fortran file
                                                        position- to rewind or continue with open file
                                                        iret- return code from the Fortran open statement
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        Jeff Whitaker
                                                        +
                                                        Date
                                                        2015-08-30
                                                        + +

                                                        Definition at line 15 of file openclosebf.F90.

                                                        + +

                                                        References x48(), and x84().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ openbf()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        recursive subroutine openbf (integer, intent(in) lunit,
                                                        character*(*), intent(in) io,
                                                        integer, intent(in) lundx 
                                                        )
                                                        +
                                                        + +

                                                        Connect a new file to the NCEPLIBS-bufr software for input or output operations, or initialize the library without connecting to a file, or change the verbosity of the library for an already-connected BUFR file.

                                                        +

                                                        The logical unit numbers lunit and lundx must already be associated with actual filenames on the local system, typically via a Fortran "OPEN" statement. Multiple logical units can be connected to the NCEPLIBS-bufr software at any one time.

                                                        +

                                                        The argument io is a character string describing how the file connected to lunit will be used, e.g. 'IN' is used to access an existing file of BUFR messages for input (i.e. reading/decoding BUFR), and 'OUT' is used to access a new file for output (i.e. writing/encoding BUFR). An option 'APX' is also available which behaves like 'OUT', except that output is then appended to an existing BUFR file rather than creating a new one from scratch, and there are also some additional options 'NUL' and 'NODX' which can likewise be used instead of 'OUT' for some very special cases as needed. There's also an option 'SEC3' which can be used in place of 'IN' for certain cases when the user is attempting to read BUFR messages whose content and descriptor layout are unknown in advance. However, all of these additional options are basically just variations of 'IN' or 'OUT', again depending on whether the intent is to read or write BUFR messages from the file connected to lunit. The only exceptions are when io = 'FIRST' or 'QUIET'. When io = 'FIRST', the subroutine simply checks whether it has already been called from within the application program and, if not, goes ahead and initializes the library without actually connecting any files in lunit or lundx.

                                                        +

                                                        Alternatively, when io = 'QUIET', the subroutine simply sets or resets the internal print verbosity switch to the value of input argument lundx, overriding its previous value and/or its internal default value of 0.

                                                        +

                                                        The third and final call argument lundx identifies the logical unit which contains the definition of the DX BUFR tables to be associated with unit lunit. Except when io = 'SEC3', every BUFR file that is linked to the NCEPLIBS-bufr software must have a DX BUFR tables file associated with it, and these tables may be defined within a separate ASCII text file (see Description and Format of DX BUFR Tables for more info.) or, in the case of an existing BUFR file, may be embedded within the first few BUFR messages of the file itself, and in which case the user can denote this to the subroutine by setting lundx to the same value as lunit.

                                                        +
                                                        Remarks
                                                          +
                                                        • When an existing BUFR file is accessed for input (i.e. reading/decoding BUFR), the associated DX BUFR tables defined by lundx are stored internally within the NCEPLIBS-bufr software and are referenced during all subsequent processing of the file. Likewise, when a file is accessed for output (i.e. writing/encoding BUFR), the associated DX BUFR tables are still stored internally for subsequent reference; however, the output file itself is also initialized by writing the BUFR table information (as one or more BUFR messages) to the beginning of the file, except when io = 'NODX', and in which case the writing of these additional messages is suppressed.
                                                        • +
                                                        • As noted above, 'SEC3' is the only value of io (other than 'FIRST' or 'QUIET') where it's not necessary to provide pre-defined DX BUFR tables via lundx. Instead, this option instructs the NCEPLIBS-bufr software to unpack the data description section (Section 3) from each BUFR message it reads and then decode the contents accordingly. In this case, it's necessary to provide a set of BUFR master tables containing listings of all possible BUFR descriptors (see Description and Format of master BUFR Tables for more info.), but otherwise no prior knowledge is required of the contents of the messages to be decoded.
                                                        • +
                                                        +
                                                        +
                                                        Parameters
                                                        + + + + +
                                                        lunit- Fortran logical unit number for BUFR file (unless io is set to 'FIRST' or 'QUIET', in which case this is a dummy argument)
                                                        io- flag indicating how lunit is to be used by the software:
                                                          +
                                                        • 'IN' = input operations with table processing
                                                        • +
                                                        • 'INX' = input operations w/o table processing
                                                        • +
                                                        • 'OUX' = output operations w/o table processing
                                                        • +
                                                        • 'OUT' = output operations with table processing
                                                        • +
                                                        • 'SEC3' = same as 'IN', except use Section 3 of input messages for decoding rather than DX BUFR table information from lundx; in this case lundx is ignored, and the user must provide appropriate master BUFR tables within the directory specified by a subsequent call to subroutine mtinfo()
                                                        • +
                                                        • 'NODX' = same as 'OUT', except don't write DX BUFR table messages to lunit
                                                        • +
                                                        • 'APN' = same as 'NODX', except begin writing at end of file ("append")
                                                        • +
                                                        • 'APX' = same as 'APN', except backspace before appending
                                                        • +
                                                        • 'NUL' = same as 'OUT', except don't write any messages whatsoever to lunit (e.g. when subroutine writsa() is to be used)
                                                        • +
                                                        • 'INUL' = same as 'IN', except don't read any messages whatsoever from lunit (e.g. when subroutine readerme() is to be used)
                                                        • +
                                                        • 'QUIET' = lunit is ignored; this is an indicator that the value for iprt in common block /quiet/ is being reset to the value in lundx
                                                        • +
                                                        • 'FIRST' = lunit and lundx are ignored; this is an indicator to initialize the NCEPLIBS-bufr software, in case this subroutine was never previously called
                                                        • +
                                                        +
                                                        lundx- Fortran logical unit number containing DX BUFR table information, except as noted below:
                                                          +
                                                        • If io is not set to 'FIRST' or 'QUIET' = Fortran logical unit number containing DX BUFR table information to be used in reading/writing from/to lunit (depending on the case); this value may be set equal to lunit if DX BUFR table information is already embedded in lunit
                                                        • +
                                                        • If io is set to 'QUIET' = indicator for degree of printout:
                                                            +
                                                          • -1 = no printout except for ABORT messages
                                                          • +
                                                          • 0 = limited printout (default)
                                                          • +
                                                          • 1 = all warning messages are printed
                                                          • +
                                                          • 2 = all warning and info messages are printed
                                                          • +
                                                          • 3 = all warning, info and debug messages are printed
                                                          • +
                                                          +
                                                        • +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        Authors
                                                        J. Woollen, J. Ator, D. Keyser
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 168 of file openclosebf.F90.

                                                        + +

                                                        References arallocf(), bfrini(), bort(), errwrt(), moda_msgcwd::idate, moda_msgcwd::inode, moda_sc3bfr::isc3, moda_stcode::iscodes, moda_lushr::lus, moda_msgcwd::msub, moda_msgcwd::nmsg, moda_msgcwd::nsub, moda_nulbfr::null, posapx(), readdx(), status(), writdx(), wtstat(), and x84().

                                                        + +

                                                        Referenced by apxdx(), binv(), cmpbqm(), copybf(), datebf(), dumpbf(), fdebufr_c(), gettab(), mesgbc(), mesgbf(), bufr_c2f_interface::openbf_c(), pkvs01(), rdmgsb(), readbp(), readmp(), sinv(), split_by_subset(), ufbinx(), ufbmem(), ufbmex(), and ufbtab().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ posapx()

                                                        + +
                                                        +
                                                        + + + + + + + + +
                                                        subroutine posapx (integer, intent(in) lunxx)
                                                        +
                                                        + +

                                                        Position an output BUFR file for appending.

                                                        +

                                                        Read to the end of the file pointed to by abs(lunxx) and position it for appending. The file must have already been opened for output operations. If lunxx < 0, then the file is not backspaced before being positioned for append.

                                                        +
                                                        Parameters
                                                        + + +
                                                        lunxx- Absolute value is Fortran logical unit number for BUFR file
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 630 of file openclosebf.F90.

                                                        + +

                                                        References bort(), moda_mgwa::mgwa, rdbfdx(), rdmsgw(), and status().

                                                        + +

                                                        Referenced by openbf().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ rewnbf()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        subroutine rewnbf (integer, intent(in) lunit,
                                                        integer, intent(in) isr 
                                                        )
                                                        +
                                                        + +

                                                        Store or restore parameters associated with a BUFR file.

                                                        +

                                                        Depending on the value of isr, either:

                                                          +
                                                        • Store the current parameters associated with a BUFR file connected to lunit (read/write pointers, etc.), set the file status to read, then rewind the BUFR file and position it such that the next BUFR message read will be the first message in the file containing actual subsets with data; or
                                                        • +
                                                        • Restore the BUFR file connected to lunit to the parameters it had prior to the previous call, and using the information that was saved previously
                                                        • +
                                                        +

                                                        This allows information to be extracted from a particular subset in a BUFR file which is in the midst of being read from or written to by an application program. Note that, for any given BUFR file, a call to this subroutine with isr = 0 must precede a call to this same subroutine with isr = 1. An application program might first call this subroutine with isr = 0, then call either subroutine rdmgsb() or ufbinx() to get information from a subset, then call this routine again with isr = 1 to restore the pointers in the BUFR file to their original location. For example, this subroutine is called internally by subroutine ufbtab() whenever the BUFR file it is acting upon is already open for input or output.

                                                        +
                                                        Parameters
                                                        + + + +
                                                        lunit- Fortran logical unit number for BUFR file.
                                                        isr- Switch:
                                                          +
                                                        • 0 = Store current parameters associated with BUFR file, set file status to read, and rewind file such that next message read is first message containing subset data
                                                        • +
                                                        • 1 = Restore BUFR file with parameters saved from the previous call to this routine with isr = 0
                                                        • +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        Woollen
                                                        +
                                                        Date
                                                        2003-11-04
                                                        + +

                                                        Definition at line 693 of file openclosebf.F90.

                                                        + +

                                                        References bort(), moda_bitbuf::ibit, moda_bufrsr::jbay, moda_bufrsr::jbit, moda_bufrsr::jbyt, moda_bufrsr::jill, moda_bufrsr::jimm, moda_bufrsr::jmsg, moda_bufrsr::jsr, moda_bufrsr::jsub, moda_bufrsr::junn, moda_bitbuf::mbay, moda_bitbuf::mbyt, moda_msgcwd::nmsg, moda_msgcwd::nsub, readmg(), readsb(), status(), and wtstat().

                                                        + +

                                                        Referenced by ufbinx(), and ufbtab().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ status()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        recursive subroutine status (integer, intent(in) lunit,
                                                        integer, intent(out) lun,
                                                        integer, intent(out) il,
                                                        integer, intent(out) im 
                                                        )
                                                        +
                                                        + +

                                                        Check whether a specified Fortran logical unit number is currently connected to the NCEPLIBS-bufr software.

                                                        +

                                                        If the unit number is already connected, then the subroutine returns information about the associated file. Otherwise, it returns the next available file ID that could be used to connect the associated file to the software via a subsequent call to subroutine wtstat().

                                                        +
                                                        Parameters
                                                        + + + + + +
                                                        lunit- Fortran logical unit number for BUFR file
                                                        lun- File ID associated with lunit
                                                          +
                                                        • 0 = lunit is not already connected to the software, and there is no remaining internal space available that could be used to connect it
                                                        • +
                                                        +
                                                        il- File status:
                                                          +
                                                        • 0 = lunit is not already connected to the software, but lun contains a file ID that could be used to connect it via a subsequent call to subroutine wtstat()
                                                        • +
                                                        • 1 = lunit is already connected to the software for output operations (i.e. writing/encoding BUFR)
                                                        • +
                                                        • -1 = lunit is already connected to the software for input operations (i.e. reading/decoding BUFR)
                                                        • +
                                                        +
                                                        im- Message status, indicating whether there is already a message open within internal arrays for lunit:
                                                          +
                                                        • 0 = No
                                                        • +
                                                        • 1 = Yes
                                                        • +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 405 of file openclosebf.F90.

                                                        + +

                                                        References bort(), errwrt(), moda_stbfr::iolun, moda_stbfr::iomsg, x48(), and x84().

                                                        + +

                                                        Referenced by closbf(), closmg(), copybf(), copymg(), copysb(), cpdxmm(), cpymem(), datebf(), drfini(), dumpbf(), dxdump(), getabdb(), getcfmng(), gettab(), gettagpr(), gettagre(), getvalnb(), ifbget(), igetsc(), invmrg(), iupvs01(), lcmgdf(), mesgbc(), minimg(), msgwrt(), nemdefs(), nemspecs(), nmsub(), openbf(), openmb(), openmg(), posapx(), rdmemm(), rdmems(), rdmgsb(), rdmsgw(), readdx(), readerme(), readlc(), readmg(), readns(), readsb(), rewnbf(), rtrcpt(), setvalnb(), bufr_c2f_interface::status_c(), stndrd(), ufbcnt(), ufbcpy(), ufbcup(), ufbdmp(), ufbevn(), ufbget(), ufbin3(), ufbint(), ufbinx(), ufbmem(), ufbmms(), ufbovr(), ufbpos(), ufbqcd(), ufbqcp(), ufbrep(), ufbrms(), ufbseq(), ufbstp(), ufbtab(), ufbtam(), ufdump(), upftbv(), wrcmps(), wrdxtb(), writlc(), writsa(), and writsb().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ ufbcnt()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        recursive subroutine ufbcnt (integer, intent(in) lunit,
                                                        integer, intent(out) kmsg,
                                                        integer, intent(out) ksub 
                                                        )
                                                        +
                                                        + +

                                                        Get the current location of the file pointer within a BUFR file, in terms of a message number counting from the beginning of the file, and a data subset number counting from the beginning of that message.

                                                        +
                                                        Remarks
                                                          +
                                                        • Logical unit lunit should have already been opened via a previous call to subroutine openbf(). If lunit was opened for input operations, then kmsg is incremented with each call to any of the message-reading subroutines, and ksub is incremented with each call to any of the subset-reading subroutines for that message. Otherwise, if lunit was opened for output operations, then kmsg is incremented with each call to any of the message-writing subroutines, and ksub is incremented with each call to any of the subset-writing subroutines for that message.
                                                        • +
                                                        • The value returned for kmsg does not include any messages which contain DX BUFR tables information.
                                                        • +
                                                        +
                                                        +
                                                        Parameters
                                                        + + + + +
                                                        lunit- Fortran logical unit number for BUFR file
                                                        kmsg- Ordinal number of current message, counting from the beginning of the BUFR file, but not counting any messages which contain DX BUFR tables information
                                                        ksub- Ordinal number of current data subset within (kmsg)th message, counting from the beginning of the message
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 585 of file openclosebf.F90.

                                                        + +

                                                        References bort(), moda_msgcwd::nmsg, moda_msgcwd::nsub, status(), x48(), and x84().

                                                        + +

                                                        Referenced by cmpbqm(), readbp(), and ufbpos().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ ufbtab()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        recursive subroutine ufbtab (integer, intent(in) lunin,
                                                        real*8, dimension(i1,i2), intent(out) tab,
                                                        integer, intent(in) i1,
                                                        integer, intent(in) i2,
                                                        integer, intent(out) iret,
                                                        character*(*), intent(in) str 
                                                        )
                                                        +
                                                        + +

                                                        Read through every data subset in a BUFR file and return one or more specified data values from each subset.

                                                        +

                                                        This provides a useful way to scan the ranges of one or more specified data values across all of the data subsets within an entire BUFR file. It is similar to subroutine ufbtam(), except that ufbtam() works on data subsets within internal arrays.

                                                        +

                                                        It is the user's responsibility to ensure that tab is dimensioned sufficiently large enough to accommodate the number of data values that are to be read from the BUFR file. Specifically, each row of tab will contain the data values read from a different data subset, so the value i2 must be at least as large as the total number of data subsets in the BUFR file.

                                                        +

                                                        If logical unit abs(lunin) has already been opened via a previous call to subroutine openbf(), then this subroutine will save the current file position, rewind the file to the beginning, read through the entire file, and then restore it to its previous file position. Otherwise, if logical unit abs(lunin) has not already been opened via a previous call to subroutine openbf(), then this subroutine will open it via an internal call to subroutine openbf(), read through the entire file, and then close it via an internal call to subroutine closbf().

                                                        +
                                                        Remarks
                                                          +
                                                        • If lunin < 0, the number of data subsets in the BUFR file will still be returned in iret; however, str will be ignored, and all of the values returned in tab will contain the current placeholder value for "missing" data.
                                                        • +
                                                        • If any of the Table B mnemonics in str are replicated within the data subset definition for the BUFR file, then this subroutine will only return the value corresponding to the first occurrence of each such mnemonic (counting from the beginning of the data subset definition) within the corresponding row of tab.
                                                        • +
                                                        • There are a few additional special mnemonics that can be included within str when calling this subroutine, and which in turn will result in special information being returned within the corresponding location in tab:
                                                            +
                                                          • IREC - returns the number of the BUFR message within the file pointed to by abs(lunin) (counting from the beginning of the file) in which the current data subset resides
                                                          • +
                                                          • ISUB - returns the number of the current data subset within the BUFR message pointed to by IREC, counting from the beginning of the message
                                                          • +
                                                          +
                                                        • +
                                                        +
                                                        +
                                                        Parameters
                                                        + + + + + + + +
                                                        lunin- Absolute value is Fortran logical unit number for BUFR file
                                                        tab- Data values
                                                        i1- First dimension of tab as allocated within the calling program
                                                        i2- Second dimension of tab as allocated within the calling program
                                                        iret- Number of data subsets in BUFR file
                                                        str- String of blank-separated Table B mnemonics, in one-to-one correspondence with the number of data values that will be read from each data subset within the first dimension of tab (see DX BUFR Tables for further information about Table B mnemonics)
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 856 of file openclosebf.F90.

                                                        + +

                                                        References bort(), closbf(), errwrt(), moda_bitbuf::ibit, moda_tables::ibt, moda_usrint::inv, ireadmg(), ireadsb(), moda_tables::itp, moda_bitbuf::mbay, moda_bitbuf::mbyt, moda_unptyp::msgunp, moda_msgcwd::msub, moda_msgcwd::nmsg, nmsub(), moda_msgcwd::nsub, moda_usrint::nval, openbf(), parstr(), rewnbf(), status(), string(), up8(), upb(), upb8(), upc(), ups(), usrtpl(), x48(), and x84().

                                                        + +

                                                        Referenced by sinv().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ wtstat()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        subroutine wtstat (integer, intent(in) lunit,
                                                        integer, intent(in) lun,
                                                        integer, intent(in) il,
                                                        integer, intent(in) im 
                                                        )
                                                        +
                                                        + +

                                                        Update file status in library internals.

                                                        +

                                                        This subroutine can be used to connect or disconnect a specified Fortran logical unit number to/from the NCEPLIBS-bufr software, and it can also be used to set or reset the internal message status associated with that logical unit number.

                                                        +
                                                        Note
                                                        Before this subroutine is called to connect any lunit to the software, a previous call should have been made to subroutine status() to confirm that internal space is available to connect the associated file, as well as to obtain an lun value to use in connecting it. Once a file is connected, the corresponding lunit and lun values remain linked to each other for as long as the file is connected to the software.
                                                        +
                                                        Parameters
                                                        + + + + + +
                                                        lunit- Fortran logical unit number for BUFR file
                                                        lun- File ID associated with lunit
                                                        il- File status update option:
                                                          +
                                                        • 0 Disconnect lunit from the software
                                                        • +
                                                        • 1 Connect lunit to the software for output operations (i.e. writing/encoding BUFR), if not already connected
                                                        • +
                                                        • -1 Connect lunit to the software for input operations (i.e. reading/decoding BUFR), if not already connected
                                                        • +
                                                        +
                                                        im- Message status update option, indicating whether a message is currently open within the internal arrays for lunit:
                                                          +
                                                        • 0 No
                                                        • +
                                                        • 1 Yes
                                                        • +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 508 of file openclosebf.F90.

                                                        + +

                                                        References bort(), moda_stbfr::iolun, and moda_stbfr::iomsg.

                                                        + +

                                                        Referenced by closbf(), closmg(), openbf(), openmb(), openmg(), rdmemm(), readerme(), readmg(), and rewnbf().

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/openclosebf_8F90.js b/previous_versions/v12.1.0/openclosebf_8F90.js new file mode 100644 index 000000000..94d26d51a --- /dev/null +++ b/previous_versions/v12.1.0/openclosebf_8F90.js @@ -0,0 +1,13 @@ +var openclosebf_8F90 = +[ + [ "closbf", "openclosebf_8F90.html#a48a49bb82348400c1ba6af00c0138ab3", null ], + [ "fortran_close", "openclosebf_8F90.html#aa585324fae3ecf559d6f39507dde6715", null ], + [ "fortran_open", "openclosebf_8F90.html#a80df0d62e629b094edd2b3682a7d9e3a", null ], + [ "openbf", "openclosebf_8F90.html#a9dc7e4fb476a5528a958ee132ee6392d", null ], + [ "posapx", "openclosebf_8F90.html#aeef6f5d08d9631dbe92c1821a9d02903", null ], + [ "rewnbf", "openclosebf_8F90.html#a56b33c6538a8c0abf1b6a31584c68494", null ], + [ "status", "openclosebf_8F90.html#abceda08f9c29378d3ddadeb46e823d00", null ], + [ "ufbcnt", "openclosebf_8F90.html#aac1b87fbbb688e4f5e2120012eaee382", null ], + [ "ufbtab", "openclosebf_8F90.html#ae88bf9794ed98ec79e9de0faff0093af", null ], + [ "wtstat", "openclosebf_8F90.html#ada4363a068f7df043d75b4519c55142f", null ] +]; \ No newline at end of file diff --git a/previous_versions/v12.1.0/openclosebf_8F90_source.html b/previous_versions/v12.1.0/openclosebf_8F90_source.html new file mode 100644 index 000000000..8c9c9a3a7 --- /dev/null +++ b/previous_versions/v12.1.0/openclosebf_8F90_source.html @@ -0,0 +1,1049 @@ + + + + + + + +NCEPLIBS-bufr: openclosebf.F90 Source File + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        +
                                                        openclosebf.F90
                                                        +
                                                        +
                                                        +Go to the documentation of this file.
                                                        1 
                                                        +
                                                        5 
                                                        +
                                                        15 recursive subroutine fortran_open(filename, lunit, format, position, iret)
                                                        +
                                                        16 
                                                        +
                                                        17  use modv_vars, only: im8b
                                                        +
                                                        18 
                                                        +
                                                        19  implicit none
                                                        +
                                                        20  character*(*), intent(in) :: filename, format, position
                                                        +
                                                        21  integer, intent(in) :: lunit
                                                        +
                                                        22  integer, intent(out) :: iret
                                                        +
                                                        23  integer my_lunit
                                                        +
                                                        24 
                                                        +
                                                        25  ! check for i8 integers
                                                        +
                                                        26 
                                                        +
                                                        27  if(im8b) then
                                                        +
                                                        28  im8b=.false.
                                                        +
                                                        29 
                                                        +
                                                        30  call x84(lunit,my_lunit,1)
                                                        +
                                                        31  call fortran_open(filename,my_lunit,format,position,iret)
                                                        +
                                                        32  call x48(iret,iret,1)
                                                        +
                                                        33 
                                                        +
                                                        34  im8b=.true.
                                                        +
                                                        35  return
                                                        +
                                                        36  endif
                                                        +
                                                        37 
                                                        +
                                                        38  open(lunit, file=trim(filename), form=trim(format), position=trim(position), iostat=iret)
                                                        +
                                                        39  return
                                                        +
                                                        40 end subroutine fortran_open
                                                        +
                                                        41 
                                                        +
                                                        48 recursive subroutine fortran_close(lunit, iret)
                                                        +
                                                        49 
                                                        +
                                                        50  use modv_vars, only: im8b
                                                        +
                                                        51 
                                                        +
                                                        52  implicit none
                                                        +
                                                        53  integer, intent(in) :: lunit
                                                        +
                                                        54  integer, intent(out) :: iret
                                                        +
                                                        55  integer my_lunit
                                                        +
                                                        56 
                                                        +
                                                        57  ! check for i8 integers
                                                        +
                                                        58 
                                                        +
                                                        59  if(im8b) then
                                                        +
                                                        60  im8b=.false.
                                                        +
                                                        61 
                                                        +
                                                        62  call x84(lunit,my_lunit,1)
                                                        +
                                                        63  call fortran_close(my_lunit,iret)
                                                        +
                                                        64  call x48(iret,iret,1)
                                                        +
                                                        65 
                                                        +
                                                        66  im8b=.true.
                                                        +
                                                        67  return
                                                        +
                                                        68  endif
                                                        +
                                                        69 
                                                        +
                                                        70  close(lunit, iostat=iret)
                                                        +
                                                        71  return
                                                        +
                                                        72 end subroutine fortran_close
                                                        +
                                                        73 
                                                        +
                                                        168 recursive subroutine openbf(lunit,io,lundx)
                                                        +
                                                        169 
                                                        +
                                                        170  use bufrlib
                                                        +
                                                        171 
                                                        +
                                                        172  use modv_vars, only: im8b, ifopbf, nfiles
                                                        +
                                                        173 
                                                        +
                                                        174  use moda_msgcwd
                                                        +
                                                        175  use moda_stbfr
                                                        +
                                                        176  use moda_sc3bfr
                                                        +
                                                        177  use moda_lushr
                                                        +
                                                        178  use moda_nulbfr
                                                        +
                                                        179  use moda_stcode
                                                        +
                                                        180 
                                                        +
                                                        181  implicit none
                                                        +
                                                        182 
                                                        +
                                                        183  integer, intent(in) :: lunit, lundx
                                                        +
                                                        184  integer my_lunit, my_lundx, iprt, iprtprv, lun, il, im
                                                        +
                                                        185 
                                                        +
                                                        186  character*(*), intent(in) :: io
                                                        +
                                                        187  character*255 filename, fileacc
                                                        +
                                                        188  character*128 bort_str, errstr
                                                        +
                                                        189  character*28 cprint(0:4)
                                                        +
                                                        190 
                                                        +
                                                        191  common /quiet/ iprt
                                                        +
                                                        192 
                                                        +
                                                        193  data cprint/ &
                                                        +
                                                        194  ' (only ABORTs) ', &
                                                        +
                                                        195  ' (limited -default) ', &
                                                        +
                                                        196  ' (all warnings) ', &
                                                        +
                                                        197  ' (all warnings+infos) ', &
                                                        +
                                                        198  ' (all warnings+infos+debugs)'/
                                                        +
                                                        199 
                                                        +
                                                        200  ! Check for i8 integers
                                                        +
                                                        201 
                                                        +
                                                        202  if(im8b) then
                                                        +
                                                        203  im8b=.false.
                                                        +
                                                        204 
                                                        +
                                                        205  call x84(lunit,my_lunit,1)
                                                        +
                                                        206  call x84(lundx,my_lundx,1)
                                                        +
                                                        207  call openbf(my_lunit,io,my_lundx)
                                                        +
                                                        208 
                                                        +
                                                        209  im8b=.true.
                                                        +
                                                        210  return
                                                        +
                                                        211  endif
                                                        +
                                                        212 
                                                        +
                                                        213  ! If this is the first call to this subroutine, initialize iprt in /quiet/ as 0
                                                        +
                                                        214 
                                                        +
                                                        215  if(ifopbf==0) iprt = 0
                                                        +
                                                        216 
                                                        +
                                                        217  if(io=='QUIET') then
                                                        +
                                                        218  ! override previous iprt value (printout indicator)
                                                        +
                                                        219  iprtprv = iprt
                                                        +
                                                        220  iprt = lundx
                                                        +
                                                        221  if(iprt<-1) iprt = -1
                                                        +
                                                        222  if(iprt>3) iprt = 3
                                                        +
                                                        223  if(iprt>=0) then
                                                        +
                                                        224  call errwrt('++++++++++++++BUFR ARCHIVE LIBRARY+++++++++++++++++')
                                                        +
                                                        225  write ( unit=errstr, fmt='(A,I3,A,A,I3,A)' ) 'BUFRLIB: OPENBF - DEGREE OF MESSAGE PRINT INDICATOR CHNGED FROM', &
                                                        +
                                                        226  iprtprv,cprint(iprtprv+1),' TO',iprt,cprint(iprt+1)
                                                        +
                                                        227  call errwrt(errstr)
                                                        +
                                                        228  call errwrt('++++++++++++++BUFR ARCHIVE LIBRARY+++++++++++++++++')
                                                        +
                                                        229  call errwrt(' ')
                                                        +
                                                        230  endif
                                                        +
                                                        231  endif
                                                        +
                                                        232 
                                                        +
                                                        233  if(ifopbf==0) then
                                                        +
                                                        234  ! This is the first call to this subroutine, so take care of some initial housekeeping tasks.
                                                        +
                                                        235  ! Note that arallocf and arallocc_c must be called before calling bfrini.
                                                        +
                                                        236 
                                                        +
                                                        237  ! Allocate internal arrays.
                                                        +
                                                        238  call arallocf
                                                        +
                                                        239  call arallocc_c
                                                        +
                                                        240 
                                                        +
                                                        241  ! Initialize some global variables.
                                                        +
                                                        242  call bfrini
                                                        +
                                                        243 
                                                        +
                                                        244  ifopbf = 1
                                                        +
                                                        245  endif
                                                        +
                                                        246  if( (io=='FIRST') .or. (io=='QUIET') ) return
                                                        +
                                                        247 
                                                        +
                                                        248  ! See if a file can be opened
                                                        +
                                                        249 
                                                        +
                                                        250  call status(lunit,lun,il,im)
                                                        +
                                                        251  if(lun==0) then
                                                        +
                                                        252  write(bort_str,'("BUFRLIB: OPENBF - THERE ARE ALREADY",I3," BUFR FILES OPENED, CANNOT OPEN FILE CONNECTED TO UNIT",I4)') &
                                                        +
                                                        253  nfiles,lunit
                                                        +
                                                        254  call bort(bort_str)
                                                        +
                                                        255  endif
                                                        +
                                                        256  if(il/=0) then
                                                        +
                                                        257  write(bort_str,'("BUFRLIB: OPENBF - THE FILE CONNECTED TO UNIT",I5," IS ALREADY OPEN")') lunit
                                                        +
                                                        258  call bort(bort_str)
                                                        +
                                                        259  endif
                                                        +
                                                        260  null(lun) = 0
                                                        +
                                                        261  isc3(lun) = 0
                                                        +
                                                        262  iscodes(lun) = 0
                                                        +
                                                        263  lus(lun) = 0
                                                        +
                                                        264 
                                                        +
                                                        265  ! Use inquire to obtain the filename associated with unit lunit
                                                        +
                                                        266 
                                                        +
                                                        267  if (io/='NUL' .and. io/='INUL') then
                                                        +
                                                        268  inquire(lunit,access=fileacc)
                                                        +
                                                        269  if(fileacc=='UNDEFINED') open(lunit)
                                                        +
                                                        270  inquire(lunit,name=filename)
                                                        +
                                                        271  filename=trim(filename)//char(0)
                                                        +
                                                        272  endif
                                                        +
                                                        273 
                                                        +
                                                        274  nmsg(lun) = 0
                                                        +
                                                        275  nsub(lun) = 0
                                                        +
                                                        276  msub(lun) = 0
                                                        +
                                                        277  inode(lun) = 0
                                                        +
                                                        278  idate(lun) = 0
                                                        +
                                                        279 
                                                        +
                                                        280  ! Decide how to open the file and setup the dictionary
                                                        +
                                                        281 
                                                        +
                                                        282  if(io=='IN') then
                                                        +
                                                        283  call openrb_c(lun,filename)
                                                        +
                                                        284  call wtstat(lunit,lun,-1,0)
                                                        +
                                                        285  call readdx(lunit,lun,lundx)
                                                        +
                                                        286  else if(io=='INUL') then
                                                        +
                                                        287  call wtstat(lunit,lun,-1,0)
                                                        +
                                                        288  if(lunit/=lundx) call readdx(lunit,lun,lundx)
                                                        +
                                                        289  null(lun) = 1
                                                        +
                                                        290  else if(io=='NUL') then
                                                        +
                                                        291  call wtstat(lunit,lun,1,0)
                                                        +
                                                        292  if(lunit/=lundx) call readdx(lunit,lun,lundx)
                                                        +
                                                        293  null(lun) = 1
                                                        +
                                                        294  else if(io=='INX') then
                                                        +
                                                        295  call openrb_c(lun,filename)
                                                        +
                                                        296  call wtstat(lunit,lun,-1,0)
                                                        +
                                                        297  null(lun) = 1
                                                        +
                                                        298  else if(io=='OUX') then
                                                        +
                                                        299  call openwb_c(lun,filename)
                                                        +
                                                        300  call wtstat(lunit,lun,1,0)
                                                        +
                                                        301  else if(io=='SEC3') then
                                                        +
                                                        302  call openrb_c(lun,filename)
                                                        +
                                                        303  call wtstat(lunit,lun,-1,0)
                                                        +
                                                        304  isc3(lun) = 1
                                                        +
                                                        305  else if(io=='OUT') then
                                                        +
                                                        306  call openwb_c(lun,filename)
                                                        +
                                                        307  call wtstat(lunit,lun,1,0)
                                                        +
                                                        308  call writdx(lunit,lun,lundx)
                                                        +
                                                        309  else if(io=='NODX') then
                                                        +
                                                        310  call openwb_c(lun,filename)
                                                        +
                                                        311  call wtstat(lunit,lun,1,0)
                                                        +
                                                        312  call readdx(lunit,lun,lundx)
                                                        +
                                                        313  else if(io=='APN' .or. io=='APX') then
                                                        +
                                                        314  call openab_c(lun,filename)
                                                        +
                                                        315  call wtstat(lunit,lun,1,0)
                                                        +
                                                        316  if(lunit/=lundx) call readdx(lunit,lun,lundx)
                                                        +
                                                        317  call posapx(lunit)
                                                        +
                                                        318  else
                                                        +
                                                        319  call bort('BUFRLIB: OPENBF - ILLEGAL SECOND (INPUT) ARGUMENT')
                                                        +
                                                        320  endif
                                                        +
                                                        321 
                                                        +
                                                        322  return
                                                        +
                                                        323 end subroutine openbf
                                                        +
                                                        324 
                                                        +
                                                        337 recursive subroutine closbf(lunit)
                                                        +
                                                        338 
                                                        +
                                                        339  use bufrlib
                                                        +
                                                        340 
                                                        +
                                                        341  use modv_vars, only: im8b
                                                        +
                                                        342 
                                                        +
                                                        343  use moda_nulbfr
                                                        +
                                                        344 
                                                        +
                                                        345  implicit none
                                                        +
                                                        346 
                                                        +
                                                        347  character*128 errstr
                                                        +
                                                        348 
                                                        +
                                                        349  integer, intent(in) :: lunit
                                                        +
                                                        350  integer my_lunit, lun, il, im
                                                        +
                                                        351 
                                                        +
                                                        352  ! Check for i8 integers
                                                        +
                                                        353 
                                                        +
                                                        354  if(im8b) then
                                                        +
                                                        355  im8b=.false.
                                                        +
                                                        356 
                                                        +
                                                        357  call x84(lunit,my_lunit,1)
                                                        +
                                                        358  call closbf(my_lunit)
                                                        +
                                                        359 
                                                        +
                                                        360  im8b=.true.
                                                        +
                                                        361  return
                                                        +
                                                        362  endif
                                                        +
                                                        363 
                                                        +
                                                        364  if ( .not. allocated(null) ) then
                                                        +
                                                        365  call errwrt('++++++++++++++++++++WARNING++++++++++++++++++++++')
                                                        +
                                                        366  errstr = 'BUFRLIB: CLOSBF WAS CALLED WITHOUT HAVING PREVIOUSLY CALLED OPENBF'
                                                        +
                                                        367  call errwrt(errstr)
                                                        +
                                                        368  call errwrt('++++++++++++++++++++WARNING++++++++++++++++++++++')
                                                        +
                                                        369  return
                                                        +
                                                        370  endif
                                                        +
                                                        371 
                                                        +
                                                        372  call status(lunit,lun,il,im)
                                                        +
                                                        373  if(il>0 .and. im/=0) call closmg(lunit)
                                                        +
                                                        374  if(il/=0 .and. null(lun)==0) call closfb_c(lun)
                                                        +
                                                        375  call wtstat(lunit,lun,0,0)
                                                        +
                                                        376 
                                                        +
                                                        377  ! Close Fortran unit if null(lun) = 0
                                                        +
                                                        378 
                                                        +
                                                        379  if(null(lun)==0) close(lunit)
                                                        +
                                                        380 
                                                        +
                                                        381  return
                                                        +
                                                        382 end subroutine closbf
                                                        +
                                                        383 
                                                        +
                                                        405 recursive subroutine status(lunit,lun,il,im)
                                                        +
                                                        406 
                                                        +
                                                        407  use modv_vars, only: im8b, nfiles
                                                        +
                                                        408 
                                                        +
                                                        409  use moda_stbfr
                                                        +
                                                        410 
                                                        +
                                                        411  implicit none
                                                        +
                                                        412 
                                                        +
                                                        413  integer, intent(in) :: lunit
                                                        +
                                                        414  integer, intent(out) :: lun, il, im
                                                        +
                                                        415  integer my_lunit, i
                                                        +
                                                        416 
                                                        +
                                                        417  character*128 bort_str, errstr
                                                        +
                                                        418 
                                                        +
                                                        419  ! Check for I8 integers
                                                        +
                                                        420 
                                                        +
                                                        421  if(im8b) then
                                                        +
                                                        422  im8b=.false.
                                                        +
                                                        423 
                                                        +
                                                        424  call x84(lunit,my_lunit,1)
                                                        +
                                                        425  call status(my_lunit,lun,il,im)
                                                        +
                                                        426  call x48(lun,lun,1)
                                                        +
                                                        427  call x48(il,il,1)
                                                        +
                                                        428  call x48(im,im,1)
                                                        +
                                                        429 
                                                        +
                                                        430  im8b=.true.
                                                        +
                                                        431  return
                                                        +
                                                        432  endif
                                                        +
                                                        433 
                                                        +
                                                        434  if(lunit<=0 .or. lunit>99) then
                                                        +
                                                        435  write(bort_str,'("BUFRLIB: STATUS - INPUT UNIT NUMBER (",I3,") OUTSIDE LEGAL RANGE OF 1-99")') lunit
                                                        +
                                                        436  call bort(bort_str)
                                                        +
                                                        437  endif
                                                        +
                                                        438 
                                                        +
                                                        439  ! Clear the status indicators
                                                        +
                                                        440 
                                                        +
                                                        441  lun = 0
                                                        +
                                                        442  il = 0
                                                        +
                                                        443  im = 0
                                                        +
                                                        444 
                                                        +
                                                        445  ! See if the unit is already connected to the library
                                                        +
                                                        446 
                                                        +
                                                        447  if ( .not. allocated(iolun) ) then
                                                        +
                                                        448  call errwrt('++++++++++++++++++++WARNING++++++++++++++++++++++')
                                                        +
                                                        449  errstr = 'BUFRLIB: STATUS WAS CALLED WITHOUT HAVING PREVIOUSLY CALLED OPENBF'
                                                        +
                                                        450  call errwrt(errstr)
                                                        +
                                                        451  call errwrt('++++++++++++++++++++WARNING++++++++++++++++++++++')
                                                        +
                                                        452  return
                                                        +
                                                        453  endif
                                                        +
                                                        454 
                                                        +
                                                        455  do i=1,nfiles
                                                        +
                                                        456  if(abs(iolun(i))==lunit) lun = i
                                                        +
                                                        457  enddo
                                                        +
                                                        458 
                                                        +
                                                        459  ! If not, try to define it so as to connect it to the library
                                                        +
                                                        460 
                                                        +
                                                        461  if(lun==0) then
                                                        +
                                                        462  do i=1,nfiles
                                                        +
                                                        463  if(iolun(i)==0) then
                                                        +
                                                        464  ! File space is available, return with lun > 0, il and im remain 0
                                                        +
                                                        465  lun = i
                                                        +
                                                        466  return
                                                        +
                                                        467  endif
                                                        +
                                                        468  enddo
                                                        +
                                                        469  ! File space is NOT available, return with lun, il and im all 0
                                                        +
                                                        470  return
                                                        +
                                                        471  endif
                                                        +
                                                        472 
                                                        +
                                                        473  ! If the unit was already connected to the library prior to this call, then return statuses
                                                        +
                                                        474 
                                                        +
                                                        475  il = sign(1,iolun(lun))
                                                        +
                                                        476  im = iomsg(lun)
                                                        +
                                                        477 
                                                        +
                                                        478  return
                                                        +
                                                        479 end subroutine status
                                                        +
                                                        480 
                                                        +
                                                        508 subroutine wtstat(lunit,lun,il,im)
                                                        +
                                                        509 
                                                        +
                                                        510  use moda_stbfr
                                                        +
                                                        511 
                                                        +
                                                        512  implicit none
                                                        +
                                                        513 
                                                        +
                                                        514  integer, intent(in) :: lunit, lun, il, im
                                                        +
                                                        515 
                                                        +
                                                        516  character*128 bort_str
                                                        +
                                                        517 
                                                        +
                                                        518  ! Check on the arguments
                                                        +
                                                        519 
                                                        +
                                                        520  if(lunit<=0) then
                                                        +
                                                        521  write(bort_str,'("BUFRLIB: WTSTAT - INVALID UNIT NUMBER PASSED INTO FIRST ARGUMENT (INPUT) (=",I3,")")') lunit
                                                        +
                                                        522  call bort(bort_str)
                                                        +
                                                        523  endif
                                                        +
                                                        524  if(lun<=0) then
                                                        +
                                                        525  write(bort_str,'("BUFRLIB: WTSTAT - INVALID FILE ID PASSED INTO SECOND ARGUMENT (INPUT) (=",I3,")")') lun
                                                        +
                                                        526  call bort(bort_str)
                                                        +
                                                        527  endif
                                                        +
                                                        528  if(il<-1 .or. il>1) then
                                                        +
                                                        529  write(bort_str,'("BUFRLIB: WTSTAT - INVALID LOGICAL UNIT STATUS INDICATOR PASSED INTO THIRD ARGUMENT '// &
                                                        +
                                                        530  '(INPUT) (=",I4,")")') il
                                                        +
                                                        531  call bort(bort_str)
                                                        +
                                                        532  endif
                                                        +
                                                        533  if(im< 0 .or. im>1) then
                                                        +
                                                        534  write(bort_str,'("BUFRLIB: WTSTAT - INVALID BUFR MESSAGE STATUS INDICATOR PASSED INTO FOURTH ARGUMENT '// &
                                                        +
                                                        535  '(INPUT) (=",I4,")")') im
                                                        +
                                                        536  call bort(bort_str)
                                                        +
                                                        537  endif
                                                        +
                                                        538 
                                                        +
                                                        539  ! Check on lunit-lun combination
                                                        +
                                                        540 
                                                        +
                                                        541  if(abs(iolun(lun))/=lunit .and. (iolun(lun)/=0)) then
                                                        +
                                                        542  write(bort_str,'("BUFRLIB: WTSTAT - ATTEMPTING TO REDEFINE EXISTING FILE UNIT (LOGICAL UNIT '// &
                                                        +
                                                        543  'NUMBER ",I3,")")') iolun(lun)
                                                        +
                                                        544  call bort(bort_str)
                                                        +
                                                        545  endif
                                                        +
                                                        546 
                                                        +
                                                        547  ! Reset the file statuses
                                                        +
                                                        548 
                                                        +
                                                        549  if(il/=0) then
                                                        +
                                                        550  iolun(lun) = sign(lunit,il)
                                                        +
                                                        551  iomsg(lun) = im
                                                        +
                                                        552  else
                                                        +
                                                        553  iolun(lun) = 0
                                                        +
                                                        554  iomsg(lun) = 0
                                                        +
                                                        555  endif
                                                        +
                                                        556 
                                                        +
                                                        557  return
                                                        +
                                                        558 end subroutine wtstat
                                                        +
                                                        559 
                                                        +
                                                        585 recursive subroutine ufbcnt(lunit,kmsg,ksub)
                                                        +
                                                        586 
                                                        +
                                                        587  use modv_vars, only: im8b
                                                        +
                                                        588 
                                                        +
                                                        589  use moda_msgcwd
                                                        +
                                                        590 
                                                        +
                                                        591  implicit none
                                                        +
                                                        592 
                                                        +
                                                        593  integer, intent(in) :: lunit
                                                        +
                                                        594  integer, intent(out) :: kmsg, ksub
                                                        +
                                                        595  integer my_lunit, lun, il, im
                                                        +
                                                        596 
                                                        +
                                                        597  ! Check for I8 integers
                                                        +
                                                        598 
                                                        +
                                                        599  if(im8b) then
                                                        +
                                                        600  im8b=.false.
                                                        +
                                                        601  call x84(lunit,my_lunit,1)
                                                        +
                                                        602  call ufbcnt(my_lunit,kmsg,ksub)
                                                        +
                                                        603  call x48(kmsg,kmsg,1)
                                                        +
                                                        604  call x48(ksub,ksub,1)
                                                        +
                                                        605  im8b=.true.
                                                        +
                                                        606  return
                                                        +
                                                        607  endif
                                                        +
                                                        608 
                                                        +
                                                        609  ! Check the file status - return the message and subset counters
                                                        +
                                                        610 
                                                        +
                                                        611  call status(lunit,lun,il,im)
                                                        +
                                                        612  if(il==0) call bort('BUFRLIB: UFBCNT - BUFR FILE IS CLOSED, IT MUST BE OPEN FOR EITHER INPUT OR OUTPUT')
                                                        +
                                                        613  kmsg = nmsg(lun)
                                                        +
                                                        614  ksub = nsub(lun)
                                                        +
                                                        615 
                                                        +
                                                        616  return
                                                        +
                                                        617 end subroutine ufbcnt
                                                        +
                                                        618 
                                                        +
                                                        630 subroutine posapx(lunxx)
                                                        +
                                                        631 
                                                        +
                                                        632  use bufrlib
                                                        +
                                                        633 
                                                        +
                                                        634  use moda_mgwa
                                                        +
                                                        635 
                                                        +
                                                        636  implicit none
                                                        +
                                                        637 
                                                        +
                                                        638  integer, intent(in) :: lunxx
                                                        +
                                                        639  integer lunit, lun, il, im, ier, idxmsg
                                                        +
                                                        640 
                                                        +
                                                        641  lunit = abs(lunxx)
                                                        +
                                                        642 
                                                        +
                                                        643  call status(lunit,lun,il,im)
                                                        +
                                                        644  if(il==0) call bort('BUFRLIB: POSAPX - INPUT BUFR FILE IS CLOSED, IT MUST BE OPEN FOR OUTPUT')
                                                        +
                                                        645  if(il<0) call bort('BUFRLIB: POSAPX - INPUT BUFR FILE IS OPEN FOR INPUT, IT MUST BE OPEN FOR OUTPUT')
                                                        +
                                                        646 
                                                        +
                                                        647  ! Try to read to the end of the file
                                                        +
                                                        648 
                                                        +
                                                        649  do while (.true.)
                                                        +
                                                        650  call rdmsgw(lunit,mgwa,ier)
                                                        +
                                                        651  if(ier<0) return
                                                        +
                                                        652  if(idxmsg(mgwa)==1) then
                                                        +
                                                        653  ! This is an internal dictionary message that was generated by the NCEPLIBS-bufr software. Backspace the file pointer
                                                        +
                                                        654  ! and then read and store all such dictionary messages (they should be stored consecutively!) and reset the internal tables.
                                                        +
                                                        655  call backbufr_c(lun)
                                                        +
                                                        656  call rdbfdx(lunit,lun)
                                                        +
                                                        657  endif
                                                        +
                                                        658  enddo
                                                        +
                                                        659 
                                                        +
                                                        660 end subroutine posapx
                                                        +
                                                        661 
                                                        +
                                                        693 subroutine rewnbf(lunit,isr)
                                                        +
                                                        694 
                                                        +
                                                        695  use bufrlib
                                                        +
                                                        696 
                                                        +
                                                        697  use moda_msgcwd
                                                        +
                                                        698  use moda_bitbuf
                                                        +
                                                        699  use moda_bufrsr
                                                        +
                                                        700 
                                                        +
                                                        701  implicit none
                                                        +
                                                        702 
                                                        +
                                                        703  integer, intent(in) :: lunit, isr
                                                        +
                                                        704  integer lun, il, im, i, kdate, ier
                                                        +
                                                        705 
                                                        +
                                                        706  character*128 bort_str
                                                        +
                                                        707  character*8 subset
                                                        +
                                                        708 
                                                        +
                                                        709  ! Try to trap bad call problems
                                                        +
                                                        710  if(isr==0) then
                                                        +
                                                        711  call status(lunit,lun,il,im)
                                                        +
                                                        712  if(jsr(lun)/=0) then
                                                        +
                                                        713  write(bort_str,'("BUFRLIB: REWNBF - ATTEMPING TO SAVE '// &
                                                        +
                                                        714  'PARAMETERS FOR FILE FOR WHICH THEY HAVE ALREADY BEEN SAVED (AND NOT YET RESTORED) (UNIT",I3,")")') lunit
                                                        +
                                                        715  call bort(bort_str)
                                                        +
                                                        716  endif
                                                        +
                                                        717  if(il==0) then
                                                        +
                                                        718  write(bort_str,'("BUFRLIB: REWNBF - ATTEMPING TO SAVE '// &
                                                        +
                                                        719  'PARAMETERS FOR BUFR FILE WHICH IS NOT OPENED FOR EITHER INPUT OR OUTPUT) (UNIT",I3,")")') lunit
                                                        +
                                                        720  call bort(bort_str)
                                                        +
                                                        721  endif
                                                        +
                                                        722  elseif(isr==1) then
                                                        +
                                                        723  if(junn==0 .or. jsr(junn)/=1) then
                                                        +
                                                        724  write(bort_str,'("BUFRLIB: REWNBF - ATTEMPING TO RESTORE '// &
                                                        +
                                                        725  'PARAMETERS TO BUFR FILE WHICH WERE NEVER SAVED (UNIT",I3,")")') lunit
                                                        +
                                                        726  call bort(bort_str)
                                                        +
                                                        727  endif
                                                        +
                                                        728  lun = junn
                                                        +
                                                        729  else
                                                        +
                                                        730  write(bort_str,'("BUFRLIB: REWNBF - SAVE/RESTORE SWITCH (INPUT '// &
                                                        +
                                                        731  'ARGUMENT ISR) IS NOT ZERO OR ONE (HERE =",I4,") (UNIT",I3,")")') isr, lunit
                                                        +
                                                        732  call bort(bort_str)
                                                        +
                                                        733  endif
                                                        +
                                                        734 
                                                        +
                                                        735  if(isr==0) then
                                                        +
                                                        736  ! Store the existing file parameters
                                                        +
                                                        737  jmsg = nmsg(lun)
                                                        +
                                                        738  jsub = nsub(lun)
                                                        +
                                                        739  if ( il > 0 ) then
                                                        +
                                                        740  ! The file is open for writing
                                                        +
                                                        741  jbit = ibit
                                                        +
                                                        742  jbyt = mbyt(lun)
                                                        +
                                                        743  do i=1,jbyt
                                                        +
                                                        744  jbay(i) = mbay(i,lun)
                                                        +
                                                        745  enddo
                                                        +
                                                        746  endif
                                                        +
                                                        747  junn = lun
                                                        +
                                                        748  jill = il
                                                        +
                                                        749  jimm = im
                                                        +
                                                        750  ! Reset the file for reading
                                                        +
                                                        751  call wtstat(lunit,lun,-1,0)
                                                        +
                                                        752  endif
                                                        +
                                                        753 
                                                        +
                                                        754  ! Rewind the file
                                                        +
                                                        755  call cewind_c(lun)
                                                        +
                                                        756 
                                                        +
                                                        757  if(isr==1) then
                                                        +
                                                        758  ! Restore the previous file parameters. Note that we already restored the previous value of lun earlier in this routine.
                                                        +
                                                        759 
                                                        +
                                                        760  ! Reset nmsg(lun) to 0, so that the below calls to readmg() will internally restore nmsg(lun) to the correct value.
                                                        +
                                                        761  nmsg(lun) = 0
                                                        +
                                                        762 
                                                        +
                                                        763  ! Note that the below calls to readmg() are valid even if the file was previously open for writing, because we haven't yet
                                                        +
                                                        764  ! called wtstat() to restore the file to its previous I/O status. So until then we can still read from it as though it
                                                        +
                                                        765  ! was an input file.
                                                        +
                                                        766  do i=1,jmsg
                                                        +
                                                        767  call readmg(lunit,subset,kdate,ier)
                                                        +
                                                        768  if(ier<0) then
                                                        +
                                                        769  write(bort_str,'("BUFRLIB: REWNBF - HIT END OF FILE BEFORE '// &
                                                        +
                                                        770  'REPOSITIONING BUFR FILE IN UNIT",I3," TO ORIGINAL MESSAGE NO.",I5)') lunit, jmsg
                                                        +
                                                        771  call bort(bort_str)
                                                        +
                                                        772  endif
                                                        +
                                                        773  enddo
                                                        +
                                                        774 
                                                        +
                                                        775  if ( jill < 0 ) then
                                                        +
                                                        776  ! The file was previously open for reading
                                                        +
                                                        777  do i=1,jsub
                                                        +
                                                        778  call readsb(lunit,ier)
                                                        +
                                                        779  enddo
                                                        +
                                                        780  else
                                                        +
                                                        781  ! The file was previously open for writing
                                                        +
                                                        782  do i=1,jbyt
                                                        +
                                                        783  mbay(i,lun) = jbay(i)
                                                        +
                                                        784  enddo
                                                        +
                                                        785  nsub(lun) = jsub
                                                        +
                                                        786  mbyt(lun) = jbyt
                                                        +
                                                        787  ibit = jbit
                                                        +
                                                        788  endif
                                                        +
                                                        789 
                                                        +
                                                        790  ! Now restore the file to its previous I/O status
                                                        +
                                                        791  il = jill
                                                        +
                                                        792  im = jimm
                                                        +
                                                        793  call wtstat(lunit,lun,il,im)
                                                        +
                                                        794  endif
                                                        +
                                                        795 
                                                        +
                                                        796  ! Toggle the stack status indicator
                                                        +
                                                        797  jsr(lun) = mod(jsr(lun)+1,2)
                                                        +
                                                        798 
                                                        +
                                                        799  return
                                                        +
                                                        800 end subroutine rewnbf
                                                        +
                                                        801 
                                                        +
                                                        856 recursive subroutine ufbtab(lunin,tab,i1,i2,iret,str)
                                                        +
                                                        857 
                                                        +
                                                        858  use modv_vars, only: im8b, bmiss, iac
                                                        +
                                                        859 
                                                        +
                                                        860  use moda_usrint
                                                        +
                                                        861  use moda_msgcwd
                                                        +
                                                        862  use moda_unptyp
                                                        +
                                                        863  use moda_bitbuf
                                                        +
                                                        864  use moda_tables
                                                        +
                                                        865 
                                                        +
                                                        866  implicit none
                                                        +
                                                        867 
                                                        +
                                                        868  integer*8 ival, lref, ninc, mps, lps
                                                        +
                                                        869  integer, intent(in) :: lunin, i1, i2
                                                        +
                                                        870  integer, intent(out) :: iret
                                                        +
                                                        871  integer, parameter :: maxtg = 100
                                                        +
                                                        872  integer nnod, ncon, nods, nodc, ivls, kons, iprt, my_lunin, my_i1, my_i2, lunit, lun, il, im, irec, isub, i, j, n, ntg, &
                                                        +
                                                        873  jdate, jbit, kbit, lbit, mbit, nbit, nibit, nbyt, nsb, node, nbmp, nrep, lret, linc, iac_prev, ityp, &
                                                        + +
                                                        875 
                                                        +
                                                        876  character*(*), intent(in) :: str
                                                        +
                                                        877  character*128 errstr
                                                        +
                                                        878  character*40 cref
                                                        +
                                                        879  character*10 tgs(maxtg)
                                                        +
                                                        880  character*8 subset, cval
                                                        +
                                                        881 
                                                        +
                                                        882  logical openit, overflow, just_count, need_node
                                                        +
                                                        883 
                                                        +
                                                        884  real*8, intent(out) :: tab(i1,i2)
                                                        +
                                                        885  real*8 rval, ups
                                                        +
                                                        886 
                                                        +
                                                        887  common /usrstr/ nnod, ncon, nods(20), nodc(10), ivls(10), kons(10)
                                                        +
                                                        888  common /quiet/ iprt
                                                        +
                                                        889 
                                                        +
                                                        890  equivalence(cval,rval)
                                                        +
                                                        891 
                                                        +
                                                        892  ! Statement functions
                                                        +
                                                        893  mps(node) = 2_8**(ibt(node))-1
                                                        +
                                                        894  lps(lbit) = max(2_8**(lbit)-1,1)
                                                        +
                                                        895 
                                                        +
                                                        896  ! Check for I8 integers
                                                        +
                                                        897  if(im8b) then
                                                        +
                                                        898  im8b=.false.
                                                        +
                                                        899  call x84(lunin,my_lunin,1)
                                                        +
                                                        900  call x84(i1,my_i1,1)
                                                        +
                                                        901  call x84(i2,my_i2,1)
                                                        +
                                                        902  call ufbtab(my_lunin,tab,my_i1,my_i2,iret,str)
                                                        +
                                                        903  call x48(iret,iret,1)
                                                        +
                                                        904  im8b=.true.
                                                        +
                                                        905  return
                                                        +
                                                        906  endif
                                                        +
                                                        907 
                                                        +
                                                        908  ! Make sure subroutine openbf() has been called at least once before trying to call subroutine status(); otherwise,
                                                        +
                                                        909  ! status() might try to access array space that hasn't yet been dynamically allocated.
                                                        +
                                                        910  call openbf(0,'FIRST',0)
                                                        +
                                                        911 
                                                        +
                                                        912  lunit = abs(lunin)
                                                        +
                                                        913  call status(lunit,lun,il,im)
                                                        +
                                                        914  openit = il==0
                                                        +
                                                        915 
                                                        +
                                                        916  if(openit) then
                                                        +
                                                        917  ! Open BUFR file connected to unit lunit if it isn't already open
                                                        +
                                                        918  call openbf(lunit,'INX',lunit)
                                                        +
                                                        919  else
                                                        +
                                                        920  ! If BUFR file already opened, save position and rewind to first data message
                                                        +
                                                        921  call rewnbf(lunit,0)
                                                        +
                                                        922  endif
                                                        +
                                                        923 
                                                        +
                                                        924  ! Initialize all of the output array values to the current value for "missing"
                                                        +
                                                        925  do j=1,i2
                                                        +
                                                        926  do i=1,i1
                                                        +
                                                        927  tab(i,j) = bmiss
                                                        +
                                                        928  enddo
                                                        +
                                                        929  enddo
                                                        +
                                                        930 
                                                        +
                                                        931  ! Set counters to zero
                                                        +
                                                        932  iret = 0
                                                        +
                                                        933  irec = 0
                                                        +
                                                        934  isub = 0
                                                        +
                                                        935 
                                                        +
                                                        936  iac_prev = iac
                                                        +
                                                        937  iac = 1
                                                        +
                                                        938 
                                                        +
                                                        939  overflow = .false.
                                                        +
                                                        940 
                                                        +
                                                        941  ! Check for count subset only option
                                                        +
                                                        942  just_count = lunin<lunit
                                                        +
                                                        943  if(just_count) then
                                                        +
                                                        944  do while(ireadmg(-lunit,subset,jdate)>=0)
                                                        +
                                                        945  iret = iret+nmsub(lunit)
                                                        +
                                                        946  enddo
                                                        +
                                                        947  else
                                                        +
                                                        948  ! Check for special tags in string
                                                        +
                                                        949  call parstr(str,tgs,maxtg,ntg,' ',.true.)
                                                        +
                                                        950  do i=1,ntg
                                                        +
                                                        951  if(tgs(i)=='IREC') irec = i
                                                        +
                                                        952  if(tgs(i)=='ISUB') isub = i
                                                        +
                                                        953  enddo
                                                        +
                                                        954  endif
                                                        +
                                                        955 
                                                        +
                                                        956  outer: do while (.not. just_count)
                                                        +
                                                        957  ! Read the next message from the file
                                                        +
                                                        958  if(ireadmg(-lunit,subset,jdate)<0) exit
                                                        +
                                                        959  call string(str,lun,i1,0)
                                                        +
                                                        960  if(irec>0) nods(irec) = 0
                                                        +
                                                        961  if(isub>0) nods(isub) = 0
                                                        +
                                                        962 
                                                        +
                                                        963  if(msgunp(lun)/=2) then
                                                        +
                                                        964  ! The message is uncompressed
                                                        +
                                                        965 
                                                        +
                                                        966  inner1: do while (.true.)
                                                        +
                                                        967  ! Get the next subset from the message
                                                        +
                                                        968  if(nsub(lun)==msub(lun)) cycle outer
                                                        +
                                                        969  if(iret+1>i2) then
                                                        +
                                                        970  overflow = .true.
                                                        +
                                                        971  exit outer
                                                        +
                                                        972  endif
                                                        +
                                                        973  iret = iret+1
                                                        +
                                                        974  do i=1,nnod
                                                        +
                                                        975  nods(i) = abs(nods(i))
                                                        +
                                                        976  enddo
                                                        +
                                                        977  if(msgunp(lun)==0) then
                                                        +
                                                        978  mbit = mbyt(lun)*8 + 16
                                                        +
                                                        979  else
                                                        +
                                                        980  mbit = mbyt(lun)
                                                        +
                                                        981  endif
                                                        +
                                                        982  nbit = 0
                                                        +
                                                        983  n = 1
                                                        +
                                                        984  call usrtpl(lun,n,n)
                                                        +
                                                        985  inner2: do while (.true.)
                                                        +
                                                        986  ! Cycle through each node of the subset to look for the requested values
                                                        +
                                                        987  if(n+1<=nval(lun)) then
                                                        +
                                                        988  n = n+1
                                                        +
                                                        989  node = inv(n,lun)
                                                        +
                                                        990  mbit = mbit+nbit
                                                        +
                                                        991  nbit = ibt(node)
                                                        +
                                                        992  if(itp(node)==1) then
                                                        +
                                                        993  call upb8(ival,nbit,mbit,mbay(1,lun))
                                                        +
                                                        994  nbmp=int(ival)
                                                        +
                                                        995  call usrtpl(lun,n,nbmp)
                                                        +
                                                        996  endif
                                                        +
                                                        997  do i=1,nnod
                                                        +
                                                        998  if(nods(i)==node) then
                                                        +
                                                        999  if(itp(node)==1) then
                                                        +
                                                        1000  call upb8(ival,nbit,mbit,mbay(1,lun))
                                                        +
                                                        1001  tab(i,iret) = ival
                                                        +
                                                        1002  elseif(itp(node)==2) then
                                                        +
                                                        1003  call upb8(ival,nbit,mbit,mbay(1,lun))
                                                        +
                                                        1004  if(ival<mps(node)) tab(i,iret) = ups(ival,node)
                                                        +
                                                        1005  elseif(itp(node)==3) then
                                                        +
                                                        1006  cval = ' '
                                                        +
                                                        1007  kbit = mbit
                                                        +
                                                        1008  call upc(cval,nbit/8,mbay(1,lun),kbit,.true.)
                                                        +
                                                        1009  tab(i,iret) = rval
                                                        +
                                                        1010  endif
                                                        +
                                                        1011  nods(i) = -nods(i)
                                                        +
                                                        1012  cycle inner2
                                                        +
                                                        1013  endif
                                                        +
                                                        1014  enddo
                                                        +
                                                        1015  do i=1,nnod
                                                        +
                                                        1016  if(nods(i)>0) cycle inner2
                                                        +
                                                        1017  enddo
                                                        +
                                                        1018  endif
                                                        +
                                                        1019  exit
                                                        +
                                                        1020  enddo inner2
                                                        +
                                                        1021  ! Update the subset pointers
                                                        +
                                                        1022  if(msgunp(lun)==0) then
                                                        +
                                                        1023  ibit = mbyt(lun)*8
                                                        +
                                                        1024  call upb(nbyt,16,mbay(1,lun),ibit)
                                                        +
                                                        1025  mbyt(lun) = mbyt(lun) + nbyt
                                                        +
                                                        1026  else
                                                        +
                                                        1027  mbyt(lun) = mbit
                                                        +
                                                        1028  endif
                                                        +
                                                        1029  nsub(lun) = nsub(lun) + 1
                                                        +
                                                        1030  if(irec>0) tab(irec,iret) = nmsg(lun)
                                                        +
                                                        1031  if(isub>0) tab(isub,iret) = nsub(lun)
                                                        +
                                                        1032  enddo inner1
                                                        +
                                                        1033 
                                                        +
                                                        1034  else
                                                        +
                                                        1035  ! The message is compressed
                                                        +
                                                        1036 
                                                        +
                                                        1037  if(iret+msub(lun)>i2) then
                                                        +
                                                        1038  overflow = .true.
                                                        +
                                                        1039  exit outer
                                                        +
                                                        1040  endif
                                                        +
                                                        1041  if(irec>0.or.isub>0) then
                                                        +
                                                        1042  do nsb=1,msub(lun)
                                                        +
                                                        1043  if(irec>0) tab(irec,iret+nsb) = nmsg(lun)
                                                        +
                                                        1044  if(isub>0) tab(isub,iret+nsb) = nsb
                                                        +
                                                        1045  enddo
                                                        +
                                                        1046  endif
                                                        +
                                                        1047  call usrtpl(lun,1,1)
                                                        +
                                                        1048  ibit = mbyt(lun)
                                                        +
                                                        1049  n = 0
                                                        +
                                                        1050  inner3: do n = n+1,nval(lun)
                                                        +
                                                        1051  ! Cycle through each node of each subset to look for the requested values
                                                        +
                                                        1052  node = inv(n,lun)
                                                        +
                                                        1053  nbit = ibt(node)
                                                        +
                                                        1054  ityp = itp(node)
                                                        +
                                                        1055  if(n==1) then
                                                        +
                                                        1056  ! Reset the node indices
                                                        +
                                                        1057  do i=1,nnod
                                                        +
                                                        1058  nods(i) = abs(nods(i))
                                                        +
                                                        1059  enddo
                                                        +
                                                        1060  else
                                                        +
                                                        1061  ! Are we still looking for more values?
                                                        +
                                                        1062  need_node = .false.
                                                        +
                                                        1063  do i=1,nnod
                                                        +
                                                        1064  if(nods(i)>0) then
                                                        +
                                                        1065  need_node = .true.
                                                        +
                                                        1066  exit
                                                        +
                                                        1067  endif
                                                        +
                                                        1068  enddo
                                                        +
                                                        1069  if(.not. need_node) exit inner3
                                                        +
                                                        1070  endif
                                                        +
                                                        1071  if(ityp==1 .or. ityp==2) then
                                                        +
                                                        1072  call up8(lref,nbit,mbay(1,lun),ibit)
                                                        +
                                                        1073  call upb(linc,6,mbay(1,lun),ibit)
                                                        +
                                                        1074  nibit = ibit + linc*msub(lun)
                                                        +
                                                        1075  elseif(ityp==3) then
                                                        +
                                                        1076  cref=' '
                                                        +
                                                        1077  call upc(cref,nbit/8,mbay(1,lun),ibit,.true.)
                                                        +
                                                        1078  call upb(linc,6,mbay(1,lun),ibit)
                                                        +
                                                        1079  nibit = ibit + 8*linc*msub(lun)
                                                        +
                                                        1080  else
                                                        +
                                                        1081  cycle
                                                        +
                                                        1082  endif
                                                        +
                                                        1083  if(ityp==1) then
                                                        +
                                                        1084  ! This is a delayed replication node
                                                        +
                                                        1085  jbit = ibit + linc
                                                        +
                                                        1086  call up8(ninc,linc,mbay(1,lun),jbit)
                                                        +
                                                        1087  ival = lref+ninc
                                                        +
                                                        1088  call usrtpl(lun,n,int(ival))
                                                        +
                                                        1089  cycle
                                                        +
                                                        1090  endif
                                                        +
                                                        1091  do i=1,nnod
                                                        +
                                                        1092  if(node==nods(i)) then
                                                        +
                                                        1093  ! This is one of the requested values, so store the corresponding value from each subset in the message
                                                        +
                                                        1094  nods(i) = -nods(i)
                                                        +
                                                        1095  lret = iret
                                                        +
                                                        1096  if(ityp==1 .or. ityp==2) then
                                                        +
                                                        1097  do nsb=1,msub(lun)
                                                        +
                                                        1098  jbit = ibit + linc*(nsb-1)
                                                        +
                                                        1099  call up8(ninc,linc,mbay(1,lun),jbit)
                                                        +
                                                        1100  ival = lref+ninc
                                                        +
                                                        1101  lret = lret+1
                                                        +
                                                        1102  if(ninc<lps(linc)) tab(i,lret) = ups(ival,node)
                                                        +
                                                        1103  enddo
                                                        +
                                                        1104  elseif(ityp==3) then
                                                        +
                                                        1105  do nsb=1,msub(lun)
                                                        +
                                                        1106  if(linc==0) then
                                                        +
                                                        1107  cval = cref(1:8)
                                                        +
                                                        1108  else
                                                        +
                                                        1109  jbit = ibit + linc*(nsb-1)*8
                                                        +
                                                        1110  cval = ' '
                                                        +
                                                        1111  call upc(cval,linc,mbay(1,lun),jbit,.true.)
                                                        +
                                                        1112  endif
                                                        +
                                                        1113  lret = lret+1
                                                        +
                                                        1114  tab(i,lret) = rval
                                                        +
                                                        1115  enddo
                                                        +
                                                        1116  else
                                                        +
                                                        1117  call bort('UFBTAB - INVALID ELEMENT TYPE SPECIFIED')
                                                        +
                                                        1118  endif
                                                        +
                                                        1119  endif
                                                        +
                                                        1120  enddo
                                                        +
                                                        1121  ibit = nibit
                                                        +
                                                        1122  enddo inner3
                                                        +
                                                        1123  iret = iret+msub(lun)
                                                        +
                                                        1124 
                                                        +
                                                        1125  endif
                                                        +
                                                        1126 
                                                        +
                                                        1127  enddo outer
                                                        +
                                                        1128 
                                                        +
                                                        1129  if(overflow) then
                                                        +
                                                        1130  nrep = iret
                                                        +
                                                        1131  do while(ireadsb(lunit)==0)
                                                        +
                                                        1132  nrep = nrep+1
                                                        +
                                                        1133  enddo
                                                        +
                                                        1134  do while(ireadmg(-lunit,subset,jdate)>=0)
                                                        +
                                                        1135  nrep = nrep+nmsub(lunit)
                                                        +
                                                        1136  enddo
                                                        +
                                                        1137  if(iprt>=0) then
                                                        +
                                                        1138  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        1139  write ( unit=errstr, fmt='(A,A,I8,A)' ) 'BUFRLIB: UFBTAB - THE NO. OF DATA SUBSETS IN THE BUFR FILE ', &
                                                        +
                                                        1140  .GT.'IS LIMIT OF ', i2, ' IN THE 4TH ARG. (INPUT) - INCOMPLETE READ'
                                                        +
                                                        1141  call errwrt(errstr)
                                                        +
                                                        1142  write ( unit=errstr, fmt='(A,I8,A,I8,A)' ) '>>>UFBTAB STORED ', iret, ' REPORTS OUT OF ', nrep, '<<<'
                                                        +
                                                        1143  call errwrt(errstr)
                                                        +
                                                        1144  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        1145  call errwrt(' ')
                                                        +
                                                        1146  endif
                                                        +
                                                        1147  endif
                                                        +
                                                        1148 
                                                        +
                                                        1149  if(openit) then
                                                        +
                                                        1150  ! Close BUFR file if it was opened here
                                                        +
                                                        1151  call closbf(lunit)
                                                        +
                                                        1152  else
                                                        +
                                                        1153  ! Restore BUFR file to its previous status and position
                                                        +
                                                        1154  call rewnbf(lunit,1)
                                                        +
                                                        1155  endif
                                                        +
                                                        1156 
                                                        +
                                                        1157  iac = iac_prev
                                                        +
                                                        1158 
                                                        +
                                                        1159  return
                                                        +
                                                        1160 end subroutine ufbtab
                                                        +
                                                        subroutine arallocf
                                                        Dynamically allocate Fortran language arrays.
                                                        Definition: arallocf.F90:19
                                                        +
                                                        subroutine bort(str)
                                                        Log an error message, then abort the application program.
                                                        Definition: borts.F90:15
                                                        +
                                                        subroutine upb(nval, nbits, ibay, ibit)
                                                        Decode an integer value from within a specified number of bits of an integer array,...
                                                        Definition: cidecode.F90:202
                                                        +
                                                        subroutine upb8(nval, nbits, ibit, ibay)
                                                        Decode an 8-byte integer value from within a specified number of bits of an integer array,...
                                                        Definition: cidecode.F90:80
                                                        +
                                                        real *8 function ups(ival, node)
                                                        Unpack a real*8 value from an integer by applying the proper scale and reference values.
                                                        Definition: cidecode.F90:319
                                                        +
                                                        subroutine up8(nval, nbits, ibay, ibit)
                                                        Decode an 8-byte integer value from within a specified number of bits of an integer array,...
                                                        Definition: cidecode.F90:128
                                                        +
                                                        subroutine upc(chr, nchr, ibay, ibit, cnvnull)
                                                        Decode a character string from within a specified number of bytes of an integer array,...
                                                        Definition: cidecode.F90:26
                                                        +
                                                        subroutine writdx(lunit, lun, lundx)
                                                        Write DX BUFR table (dictionary) messages to the beginning of an output BUFR file in lunit.
                                                        Definition: dxtable.F90:812
                                                        +
                                                        subroutine readdx(lunit, lun, lundx)
                                                        Initialize modules moda_tababd and moda_msgcwd with DX BUFR (dictionary) tables.
                                                        Definition: dxtable.F90:29
                                                        +
                                                        subroutine rdbfdx(lunit, lun)
                                                        Beginning at the current file pointer location within lunit, read a complete DX BUFR table into inter...
                                                        Definition: dxtable.F90:121
                                                        +
                                                        subroutine errwrt(str)
                                                        Specify a custom location for the logging of error and diagnostic messages generated by the NCEPLIBS-...
                                                        Definition: errwrt.F90:32
                                                        + + + + + + + +
                                                        subroutine bfrini
                                                        Initialize numerous global variables and arrays within internal modules and COMMON blocks throughout ...
                                                        Definition: misc.F90:16
                                                        +
                                                        Wrap C NCEPLIBS-bufr functions so they can be called from within the Fortran part of the library.
                                                        Definition: bufrlib.F90:11
                                                        +
                                                        Declare arrays and variables used to store BUFR messages internally for multiple file IDs.
                                                        +
                                                        integer ibit
                                                        Bit pointer within ibay.
                                                        +
                                                        integer, dimension(:,:), allocatable mbay
                                                        Current BUFR message for each file ID.
                                                        +
                                                        integer, dimension(:), allocatable mbyt
                                                        Length (in bytes) of current BUFR message for each file ID.
                                                        +
                                                        Declare arrays and variables needed to store the current position within a BUFR file.
                                                        +
                                                        integer jill
                                                        File status indicator of BUFR file.
                                                        +
                                                        integer jimm
                                                        Message status indicator of BUFR file.
                                                        +
                                                        integer, dimension(:), allocatable jsr
                                                        Indicator of stack status when entering subroutine rewnbf().
                                                        +
                                                        integer jmsg
                                                        Sequential number of BUFR message, counting from the beginning of the file.
                                                        +
                                                        integer jbit
                                                        Bit pointer within BUFR message.
                                                        +
                                                        integer jsub
                                                        Sequential number of BUFR data subset, counting from the beginning of the current BUFR message.
                                                        +
                                                        integer junn
                                                        File ID of BUFR file.
                                                        +
                                                        integer jbyt
                                                        Length (in bytes) of BUFR message.
                                                        +
                                                        integer, dimension(:), allocatable jbay
                                                        BUFR message.
                                                        +
                                                        Declare an array used by subroutine makestab() to keep track of which logical units share DX BUFR tab...
                                                        +
                                                        integer, dimension(:), allocatable lus
                                                        Tracking index for each file ID.
                                                        +
                                                        Declare an array used by various subroutines and functions to hold a temporary working copy of a BUFR...
                                                        +
                                                        integer, dimension(:), allocatable mgwa
                                                        Temporary working copy of BUFR message.
                                                        +
                                                        Declare arrays used to store information about the current BUFR message that is in the process of bei...
                                                        +
                                                        integer, dimension(:), allocatable inode
                                                        Table A mnemonic for type of BUFR message.
                                                        +
                                                        integer, dimension(:), allocatable idate
                                                        Section 1 date-time of message.
                                                        +
                                                        integer, dimension(:), allocatable nmsg
                                                        Current message pointer within logical unit.
                                                        +
                                                        integer, dimension(:), allocatable msub
                                                        Total number of data subsets in message.
                                                        +
                                                        integer, dimension(:), allocatable nsub
                                                        Current subset pointer within message.
                                                        +
                                                        Declare an array used to store a switch for each file ID, indicating whether any BUFR messages should...
                                                        +
                                                        integer, dimension(:), allocatable null
                                                        Output switch for each file ID:
                                                        +
                                                        Declare an array used to store a switch for each file ID, indicating whether BUFR messages read from ...
                                                        +
                                                        integer, dimension(:), allocatable isc3
                                                        Section 3 switch for each file ID:
                                                        +
                                                        Declare arrays used to store file and message status indicators for all logical units that have been ...
                                                        +
                                                        integer, dimension(:), allocatable iolun
                                                        File status indicators.
                                                        +
                                                        integer, dimension(:), allocatable iomsg
                                                        Message status indicator corresponding to iolun, denoting whether a BUFR message is currently open wi...
                                                        +
                                                        Declare an array used to store a status code for each file ID if an error or other abnormal result oc...
                                                        +
                                                        integer, dimension(:), allocatable iscodes
                                                        Abnormal status codes.
                                                        +
                                                        Declare arrays and variables used to store the internal jump/link table.
                                                        +
                                                        integer, dimension(:), allocatable ibt
                                                        Bit widths corresponding to tag and typ:
                                                        +
                                                        integer, dimension(:), allocatable itp
                                                        Integer type values corresponding to typ:
                                                        +
                                                        Declare an array used to store, for each file ID from which a BUFR message is currently being read as...
                                                        +
                                                        integer, dimension(:), allocatable msgunp
                                                        Flag indicating how to unpack data subsets from BUFR message:
                                                        +
                                                        Declare arrays used to store data values and associated metadata for the current BUFR data subset in ...
                                                        +
                                                        integer, dimension(:), allocatable nval
                                                        Number of data values in BUFR data subset.
                                                        +
                                                        integer, dimension(:,:), allocatable, target inv
                                                        Inventory pointer which links each data value to its corresponding node in the internal jump/link tab...
                                                        +
                                                        recursive subroutine closbf(lunit)
                                                        Close the connection between logical unit lunit and the NCEPLIBS-bufr software.
                                                        +
                                                        subroutine rewnbf(lunit, isr)
                                                        Store or restore parameters associated with a BUFR file.
                                                        +
                                                        recursive subroutine fortran_open(filename, lunit, format, position, iret)
                                                        Open a Fortran file on the local system.
                                                        Definition: openclosebf.F90:16
                                                        +
                                                        recursive subroutine openbf(lunit, io, lundx)
                                                        Connect a new file to the NCEPLIBS-bufr software for input or output operations, or initialize the li...
                                                        +
                                                        recursive subroutine fortran_close(lunit, iret)
                                                        Close a Fortran file on the local system.
                                                        Definition: openclosebf.F90:49
                                                        +
                                                        recursive subroutine ufbcnt(lunit, kmsg, ksub)
                                                        Get the current location of the file pointer within a BUFR file, in terms of a message number countin...
                                                        +
                                                        recursive subroutine status(lunit, lun, il, im)
                                                        Check whether a specified Fortran logical unit number is currently connected to the NCEPLIBS-bufr sof...
                                                        +
                                                        subroutine wtstat(lunit, lun, il, im)
                                                        Update file status in library internals.
                                                        +
                                                        recursive subroutine ufbtab(lunin, tab, i1, i2, iret, str)
                                                        Read through every data subset in a BUFR file and return one or more specified data values from each ...
                                                        +
                                                        subroutine posapx(lunxx)
                                                        Position an output BUFR file for appending.
                                                        +
                                                        recursive subroutine closmg(lunin)
                                                        Close the BUFR message that is currently open for writing within internal arrays associated with logi...
                                                        +
                                                        recursive integer function nmsub(lunit)
                                                        Get the total number of data subsets available within the BUFR message that was most recently opened ...
                                                        +
                                                        recursive subroutine readmg(lunxx, subset, jdate, iret)
                                                        Read the next BUFR message from logical unit abs(lunxx) into internal arrays.
                                                        Definition: readwritemg.F90:44
                                                        +
                                                        subroutine rdmsgw(lunit, mesg, iret)
                                                        Read the next BUFR message from logical unit lunit as an array of integer words.
                                                        +
                                                        recursive integer function ireadmg(lunit, subset, idate)
                                                        Call subroutine readmg() and pass back its return code as the function value.
                                                        +
                                                        subroutine usrtpl(lun, invn, nbmp)
                                                        Expand a subset template within internal arrays.
                                                        +
                                                        recursive integer function ireadsb(lunit)
                                                        Call subroutine readsb() and pass back its return code as the function value.
                                                        +
                                                        recursive subroutine readsb(lunit, iret)
                                                        Read the next data subset from a BUFR message.
                                                        Definition: readwritesb.F90:32
                                                        +
                                                        subroutine parstr(str, tags, mtag, ntag, sep, limit80)
                                                        Parse a string containing one or more substrings into an array of substrings.
                                                        Definition: strings.F90:473
                                                        +
                                                        subroutine string(str, lun, i1, io)
                                                        Check whether a string is in the internal mnemonic string cache.
                                                        Definition: strings.F90:25
                                                        +
                                                        subroutine x48(iin4, iout8, nval)
                                                        Encode one or more 4-byte integer values as 8-byte integer values.
                                                        Definition: x4884.F90:18
                                                        +
                                                        subroutine x84(iin8, iout4, nval)
                                                        Encode one or more 8-byte integer values as 4-byte integer values.
                                                        Definition: x4884.F90:65
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/pages.html b/previous_versions/v12.1.0/pages.html new file mode 100644 index 000000000..ecf4f0a32 --- /dev/null +++ b/previous_versions/v12.1.0/pages.html @@ -0,0 +1,106 @@ + + + + + + + +NCEPLIBS-bufr: Related Pages + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        +
                                                        Related Pages
                                                        +
                                                        +
                                                        +
                                                        Here is a list of all related documentation pages:
                                                        + + + + + +
                                                         DX BUFR TablesDescription and format of DX BUFR tables for use with the library.
                                                         Master BUFR TablesDescription and format of master BUFR tables for use with the library.
                                                         Release NotesDetailed description of changes included within each new release
                                                         UtilitiesCollection of commonly-used utilities based on the library
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/python/index.html b/previous_versions/v12.1.0/python/index.html new file mode 100644 index 000000000..47f515e3c --- /dev/null +++ b/previous_versions/v12.1.0/python/index.html @@ -0,0 +1,7 @@ + + + + + + + diff --git a/previous_versions/v12.1.0/python/ncepbufr.html b/previous_versions/v12.1.0/python/ncepbufr.html new file mode 100644 index 000000000..5c25b19d0 --- /dev/null +++ b/previous_versions/v12.1.0/python/ncepbufr.html @@ -0,0 +1,2729 @@ + + + + + + + ncepbufr API documentation + + + + + + + + + +
                                                        +
                                                        +

                                                        +ncepbufr

                                                        + + + + + + +
                                                          1import _bufrlib
                                                        +  2import random
                                                        +  3import bisect
                                                        +  4import numpy as np
                                                        +  5from .bufr_mnemonics import *
                                                        +  6import os
                                                        +  7
                                                        +  8__version__ = "1.1.1"
                                                        +  9__bufrlib_version__ = _bufrlib.bvers().rstrip()
                                                        + 10
                                                        + 11# create list of allowed fortran unit numbers
                                                        + 12_funits = list(range(1,100))
                                                        + 13# remove unit numbers used for stdin and stdout
                                                        + 14_funits.remove(5)
                                                        + 15_funits.remove(6)
                                                        + 16_maxdim = 5000 # max number of data levels in message
                                                        + 17_maxevents = 255 # max number of prepbufr events in message
                                                        + 18_nmaxseq = _maxevents # max size of sequence in message
                                                        + 19
                                                        + 20def set_param(key, value):
                                                        + 21    """
                                                        + 22    set BUFRLIB internal parameters controlling size limits.
                                                        + 23    Must be done prior to opening a bufr file.  Valid parameters are
                                                        + 24    listed in the docblock of the isetprm source file.
                                                        + 25
                                                        + 26    The 'get_param' function can be used to obtain the current value of these
                                                        + 27    parameters."""
                                                        + 28    return _bufrlib.isetprm(key, value)
                                                        + 29
                                                        + 30def get_param(key):
                                                        + 31    """
                                                        + 32    get the values BUFRLIB internal parameters controlling size limits.
                                                        + 33    see 'set_param' docstring for allowable parameter names."""
                                                        + 34    return _bufrlib.igetprm(key)
                                                        + 35
                                                        + 36def set_missing_value(missing_value):
                                                        + 37    """
                                                        + 38    set bufr missing value.
                                                        + 39    """
                                                        + 40    _bufrlib.setbmiss(missing_value)
                                                        + 41
                                                        + 42def get_missing_value():
                                                        + 43    """
                                                        + 44    get bufr missing value.
                                                        + 45    """
                                                        + 46    return _bufrlib.getbmiss()
                                                        + 47
                                                        + 48def set_datelength(charlen):
                                                        + 49    """
                                                        + 50    set number of digits for date specification (10 gives `YYYYMMDDHH`)
                                                        + 51    """
                                                        + 52    _bufrlib.datelen(charlen)
                                                        + 53
                                                        + 54set_datelength(10) # set default date length to 10 (YYYYMDDHH)
                                                        + 55
                                                        + 56class open:
                                                        + 57    """
                                                        + 58    bufr file object.
                                                        + 59
                                                        + 60    `ncepbufr.open.__init__` used to construct instance.
                                                        + 61
                                                        + 62    `ncepbufr.open.advance` method can be used step through bufr messages.
                                                        + 63    """
                                                        + 64    def __init__(self,filename,mode='r',table=None):
                                                        + 65        """
                                                        + 66        bufr object constructor
                                                        + 67
                                                        + 68        `filename`: bufr file name.
                                                        + 69
                                                        + 70        `mode`: `'r'` for read, `'w'` for write, `'a'` for append (default
                                                        + 71        `'r'`).
                                                        + 72
                                                        + 73        `table`:  bufr table filename or ncepbufr.open instance.
                                                        + 74        Must be specified for `mode='w'`, optional for `mode='r'`.
                                                        + 75        If table is an existing ncepbufr.open instance, the table
                                                        + 76        will be shared. If not, it is assumed to be the filename of a bufr table.
                                                        + 77        For `mode='r'`, bufr table embedded in file will be used if not specified.
                                                        + 78        """
                                                        + 79        # randomly choose available fortran unit number
                                                        + 80        self.lunit = random.choice(_funits)
                                                        + 81        self.filename = filename
                                                        + 82        '''bufr file opened with this fortran unit number'''
                                                        + 83        _funits.remove(self.lunit)
                                                        + 84        if not _funits:
                                                        + 85            raise IOError("too many files open")
                                                        + 86        if mode == 'r':
                                                        + 87            self._ioflag = 'IN'
                                                        + 88        elif mode == 'w':
                                                        + 89            if table is None:
                                                        + 90                msg="must specify file containing bufr table when mode='w'"
                                                        + 91                raise ValueError(msg)
                                                        + 92            self._ioflag = 'OUT'
                                                        + 93        elif mode == 'a':
                                                        + 94            self._ioflag = 'APN'
                                                        + 95        else:
                                                        + 96            raise ValueError("mode must be 'r', 'w' or 'a'")
                                                        + 97        if mode == 'r' or mode == 'a':
                                                        + 98            if not os.path.isfile(filename):
                                                        + 99                msg='%s does not exist' % filename
                                                        +100                raise IOError(msg)
                                                        +101            iret = _bufrlib.fortran_open(filename,self.lunit,"unformatted","rewind")
                                                        +102            if iret != 0:
                                                        +103                msg='error opening %s' % filename
                                                        +104                raise IOError(msg)
                                                        +105            if table is None:
                                                        +106                # table embedded in bufr file
                                                        +107                _bufrlib.openbf(self.lunit,self._ioflag,self.lunit)
                                                        +108                self.lundx = self.lunit # table unit number same as bufr unit number
                                                        +109            else:
                                                        +110                try:
                                                        +111                    # share a bufr table with another instance
                                                        +112                    self.lundx = table.lunit
                                                        +113                except AttributeError:
                                                        +114                    # external table file specified
                                                        +115                    self.lundx = random.choice(_funits)
                                                        +116                    iret = _bufrlib.fortran_open(table,self.lundx,"formatted","rewind")
                                                        +117                    if iret != 0:
                                                        +118                        msg='error opening %s' % filename
                                                        +119                        raise IOError(msg)
                                                        +120                    _funits.remove(self.lundx)
                                                        +121                _bufrlib.openbf(self.lunit,self._ioflag,self.lundx)
                                                        +122        elif mode == 'w':
                                                        +123            try:
                                                        +124                # share a bufr table with another instance
                                                        +125                self.lundx = table.lunit
                                                        +126            except AttributeError:
                                                        +127                # read bufr table from a file.
                                                        +128                self.lundx = random.choice(_funits)
                                                        +129                iret = _bufrlib.fortran_open(table,self.lundx,"formatted","rewind")
                                                        +130                if iret != 0:
                                                        +131                    msg='error opening %s' % table
                                                        +132                    raise IOError(msg)
                                                        +133                _funits.remove(self.lundx)
                                                        +134            iret = _bufrlib.fortran_open(filename,self.lunit,"unformatted","rewind")
                                                        +135            if iret != 0:
                                                        +136                msg='error opening %s' % filename
                                                        +137                raise IOError(msg)
                                                        +138            _bufrlib.openbf(self.lunit,self._ioflag,self.lundx)
                                                        +139        # initialized message number counter
                                                        +140        self.msg_counter = 0
                                                        +141        '''current bufr message number'''
                                                        +142        self.msg_type = None
                                                        +143        '''current bufr message type'''
                                                        +144        self.msg_date = None
                                                        +145        '''reference date for bufr message'''
                                                        +146        self.receipt_time = None
                                                        +147        '''tank receipt time for bufr message (`YYYYMMDDHHMM`), -1 if missing'''
                                                        +148        self.subsets = None
                                                        +149        '''number of subsets in the bufr message'''
                                                        +150        # missing value in decoded data.
                                                        +151        # (if equal to self.missing_value, data is masked)
                                                        +152        self.missing_value = get_missing_value()
                                                        +153        '''bufr missing value'''
                                                        +154    def _receipt_time(self):
                                                        +155        """
                                                        +156        return 'tank' receipt time (`YYYYMMDDHHMM`).
                                                        +157
                                                        +158        returns -1 if there is no tank receipt time for this message.
                                                        +159        """
                                                        +160        iyr,imon,iday,ihr,imin,iret = _bufrlib.rtrcpt(self.lunit)
                                                        +161        if iret == 0:
                                                        +162            return int('%04i%02i%02i%02i%02i' % (iyr,imon,iday,ihr,imin))
                                                        +163        else:
                                                        +164            return iret
                                                        +165    def _subsets(self):
                                                        +166        """
                                                        +167        return the number of subsets in this bufr message
                                                        +168        """
                                                        +169        return _bufrlib.nmsub(self.lunit)
                                                        +170    def dump_table(self,filename):
                                                        +171        """
                                                        +172        dump embedded bufr table to a file
                                                        +173        """
                                                        +174        lundx = random.choice(_funits)
                                                        +175        iret = _bufrlib.fortran_open(filename,lundx,'formatted','rewind')
                                                        +176        if iret != 0:
                                                        +177            msg='error opening %s' % filename
                                                        +178        _bufrlib.dxdump(self.lunit,lundx)
                                                        +179        iret = _bufrlib.fortran_close(lundx)
                                                        +180        if iret == 0:
                                                        +181            bisect.insort_left(_funits,lundx)
                                                        +182        else:
                                                        +183            raise IOError('error closing %s' % filename)
                                                        +184    def print_table(self):
                                                        +185        """
                                                        +186        print embedded bufr table to stdout
                                                        +187        """
                                                        +188        _bufrlib.dxdump(self.lunit,6)
                                                        +189    def close(self):
                                                        +190        """
                                                        +191        close the bufr file
                                                        +192        """
                                                        +193        _bufrlib.closbf(self.lunit)
                                                        +194        # add fortran unit number back to pool
                                                        +195        bisect.insort_left(_funits,self.lunit)
                                                        +196        if self.lundx != self.lunit:
                                                        +197            iret = _bufrlib.fortran_close(self.lundx)
                                                        +198            if iret == 0:
                                                        +199                bisect.insort_left(_funits,self.lundx)
                                                        +200            else:
                                                        +201                raise IOError('error closing bufr table')
                                                        +202
                                                        +203    def cmpmsg(self, cmp):
                                                        +204        """
                                                        +205        compress the data in subsequent writes to the bufr file
                                                        +206        """
                                                        +207        _bufrlib.cmpmsg(cmp)
                                                        +208
                                                        +209    def advance(self):
                                                        +210        """
                                                        +211        advance to the next msg in the bufr file
                                                        +212        returns 0 if advance was sucessful,
                                                        +213        1 if not (presumably because the end
                                                        +214        of the file was reached).
                                                        +215
                                                        +216        The following attributes are set each time
                                                        +217        file is advanced to the next message:
                                                        +218
                                                        +219        `msg_type`: string describing type of message.
                                                        +220
                                                        +221        `msg_date`: reference date (YYYYMMDDHH) for message.
                                                        +222
                                                        +223        `msg_counter`: message number.
                                                        +224
                                                        +225        `receipt_time`: bufr tank receipt time.
                                                        +226
                                                        +227        `subsets`: number of subsets in the message.
                                                        +228
                                                        +229        `subset_loaded`: Boolean indicating whether a subset has been
                                                        +230        loaded with `ncepbufr.open.load_subset`.  Initialized to `False`.
                                                        +231
                                                        +232        To loop through all the bufr messages in a file:
                                                        +233
                                                        +234            :::python
                                                        +235            >>> bufr = ncepbufr.open(filename)
                                                        +236            >>> while bufr.advance() == 0:
                                                        +237            >>>     # processing code for each message here
                                                        +238
                                                        +239        """
                                                        +240        subset, idate, iret = _bufrlib.readmg(self.lunit)
                                                        +241        if iret:
                                                        +242            return iret
                                                        +243        else:
                                                        +244            self.msg_type = subset.decode('ascii').rstrip()
                                                        +245            self.msg_date = idate
                                                        +246            self.msg_counter += 1
                                                        +247            self.subset_loaded = False
                                                        +248            self.receipt_time = self._receipt_time()
                                                        +249            self.subsets = self._subsets()
                                                        +250            return 0
                                                        +251    def inventory(self):
                                                        +252        """
                                                        +253        return a list containing an inventory of the bufr file.
                                                        +254        The list contains a tuple for each message.
                                                        +255        containing (msg_type,msg_date,receipt_time,subsets).
                                                        +256        """
                                                        +257        self.checkpoint()
                                                        +258        inv = []
                                                        +259        while self.advance() == 0:
                                                        +260            inv.append((self.msg_type,self.msg_date,self.receipt_time,self.subsets))
                                                        +261        self.restore()
                                                        +262        return inv
                                                        +263
                                                        +264    def print_subset(self,verbose=False):
                                                        +265        """
                                                        +266        print a textual representation of the decoded
                                                        +267        data in the currently loaded subset.
                                                        +268
                                                        +269        If `verbose=True`, more complete but harder to read info is written.
                                                        +270
                                                        +271        `ncepbufr.open.load_subset` must be called before
                                                        +272        trying to print the decoded subset using `ncepbufr.open.print_subset`.
                                                        +273        """
                                                        +274        if not verbose:
                                                        +275            _bufrlib.ufdump(self.lunit,6)
                                                        +276        else:
                                                        +277            _bufrlib.ufbdmp(self.lunit,6)
                                                        +278    def copy_subset(self,bufrin):
                                                        +279        """
                                                        +280        copy the currently loaded subset from the specified bufr file object
                                                        +281        and write to the current bufr message"""
                                                        +282        _bufrlib.ufbcpy(bufrin.lunit, self.lunit)
                                                        +283        _bufrlib.writsb(self.lunit)
                                                        +284    def dump_subset(self,filename,append=False,verbose=False):
                                                        +285        """
                                                        +286        dump a textual representation of the decoded
                                                        +287        data in the currently loaded subset to a file.
                                                        +288
                                                        +289        If `append=True`, append to an existing file
                                                        +290        (otherwise over-write file).
                                                        +291
                                                        +292        If `verbose=True`, more complete but harder to read info is written.
                                                        +293
                                                        +294        `ncepbufr.open.load_subset` must be called before
                                                        +295        trying to print the decoded subset using `ncepbufr.open.dump_subset`.
                                                        +296        """
                                                        +297        lunout = random.choice(_funits)
                                                        +298        if not append:
                                                        +299            iret = _bufrlib.fortran_open(filename,lunout,'formatted','rewind')
                                                        +300        else:
                                                        +301            iret = _bufrlib.fortran_open(filename,lunout,'formatted','append')
                                                        +302        if iret != 0:
                                                        +303            msg='error opening %s' % filename
                                                        +304        if not verbose:
                                                        +305            _bufrlib.ufdump(self.lunit,lunout)
                                                        +306        else:
                                                        +307            _bufrlib.ufbdmp(self.lunit,lunout)
                                                        +308        iret = _bufrlib.fortran_close(lunout)
                                                        +309        if iret == 0:
                                                        +310            bisect.insort_left(_funits,lunout)
                                                        +311        else:
                                                        +312            raise IOError('error closing %s' % filename)
                                                        +313    def get_program_code(self,mnemonic):
                                                        +314        """
                                                        +315        return prepbufr event program code
                                                        +316        associated with specified mnemonic
                                                        +317        (see `src/ufbqcd.f` for more details)
                                                        +318        """
                                                        +319        return _bufrlib.ufbqcd(self.lunit, mnemonic)
                                                        +320    def get_flag_table_bits(self, mnemonic, val):
                                                        +321        """
                                                        +322        return bit settings associated with
                                                        +323        a specifed value and flag table mnemonic
                                                        +324        (see src/upftbv.f for more details)
                                                        +325        """
                                                        +326        ibits, nbits = _bufrlib.upftbv(self.lunit, mnemonic, float(val), _maxevents)
                                                        +327        return ibits[:nbits]
                                                        +328    def checkpoint(self):
                                                        +329        """
                                                        +330        mark where we are in the bufr file,
                                                        +331        and rewind the file.
                                                        +332        The `ncepbufr.open.restore` method can then be
                                                        +333        used to go back to this state.
                                                        +334        """
                                                        +335        _bufrlib.rewnbf(self.lunit,0)
                                                        +336        self.msg_counter = 0
                                                        +337        self.msg_type = None
                                                        +338        self.msg_date = None
                                                        +339        self.receipt_time = None
                                                        +340        self.subsets = None
                                                        +341    def rewind(self):
                                                        +342        """
                                                        +343        rewind the bufr file (same as `ncepbufr.open.checkpoint`).
                                                        +344        """
                                                        +345        self.checkpoint()
                                                        +346    def restore(self):
                                                        +347        """
                                                        +348        restore the state of the bufr
                                                        +349        file that recorded by a previous call
                                                        +350        to `ncepbufr.open.checkpoint`.
                                                        +351        """
                                                        +352        _bufrlib.rewnbf(self.lunit,1)
                                                        +353    def open_message(self,msg_type,msg_date,msg_receipt_time=None):
                                                        +354        """
                                                        +355        open new bufr message.
                                                        +356
                                                        +357        Mandatory arguments:
                                                        +358
                                                        +359        `msg_type`: string describing type of message.
                                                        +360
                                                        +361        `msg_date`: reference date (e.g. `YYYYMMDDHH`) for message. The
                                                        +362        number of digits in the reference date is controlled by
                                                        +363        module function `set_datelength`, and is 10 by default.
                                                        +364
                                                        +365        `msg_receipt_time` bufr tank receipt time YYYYMMDDHHMM (optional).
                                                        +366        """
                                                        +367        if msg_receipt_time is not None:
                                                        +368            yyyymmddhhmm = str(msg_receipt_time)
                                                        +369            try:
                                                        +370                yyyy = int(yyyymmddhhmm[0:4])
                                                        +371                mm = int(yyyymmddhhmm[4:6])
                                                        +372                dd = int(yyyymmddhhmm[6:8])
                                                        +373                hh = int(yyyymmddhhmm[8:10])
                                                        +374                mm = int(yyyymmddhhmm[10:12])
                                                        +375                _bufrlib.strcpt('Y',yyyy,mm,dd,hh,mm)
                                                        +376            except IndexError:
                                                        +377                pass # don't write receipt time
                                                        +378        _bufrlib.openmb(self.lunit,msg_type,int(msg_date))
                                                        +379    def copy_message(self,bufrin):
                                                        +380        """
                                                        +381        copy the currently loaded message from the specified bufr file object
                                                        +382        and write to the file"""
                                                        +383        _bufrlib.copymg(bufrin.lunit, self.lunit)
                                                        +384    def close_message(self):
                                                        +385        """
                                                        +386        close bufr message
                                                        +387        """
                                                        +388        _bufrlib.closmg(self.lunit)
                                                        +389    def load_subset(self):
                                                        +390        """
                                                        +391        load subset data from the current message
                                                        +392        (must be called before `ncepbufr.open.read_subset`).
                                                        +393        To loop through all messages in a file, and
                                                        +394        all subsets in each message:
                                                        +395
                                                        +396            :::python
                                                        +397            >>> bufr = ncepbufr.open(filename)
                                                        +398            >>> while bufr.advance() == 0:
                                                        +399            >>>     while bufr.load_subset() == 0:
                                                        +400            >>>         # processing code for each subset here
                                                        +401
                                                        +402        """
                                                        +403        iret = _bufrlib.ireadsb(self.lunit)
                                                        +404        if iret == 0:
                                                        +405            self.subset_loaded = True
                                                        +406        return iret
                                                        +407    def read_long_string(self,mnemonic):
                                                        +408        """
                                                        +409        Decode character string from the currently loaded message subset
                                                        +410        using the specified mnemonic (a 'mnemonic' is simply a
                                                        +411        descriptive, alphanumeric name for a data value, like
                                                        +412        a key in a python dictionary). The mnemonic string
                                                        +413        must be a single mnemonic only. If the subset contains more 
                                                        +414        than one occurrence of the mnemonic, then can append '#X' to 
                                                        +415        the mnemonic to request the character string corresponding to 
                                                        +416        the Xth occurrence of the mnemonic, counting from the beginning 
                                                        +417        of the subset. Otherwise, X is assumed to be 1.
                                                        +418        
                                                        +419        Returns the character string, if found, or "MISSING" if not.
                                                        +420
                                                        +421        Example:
                                                        +422
                                                        +423            :::python
                                                        +424            >>> bufr = ncepbufr.open(filename)
                                                        +425            >>> while bufr.advance() == 0:
                                                        +426            >>>     while bufr.load_subset() == 0:
                                                        +427            >>>         st_name = bufr.read_long_string(mnemonic='STSN')
                                                        +428        """
                                                        +429        if not self.subset_loaded:
                                                        +430            raise IOError('subset not loaded, call load_subset first')
                                                        +431        if len(mnemonic.split()) > 1:
                                                        +432            raise ValueError('only one mnemonic per call to read_long_string')
                                                        +433        long_string = _bufrlib.readlc(self.lunit,mnemonic)
                                                        +434        try:
                                                        +435            result = str(long_string, encoding='ascii').strip()
                                                        +436        except UnicodeDecodeError:
                                                        +437            try:
                                                        +438                if all([bt == int('0xff',16) for bt in long_string.strip()]):
                                                        +439                    # All values set to 255 for missing data.
                                                        +440                    result = 'MISSING'
                                                        +441                else:
                                                        +442                    # Extended ASCII for Roman alphabet accents.
                                                        +443                    result = str(long_string, encoding='cp1252').strip()
                                                        +444            except Exception as error:
                                                        +445                print(f"An exception occurred {error}")
                                                        +446        except Exception as error:
                                                        +447            print(f"An exception occurred {error}")
                                                        +448        return result
                                                        +449    def read_subset(self,mnemonics,rep=False,seq=False,events=False):
                                                        +450        """
                                                        +451        decode the data from the currently loaded message subset
                                                        +452        using the specified mnemonics (a 'mnemonic' is simply a
                                                        +453        descriptive, alphanumeric name for a data value, like
                                                        +454        a key in a python dictionary). The mnemonics string
                                                        +455        may contain multiple space delimited mnemonics
                                                        +456        (e.g. `mnemonics='MNEMONIC1 MNEMONIC2 MNEMONIC3'`).
                                                        +457
                                                        +458        By default, the mnemonics are assumed to be part of a delayed
                                                        +459        replication sequence, or have no replication at all, and `ufbint`
                                                        +460        is used to read the data.
                                                        +461
                                                        +462        `ncepbufr.open.load_subset` must be called before
                                                        +463        trying to decode a subset using `ncepbufr.open.read_subset`.
                                                        +464
                                                        +465        if `rep = True`, `ufbrep` is used to read data represented
                                                        +466        a regular replication sequence.  See the comments in `src/ufbrep.f` for
                                                        +467        more details. Used for radiance data.
                                                        +468
                                                        +469        if `seq=True`, `ufbseq` is used to read data represented by
                                                        +470        a sequence mnemonic. Used for gps data.
                                                        +471
                                                        +472        if `events=True`, `ufbevn` is used to read prepbufr
                                                        +473        "events", and a 3-d array is returned.
                                                        +474
                                                        +475        Only one of seq, rep and events can be True.
                                                        +476
                                                        +477        returns a numpy masked array with decoded values
                                                        +478        (missing values are masked).
                                                        +479        The shape of the array is `(nm,nlevs)`, where
                                                        +480        where `nm` is the number of elements in the specified
                                                        +481        mnemonics string, and `nlevs` is the number of levels in the report.
                                                        +482        If `events=True`, a 3rd dimension representing the prepbufr
                                                        +483        event codes is added.
                                                        +484        """
                                                        +485        if not self.subset_loaded:
                                                        +486            raise IOError('subset not loaded, call load_subset first')
                                                        +487        ndim = len(mnemonics.split())
                                                        +488        if np.array([rep,seq,events]).sum() > 1:
                                                        +489            raise ValueError('only one of rep, seq and events cannot be True')
                                                        +490        if seq:
                                                        +491            data = np.empty((_nmaxseq,_maxdim),np.float64,order='F')
                                                        +492            levs = _bufrlib.ufbseq(self.lunit,data,mnemonics,_nmaxseq,_maxdim)
                                                        +493        elif rep:
                                                        +494            data = np.empty((ndim,_maxdim),np.float64,order='F')
                                                        +495            levs = _bufrlib.ufbrep(self.lunit,data,mnemonics,ndim,_maxdim)
                                                        +496        elif events:
                                                        +497            #data = np.empty((ndim,_maxdim,maxevents),np.float64,order='F')
                                                        +498            data = np.empty((ndim,_maxdim,_maxevents),np.float64,order='F')
                                                        +499            levs = _bufrlib.ufbevn(self.lunit,data,mnemonics,ndim,_maxdim,_maxevents)
                                                        +500        else:
                                                        +501            data = np.empty((ndim,_maxdim),np.float64,order='F')
                                                        +502            levs = _bufrlib.ufbint(self.lunit,data,mnemonics,ndim,_maxdim)
                                                        +503        if events:
                                                        +504            return np.ma.masked_values(data[:,:levs,:],self.missing_value)
                                                        +505        else:
                                                        +506            return np.ma.masked_values(data[:,:levs],self.missing_value)
                                                        +507    def write_subset(self,data,mnemonics,rep=False,seq=False,events=False,end=False):
                                                        +508        """
                                                        +509        write data to message subset using the specified mnemonics
                                                        +510        (a 'mnemonic' is simply a descriptive, alphanumeric name for a
                                                        +511        data value, like a key in a python dictionary). The mnemonics string
                                                        +512        may contain multiple space delimited mnemonics
                                                        +513        (e.g. `mnemonics='MNEMONIC1 MNEMONIC2 MNEMONIC3'`).
                                                        +514
                                                        +515        By default, the mnemonics are assumed to be part of a delayed
                                                        +516        replication sequence, or have no replication at all, and `ufbint`
                                                        +517        is used to write the data.
                                                        +518
                                                        +519        if `rep = True`, `ufbrep` is used to write data represented
                                                        +520        a regular replication sequence.  See the comments in `src/ufbrep.f` for
                                                        +521        more details. Used for radiance data.
                                                        +522
                                                        +523        if `seq=True`, `ufbseq` is used to write data represented by
                                                        +524        a sequence mnemonic. Used for gps data.
                                                        +525
                                                        +526        if `events=True`, `ufbevn` is used to write prepbufr
                                                        +527        "events" (a 3-d data array is required)
                                                        +528
                                                        +529        Only one of seq, rep and events can be True.
                                                        +530
                                                        +531        If `end=True`, the message subset is closed and written
                                                        +532        to the bufr file (default `False`).
                                                        +533        """
                                                        +534        # make a fortran contiguous copy of input data.
                                                        +535        if len(data.shape) in [2,3]:
                                                        +536            dataf = np.empty(data.shape, np.float64, order='F')
                                                        +537            dataf[:] = data[:]
                                                        +538        elif len(data.shape) == 1:
                                                        +539            # make 1d array into 2d array with 1 level
                                                        +540            dataf = np.empty((data.shape[0],1), np.float64, order='F')
                                                        +541            dataf[:,0] = data[:]
                                                        +542        else:
                                                        +543            msg = 'data in write_subset must be 1,2 or 3d'
                                                        +544            raise ValueError(msg)
                                                        +545        if np.array([rep,seq,events]).sum() > 1:
                                                        +546            raise ValueError('only one of rep, seq and events cannot be True')
                                                        +547        if seq:
                                                        +548            levs = _bufrlib.ufbseq(self.lunit,dataf,mnemonics,dataf.shape[0],\
                                                        +549                    dataf.shape[1])
                                                        +550        elif rep:
                                                        +551            levs = _bufrlib.ufbrep(self.lunit,dataf,mnemonics,dataf.shape[0],\
                                                        +552                    dataf.shape[1])
                                                        +553        elif events:
                                                        +554            levs = _bufrlib.ufbevn(self.lunit,dataf,mnemonics,dataf.shape[0],\
                                                        +555                    dataf.shape[1],dataf.shape[2])
                                                        +556        else:
                                                        +557            levs = _bufrlib.ufbint(self.lunit,dataf,mnemonics,dataf.shape[0],\
                                                        +558                    dataf.shape[1])
                                                        +559        # end subset if desired.
                                                        +560        if end:
                                                        +561            _bufrlib.writsb(self.lunit)
                                                        +
                                                        + + +
                                                        +
                                                        + +
                                                        + + def + set_param(key, value): + + + +
                                                        + +
                                                        21def set_param(key, value):
                                                        +22    """
                                                        +23    set BUFRLIB internal parameters controlling size limits.
                                                        +24    Must be done prior to opening a bufr file.  Valid parameters are
                                                        +25    listed in the docblock of the isetprm source file.
                                                        +26
                                                        +27    The 'get_param' function can be used to obtain the current value of these
                                                        +28    parameters."""
                                                        +29    return _bufrlib.isetprm(key, value)
                                                        +
                                                        + + +

                                                        set BUFRLIB internal parameters controlling size limits. +Must be done prior to opening a bufr file. Valid parameters are +listed in the docblock of the isetprm source file.

                                                        + +

                                                        The 'get_param' function can be used to obtain the current value of these +parameters.

                                                        +
                                                        + + +
                                                        +
                                                        + +
                                                        + + def + get_param(key): + + + +
                                                        + +
                                                        31def get_param(key):
                                                        +32    """
                                                        +33    get the values BUFRLIB internal parameters controlling size limits.
                                                        +34    see 'set_param' docstring for allowable parameter names."""
                                                        +35    return _bufrlib.igetprm(key)
                                                        +
                                                        + + +

                                                        get the values BUFRLIB internal parameters controlling size limits. +see 'set_param' docstring for allowable parameter names.

                                                        +
                                                        + + +
                                                        +
                                                        + +
                                                        + + def + set_missing_value(missing_value): + + + +
                                                        + +
                                                        37def set_missing_value(missing_value):
                                                        +38    """
                                                        +39    set bufr missing value.
                                                        +40    """
                                                        +41    _bufrlib.setbmiss(missing_value)
                                                        +
                                                        + + +

                                                        set bufr missing value.

                                                        +
                                                        + + +
                                                        +
                                                        + +
                                                        + + def + get_missing_value(): + + + +
                                                        + +
                                                        43def get_missing_value():
                                                        +44    """
                                                        +45    get bufr missing value.
                                                        +46    """
                                                        +47    return _bufrlib.getbmiss()
                                                        +
                                                        + + +

                                                        get bufr missing value.

                                                        +
                                                        + + +
                                                        +
                                                        + +
                                                        + + def + set_datelength(charlen): + + + +
                                                        + +
                                                        49def set_datelength(charlen):
                                                        +50    """
                                                        +51    set number of digits for date specification (10 gives `YYYYMMDDHH`)
                                                        +52    """
                                                        +53    _bufrlib.datelen(charlen)
                                                        +
                                                        + + +

                                                        set number of digits for date specification (10 gives YYYYMMDDHH)

                                                        +
                                                        + + +
                                                        +
                                                        + +
                                                        + + class + open: + + + +
                                                        + +
                                                         57class open:
                                                        + 58    """
                                                        + 59    bufr file object.
                                                        + 60
                                                        + 61    `ncepbufr.open.__init__` used to construct instance.
                                                        + 62
                                                        + 63    `ncepbufr.open.advance` method can be used step through bufr messages.
                                                        + 64    """
                                                        + 65    def __init__(self,filename,mode='r',table=None):
                                                        + 66        """
                                                        + 67        bufr object constructor
                                                        + 68
                                                        + 69        `filename`: bufr file name.
                                                        + 70
                                                        + 71        `mode`: `'r'` for read, `'w'` for write, `'a'` for append (default
                                                        + 72        `'r'`).
                                                        + 73
                                                        + 74        `table`:  bufr table filename or ncepbufr.open instance.
                                                        + 75        Must be specified for `mode='w'`, optional for `mode='r'`.
                                                        + 76        If table is an existing ncepbufr.open instance, the table
                                                        + 77        will be shared. If not, it is assumed to be the filename of a bufr table.
                                                        + 78        For `mode='r'`, bufr table embedded in file will be used if not specified.
                                                        + 79        """
                                                        + 80        # randomly choose available fortran unit number
                                                        + 81        self.lunit = random.choice(_funits)
                                                        + 82        self.filename = filename
                                                        + 83        '''bufr file opened with this fortran unit number'''
                                                        + 84        _funits.remove(self.lunit)
                                                        + 85        if not _funits:
                                                        + 86            raise IOError("too many files open")
                                                        + 87        if mode == 'r':
                                                        + 88            self._ioflag = 'IN'
                                                        + 89        elif mode == 'w':
                                                        + 90            if table is None:
                                                        + 91                msg="must specify file containing bufr table when mode='w'"
                                                        + 92                raise ValueError(msg)
                                                        + 93            self._ioflag = 'OUT'
                                                        + 94        elif mode == 'a':
                                                        + 95            self._ioflag = 'APN'
                                                        + 96        else:
                                                        + 97            raise ValueError("mode must be 'r', 'w' or 'a'")
                                                        + 98        if mode == 'r' or mode == 'a':
                                                        + 99            if not os.path.isfile(filename):
                                                        +100                msg='%s does not exist' % filename
                                                        +101                raise IOError(msg)
                                                        +102            iret = _bufrlib.fortran_open(filename,self.lunit,"unformatted","rewind")
                                                        +103            if iret != 0:
                                                        +104                msg='error opening %s' % filename
                                                        +105                raise IOError(msg)
                                                        +106            if table is None:
                                                        +107                # table embedded in bufr file
                                                        +108                _bufrlib.openbf(self.lunit,self._ioflag,self.lunit)
                                                        +109                self.lundx = self.lunit # table unit number same as bufr unit number
                                                        +110            else:
                                                        +111                try:
                                                        +112                    # share a bufr table with another instance
                                                        +113                    self.lundx = table.lunit
                                                        +114                except AttributeError:
                                                        +115                    # external table file specified
                                                        +116                    self.lundx = random.choice(_funits)
                                                        +117                    iret = _bufrlib.fortran_open(table,self.lundx,"formatted","rewind")
                                                        +118                    if iret != 0:
                                                        +119                        msg='error opening %s' % filename
                                                        +120                        raise IOError(msg)
                                                        +121                    _funits.remove(self.lundx)
                                                        +122                _bufrlib.openbf(self.lunit,self._ioflag,self.lundx)
                                                        +123        elif mode == 'w':
                                                        +124            try:
                                                        +125                # share a bufr table with another instance
                                                        +126                self.lundx = table.lunit
                                                        +127            except AttributeError:
                                                        +128                # read bufr table from a file.
                                                        +129                self.lundx = random.choice(_funits)
                                                        +130                iret = _bufrlib.fortran_open(table,self.lundx,"formatted","rewind")
                                                        +131                if iret != 0:
                                                        +132                    msg='error opening %s' % table
                                                        +133                    raise IOError(msg)
                                                        +134                _funits.remove(self.lundx)
                                                        +135            iret = _bufrlib.fortran_open(filename,self.lunit,"unformatted","rewind")
                                                        +136            if iret != 0:
                                                        +137                msg='error opening %s' % filename
                                                        +138                raise IOError(msg)
                                                        +139            _bufrlib.openbf(self.lunit,self._ioflag,self.lundx)
                                                        +140        # initialized message number counter
                                                        +141        self.msg_counter = 0
                                                        +142        '''current bufr message number'''
                                                        +143        self.msg_type = None
                                                        +144        '''current bufr message type'''
                                                        +145        self.msg_date = None
                                                        +146        '''reference date for bufr message'''
                                                        +147        self.receipt_time = None
                                                        +148        '''tank receipt time for bufr message (`YYYYMMDDHHMM`), -1 if missing'''
                                                        +149        self.subsets = None
                                                        +150        '''number of subsets in the bufr message'''
                                                        +151        # missing value in decoded data.
                                                        +152        # (if equal to self.missing_value, data is masked)
                                                        +153        self.missing_value = get_missing_value()
                                                        +154        '''bufr missing value'''
                                                        +155    def _receipt_time(self):
                                                        +156        """
                                                        +157        return 'tank' receipt time (`YYYYMMDDHHMM`).
                                                        +158
                                                        +159        returns -1 if there is no tank receipt time for this message.
                                                        +160        """
                                                        +161        iyr,imon,iday,ihr,imin,iret = _bufrlib.rtrcpt(self.lunit)
                                                        +162        if iret == 0:
                                                        +163            return int('%04i%02i%02i%02i%02i' % (iyr,imon,iday,ihr,imin))
                                                        +164        else:
                                                        +165            return iret
                                                        +166    def _subsets(self):
                                                        +167        """
                                                        +168        return the number of subsets in this bufr message
                                                        +169        """
                                                        +170        return _bufrlib.nmsub(self.lunit)
                                                        +171    def dump_table(self,filename):
                                                        +172        """
                                                        +173        dump embedded bufr table to a file
                                                        +174        """
                                                        +175        lundx = random.choice(_funits)
                                                        +176        iret = _bufrlib.fortran_open(filename,lundx,'formatted','rewind')
                                                        +177        if iret != 0:
                                                        +178            msg='error opening %s' % filename
                                                        +179        _bufrlib.dxdump(self.lunit,lundx)
                                                        +180        iret = _bufrlib.fortran_close(lundx)
                                                        +181        if iret == 0:
                                                        +182            bisect.insort_left(_funits,lundx)
                                                        +183        else:
                                                        +184            raise IOError('error closing %s' % filename)
                                                        +185    def print_table(self):
                                                        +186        """
                                                        +187        print embedded bufr table to stdout
                                                        +188        """
                                                        +189        _bufrlib.dxdump(self.lunit,6)
                                                        +190    def close(self):
                                                        +191        """
                                                        +192        close the bufr file
                                                        +193        """
                                                        +194        _bufrlib.closbf(self.lunit)
                                                        +195        # add fortran unit number back to pool
                                                        +196        bisect.insort_left(_funits,self.lunit)
                                                        +197        if self.lundx != self.lunit:
                                                        +198            iret = _bufrlib.fortran_close(self.lundx)
                                                        +199            if iret == 0:
                                                        +200                bisect.insort_left(_funits,self.lundx)
                                                        +201            else:
                                                        +202                raise IOError('error closing bufr table')
                                                        +203
                                                        +204    def cmpmsg(self, cmp):
                                                        +205        """
                                                        +206        compress the data in subsequent writes to the bufr file
                                                        +207        """
                                                        +208        _bufrlib.cmpmsg(cmp)
                                                        +209
                                                        +210    def advance(self):
                                                        +211        """
                                                        +212        advance to the next msg in the bufr file
                                                        +213        returns 0 if advance was sucessful,
                                                        +214        1 if not (presumably because the end
                                                        +215        of the file was reached).
                                                        +216
                                                        +217        The following attributes are set each time
                                                        +218        file is advanced to the next message:
                                                        +219
                                                        +220        `msg_type`: string describing type of message.
                                                        +221
                                                        +222        `msg_date`: reference date (YYYYMMDDHH) for message.
                                                        +223
                                                        +224        `msg_counter`: message number.
                                                        +225
                                                        +226        `receipt_time`: bufr tank receipt time.
                                                        +227
                                                        +228        `subsets`: number of subsets in the message.
                                                        +229
                                                        +230        `subset_loaded`: Boolean indicating whether a subset has been
                                                        +231        loaded with `ncepbufr.open.load_subset`.  Initialized to `False`.
                                                        +232
                                                        +233        To loop through all the bufr messages in a file:
                                                        +234
                                                        +235            :::python
                                                        +236            >>> bufr = ncepbufr.open(filename)
                                                        +237            >>> while bufr.advance() == 0:
                                                        +238            >>>     # processing code for each message here
                                                        +239
                                                        +240        """
                                                        +241        subset, idate, iret = _bufrlib.readmg(self.lunit)
                                                        +242        if iret:
                                                        +243            return iret
                                                        +244        else:
                                                        +245            self.msg_type = subset.decode('ascii').rstrip()
                                                        +246            self.msg_date = idate
                                                        +247            self.msg_counter += 1
                                                        +248            self.subset_loaded = False
                                                        +249            self.receipt_time = self._receipt_time()
                                                        +250            self.subsets = self._subsets()
                                                        +251            return 0
                                                        +252    def inventory(self):
                                                        +253        """
                                                        +254        return a list containing an inventory of the bufr file.
                                                        +255        The list contains a tuple for each message.
                                                        +256        containing (msg_type,msg_date,receipt_time,subsets).
                                                        +257        """
                                                        +258        self.checkpoint()
                                                        +259        inv = []
                                                        +260        while self.advance() == 0:
                                                        +261            inv.append((self.msg_type,self.msg_date,self.receipt_time,self.subsets))
                                                        +262        self.restore()
                                                        +263        return inv
                                                        +264
                                                        +265    def print_subset(self,verbose=False):
                                                        +266        """
                                                        +267        print a textual representation of the decoded
                                                        +268        data in the currently loaded subset.
                                                        +269
                                                        +270        If `verbose=True`, more complete but harder to read info is written.
                                                        +271
                                                        +272        `ncepbufr.open.load_subset` must be called before
                                                        +273        trying to print the decoded subset using `ncepbufr.open.print_subset`.
                                                        +274        """
                                                        +275        if not verbose:
                                                        +276            _bufrlib.ufdump(self.lunit,6)
                                                        +277        else:
                                                        +278            _bufrlib.ufbdmp(self.lunit,6)
                                                        +279    def copy_subset(self,bufrin):
                                                        +280        """
                                                        +281        copy the currently loaded subset from the specified bufr file object
                                                        +282        and write to the current bufr message"""
                                                        +283        _bufrlib.ufbcpy(bufrin.lunit, self.lunit)
                                                        +284        _bufrlib.writsb(self.lunit)
                                                        +285    def dump_subset(self,filename,append=False,verbose=False):
                                                        +286        """
                                                        +287        dump a textual representation of the decoded
                                                        +288        data in the currently loaded subset to a file.
                                                        +289
                                                        +290        If `append=True`, append to an existing file
                                                        +291        (otherwise over-write file).
                                                        +292
                                                        +293        If `verbose=True`, more complete but harder to read info is written.
                                                        +294
                                                        +295        `ncepbufr.open.load_subset` must be called before
                                                        +296        trying to print the decoded subset using `ncepbufr.open.dump_subset`.
                                                        +297        """
                                                        +298        lunout = random.choice(_funits)
                                                        +299        if not append:
                                                        +300            iret = _bufrlib.fortran_open(filename,lunout,'formatted','rewind')
                                                        +301        else:
                                                        +302            iret = _bufrlib.fortran_open(filename,lunout,'formatted','append')
                                                        +303        if iret != 0:
                                                        +304            msg='error opening %s' % filename
                                                        +305        if not verbose:
                                                        +306            _bufrlib.ufdump(self.lunit,lunout)
                                                        +307        else:
                                                        +308            _bufrlib.ufbdmp(self.lunit,lunout)
                                                        +309        iret = _bufrlib.fortran_close(lunout)
                                                        +310        if iret == 0:
                                                        +311            bisect.insort_left(_funits,lunout)
                                                        +312        else:
                                                        +313            raise IOError('error closing %s' % filename)
                                                        +314    def get_program_code(self,mnemonic):
                                                        +315        """
                                                        +316        return prepbufr event program code
                                                        +317        associated with specified mnemonic
                                                        +318        (see `src/ufbqcd.f` for more details)
                                                        +319        """
                                                        +320        return _bufrlib.ufbqcd(self.lunit, mnemonic)
                                                        +321    def get_flag_table_bits(self, mnemonic, val):
                                                        +322        """
                                                        +323        return bit settings associated with
                                                        +324        a specifed value and flag table mnemonic
                                                        +325        (see src/upftbv.f for more details)
                                                        +326        """
                                                        +327        ibits, nbits = _bufrlib.upftbv(self.lunit, mnemonic, float(val), _maxevents)
                                                        +328        return ibits[:nbits]
                                                        +329    def checkpoint(self):
                                                        +330        """
                                                        +331        mark where we are in the bufr file,
                                                        +332        and rewind the file.
                                                        +333        The `ncepbufr.open.restore` method can then be
                                                        +334        used to go back to this state.
                                                        +335        """
                                                        +336        _bufrlib.rewnbf(self.lunit,0)
                                                        +337        self.msg_counter = 0
                                                        +338        self.msg_type = None
                                                        +339        self.msg_date = None
                                                        +340        self.receipt_time = None
                                                        +341        self.subsets = None
                                                        +342    def rewind(self):
                                                        +343        """
                                                        +344        rewind the bufr file (same as `ncepbufr.open.checkpoint`).
                                                        +345        """
                                                        +346        self.checkpoint()
                                                        +347    def restore(self):
                                                        +348        """
                                                        +349        restore the state of the bufr
                                                        +350        file that recorded by a previous call
                                                        +351        to `ncepbufr.open.checkpoint`.
                                                        +352        """
                                                        +353        _bufrlib.rewnbf(self.lunit,1)
                                                        +354    def open_message(self,msg_type,msg_date,msg_receipt_time=None):
                                                        +355        """
                                                        +356        open new bufr message.
                                                        +357
                                                        +358        Mandatory arguments:
                                                        +359
                                                        +360        `msg_type`: string describing type of message.
                                                        +361
                                                        +362        `msg_date`: reference date (e.g. `YYYYMMDDHH`) for message. The
                                                        +363        number of digits in the reference date is controlled by
                                                        +364        module function `set_datelength`, and is 10 by default.
                                                        +365
                                                        +366        `msg_receipt_time` bufr tank receipt time YYYYMMDDHHMM (optional).
                                                        +367        """
                                                        +368        if msg_receipt_time is not None:
                                                        +369            yyyymmddhhmm = str(msg_receipt_time)
                                                        +370            try:
                                                        +371                yyyy = int(yyyymmddhhmm[0:4])
                                                        +372                mm = int(yyyymmddhhmm[4:6])
                                                        +373                dd = int(yyyymmddhhmm[6:8])
                                                        +374                hh = int(yyyymmddhhmm[8:10])
                                                        +375                mm = int(yyyymmddhhmm[10:12])
                                                        +376                _bufrlib.strcpt('Y',yyyy,mm,dd,hh,mm)
                                                        +377            except IndexError:
                                                        +378                pass # don't write receipt time
                                                        +379        _bufrlib.openmb(self.lunit,msg_type,int(msg_date))
                                                        +380    def copy_message(self,bufrin):
                                                        +381        """
                                                        +382        copy the currently loaded message from the specified bufr file object
                                                        +383        and write to the file"""
                                                        +384        _bufrlib.copymg(bufrin.lunit, self.lunit)
                                                        +385    def close_message(self):
                                                        +386        """
                                                        +387        close bufr message
                                                        +388        """
                                                        +389        _bufrlib.closmg(self.lunit)
                                                        +390    def load_subset(self):
                                                        +391        """
                                                        +392        load subset data from the current message
                                                        +393        (must be called before `ncepbufr.open.read_subset`).
                                                        +394        To loop through all messages in a file, and
                                                        +395        all subsets in each message:
                                                        +396
                                                        +397            :::python
                                                        +398            >>> bufr = ncepbufr.open(filename)
                                                        +399            >>> while bufr.advance() == 0:
                                                        +400            >>>     while bufr.load_subset() == 0:
                                                        +401            >>>         # processing code for each subset here
                                                        +402
                                                        +403        """
                                                        +404        iret = _bufrlib.ireadsb(self.lunit)
                                                        +405        if iret == 0:
                                                        +406            self.subset_loaded = True
                                                        +407        return iret
                                                        +408    def read_long_string(self,mnemonic):
                                                        +409        """
                                                        +410        Decode character string from the currently loaded message subset
                                                        +411        using the specified mnemonic (a 'mnemonic' is simply a
                                                        +412        descriptive, alphanumeric name for a data value, like
                                                        +413        a key in a python dictionary). The mnemonic string
                                                        +414        must be a single mnemonic only. If the subset contains more 
                                                        +415        than one occurrence of the mnemonic, then can append '#X' to 
                                                        +416        the mnemonic to request the character string corresponding to 
                                                        +417        the Xth occurrence of the mnemonic, counting from the beginning 
                                                        +418        of the subset. Otherwise, X is assumed to be 1.
                                                        +419        
                                                        +420        Returns the character string, if found, or "MISSING" if not.
                                                        +421
                                                        +422        Example:
                                                        +423
                                                        +424            :::python
                                                        +425            >>> bufr = ncepbufr.open(filename)
                                                        +426            >>> while bufr.advance() == 0:
                                                        +427            >>>     while bufr.load_subset() == 0:
                                                        +428            >>>         st_name = bufr.read_long_string(mnemonic='STSN')
                                                        +429        """
                                                        +430        if not self.subset_loaded:
                                                        +431            raise IOError('subset not loaded, call load_subset first')
                                                        +432        if len(mnemonic.split()) > 1:
                                                        +433            raise ValueError('only one mnemonic per call to read_long_string')
                                                        +434        long_string = _bufrlib.readlc(self.lunit,mnemonic)
                                                        +435        try:
                                                        +436            result = str(long_string, encoding='ascii').strip()
                                                        +437        except UnicodeDecodeError:
                                                        +438            try:
                                                        +439                if all([bt == int('0xff',16) for bt in long_string.strip()]):
                                                        +440                    # All values set to 255 for missing data.
                                                        +441                    result = 'MISSING'
                                                        +442                else:
                                                        +443                    # Extended ASCII for Roman alphabet accents.
                                                        +444                    result = str(long_string, encoding='cp1252').strip()
                                                        +445            except Exception as error:
                                                        +446                print(f"An exception occurred {error}")
                                                        +447        except Exception as error:
                                                        +448            print(f"An exception occurred {error}")
                                                        +449        return result
                                                        +450    def read_subset(self,mnemonics,rep=False,seq=False,events=False):
                                                        +451        """
                                                        +452        decode the data from the currently loaded message subset
                                                        +453        using the specified mnemonics (a 'mnemonic' is simply a
                                                        +454        descriptive, alphanumeric name for a data value, like
                                                        +455        a key in a python dictionary). The mnemonics string
                                                        +456        may contain multiple space delimited mnemonics
                                                        +457        (e.g. `mnemonics='MNEMONIC1 MNEMONIC2 MNEMONIC3'`).
                                                        +458
                                                        +459        By default, the mnemonics are assumed to be part of a delayed
                                                        +460        replication sequence, or have no replication at all, and `ufbint`
                                                        +461        is used to read the data.
                                                        +462
                                                        +463        `ncepbufr.open.load_subset` must be called before
                                                        +464        trying to decode a subset using `ncepbufr.open.read_subset`.
                                                        +465
                                                        +466        if `rep = True`, `ufbrep` is used to read data represented
                                                        +467        a regular replication sequence.  See the comments in `src/ufbrep.f` for
                                                        +468        more details. Used for radiance data.
                                                        +469
                                                        +470        if `seq=True`, `ufbseq` is used to read data represented by
                                                        +471        a sequence mnemonic. Used for gps data.
                                                        +472
                                                        +473        if `events=True`, `ufbevn` is used to read prepbufr
                                                        +474        "events", and a 3-d array is returned.
                                                        +475
                                                        +476        Only one of seq, rep and events can be True.
                                                        +477
                                                        +478        returns a numpy masked array with decoded values
                                                        +479        (missing values are masked).
                                                        +480        The shape of the array is `(nm,nlevs)`, where
                                                        +481        where `nm` is the number of elements in the specified
                                                        +482        mnemonics string, and `nlevs` is the number of levels in the report.
                                                        +483        If `events=True`, a 3rd dimension representing the prepbufr
                                                        +484        event codes is added.
                                                        +485        """
                                                        +486        if not self.subset_loaded:
                                                        +487            raise IOError('subset not loaded, call load_subset first')
                                                        +488        ndim = len(mnemonics.split())
                                                        +489        if np.array([rep,seq,events]).sum() > 1:
                                                        +490            raise ValueError('only one of rep, seq and events cannot be True')
                                                        +491        if seq:
                                                        +492            data = np.empty((_nmaxseq,_maxdim),np.float64,order='F')
                                                        +493            levs = _bufrlib.ufbseq(self.lunit,data,mnemonics,_nmaxseq,_maxdim)
                                                        +494        elif rep:
                                                        +495            data = np.empty((ndim,_maxdim),np.float64,order='F')
                                                        +496            levs = _bufrlib.ufbrep(self.lunit,data,mnemonics,ndim,_maxdim)
                                                        +497        elif events:
                                                        +498            #data = np.empty((ndim,_maxdim,maxevents),np.float64,order='F')
                                                        +499            data = np.empty((ndim,_maxdim,_maxevents),np.float64,order='F')
                                                        +500            levs = _bufrlib.ufbevn(self.lunit,data,mnemonics,ndim,_maxdim,_maxevents)
                                                        +501        else:
                                                        +502            data = np.empty((ndim,_maxdim),np.float64,order='F')
                                                        +503            levs = _bufrlib.ufbint(self.lunit,data,mnemonics,ndim,_maxdim)
                                                        +504        if events:
                                                        +505            return np.ma.masked_values(data[:,:levs,:],self.missing_value)
                                                        +506        else:
                                                        +507            return np.ma.masked_values(data[:,:levs],self.missing_value)
                                                        +508    def write_subset(self,data,mnemonics,rep=False,seq=False,events=False,end=False):
                                                        +509        """
                                                        +510        write data to message subset using the specified mnemonics
                                                        +511        (a 'mnemonic' is simply a descriptive, alphanumeric name for a
                                                        +512        data value, like a key in a python dictionary). The mnemonics string
                                                        +513        may contain multiple space delimited mnemonics
                                                        +514        (e.g. `mnemonics='MNEMONIC1 MNEMONIC2 MNEMONIC3'`).
                                                        +515
                                                        +516        By default, the mnemonics are assumed to be part of a delayed
                                                        +517        replication sequence, or have no replication at all, and `ufbint`
                                                        +518        is used to write the data.
                                                        +519
                                                        +520        if `rep = True`, `ufbrep` is used to write data represented
                                                        +521        a regular replication sequence.  See the comments in `src/ufbrep.f` for
                                                        +522        more details. Used for radiance data.
                                                        +523
                                                        +524        if `seq=True`, `ufbseq` is used to write data represented by
                                                        +525        a sequence mnemonic. Used for gps data.
                                                        +526
                                                        +527        if `events=True`, `ufbevn` is used to write prepbufr
                                                        +528        "events" (a 3-d data array is required)
                                                        +529
                                                        +530        Only one of seq, rep and events can be True.
                                                        +531
                                                        +532        If `end=True`, the message subset is closed and written
                                                        +533        to the bufr file (default `False`).
                                                        +534        """
                                                        +535        # make a fortran contiguous copy of input data.
                                                        +536        if len(data.shape) in [2,3]:
                                                        +537            dataf = np.empty(data.shape, np.float64, order='F')
                                                        +538            dataf[:] = data[:]
                                                        +539        elif len(data.shape) == 1:
                                                        +540            # make 1d array into 2d array with 1 level
                                                        +541            dataf = np.empty((data.shape[0],1), np.float64, order='F')
                                                        +542            dataf[:,0] = data[:]
                                                        +543        else:
                                                        +544            msg = 'data in write_subset must be 1,2 or 3d'
                                                        +545            raise ValueError(msg)
                                                        +546        if np.array([rep,seq,events]).sum() > 1:
                                                        +547            raise ValueError('only one of rep, seq and events cannot be True')
                                                        +548        if seq:
                                                        +549            levs = _bufrlib.ufbseq(self.lunit,dataf,mnemonics,dataf.shape[0],\
                                                        +550                    dataf.shape[1])
                                                        +551        elif rep:
                                                        +552            levs = _bufrlib.ufbrep(self.lunit,dataf,mnemonics,dataf.shape[0],\
                                                        +553                    dataf.shape[1])
                                                        +554        elif events:
                                                        +555            levs = _bufrlib.ufbevn(self.lunit,dataf,mnemonics,dataf.shape[0],\
                                                        +556                    dataf.shape[1],dataf.shape[2])
                                                        +557        else:
                                                        +558            levs = _bufrlib.ufbint(self.lunit,dataf,mnemonics,dataf.shape[0],\
                                                        +559                    dataf.shape[1])
                                                        +560        # end subset if desired.
                                                        +561        if end:
                                                        +562            _bufrlib.writsb(self.lunit)
                                                        +
                                                        + + +

                                                        bufr file object.

                                                        + +

                                                        open.__init__ used to construct instance.

                                                        + +

                                                        open.advance method can be used step through bufr messages.

                                                        +
                                                        + + +
                                                        + +
                                                        + + open(filename, mode='r', table=None) + + + +
                                                        + +
                                                         65    def __init__(self,filename,mode='r',table=None):
                                                        + 66        """
                                                        + 67        bufr object constructor
                                                        + 68
                                                        + 69        `filename`: bufr file name.
                                                        + 70
                                                        + 71        `mode`: `'r'` for read, `'w'` for write, `'a'` for append (default
                                                        + 72        `'r'`).
                                                        + 73
                                                        + 74        `table`:  bufr table filename or ncepbufr.open instance.
                                                        + 75        Must be specified for `mode='w'`, optional for `mode='r'`.
                                                        + 76        If table is an existing ncepbufr.open instance, the table
                                                        + 77        will be shared. If not, it is assumed to be the filename of a bufr table.
                                                        + 78        For `mode='r'`, bufr table embedded in file will be used if not specified.
                                                        + 79        """
                                                        + 80        # randomly choose available fortran unit number
                                                        + 81        self.lunit = random.choice(_funits)
                                                        + 82        self.filename = filename
                                                        + 83        '''bufr file opened with this fortran unit number'''
                                                        + 84        _funits.remove(self.lunit)
                                                        + 85        if not _funits:
                                                        + 86            raise IOError("too many files open")
                                                        + 87        if mode == 'r':
                                                        + 88            self._ioflag = 'IN'
                                                        + 89        elif mode == 'w':
                                                        + 90            if table is None:
                                                        + 91                msg="must specify file containing bufr table when mode='w'"
                                                        + 92                raise ValueError(msg)
                                                        + 93            self._ioflag = 'OUT'
                                                        + 94        elif mode == 'a':
                                                        + 95            self._ioflag = 'APN'
                                                        + 96        else:
                                                        + 97            raise ValueError("mode must be 'r', 'w' or 'a'")
                                                        + 98        if mode == 'r' or mode == 'a':
                                                        + 99            if not os.path.isfile(filename):
                                                        +100                msg='%s does not exist' % filename
                                                        +101                raise IOError(msg)
                                                        +102            iret = _bufrlib.fortran_open(filename,self.lunit,"unformatted","rewind")
                                                        +103            if iret != 0:
                                                        +104                msg='error opening %s' % filename
                                                        +105                raise IOError(msg)
                                                        +106            if table is None:
                                                        +107                # table embedded in bufr file
                                                        +108                _bufrlib.openbf(self.lunit,self._ioflag,self.lunit)
                                                        +109                self.lundx = self.lunit # table unit number same as bufr unit number
                                                        +110            else:
                                                        +111                try:
                                                        +112                    # share a bufr table with another instance
                                                        +113                    self.lundx = table.lunit
                                                        +114                except AttributeError:
                                                        +115                    # external table file specified
                                                        +116                    self.lundx = random.choice(_funits)
                                                        +117                    iret = _bufrlib.fortran_open(table,self.lundx,"formatted","rewind")
                                                        +118                    if iret != 0:
                                                        +119                        msg='error opening %s' % filename
                                                        +120                        raise IOError(msg)
                                                        +121                    _funits.remove(self.lundx)
                                                        +122                _bufrlib.openbf(self.lunit,self._ioflag,self.lundx)
                                                        +123        elif mode == 'w':
                                                        +124            try:
                                                        +125                # share a bufr table with another instance
                                                        +126                self.lundx = table.lunit
                                                        +127            except AttributeError:
                                                        +128                # read bufr table from a file.
                                                        +129                self.lundx = random.choice(_funits)
                                                        +130                iret = _bufrlib.fortran_open(table,self.lundx,"formatted","rewind")
                                                        +131                if iret != 0:
                                                        +132                    msg='error opening %s' % table
                                                        +133                    raise IOError(msg)
                                                        +134                _funits.remove(self.lundx)
                                                        +135            iret = _bufrlib.fortran_open(filename,self.lunit,"unformatted","rewind")
                                                        +136            if iret != 0:
                                                        +137                msg='error opening %s' % filename
                                                        +138                raise IOError(msg)
                                                        +139            _bufrlib.openbf(self.lunit,self._ioflag,self.lundx)
                                                        +140        # initialized message number counter
                                                        +141        self.msg_counter = 0
                                                        +142        '''current bufr message number'''
                                                        +143        self.msg_type = None
                                                        +144        '''current bufr message type'''
                                                        +145        self.msg_date = None
                                                        +146        '''reference date for bufr message'''
                                                        +147        self.receipt_time = None
                                                        +148        '''tank receipt time for bufr message (`YYYYMMDDHHMM`), -1 if missing'''
                                                        +149        self.subsets = None
                                                        +150        '''number of subsets in the bufr message'''
                                                        +151        # missing value in decoded data.
                                                        +152        # (if equal to self.missing_value, data is masked)
                                                        +153        self.missing_value = get_missing_value()
                                                        +154        '''bufr missing value'''
                                                        +
                                                        + + +

                                                        bufr object constructor

                                                        + +

                                                        filename: bufr file name.

                                                        + +

                                                        mode: 'r' for read, 'w' for write, 'a' for append (default +'r').

                                                        + +

                                                        table: bufr table filename or open instance. +Must be specified for mode='w', optional for mode='r'. +If table is an existing open instance, the table +will be shared. If not, it is assumed to be the filename of a bufr table. +For mode='r', bufr table embedded in file will be used if not specified.

                                                        +
                                                        + + +
                                                        +
                                                        +
                                                        + lunit + + +
                                                        + + + + +
                                                        +
                                                        +
                                                        + filename + + +
                                                        + + +

                                                        bufr file opened with this fortran unit number

                                                        +
                                                        + + +
                                                        +
                                                        +
                                                        + msg_counter + + +
                                                        + + +

                                                        current bufr message number

                                                        +
                                                        + + +
                                                        +
                                                        +
                                                        + msg_type + + +
                                                        + + +

                                                        current bufr message type

                                                        +
                                                        + + +
                                                        +
                                                        +
                                                        + msg_date + + +
                                                        + + +

                                                        reference date for bufr message

                                                        +
                                                        + + +
                                                        +
                                                        +
                                                        + receipt_time + + +
                                                        + + +

                                                        tank receipt time for bufr message (YYYYMMDDHHMM), -1 if missing

                                                        +
                                                        + + +
                                                        +
                                                        +
                                                        + subsets + + +
                                                        + + +

                                                        number of subsets in the bufr message

                                                        +
                                                        + + +
                                                        +
                                                        +
                                                        + missing_value + + +
                                                        + + +

                                                        bufr missing value

                                                        +
                                                        + + +
                                                        +
                                                        + +
                                                        + + def + dump_table(self, filename): + + + +
                                                        + +
                                                        171    def dump_table(self,filename):
                                                        +172        """
                                                        +173        dump embedded bufr table to a file
                                                        +174        """
                                                        +175        lundx = random.choice(_funits)
                                                        +176        iret = _bufrlib.fortran_open(filename,lundx,'formatted','rewind')
                                                        +177        if iret != 0:
                                                        +178            msg='error opening %s' % filename
                                                        +179        _bufrlib.dxdump(self.lunit,lundx)
                                                        +180        iret = _bufrlib.fortran_close(lundx)
                                                        +181        if iret == 0:
                                                        +182            bisect.insort_left(_funits,lundx)
                                                        +183        else:
                                                        +184            raise IOError('error closing %s' % filename)
                                                        +
                                                        + + +

                                                        dump embedded bufr table to a file

                                                        +
                                                        + + +
                                                        +
                                                        + +
                                                        + + def + print_table(self): + + + +
                                                        + +
                                                        185    def print_table(self):
                                                        +186        """
                                                        +187        print embedded bufr table to stdout
                                                        +188        """
                                                        +189        _bufrlib.dxdump(self.lunit,6)
                                                        +
                                                        + + +

                                                        print embedded bufr table to stdout

                                                        +
                                                        + + +
                                                        +
                                                        + +
                                                        + + def + close(self): + + + +
                                                        + +
                                                        190    def close(self):
                                                        +191        """
                                                        +192        close the bufr file
                                                        +193        """
                                                        +194        _bufrlib.closbf(self.lunit)
                                                        +195        # add fortran unit number back to pool
                                                        +196        bisect.insort_left(_funits,self.lunit)
                                                        +197        if self.lundx != self.lunit:
                                                        +198            iret = _bufrlib.fortran_close(self.lundx)
                                                        +199            if iret == 0:
                                                        +200                bisect.insort_left(_funits,self.lundx)
                                                        +201            else:
                                                        +202                raise IOError('error closing bufr table')
                                                        +
                                                        + + +

                                                        close the bufr file

                                                        +
                                                        + + +
                                                        +
                                                        + +
                                                        + + def + cmpmsg(self, cmp): + + + +
                                                        + +
                                                        204    def cmpmsg(self, cmp):
                                                        +205        """
                                                        +206        compress the data in subsequent writes to the bufr file
                                                        +207        """
                                                        +208        _bufrlib.cmpmsg(cmp)
                                                        +
                                                        + + +

                                                        compress the data in subsequent writes to the bufr file

                                                        +
                                                        + + +
                                                        +
                                                        + +
                                                        + + def + advance(self): + + + +
                                                        + +
                                                        210    def advance(self):
                                                        +211        """
                                                        +212        advance to the next msg in the bufr file
                                                        +213        returns 0 if advance was sucessful,
                                                        +214        1 if not (presumably because the end
                                                        +215        of the file was reached).
                                                        +216
                                                        +217        The following attributes are set each time
                                                        +218        file is advanced to the next message:
                                                        +219
                                                        +220        `msg_type`: string describing type of message.
                                                        +221
                                                        +222        `msg_date`: reference date (YYYYMMDDHH) for message.
                                                        +223
                                                        +224        `msg_counter`: message number.
                                                        +225
                                                        +226        `receipt_time`: bufr tank receipt time.
                                                        +227
                                                        +228        `subsets`: number of subsets in the message.
                                                        +229
                                                        +230        `subset_loaded`: Boolean indicating whether a subset has been
                                                        +231        loaded with `ncepbufr.open.load_subset`.  Initialized to `False`.
                                                        +232
                                                        +233        To loop through all the bufr messages in a file:
                                                        +234
                                                        +235            :::python
                                                        +236            >>> bufr = ncepbufr.open(filename)
                                                        +237            >>> while bufr.advance() == 0:
                                                        +238            >>>     # processing code for each message here
                                                        +239
                                                        +240        """
                                                        +241        subset, idate, iret = _bufrlib.readmg(self.lunit)
                                                        +242        if iret:
                                                        +243            return iret
                                                        +244        else:
                                                        +245            self.msg_type = subset.decode('ascii').rstrip()
                                                        +246            self.msg_date = idate
                                                        +247            self.msg_counter += 1
                                                        +248            self.subset_loaded = False
                                                        +249            self.receipt_time = self._receipt_time()
                                                        +250            self.subsets = self._subsets()
                                                        +251            return 0
                                                        +
                                                        + + +

                                                        advance to the next msg in the bufr file +returns 0 if advance was sucessful, +1 if not (presumably because the end +of the file was reached).

                                                        + +

                                                        The following attributes are set each time +file is advanced to the next message:

                                                        + +

                                                        msg_type: string describing type of message.

                                                        + +

                                                        msg_date: reference date (YYYYMMDDHH) for message.

                                                        + +

                                                        msg_counter: message number.

                                                        + +

                                                        receipt_time: bufr tank receipt time.

                                                        + +

                                                        subsets: number of subsets in the message.

                                                        + +

                                                        subset_loaded: Boolean indicating whether a subset has been +loaded with open.load_subset. Initialized to False.

                                                        + +

                                                        To loop through all the bufr messages in a file:

                                                        + +
                                                        :::python
                                                        +>>> bufr = open(filename)
                                                        +>>> while bufr.advance() == 0:
                                                        +>>>     # processing code for each message here
                                                        +
                                                        +
                                                        + + +
                                                        +
                                                        + +
                                                        + + def + inventory(self): + + + +
                                                        + +
                                                        252    def inventory(self):
                                                        +253        """
                                                        +254        return a list containing an inventory of the bufr file.
                                                        +255        The list contains a tuple for each message.
                                                        +256        containing (msg_type,msg_date,receipt_time,subsets).
                                                        +257        """
                                                        +258        self.checkpoint()
                                                        +259        inv = []
                                                        +260        while self.advance() == 0:
                                                        +261            inv.append((self.msg_type,self.msg_date,self.receipt_time,self.subsets))
                                                        +262        self.restore()
                                                        +263        return inv
                                                        +
                                                        + + +

                                                        return a list containing an inventory of the bufr file. +The list contains a tuple for each message. +containing (msg_type,msg_date,receipt_time,subsets).

                                                        +
                                                        + + +
                                                        +
                                                        + +
                                                        + + def + print_subset(self, verbose=False): + + + +
                                                        + +
                                                        265    def print_subset(self,verbose=False):
                                                        +266        """
                                                        +267        print a textual representation of the decoded
                                                        +268        data in the currently loaded subset.
                                                        +269
                                                        +270        If `verbose=True`, more complete but harder to read info is written.
                                                        +271
                                                        +272        `ncepbufr.open.load_subset` must be called before
                                                        +273        trying to print the decoded subset using `ncepbufr.open.print_subset`.
                                                        +274        """
                                                        +275        if not verbose:
                                                        +276            _bufrlib.ufdump(self.lunit,6)
                                                        +277        else:
                                                        +278            _bufrlib.ufbdmp(self.lunit,6)
                                                        +
                                                        + + +

                                                        print a textual representation of the decoded +data in the currently loaded subset.

                                                        + +

                                                        If verbose=True, more complete but harder to read info is written.

                                                        + +

                                                        open.load_subset must be called before +trying to print the decoded subset using open.print_subset.

                                                        +
                                                        + + +
                                                        +
                                                        + +
                                                        + + def + copy_subset(self, bufrin): + + + +
                                                        + +
                                                        279    def copy_subset(self,bufrin):
                                                        +280        """
                                                        +281        copy the currently loaded subset from the specified bufr file object
                                                        +282        and write to the current bufr message"""
                                                        +283        _bufrlib.ufbcpy(bufrin.lunit, self.lunit)
                                                        +284        _bufrlib.writsb(self.lunit)
                                                        +
                                                        + + +

                                                        copy the currently loaded subset from the specified bufr file object +and write to the current bufr message

                                                        +
                                                        + + +
                                                        +
                                                        + +
                                                        + + def + dump_subset(self, filename, append=False, verbose=False): + + + +
                                                        + +
                                                        285    def dump_subset(self,filename,append=False,verbose=False):
                                                        +286        """
                                                        +287        dump a textual representation of the decoded
                                                        +288        data in the currently loaded subset to a file.
                                                        +289
                                                        +290        If `append=True`, append to an existing file
                                                        +291        (otherwise over-write file).
                                                        +292
                                                        +293        If `verbose=True`, more complete but harder to read info is written.
                                                        +294
                                                        +295        `ncepbufr.open.load_subset` must be called before
                                                        +296        trying to print the decoded subset using `ncepbufr.open.dump_subset`.
                                                        +297        """
                                                        +298        lunout = random.choice(_funits)
                                                        +299        if not append:
                                                        +300            iret = _bufrlib.fortran_open(filename,lunout,'formatted','rewind')
                                                        +301        else:
                                                        +302            iret = _bufrlib.fortran_open(filename,lunout,'formatted','append')
                                                        +303        if iret != 0:
                                                        +304            msg='error opening %s' % filename
                                                        +305        if not verbose:
                                                        +306            _bufrlib.ufdump(self.lunit,lunout)
                                                        +307        else:
                                                        +308            _bufrlib.ufbdmp(self.lunit,lunout)
                                                        +309        iret = _bufrlib.fortran_close(lunout)
                                                        +310        if iret == 0:
                                                        +311            bisect.insort_left(_funits,lunout)
                                                        +312        else:
                                                        +313            raise IOError('error closing %s' % filename)
                                                        +
                                                        + + +

                                                        dump a textual representation of the decoded +data in the currently loaded subset to a file.

                                                        + +

                                                        If append=True, append to an existing file +(otherwise over-write file).

                                                        + +

                                                        If verbose=True, more complete but harder to read info is written.

                                                        + +

                                                        open.load_subset must be called before +trying to print the decoded subset using open.dump_subset.

                                                        +
                                                        + + +
                                                        +
                                                        + +
                                                        + + def + get_program_code(self, mnemonic): + + + +
                                                        + +
                                                        314    def get_program_code(self,mnemonic):
                                                        +315        """
                                                        +316        return prepbufr event program code
                                                        +317        associated with specified mnemonic
                                                        +318        (see `src/ufbqcd.f` for more details)
                                                        +319        """
                                                        +320        return _bufrlib.ufbqcd(self.lunit, mnemonic)
                                                        +
                                                        + + +

                                                        return prepbufr event program code +associated with specified mnemonic +(see src/ufbqcd.f for more details)

                                                        +
                                                        + + +
                                                        +
                                                        + +
                                                        + + def + get_flag_table_bits(self, mnemonic, val): + + + +
                                                        + +
                                                        321    def get_flag_table_bits(self, mnemonic, val):
                                                        +322        """
                                                        +323        return bit settings associated with
                                                        +324        a specifed value and flag table mnemonic
                                                        +325        (see src/upftbv.f for more details)
                                                        +326        """
                                                        +327        ibits, nbits = _bufrlib.upftbv(self.lunit, mnemonic, float(val), _maxevents)
                                                        +328        return ibits[:nbits]
                                                        +
                                                        + + +

                                                        return bit settings associated with +a specifed value and flag table mnemonic +(see src/upftbv.f for more details)

                                                        +
                                                        + + +
                                                        +
                                                        + +
                                                        + + def + checkpoint(self): + + + +
                                                        + +
                                                        329    def checkpoint(self):
                                                        +330        """
                                                        +331        mark where we are in the bufr file,
                                                        +332        and rewind the file.
                                                        +333        The `ncepbufr.open.restore` method can then be
                                                        +334        used to go back to this state.
                                                        +335        """
                                                        +336        _bufrlib.rewnbf(self.lunit,0)
                                                        +337        self.msg_counter = 0
                                                        +338        self.msg_type = None
                                                        +339        self.msg_date = None
                                                        +340        self.receipt_time = None
                                                        +341        self.subsets = None
                                                        +
                                                        + + +

                                                        mark where we are in the bufr file, +and rewind the file. +The open.restore method can then be +used to go back to this state.

                                                        +
                                                        + + +
                                                        +
                                                        + +
                                                        + + def + rewind(self): + + + +
                                                        + +
                                                        342    def rewind(self):
                                                        +343        """
                                                        +344        rewind the bufr file (same as `ncepbufr.open.checkpoint`).
                                                        +345        """
                                                        +346        self.checkpoint()
                                                        +
                                                        + + +

                                                        rewind the bufr file (same as open.checkpoint).

                                                        +
                                                        + + +
                                                        +
                                                        + +
                                                        + + def + restore(self): + + + +
                                                        + +
                                                        347    def restore(self):
                                                        +348        """
                                                        +349        restore the state of the bufr
                                                        +350        file that recorded by a previous call
                                                        +351        to `ncepbufr.open.checkpoint`.
                                                        +352        """
                                                        +353        _bufrlib.rewnbf(self.lunit,1)
                                                        +
                                                        + + +

                                                        restore the state of the bufr +file that recorded by a previous call +to open.checkpoint.

                                                        +
                                                        + + +
                                                        +
                                                        + +
                                                        + + def + open_message(self, msg_type, msg_date, msg_receipt_time=None): + + + +
                                                        + +
                                                        354    def open_message(self,msg_type,msg_date,msg_receipt_time=None):
                                                        +355        """
                                                        +356        open new bufr message.
                                                        +357
                                                        +358        Mandatory arguments:
                                                        +359
                                                        +360        `msg_type`: string describing type of message.
                                                        +361
                                                        +362        `msg_date`: reference date (e.g. `YYYYMMDDHH`) for message. The
                                                        +363        number of digits in the reference date is controlled by
                                                        +364        module function `set_datelength`, and is 10 by default.
                                                        +365
                                                        +366        `msg_receipt_time` bufr tank receipt time YYYYMMDDHHMM (optional).
                                                        +367        """
                                                        +368        if msg_receipt_time is not None:
                                                        +369            yyyymmddhhmm = str(msg_receipt_time)
                                                        +370            try:
                                                        +371                yyyy = int(yyyymmddhhmm[0:4])
                                                        +372                mm = int(yyyymmddhhmm[4:6])
                                                        +373                dd = int(yyyymmddhhmm[6:8])
                                                        +374                hh = int(yyyymmddhhmm[8:10])
                                                        +375                mm = int(yyyymmddhhmm[10:12])
                                                        +376                _bufrlib.strcpt('Y',yyyy,mm,dd,hh,mm)
                                                        +377            except IndexError:
                                                        +378                pass # don't write receipt time
                                                        +379        _bufrlib.openmb(self.lunit,msg_type,int(msg_date))
                                                        +
                                                        + + +

                                                        open new bufr message.

                                                        + +

                                                        Mandatory arguments:

                                                        + +

                                                        msg_type: string describing type of message.

                                                        + +

                                                        msg_date: reference date (e.g. YYYYMMDDHH) for message. The +number of digits in the reference date is controlled by +module function set_datelength, and is 10 by default.

                                                        + +

                                                        msg_receipt_time bufr tank receipt time YYYYMMDDHHMM (optional).

                                                        +
                                                        + + +
                                                        +
                                                        + +
                                                        + + def + copy_message(self, bufrin): + + + +
                                                        + +
                                                        380    def copy_message(self,bufrin):
                                                        +381        """
                                                        +382        copy the currently loaded message from the specified bufr file object
                                                        +383        and write to the file"""
                                                        +384        _bufrlib.copymg(bufrin.lunit, self.lunit)
                                                        +
                                                        + + +

                                                        copy the currently loaded message from the specified bufr file object +and write to the file

                                                        +
                                                        + + +
                                                        +
                                                        + +
                                                        + + def + close_message(self): + + + +
                                                        + +
                                                        385    def close_message(self):
                                                        +386        """
                                                        +387        close bufr message
                                                        +388        """
                                                        +389        _bufrlib.closmg(self.lunit)
                                                        +
                                                        + + +

                                                        close bufr message

                                                        +
                                                        + + +
                                                        +
                                                        + +
                                                        + + def + load_subset(self): + + + +
                                                        + +
                                                        390    def load_subset(self):
                                                        +391        """
                                                        +392        load subset data from the current message
                                                        +393        (must be called before `ncepbufr.open.read_subset`).
                                                        +394        To loop through all messages in a file, and
                                                        +395        all subsets in each message:
                                                        +396
                                                        +397            :::python
                                                        +398            >>> bufr = ncepbufr.open(filename)
                                                        +399            >>> while bufr.advance() == 0:
                                                        +400            >>>     while bufr.load_subset() == 0:
                                                        +401            >>>         # processing code for each subset here
                                                        +402
                                                        +403        """
                                                        +404        iret = _bufrlib.ireadsb(self.lunit)
                                                        +405        if iret == 0:
                                                        +406            self.subset_loaded = True
                                                        +407        return iret
                                                        +
                                                        + + +

                                                        load subset data from the current message +(must be called before open.read_subset). +To loop through all messages in a file, and +all subsets in each message:

                                                        + +
                                                        :::python
                                                        +>>> bufr = open(filename)
                                                        +>>> while bufr.advance() == 0:
                                                        +>>>     while bufr.load_subset() == 0:
                                                        +>>>         # processing code for each subset here
                                                        +
                                                        +
                                                        + + +
                                                        +
                                                        + +
                                                        + + def + read_long_string(self, mnemonic): + + + +
                                                        + +
                                                        408    def read_long_string(self,mnemonic):
                                                        +409        """
                                                        +410        Decode character string from the currently loaded message subset
                                                        +411        using the specified mnemonic (a 'mnemonic' is simply a
                                                        +412        descriptive, alphanumeric name for a data value, like
                                                        +413        a key in a python dictionary). The mnemonic string
                                                        +414        must be a single mnemonic only. If the subset contains more 
                                                        +415        than one occurrence of the mnemonic, then can append '#X' to 
                                                        +416        the mnemonic to request the character string corresponding to 
                                                        +417        the Xth occurrence of the mnemonic, counting from the beginning 
                                                        +418        of the subset. Otherwise, X is assumed to be 1.
                                                        +419        
                                                        +420        Returns the character string, if found, or "MISSING" if not.
                                                        +421
                                                        +422        Example:
                                                        +423
                                                        +424            :::python
                                                        +425            >>> bufr = ncepbufr.open(filename)
                                                        +426            >>> while bufr.advance() == 0:
                                                        +427            >>>     while bufr.load_subset() == 0:
                                                        +428            >>>         st_name = bufr.read_long_string(mnemonic='STSN')
                                                        +429        """
                                                        +430        if not self.subset_loaded:
                                                        +431            raise IOError('subset not loaded, call load_subset first')
                                                        +432        if len(mnemonic.split()) > 1:
                                                        +433            raise ValueError('only one mnemonic per call to read_long_string')
                                                        +434        long_string = _bufrlib.readlc(self.lunit,mnemonic)
                                                        +435        try:
                                                        +436            result = str(long_string, encoding='ascii').strip()
                                                        +437        except UnicodeDecodeError:
                                                        +438            try:
                                                        +439                if all([bt == int('0xff',16) for bt in long_string.strip()]):
                                                        +440                    # All values set to 255 for missing data.
                                                        +441                    result = 'MISSING'
                                                        +442                else:
                                                        +443                    # Extended ASCII for Roman alphabet accents.
                                                        +444                    result = str(long_string, encoding='cp1252').strip()
                                                        +445            except Exception as error:
                                                        +446                print(f"An exception occurred {error}")
                                                        +447        except Exception as error:
                                                        +448            print(f"An exception occurred {error}")
                                                        +449        return result
                                                        +
                                                        + + +

                                                        Decode character string from the currently loaded message subset +using the specified mnemonic (a 'mnemonic' is simply a +descriptive, alphanumeric name for a data value, like +a key in a python dictionary). The mnemonic string +must be a single mnemonic only. If the subset contains more +than one occurrence of the mnemonic, then can append '#X' to +the mnemonic to request the character string corresponding to +the Xth occurrence of the mnemonic, counting from the beginning +of the subset. Otherwise, X is assumed to be 1.

                                                        + +

                                                        Returns the character string, if found, or "MISSING" if not.

                                                        + +

                                                        Example:

                                                        + +
                                                        :::python
                                                        +>>> bufr = open(filename)
                                                        +>>> while bufr.advance() == 0:
                                                        +>>>     while bufr.load_subset() == 0:
                                                        +>>>         st_name = bufr.read_long_string(mnemonic='STSN')
                                                        +
                                                        +
                                                        + + +
                                                        +
                                                        + +
                                                        + + def + read_subset(self, mnemonics, rep=False, seq=False, events=False): + + + +
                                                        + +
                                                        450    def read_subset(self,mnemonics,rep=False,seq=False,events=False):
                                                        +451        """
                                                        +452        decode the data from the currently loaded message subset
                                                        +453        using the specified mnemonics (a 'mnemonic' is simply a
                                                        +454        descriptive, alphanumeric name for a data value, like
                                                        +455        a key in a python dictionary). The mnemonics string
                                                        +456        may contain multiple space delimited mnemonics
                                                        +457        (e.g. `mnemonics='MNEMONIC1 MNEMONIC2 MNEMONIC3'`).
                                                        +458
                                                        +459        By default, the mnemonics are assumed to be part of a delayed
                                                        +460        replication sequence, or have no replication at all, and `ufbint`
                                                        +461        is used to read the data.
                                                        +462
                                                        +463        `ncepbufr.open.load_subset` must be called before
                                                        +464        trying to decode a subset using `ncepbufr.open.read_subset`.
                                                        +465
                                                        +466        if `rep = True`, `ufbrep` is used to read data represented
                                                        +467        a regular replication sequence.  See the comments in `src/ufbrep.f` for
                                                        +468        more details. Used for radiance data.
                                                        +469
                                                        +470        if `seq=True`, `ufbseq` is used to read data represented by
                                                        +471        a sequence mnemonic. Used for gps data.
                                                        +472
                                                        +473        if `events=True`, `ufbevn` is used to read prepbufr
                                                        +474        "events", and a 3-d array is returned.
                                                        +475
                                                        +476        Only one of seq, rep and events can be True.
                                                        +477
                                                        +478        returns a numpy masked array with decoded values
                                                        +479        (missing values are masked).
                                                        +480        The shape of the array is `(nm,nlevs)`, where
                                                        +481        where `nm` is the number of elements in the specified
                                                        +482        mnemonics string, and `nlevs` is the number of levels in the report.
                                                        +483        If `events=True`, a 3rd dimension representing the prepbufr
                                                        +484        event codes is added.
                                                        +485        """
                                                        +486        if not self.subset_loaded:
                                                        +487            raise IOError('subset not loaded, call load_subset first')
                                                        +488        ndim = len(mnemonics.split())
                                                        +489        if np.array([rep,seq,events]).sum() > 1:
                                                        +490            raise ValueError('only one of rep, seq and events cannot be True')
                                                        +491        if seq:
                                                        +492            data = np.empty((_nmaxseq,_maxdim),np.float64,order='F')
                                                        +493            levs = _bufrlib.ufbseq(self.lunit,data,mnemonics,_nmaxseq,_maxdim)
                                                        +494        elif rep:
                                                        +495            data = np.empty((ndim,_maxdim),np.float64,order='F')
                                                        +496            levs = _bufrlib.ufbrep(self.lunit,data,mnemonics,ndim,_maxdim)
                                                        +497        elif events:
                                                        +498            #data = np.empty((ndim,_maxdim,maxevents),np.float64,order='F')
                                                        +499            data = np.empty((ndim,_maxdim,_maxevents),np.float64,order='F')
                                                        +500            levs = _bufrlib.ufbevn(self.lunit,data,mnemonics,ndim,_maxdim,_maxevents)
                                                        +501        else:
                                                        +502            data = np.empty((ndim,_maxdim),np.float64,order='F')
                                                        +503            levs = _bufrlib.ufbint(self.lunit,data,mnemonics,ndim,_maxdim)
                                                        +504        if events:
                                                        +505            return np.ma.masked_values(data[:,:levs,:],self.missing_value)
                                                        +506        else:
                                                        +507            return np.ma.masked_values(data[:,:levs],self.missing_value)
                                                        +
                                                        + + +

                                                        decode the data from the currently loaded message subset +using the specified mnemonics (a 'mnemonic' is simply a +descriptive, alphanumeric name for a data value, like +a key in a python dictionary). The mnemonics string +may contain multiple space delimited mnemonics +(e.g. mnemonics='MNEMONIC1 MNEMONIC2 MNEMONIC3').

                                                        + +

                                                        By default, the mnemonics are assumed to be part of a delayed +replication sequence, or have no replication at all, and ufbint +is used to read the data.

                                                        + +

                                                        open.load_subset must be called before +trying to decode a subset using open.read_subset.

                                                        + +

                                                        if rep = True, ufbrep is used to read data represented +a regular replication sequence. See the comments in src/ufbrep.f for +more details. Used for radiance data.

                                                        + +

                                                        if seq=True, ufbseq is used to read data represented by +a sequence mnemonic. Used for gps data.

                                                        + +

                                                        if events=True, ufbevn is used to read prepbufr +"events", and a 3-d array is returned.

                                                        + +

                                                        Only one of seq, rep and events can be True.

                                                        + +

                                                        returns a numpy masked array with decoded values +(missing values are masked). +The shape of the array is (nm,nlevs), where +where nm is the number of elements in the specified +mnemonics string, and nlevs is the number of levels in the report. +If events=True, a 3rd dimension representing the prepbufr +event codes is added.

                                                        +
                                                        + + +
                                                        +
                                                        + +
                                                        + + def + write_subset(self, data, mnemonics, rep=False, seq=False, events=False, end=False): + + + +
                                                        + +
                                                        508    def write_subset(self,data,mnemonics,rep=False,seq=False,events=False,end=False):
                                                        +509        """
                                                        +510        write data to message subset using the specified mnemonics
                                                        +511        (a 'mnemonic' is simply a descriptive, alphanumeric name for a
                                                        +512        data value, like a key in a python dictionary). The mnemonics string
                                                        +513        may contain multiple space delimited mnemonics
                                                        +514        (e.g. `mnemonics='MNEMONIC1 MNEMONIC2 MNEMONIC3'`).
                                                        +515
                                                        +516        By default, the mnemonics are assumed to be part of a delayed
                                                        +517        replication sequence, or have no replication at all, and `ufbint`
                                                        +518        is used to write the data.
                                                        +519
                                                        +520        if `rep = True`, `ufbrep` is used to write data represented
                                                        +521        a regular replication sequence.  See the comments in `src/ufbrep.f` for
                                                        +522        more details. Used for radiance data.
                                                        +523
                                                        +524        if `seq=True`, `ufbseq` is used to write data represented by
                                                        +525        a sequence mnemonic. Used for gps data.
                                                        +526
                                                        +527        if `events=True`, `ufbevn` is used to write prepbufr
                                                        +528        "events" (a 3-d data array is required)
                                                        +529
                                                        +530        Only one of seq, rep and events can be True.
                                                        +531
                                                        +532        If `end=True`, the message subset is closed and written
                                                        +533        to the bufr file (default `False`).
                                                        +534        """
                                                        +535        # make a fortran contiguous copy of input data.
                                                        +536        if len(data.shape) in [2,3]:
                                                        +537            dataf = np.empty(data.shape, np.float64, order='F')
                                                        +538            dataf[:] = data[:]
                                                        +539        elif len(data.shape) == 1:
                                                        +540            # make 1d array into 2d array with 1 level
                                                        +541            dataf = np.empty((data.shape[0],1), np.float64, order='F')
                                                        +542            dataf[:,0] = data[:]
                                                        +543        else:
                                                        +544            msg = 'data in write_subset must be 1,2 or 3d'
                                                        +545            raise ValueError(msg)
                                                        +546        if np.array([rep,seq,events]).sum() > 1:
                                                        +547            raise ValueError('only one of rep, seq and events cannot be True')
                                                        +548        if seq:
                                                        +549            levs = _bufrlib.ufbseq(self.lunit,dataf,mnemonics,dataf.shape[0],\
                                                        +550                    dataf.shape[1])
                                                        +551        elif rep:
                                                        +552            levs = _bufrlib.ufbrep(self.lunit,dataf,mnemonics,dataf.shape[0],\
                                                        +553                    dataf.shape[1])
                                                        +554        elif events:
                                                        +555            levs = _bufrlib.ufbevn(self.lunit,dataf,mnemonics,dataf.shape[0],\
                                                        +556                    dataf.shape[1],dataf.shape[2])
                                                        +557        else:
                                                        +558            levs = _bufrlib.ufbint(self.lunit,dataf,mnemonics,dataf.shape[0],\
                                                        +559                    dataf.shape[1])
                                                        +560        # end subset if desired.
                                                        +561        if end:
                                                        +562            _bufrlib.writsb(self.lunit)
                                                        +
                                                        + + +

                                                        write data to message subset using the specified mnemonics +(a 'mnemonic' is simply a descriptive, alphanumeric name for a +data value, like a key in a python dictionary). The mnemonics string +may contain multiple space delimited mnemonics +(e.g. mnemonics='MNEMONIC1 MNEMONIC2 MNEMONIC3').

                                                        + +

                                                        By default, the mnemonics are assumed to be part of a delayed +replication sequence, or have no replication at all, and ufbint +is used to write the data.

                                                        + +

                                                        if rep = True, ufbrep is used to write data represented +a regular replication sequence. See the comments in src/ufbrep.f for +more details. Used for radiance data.

                                                        + +

                                                        if seq=True, ufbseq is used to write data represented by +a sequence mnemonic. Used for gps data.

                                                        + +

                                                        if events=True, ufbevn is used to write prepbufr +"events" (a 3-d data array is required)

                                                        + +

                                                        Only one of seq, rep and events can be True.

                                                        + +

                                                        If end=True, the message subset is closed and written +to the bufr file (default False).

                                                        +
                                                        + + +
                                                        +
                                                        +
                                                        + + \ No newline at end of file diff --git a/previous_versions/v12.1.0/python/ncepbufr/bufr_mnemonics.html b/previous_versions/v12.1.0/python/ncepbufr/bufr_mnemonics.html new file mode 100644 index 000000000..05ade5f2e --- /dev/null +++ b/previous_versions/v12.1.0/python/ncepbufr/bufr_mnemonics.html @@ -0,0 +1,938 @@ + + + + + + + ncepbufr.bufr_mnemonics API documentation + + + + + + + + + +
                                                        +
                                                        +

                                                        +ncepbufr.bufr_mnemonics

                                                        + + + + + + +
                                                          1prepbufr_mnemonics_dict = {
                                                        +  2'PW2Q':'0.9 TO 0.7 SIGMA LAYER PRECIP. WATER (QUALITY) MARKER',\
                                                        +  3'PW2P':'0.9 TO 0.7 SIGMA LAYER PRECIP. WATER EVENT PROGRAM CODE',\
                                                        +  4'T__EVENT':'TEMPERATURE EVENT SEQUENCE',\
                                                        +  5'PW2R':'0.9 TO 0.7 SIGMA LAYER PRECIP. WATER EVENT REASON CODE',\
                                                        +  6'T__POSTP':'TEMPERATURE POSTPROCESSING SEQUENCE',\
                                                        +  7'PW2A':'ANALYZED 0.9 TO 0.7 SIGMA LAYER PRECIP. WATER VALUE',\
                                                        +  8'WFC__MSQ':'MODEL WIND FORECAST SEQUENCE',\
                                                        +  9'TP24':'TOTAL PRECIPITATION PAST 24 HOURS',\
                                                        + 10'YCOR':"INDICATOR WHETHER LAT IN'YOB' WAS CORRECTED FRM'YORG'",\
                                                        + 11'PW2E':'0.9 TO 0.7 SIGMA LAYER PRECIP. WATER OBSERVATION ERROR',\
                                                        + 12'PREWXSEQ':'PRESENT WEATHER SEQUENCE',\
                                                        + 13'XCOR':"INDICATOR WHETHER LON IN'XOB' WAS CORRECTED FRM'XORG'",\
                                                        + 14'PW2O':'0.9 TO 0.7 SIGMA LAYER PRECIPITABLE WATER OBSERVATION',\
                                                        + 15'PW3EVENT':'0.7 TO 0.3 PRECIPITABLE WATER EVENT SEQUENCE',\
                                                        + 16'UAN':'ANALYZED U-COMPONENT WIND VALUE',\
                                                        + 17'TAN':'ANALYZED TEMPERATURE VALUE',\
                                                        + 18'MSST':'METHOD OF SEA SURFACE TEMPERATURE MEASUREMENT',\
                                                        + 19'VAN':'ANALYZED V-COMPONENT WIND VALUE',\
                                                        + 20'WRC':'U-, V-COMPONENT WIND (UOB/VOB) EVENT REASON CODE',\
                                                        + 21'SFCSHP':'SURFACE MARINE (SHIP, BUOY, C-MAN PLATFORM) REPORTS',\
                                                        + 22'ADPUPA':'UPPER-AIR (RAOB, PIBAL, RECCO, DROPS) REPORTS',\
                                                        + 23'DF_EVENT':'WIND (DIRECTION/SPEED) EVENT SEQUENCE',\
                                                        + 24'TURB3SEQ':'TURBULENCE SEQUENCE # 3',\
                                                        + 25'QQM':'SPECIFIC HUMIDITY (QUALITY) MARKER',\
                                                        + 26'E1':'ERS ERROR ESTIMATE NUMBER 1',\
                                                        + 27'SPSSMI':'SSM/I RETRIEVAL PRODUCTS (REPROCESSED WIND SPEED, TPW)',\
                                                        + 28'PQM':'PRESSURE (QUALITY) MARKER',\
                                                        + 29'CLOUDSEQ':'OBSERVED CLOUD SEQUENCE # 1',\
                                                        + 30'SNOW_SEQ':'SNOW DEPTH SEQUENCE',\
                                                        + 31'ZQM':'HEIGHT (QUALITY) MARKER',\
                                                        + 32'CTCN':'CROSS TRACK CELL NUMBER (QUIKSCAT & ASCAT REPORTS ONLY)',\
                                                        + 33'ACID_SEQ':'AIRCRAFT FLIGHT NUMBER SEQUENCE',\
                                                        + 34'TFC__MSQ':'MODEL TEMPERATURE FORECAST SEQUENCE',\
                                                        + 35'QFC__MSQ':'MODEL SPECIFIC HUMIDITY FORECAST SEQUENCE',\
                                                        + 36'PCS':'STANDARD DEVIATION OF CLIMATOLOGICAL PRESSURE VALUE',\
                                                        + 37'SID':'STATION IDENTIFICATION',\
                                                        + 38'TSB':'REPORT SUBTYPE (HAS VARIOUS MEANINGS DEPENDING ON TYPE)',\
                                                        + 39'UOB':'U-COMPONENT WIND OBSERVATION (M/S)',\
                                                        + 40'PCL':'CLIMATOLOGICAL PRESSURE VALUE',\
                                                        + 41'VADWND':'VAD (NEXRAD) WIND REPORTS',\
                                                        + 42'TOPC':'TOTAL PRECIPITATION/TOTAL WATER EQUIVALENT',\
                                                        + 43'SST_INFO':'SEA TEMPERATURE INFORMATION',\
                                                        + 44'PREVENT':'PRE-EVENTS BACKGROUND/OBSERVATION ERROR PROCESSING STEP',\
                                                        + 45'GUST1SEQ':'MAXIMUM WIND GUST SEQUENCE # 1',\
                                                        + 46'RF10M':'10 METER WIND REDUCTION FACTOR',\
                                                        + 47'PAN':'ANALYZED PRESSURE VALUE',\
                                                        + 48'ELEV':'SATELLITE ELEVATION (ZENITH ANGLE)',\
                                                        + 49'TMXMNSEQ':'MAXIMUM/MINIMUM TEMPERATURE SEQUENCE',\
                                                        + 50'CTPQM':'CLOUD TOP PRESSURE (QUALITY) MARKER',\
                                                        + 51'MSTQ':'MOISTURE QUALITY',\
                                                        + 52'PCLIMATO':'PRESSURE CLIMATOLOGY SEQUENCE',\
                                                        + 53'SAID':'SATELLITE IDENTIFIER (SATELLITE REPORTS ONLY)',\
                                                        + 54'MWD10':'MODEL WIND DIRECTION AT 10 M',\
                                                        + 55'CQCVAD':'VAD WIND QUALITY CONTROL STEP',\
                                                        + 56'PW1F_MSQ':'MODEL 1.0 TO 0.9 SIGMA LAYER PRECIP WATER FORECAST SEQ.',\
                                                        + 57'SOEL':'SOLAR ELEVATION (ZENITH ANGLE)',\
                                                        + 58'ALTIMSEQ':'ALTIMETER SETTING SEQUENCE',\
                                                        + 59'SSTRC':'SEA TEMPERATURE EVENT REASON CODE',\
                                                        + 60'S3':'ERS BACKSCATTER NUMBER 3',\
                                                        + 61'S2':'ERS BACKSCATTER NUMBER 2',\
                                                        + 62'S1':'ERS BACKSCATTER NUMBER 1',\
                                                        + 63'IALR':'INSTANTANEOUS ALTITUDE RATE',\
                                                        + 64'RADCOR':'RAWINSONDE HEIGHT/TEMP INTERSONDE(RADIATION) CORR. STEP',\
                                                        + 65'ACID':'AIRCRAFT FLIGHT NUMBER',\
                                                        + 66'RRTBACKG':'RAIN RATE BACKGROUND SEQUENCE',\
                                                        + 67'ERS1DA':'ERS SCATTEROMETER DATA (REPROCESSED WIND SPEED)',\
                                                        + 68'CLAM':'CLOUD AMOUNT',\
                                                        + 69'POWV':'PERIOD OF WAVES',\
                                                        + 70'POWW':'PERIOD OF WIND WAVES',\
                                                        + 71'RCT':'RECEIPT TIME',\
                                                        + 72'BTMPINFO':'TOVS OR GOES BRIGHTNESS TEMPERATURE INFORMATION',\
                                                        + 73'DFQ':'WIND DIRECTION/SPEED (DDO/FFO) (QUALITY) MARKER',\
                                                        + 74'DFP':'WIND DIRECTION/SPEED (DDO/FFO) EVENT PROGRAM CODE',\
                                                        + 75'DFR':'WIND DIRECTION/SPEED (DDO/FFO) EVENT REASON CODE',\
                                                        + 76'HOSW':'HEIGHT OF SWELL WAVES',\
                                                        + 77'SYNDAT':'SYNTHETIC TROPICAL CYCLONE BOGUS REPORTS',\
                                                        + 78'PW4FMOD':'MODEL .3-0. SIG. LYR PWATER FCST(GLOBAL MODEL SEE PW4F)',\
                                                        + 79'DGOT':'DEGREE OF TURBULENCE',\
                                                        + 80'PW1FMOD':'MODEL 1.-.9 SIG. LYR PWATER FCST(GLOBAL MODEL SEE PW1F)',\
                                                        + 81'UFCMOD':'MODEL U-COMPONENT FORECAST VALUE (GLOBAL MODEL SEE UFC)',\
                                                        + 82'MRWVC':'MWR WATER VAPOR CONTENT (TOTAL WATER VAPOR)',\
                                                        + 83'TRBX32':'TURBULENCE INDEX FOR PERIOD (TOB-3 MIN) -> (TOB-2 MIN)',\
                                                        + 84'WQM':'U-, V-COMPONENT WIND (UOB/VOB) (QUALITY) MARKER',\
                                                        + 85'PW4F_MSQ':'MODEL 0.3 TO 0.0 SIGMA LAYER PRECIP WATER FORECAST SEQ.',\
                                                        + 86'PW2F':'FCST(BACKGRND) 0.9 TO 0.7 SIGMA LYR PRECIP. WATER VALUE',\
                                                        + 87'GPSIPW':'GLOBAL POSITIONING SATELLITE-INTEGRATED PRECIP. WATER',\
                                                        + 88'QOETU':'ANALYSIS-TUNED RELATIVE HUMIDITY OBSERVATION ERROR',\
                                                        + 89'CAT':'PREPBUFR DATA LEVEL CATEGORY',\
                                                        + 90'MITM':'MINIMUM TEMPERATURE',\
                                                        + 91'ACARSQC':'MDCRS ACARS AIRCRAFT QUALITY CONTROL STEP',\
                                                        + 92'TOB':'TEMPERATURE OBSERVATION (DEGREES C)',\
                                                        + 93'TOE':'TEMPERATURE OBSERVATION ERROR (DEGREES C)',\
                                                        + 94'RRTPC':'RAINFALL (AVERAGE RATE) EVENT PROGRAM CODE',\
                                                        + 95'BSCD':'BACKSCATTER DISTANCE (ASCAT REPORTS ONLY)',\
                                                        + 96'PW1O':'1.0 TO 0.9 SIGMA LAYER PRECIPITABLE WATER OBSERVATION',\
                                                        + 97'PW1A':'ANALYZED 1.0 TO 0.9 SIGMA LAYER PRECIP. WATER VALUE',\
                                                        + 98'PFCMOD':'MODEL PRESSURE FORECAST VALUE (GLOBAL MODEL SEE PFC)',\
                                                        + 99'PW1F':'FCST(BACKGRND) 1.0 TO 0.9 SIGMA LYR PRECIP. WATER VALUE',\
                                                        +100'HOCT_SEQ':'HEIGHT OF TOP OF CLOUD SEQUENCE',\
                                                        +101'SOB':'WIND SPEED OBSERVATION',\
                                                        +102'XOB':'LONGITUDE (DEG E)',\
                                                        +103'PW1P':'1.0 TO 0.9 SIGMA LAYER PRECIP. WATER EVENT PROGRAM CODE',\
                                                        +104'PW1Q':'1.0 TO 0.9 SIGMA LAYER PRECIP. WATER (QUALITY) MARKER',\
                                                        +105'PW1R':'1.0 TO 0.9 SIGMA LAYER PRECIP. WATER EVENT REASON CODE',\
                                                        +106'PWETU':'ANALYSIS-TUNED TOTAL PRECIPITABLE WATER OBS ERROR',\
                                                        +107'TP12_SEQ':'TOTAL PRECIPITATION PAST 12 HOURS SEQUENCE',\
                                                        +108'PKWDDR':'PEAK WIND DIRECTION',\
                                                        +109'CHPT':'CHARACTERISTIC OF PRESSURE TENDENCY',\
                                                        +110'TFC':'FORECAST (BACKGROUND) TEMPERATURE VALUE',\
                                                        +111'TURB1SEQ':'TURBULENCE SEQUENCE # 1',\
                                                        +112'PW2_INFO':'0.9 TO 0.7 SIGMA LAYER PRECIPITABLE WATER INFORMATION',\
                                                        +113'EXPRSRD':'EXPIRATION OF RESTRICTIONS ON REDISTRIBUTION',\
                                                        +114'VFC':'FORECAST (BACKGROUND) V-COMPONENT WIND VALUE',\
                                                        +115'CTPOE':'CLOUD TOP PRESSURE OBSERVATION ERROR',\
                                                        +116'PW1POSTP':'1.0 TO 0.9 SIGMA LAYER PRECIP WATER POSTPROCESSING SEQ.',\
                                                        +117'WOETU':'ANALYSIS-TUNED WIND OBSERVATION ERROR',\
                                                        +118'PRC':'PRESSURE EVENT REASON CODE',\
                                                        +119'QPC':'SPECIFIC HUMIDITY EVENT PROGRAM CODE',\
                                                        +120'P__POSTP':'PRESSURE POSTPROCESSING SEQUENCE',\
                                                        +121'ADPSFC':'SURFACE LAND (SYNOPTIC, METAR) REPORTS',\
                                                        +122'ZFC__MSQ':'MODEL HEIGHT FORECAST SEQUENCE',\
                                                        +123'CTPFC':'FORECAST (BACKGROUND) CLOUD TOP PRESSURE VALUE',\
                                                        +124'TPC':'TEMPERATURE EVENT PROGRAM CODE',\
                                                        +125'RFFL':'PERCENT CONFIDENCE BASED ON NESDIS RECURSIVE FILTER FCN',\
                                                        +126'PSW2':'PAST WEATHER (2)',\
                                                        +127'PSW1':'PAST WEATHER (1)',\
                                                        +128'NRLACQC':'NRL AIRCRAFT QUALITY CONTROL STEP',\
                                                        +129'CTPEVENT':'CLOUD TOP PRESSURE EVENT SEQUENCE',\
                                                        +130'PW2POSTP':'0.9 TO 0.7 SIGMA LAYER PRECIP WATER POSTPROCESSING SEQ.',\
                                                        +131'PW1EVENT':'1.0 TO 0.9 PRECIPITABLE WATER EVENT SEQUENCE',\
                                                        +132'VISB2SEQ':'VISIBILITY SEQUENCE # 2',\
                                                        +133'HOVI':'HORIZONTAL VISIBILITY (M)',\
                                                        +134'POAF':'PHASE OF AIRCRAFT FLIGHT',\
                                                        +135'GUST2SEQ':'MAXIMUM WIND GUST SEQUENCE # 2',\
                                                        +136'TYP':'PREPBUFR REPORT TYPE',\
                                                        +137'PW4F':'FCST(BACKGRND) 0.3 TO 0.0 SIGMA LYR PRECIP. WATER VALUE',\
                                                        +138'PW4E':'0.3 TO 0.0 SIGMA LAYER PRECIP. WATER OBSERVATION ERROR',\
                                                        +139'HEADR':'REPORT HEADER SEQUENCE',\
                                                        +140'PW4A':'ANALYZED 0.3 TO 0.0 SIGMA LAYER PRECIP. WATER VALUE',\
                                                        +141'PW4O':'0.3 TO 0.0 SIGMA LAYER PRECIPITABLE WATER OBSERVATION',\
                                                        +142'CTPPC':'CLOUD TOP PRESSURE EVENT PROGRAM CODE',\
                                                        +143'PW4R':'0.3 TO 0.0 SIGMA LAYER PRECIP. WATER EVENT REASON CODE',\
                                                        +144'PW4Q':'0.3 TO 0.0 SIGMA LAYER PRECIP. WATER (QUALITY) MARKER',\
                                                        +145'PW4P':'0.3 TO 0.0 SIGMA LAYER PRECIP. WATER EVENT PROGRAM CODE',\
                                                        +146'FFO':'WIND SPEED OBSERVATION (NOT ASSIMILATED)',\
                                                        +147'ASMP':'AVG SPD OF SHIP DURING PAST 3 HOURS',\
                                                        +148'CHSQ':'CHI-SQUARED (OF THE WIND VECTOR RETRIEVAL)',\
                                                        +149'QOE':'RELATIVE HUMIDITY OBSERVATION ERROR (PERCENT DIVIDED BY 10)',\
                                                        +150'SFCBOG':'MEAN SEA-LEVEL PRESSURE BOGUS REPORTS',\
                                                        +151'QOB':'SPECIFIC HUMIDITY OBSERVATION (MG/KG)',\
                                                        +152'PW3POSTP':'0.7 TO 0.3 SIGMA LAYER PRECIP WATER POSTPROCESSING SEQ.',\
                                                        +153'E3':'ERS ERROR ESTIMATE NUMBER 3',\
                                                        +154'E2':'ERS ERROR ESTIMATE NUMBER 2',\
                                                        +155'PKWDSP':'PEAK WIND SPEED',\
                                                        +156'ESBAK':'FORECAST(BACKGROUND) SATURATION SPECIFIC HUMIDITY VALUE',\
                                                        +157'SATWND':'SATELLITE-DERIVED WIND REPORTS',\
                                                        +158'PW1E':'1.0 TO 0.9 SIGMA LAYER PRECIP. WATER OBSERVATION ERROR',\
                                                        +159'TOETU':'ANALYSIS-TUNED TEMPERATURE OBSERVATION ERROR',\
                                                        +160'PHER':'EST. ERROR COVARIANCE FOR WIND DIRECTION RETRIEVAL',\
                                                        +161'WCLIMATO':'WIND CLIMATOLOGY SEQUENCE',\
                                                        +162'WOE':'WIND OBSERVATION ERROR (M/S)',\
                                                        +163'POSW':'PERIOD OF SWELL WAVES',\
                                                        +164'SCATINFO':'SCATTEROMETER DATA INFORMATION',\
                                                        +165'CLDE':'EST. ERROR COVARIANCE FOR TOTAL CLD LIQUID WATER RETR.',\
                                                        +166'RRTPOSTP':'RAIN RATE POSTPROCESSING SEQUENCE',\
                                                        +167'SSI':'SSI GLOBAL ANALYSIS STEP',\
                                                        +168'ZRC':'HEIGHT EVENT REASON CODE',\
                                                        +169'PW2FMOD':'MODEL .9-.7 SIG. LYR PWATER FCST(GLOBAL MODEL SEE PW2F)',\
                                                        +170'Z___INFO':'HEIGHT INFORMATION',\
                                                        +171'RASSDA':'RADIO ACOUSTIC SOUNDING SYSTEM (RASS) TEMP PROFILE RPTS',\
                                                        +172'PTE24SEQ':'24 HOUR PRESSURE TENDENCY SEQUENCE',\
                                                        +173'RRTFC':'FORECAST (BACKGROUND) RAINFALL (AVERAGE RATE) VALUE',\
                                                        +174'HRDR':'PROFILE LVL TIME-CYCLE (FOR RAOB/PIBAL, BASED ON B DFT, HOURS)',\
                                                        +175'ACFT_SEQ':'AIRCRAFT SUPPLEMENTARY DATA SEQUENCE',\
                                                        +176'POETU':'ANALYSIS-TUNED PRESSURE OBSERVATION ERROR',\
                                                        +177'P__BACKG':'PRESSURE BACKGROUND SEQUENCE',\
                                                        +178'NUL':'NULL (IGNORE)',\
                                                        +179'RRTOE':'RAINFALL (AVERAGE RATE) OBSERVATION ERROR',\
                                                        +180'TDMP':'TRUE DIRECTION OF SHIP DURING PAST 3 HOURS',\
                                                        +181'WPC':'U-, V-COMPONENT WIND (UOB/VOB) EVENT PROGRAM CODE',\
                                                        +182'TOSS':'TOTAL SUNSHINE',\
                                                        +183'CDTP':'CLOUD TOP PRESSURE OBSERVATION',\
                                                        +184'W__EVENT':'WIND EVENT SEQUENCE',\
                                                        +185'CLIMO':'CLIMOTOLOGICAL PROCESSING STEP',\
                                                        +186'XS20':'20 METER EXTRAPOLATED WIND SPEED',\
                                                        +187'TOSD':'TOTAL SNOW DEPTH',\
                                                        +188'QFC':'FORECAST (BACKGROUND) SPECIFIC HUMIDITY VALUE',\
                                                        +189'PREPRO':'INITIAL PREPBUFR PROCESSING STEP',\
                                                        +190'SYNDATA':'SYNTHETIC TROPICAL CYCLONE BOGUS PROCESSING STEP',\
                                                        +191'PKWNDSEQ':'PEAK WIND SEQUENCE',\
                                                        +192'ITP':'INSTRUMENT TYPE',\
                                                        +193'Q__POSTP':'SPECIFIC HUMIDITY POSTPROCESSING SEQUENCE',\
                                                        +194'PWTVWTA':'ANAL VARIAT. QC WGHT ON TOT PREC. WTR OBS BASED ON ANAL',\
                                                        +195'TCLIMATO':'TEMPERATURE CLIMATOLOGY SEQUENCE',\
                                                        +196'PWTVWTG':'ANAL VARIAT. QC WGHT ON TOT PREC. WTR OBS BASED ON GESS',\
                                                        +197'RPT':'REPORTED OBSERVATION TIME',\
                                                        +198'TP01':'TOTAL PRECIPITATION PAST 1 HOUR',\
                                                        +199'TP03':'TOTAL PRECIPITATION PAST 3 HOURS',\
                                                        +200'VTVI_SEQ':'VERTICAL VISIBILITY SEQUENCE',\
                                                        +201'TP06':'TOTAL PRECIPITATION PAST 6 HOURS',\
                                                        +202'POE':'PRESSURE OBSERVATION ERROR (MB)',\
                                                        +203'POB':'PRESSURE OBSERVATION (MB)',\
                                                        +204'PW2BACKG':'0.9 TO 0.7 SIGMA LAYER PRECIP WATER BACKGROUND SEQUENCE',\
                                                        +205'TURB2SEQ':'TURBULENCE SEQUENCE # 2',\
                                                        +206'PW__INFO':'PRECIPITABLE WATER INFORMATION',\
                                                        +207'PWA':'ANALYZED TOTAL PRECIPITABLE WATER VALUE',\
                                                        +208'VCL':'CLIMATOLOGICAL V-COMPONENT WIND VALUE',\
                                                        +209'VCS':'STANDARD DEVIATION OF CLIMATOLOGICAL V-COMP WIND VALUE',\
                                                        +210'SSTQM':'SEA TEMPERATURE (QUALITY) MARKER',\
                                                        +211'DHR':'OBSERVATION TIME MINUS CYCLE TIME (HOURS)',\
                                                        +212'VIRTMP':'VIRTUAL TEMPERATURE/SPECIFIC HUMIDITY PROCESSING STEP',\
                                                        +213'24PC':'24 HOUR PRESSURE CHANGE',\
                                                        +214'PVWTG':'ANAL VARIATIONAL QC WEIGHT ON PRESS. OBS BASED ON GUESS',\
                                                        +215'PVWTA':'ANAL VARIATIONAL QC WEIGHT ON PRESS. OBS BASED ON ANAL',\
                                                        +216'ROLF':'AIRCRAFT ROLL ANGLE FLAG',\
                                                        +217'TQM':'TEMPERATURE (QUALITY) MARKER',\
                                                        +218'AIRCFT':'AIREP, PIREP, AMDAR, TAMDAR AIRCRAFT REPORTS',\
                                                        +219'HBOI':'HEIGHT OF BASE OF ICING',\
                                                        +220'PRSLEVEL':'PRESSURE LEVEL SEQUENCE (ALL TYPES EXCEPT GOESND)',\
                                                        +221'LATCORSQ':'LATITUDE CORRECTION SEQUENCE',\
                                                        +222'HBOT':'HEIGHT OF BASE OF TURBULENCE',\
                                                        +223'ZFC':'FORECAST (BACKGROUND) HEIGHT VALUE',\
                                                        +224'QAN':'ANALYZED SPECIFIC HUMIDITY VALUE',\
                                                        +225'Q___INFO':'SPECIFIC HUMIDITY INFORMATION',\
                                                        +226'QIFY':'PERCENT CONFIDENCE BASED ON EUMETSAT QUAL INDX W/ FCST',\
                                                        +227'P___INFO':'PRESSURE INFORMATION',\
                                                        +228'SSTFC':'FORECAST (BACKGROUND) SEA TEMPERATURE VALUE',\
                                                        +229'QIFN':'PERCENT CONFIDENCE BASED ON EUMETSAT QUAL INDX W/O FCST',\
                                                        +230'TPRECSEQ':'TOTAL PRECIPITATION SEQUENCE',\
                                                        +231'Z__POSTP':'HEIGHT POSTPROCESSING SEQUENCE',\
                                                        +232'QRC':'SPECIFIC HUMIDITY EVENT REASON CODE',\
                                                        +233'PTENDSEQ':'PRESSURE TENDENCY SEQUENCE',\
                                                        +234'XWSPDSEQ':'EXTRAPOLATED WIND SPEED SEQUENCE',\
                                                        +235'ZAN':'ANALYZED HEIGHT VALUE',\
                                                        +236'RRTQM':'RAINFALL (AVERAGE RATE) (QUALITY) MARKER',\
                                                        +237'PROFLR':'WIND PROFILER REPORTS',\
                                                        +238'PWTPOSTP':'TOTAL PRECIPITABLE WATER POSTPROCESSING SEQUENCE',\
                                                        +239'CHNM':'CHANNEL NUMBER',\
                                                        +240'CTP_INFO':'CLOUD TOP INFORMATION',\
                                                        +241'SSTAN':'ANALYZED SEA TEMPERATURE VALUE',\
                                                        +242'PW3BACKG':'0.7 TO 0.3 SIGMA LAYER PRECIP WATER BACKGROUND SEQUENCE',\
                                                        +243'HOCT':'HEIGHT OF TOP OF CLOUD',\
                                                        +244'SUNSHSEQ':'TOTAL SUNSHINE SEQUENCE',\
                                                        +245'PRWE':'PRESENT WEATHER',\
                                                        +246'XS10':'10 METER EXTRAPOLATED WIND SPEED',\
                                                        +247'NRLQMS':'NRL AIRCRAFT QUALITY CNTRL MARK (ADDED BY PGM NRLACQC)',\
                                                        +248'PWF__MSQ':'MODEL TOTAL PRECIPITABLE WATER FORECAST SEQUENCE',\
                                                        +249'Q__EVENT':'SPECIFIC HUMIDITY EVENT SEQUENCE',\
                                                        +250'TCS':'STANDARD DEVIATION OF CLIMATOLOGICAL TEMPERATURE VALUE',\
                                                        +251'TCL':'CLIMATOLOGICAL TEMPERATURE VALUE',\
                                                        +252'W__BACKG':'WIND BACKGROUND SEQUENCE',\
                                                        +253'XDR':'PROFILE LEVEL LON (FOR RAOB/PIBAL BASED ON BALLOON DFT, DEG E)',\
                                                        +254'DOFS':'DEPTH OF FRESH SNOW',\
                                                        +255'PFC__MSQ':'MODEL PRESSURE FORECAST SEQUENCE',\
                                                        +256'SIRC':'RAWINSONDE SOLAR & INFRARED RADIATION CORR. INDICATOR',\
                                                        +257'ZOB':'HEIGHT OBSERVATION (M)',\
                                                        +258'ZOE':'HEIGHT OBSERVATION ERROR (M)',\
                                                        +259'RSRD_SEQ':'RESTRICTIONS ON REDISTRIBUTION SEQUENCE',\
                                                        +260'SATEMP':'TOVS SATELLITE DATA (SOUNDINGS, RETRIEVALS, RADIANCES)',\
                                                        +261'SSTOE':'SEA TEMPERATURE OBSERVATION ERROR',\
                                                        +262'DDO':'WIND DIRECTION OBSERVATION (NOT ASSIMILATED)',\
                                                        +263'SSTPOSTP':'SEA TEMPERATURE POSTPROCESSING SEQUENCE',\
                                                        +264'AFIC_SEQ':'AIRCRAFT ICING SEQUENCE',\
                                                        +265'PCCF_SEQ':'SATELLITE WIND PERCENT CONFIDENCE SEQUENCE',\
                                                        +266'CTPPOSTP':'CLOUD TOP PRESSURE POSTPROCESSING SEQUENCE',\
                                                        +267'WSPD1':'SURFACE WIND SPEED',\
                                                        +268'TRBX10':'TURBULENCE INDEX FOR PERIOD (TOB-1 MIN) -> TOB',\
                                                        +269'SPRR':'SEAWINDS PROBABILITY OF RAIN (QUIKSCAT REPORTS ONLY)',\
                                                        +270'LKCS':'LIKELIHOOD COMPUTED FOR SOLUTION (ASCAT REPORTS ONLY)',\
                                                        +271'PRSLEVLG':'GOESND PRESSURE LEVEL SEQUENCE',\
                                                        +272'OZON':'OZONE',\
                                                        +273'CTPAN':'ANALYZED CLOUD TOP PRESSURE VALUE',\
                                                        +274'R3DVAR':'3DVAR REGIONAL ANALYSIS STEP',\
                                                        +275'Z__EVENT':'HEIGHT EVENT SEQUENCE',\
                                                        +276'PWFMOD':'MODEL TOTAL PWATER FORECAST VALUE(GLOBAL MODEL SEE PWC)',\
                                                        +277'ASCATW':'ASCAT SCATTEROMETER DATA (REPROCESSED)',\
                                                        +278'MRLWC':'MWR LIQUID WATER CONTENT (TOTAL CLOUD LIQUID WATER)',\
                                                        +279'VISB1SEQ':'VISIBILITY SEQUENCE # 1',\
                                                        +280'PW4_INFO':'0.3 TO 0.0 SIGMA LAYER PRECIPITABLE WATER INFORMATION',\
                                                        +281'TMBR':'BRIGHTNESS TEMPERATURE (KELVIN)',\
                                                        +282'MXGD':'MAXIMUM WIND GUST DIRECTION',\
                                                        +283'EEQF':'PERCENT CONFIDENCE BASED ON NESDIS EXPECTED ERROR',\
                                                        +284'TVO':'NON-Q. CONTROLLED VIRTUAL TEMP OBS (NOT ASSIMILATED)',\
                                                        +285'MXGS':'MAXIMUM WIND SPEED (GUSTS, M/S)',\
                                                        +286'P__EVENT':'PRESSURE EVENT SEQUENCE',\
                                                        +287'WDSATR':'WINDSAT SCATTEROMETER DATA (REPROCESSED)',\
                                                        +288'REQV':'RAINFALL (AVERAGE RATE) OBSERVATION',\
                                                        +289'QFCMOD':'MODEL S. HUMIDITY FORECAST VALUE (GLOBAL MODEL SEE QFC)',\
                                                        +290'ATRN':'ALONG TRACK ROW NUMBER (QUIKSCAT REPORTS ONLY)',\
                                                        +291'WDIR1':'SURFACE WIND DIRECTION',\
                                                        +292'LONCORSQ':'LONGITUDE CORRECTION SEQUENCE',\
                                                        +293'XORG':'REPORTED (ORIGINAL) LONGITUDE',\
                                                        +294'RRTEVENT':'RATE RATE EVENT SEQUENCE',\
                                                        +295'YORG':'REPORTED (ORIGINAL) LATITUDE',\
                                                        +296'MWS10':'MODEL WIND SPEED AT 10 M',\
                                                        +297'TDO':'DEWPOINT TEMPERATURE OBSERVATION (NOT ASSIMILATED, DEGREES C)',\
                                                        +298'YDR':'PROFILE LEVEL LAT (FOR RAOB/PIBAL BASED ON BALLOON DFT, DEG N)',\
                                                        +299'UFC':'FORECAST (BACKGROUND) U-COMPONENT WIND VALUE',\
                                                        +300'W__POSTP':'WIND POSTPROCESSING SEQUENCE',\
                                                        +301'SWINDSEQ':'SURFACE WIND SEQUENCE',\
                                                        +302'PRSS':'SURFACE PRESSURE OBSERVATION (PASCALS)',\
                                                        +303'SSTPC':'SEA TEMPERATURE EVENT PROGRAM CODE',\
                                                        +304'WSPD_SEQ':'WIND SPEED SEQUENCE',\
                                                        +305'VFCMOD':'MODEL V-COMPONENT FORECAST VALUE (GLOBAL MODEL SEE VFC)',\
                                                        +306'AFIC':'AIRFRAME ICING',\
                                                        +307'WSEQC1':'WINDSAT EDR QC FLAG #1',\
                                                        +308'DOSW':'DIRECTION OF SWELL WAVES',\
                                                        +309'PPC':'PRESSURE EVENT PROGRAM CODE',\
                                                        +310'PWTBACKG':'TOTAL PRECIPITABLE WATER BACKGROUND SEQUENCE',\
                                                        +311'VPRE':'EST. ERROR COVARIANCE FOR TOTAL WATER VAPOR RETRIEVAL',\
                                                        +312'PWL_INFO':'LAYER PRECIPITABLE WATER INFORMATION',\
                                                        +313'TVWTA':'ANAL VARIATIONAL QC WEIGHT ON TEMP. OBS BASED ON ANAL',\
                                                        +314'PRSLEVLA':'AIRCRAFT (AIRCFT/AIRCAR) PRESSURE LEVEL SEQUENCE',\
                                                        +315'HTOI':'HEIGHT OF TOP OF ICING',\
                                                        +316'YOB':'LATITUDE (DEG N)',\
                                                        +317'TVWTG':'ANAL VARIATIONAL QC WEIGHT ON TEMP. OBS BASED ON GUESS',\
                                                        +318'HTOT':'HEIGHT OF TOP OF TURBULENCE',\
                                                        +319'SSTBACKG':'SEA TEMPERATURE BACKGROUND SEQUENCE',\
                                                        +320'UCS':'STANDARD DEVIATION OF CLIMATOLOGICAL U-COMP WIND VALUE',\
                                                        +321'PWR':'TOTAL PRECIPITABLE WATER EVENT REASON CODE',\
                                                        +322'PWP':'TOTAL PRECIPITABLE WATER EVENT PROGRAM CODE',\
                                                        +323'PWQ':'TOTAL PRECIPITABLE WATER (QUALITY) MARKER',\
                                                        +324'TP12':'TOTAL PRECIPITATION PAST 12 HOURS',\
                                                        +325'3HPC':'3 HOUR PRESSURE CHANGE',\
                                                        +326'PWF':'FORECAST (BACKGROUND) TOTAL PRECIPITABLE WATER VALUE',\
                                                        +327'PWE':'TOTAL PRECIPITABLE WATER OBSERVATION ERROR (MM)',\
                                                        +328'QKSWND':'QUIKSCAT SCATTEROMETER DATA (REPROCESSED)',\
                                                        +329'TRBX43':'TURBULENCE INDEX FOR PERIOD (TOB-4 MIN) -> (TOB-3 MIN)',\
                                                        +330'PWO':'TOTAL PRECIPITABLE WATER OBSERVATION (MM)',\
                                                        +331'TRBX':'TURBULENCE INDEX',\
                                                        +332'PW3FMOD':'MODEL .7-.3 SIG. LYR PWATER FCST(GLOBAL MODEL SEE PW3F)',\
                                                        +333'GSI':'GSI ANALYSIS STEP',\
                                                        +334'A1':'ERS INCIDENT ANGLE NUMBER 1',\
                                                        +335'RRTRC':'RAINFALL (AVERAGE RATE) EVENT REASON CODE',\
                                                        +336'QVWTA':'ANAL VARIATIONAL QC WEIGHT ON MOIST. OBS BASED ON ANAL',\
                                                        +337'TFCMOD':'MODEL TEMPERATURE FORECAST VALUE (GLOBAL MODEL SEE TFC)',\
                                                        +338'QVWTG':'ANAL VARIATIONAL QC WEIGHT ON MOIST. OBS BASED ON GUESS',\
                                                        +339'SPDE':'EST. ERROR COVARIANCE FOR WIND SPEED RETRIEVAL',\
                                                        +340'CTPBACKG':'CLOUD TOP PRESSURE BACKGROUND SEQUENCE',\
                                                        +341'GCDTT':'GOES CLOUD TOP TEMPERATURE OBSERVATION',\
                                                        +342'PW3R':'0.7 TO 0.3 SIGMA LAYER PRECIP. WATER EVENT REASON CODE',\
                                                        +343'PW3P':'0.7 TO 0.3 SIGMA LAYER PRECIP. WATER EVENT PROGRAM CODE',\
                                                        +344'PW3Q':'0.7 TO 0.3 SIGMA LAYER PRECIP. WATER (QUALITY) MARKER',\
                                                        +345'PW3F':'FCST(BACKGRND) 0.7 TO 0.3 SIGMA LYR PRECIP. WATER VALUE',\
                                                        +346'PW3E':'0.7 TO 0.3 SIGMA LAYER PRECIP. WATER OBSERVATION ERROR',\
                                                        +347'PW3A':'ANALYZED 0.7 TO 0.3 SIGMA LAYER PRECIP. WATER VALUE',\
                                                        +348'PW3O':'0.7 TO 0.3 SIGMA LAYER PRECIPITABLE WATER OBSERVATION',\
                                                        +349'ZPC':'HEIGHT EVENT PROGRAM CODE',\
                                                        +350'UCL':'CLIMATOLOGICAL U-COMPONENT WIND VALUE',\
                                                        +351'PW1BACKG':'1.0 TO 0.9 SIGMA LAYER PRECIP WATER BACKGROUND SEQUENCE',\
                                                        +352'SQN':'REPORT SEQUENCE NUMBER',\
                                                        +353'B2':'ERS AZIMUTH  ANGLE NUMBER 2',\
                                                        +354'B3':'ERS AZIMUTH  ANGLE NUMBER 3',\
                                                        +355'PWT_INFO':'TOTAL PRECIPITABLE WATER INFORMATION',\
                                                        +356'PW4BACKG':'0.3 TO 0.0 SIGMA LAYER PRECIP WATER BACKGROUND SEQUENCE',\
                                                        +357'SWELLSEQ':'SWELL WAVE SEQUENCE',\
                                                        +358'CLTP':'CLOUD TYPE',\
                                                        +359'GOESND':'GOES SATELLITE DATA (SOUNDINGS, RETRIEVALS, RADIANCES)',\
                                                        +360'WAVE_SEQ':'WAVE SEQUENCE',\
                                                        +361'PW1_INFO':'1.0 TO 0.9 SIGMA LAYER PRECIPITABLE WATER INFORMATION',\
                                                        +362'PW3_INFO':'0.7 TO 0.3 SIGMA LAYER PRECIPITABLE WATER INFORMATION',\
                                                        +363'WSST':'WINDSAT SURFACE TYPE',\
                                                        +364'CQCPROF':'WIND PROFILER QUALITY CONTROL STEP',\
                                                        +365'BTMPLEVL':"BRIGHTNESS TEMPERATURE'LEVEL' SEQUENCE",\
                                                        +366'W___INFO':'WIND INFORMATION',\
                                                        +367'VTVI':'VERTICAL VISIBILITY',\
                                                        +368'MXTM':'MAXIMUM TEMPERATURE',\
                                                        +369'SPRVSTG':'MESONET SUBPROVIDER ID STRING',\
                                                        +370'B1':'ERS AZIMUTH  ANGLE NUMBER 1',\
                                                        +371'TCOR':"INDICATOR WHETHER OBS. TIME IN'DHR' WAS CORRECTED",\
                                                        +372'PSTWXSEQ':'PAST WEATHER SEQUENCE',\
                                                        +373'AIRCAR':'MDCRS ACARS AIRCRAFT REPORTS',\
                                                        +374'TRC':'TEMPERATURE EVENT REASON CODE',\
                                                        +375'TOPC_SEQ':'TOTAL PRECIPITATION/TOTAL WATER EQUIVALENT SEQUENCE',\
                                                        +376'T__BACKG':'TEMPERATURE BACKGROUND SEQUENCE',\
                                                        +377'T29':'DATA DUMP REPORT TYPE',\
                                                        +378'T___INFO':'TEMPERATURE INFORMATION',\
                                                        +379'PW3F_MSQ':'MODEL 0.7 TO 0.3 SIGMA LAYER PRECIP WATER FORECAST SEQ.',\
                                                        +380'VOB':'V-COMPONENT WIND OBSERVATION (M/S)',\
                                                        +381'QCLIMATO':'SPECIFIC HUMIDITY CLIMATOLOGY SEQUENCE',\
                                                        +382'OIQC':'OI-QUALITY MULTI-PLATFROM CONTROL STEP',\
                                                        +383'PMSL_SEQ':'MEAN SEA LEVEL PRESSURE SEQUENCE',\
                                                        +384'WVCQ':'WIND VECTOR CELL QUALITY (ASCAT REPORTS ONLY)',\
                                                        +385'DEFAULT':'NON-DEFINED STEP (DEFAULT)',\
                                                        +386'TOCC':'CLOUD COVER (TOTAL)',\
                                                        +387'SST1':'SEA TEMPERATURE',\
                                                        +388'ACAV':'TOTAL NUMBER WITH RESPECT TO ACCUMULATION OR AVERAGE',\
                                                        +389'CTPRC':'CLOUD TOP PRESSURE EVENT REASON CODE',\
                                                        +390'PRVSTG':'MESONET PROVIDER ID STRING',\
                                                        +391'TRBX21':'TURBULENCE INDEX FOR PERIOD (TOB-2 MIN) -> (TOB-1 MIN)',\
                                                        +392'PMQ':'MEAN SEA-LVL PRESSURE (QUALITY) MARKER',\
                                                        +393'DBSS_SEQ':'DEPTH BELOW SEA SURFACE SEQUENCE',\
                                                        +394'MSONET':'MESONET SURFACE REPORTS (COOPERATIVE NETWORKS)',\
                                                        +395'PMO':'MEAN SEA-LEVEL PRESSURE OBSERVATION (MB)',\
                                                        +396'PWTEVENT':'TOTAL PRECIPITABLE WATER EVENT SEQUENCE',\
                                                        +397'PW4POSTP':'0.3 TO 0.0 SIGMA LAYER PRECIP WATER POSTPROCESSING SEQ.',\
                                                        +398'TMSK':'SKIN TEMPERATURE',\
                                                        +399'CLOU2SEQ':'OBSERVED CLOUD SEQUENCE # 2',\
                                                        +400'PW2F_MSQ':'MODEL 0.9 TO 0.7 SIGMA LAYER PRECIP WATER FORECAST SEQ.',\
                                                        +401'WVWTG':'ANAL VARIATIONAL QC WEIGHT ON WIND OBS BASED ON GUESS',\
                                                        +402'ELV':'STATION ELEVATION (M)',\
                                                        +403'WVWTA':'ANAL VARIATIONAL QC WEIGHT ON WIND OBS BASED ON ANAL',\
                                                        +404'ZFCMOD':'MODEL HEIGHT FORECAST VALUE (GLOBAL MODEL SEE ZFC)',\
                                                        +405'RSRD':'RESTRICTIONS ON REDISTRIBUTION',\
                                                        +406'PREPACQC':'AIRCRAFT QUALITY CONTROL STEP (NOT INCL. MDCRS ACARS)',\
                                                        +407'SSTE':'EST. ERROR COVARIANCE FOR SEA SURFACE TEMP RETRIEVAL',\
                                                        +408'QCS':'STANDARD DEV OF CLIMATOLOGICAL SPECIFIC HUMIDITY VALUE',\
                                                        +409'ZCLIMATO':'HEIGHT CLIMATOLOGY SEQUENCE',\
                                                        +410'PCAT':'PRECISION OF TEMPERATURE OBSERVATION',\
                                                        +411'QCL':'CLIMATOLOGICAL SPECIFIC HUMIDITY VALUE',\
                                                        +412'PW4EVENT':'0.3 TO 0.0 PRECIPITABLE WATER EVENT SEQUENCE',\
                                                        +413'HOWV':'HEIGHT OF WAVES',\
                                                        +414'HOWW':'HEIGHT OF WIND WAVES',\
                                                        +415'CQCHT':'RAWINSONDE HEIGHT/TEMP COMPLEX QUALITY CONTROL STEP',\
                                                        +416'RRTAN':'ANALYZED RAINFALL (AVERAGE RATE) VALUE',\
                                                        +417'A3':'ERS INCIDENT ANGLE NUMBER 3',\
                                                        +418'A2':'ERS INCIDENT ANGLE NUMBER 2',\
                                                        +419'ALSE':'ALTIMETER SETTING OBSERVATION',\
                                                        +420'HOCB':'HEIGHT OF BASE OF CLOUD',\
                                                        +421'SSTEVENT':'SEA TEMPERATURE EVENT SEQUENCE',\
                                                        +422'SQM':'WIND SPEED (SOB) (QUALITY) MARKER',\
                                                        +423'Q__BACKG':'SPECIFIC HUMIDITY BACKGROUND SEQUENCE',\
                                                        +424'PROCN':'PROCESS NUMBER FOR THIS MPI RUN (OBTAINED FROM SCRIPT)',\
                                                        +425'HBLCS':'HEIGHT ABOVE SURFACE OF BASE OF LOWEST CLOUD SEEN',\
                                                        +426'RRT_INFO':'RAIN RATE INFORMATION',\
                                                        +427'PW2EVENT':'0.9 TO 0.7 PRECIPITABLE WATER EVENT SEQUENCE',\
                                                        +428'Z__BACKG':'HEIGHT BACKGROUND SEQUENCE',\
                                                        +429'PFC':'FORECAST (BACKGROUND) PRESSURE VALUE',\
                                                        +430'ZCL':'CLIMATOLOGICAL HEIGHT VALUE',\
                                                        +431'SHIP_SEQ':'SHIP DIRECTION/SPEED SEQUENCE',\
                                                        +432'VSSO':'VERT. SIGNIFICANCE (SFC OBSERVATION)',\
                                                        +433'DRFTINFO':'PROFILE LEVEL TIME/LOCATION INFORMATION',\
                                                        +434'ZCS':'STANDARD DEVIATION OF CLIMATOLOGICAL HEIGHT VALUE',\
                                                        +435'DBSS':'DEPTH BELOW SEA SURFACE'
                                                        +436}
                                                        +437'''dictionary mapping prepbufr mnemonics to human readable descriptions'''
                                                        +438amsu_mnemonics_dict = {
                                                        +439'NC021021' :'MTYP 021-021 PROCESSED HIRS-2 1B Tb DATA (NOAA-14)',\
                                                        +440'NC021022' :'MTYP 021-022 PROCESSED MSU    1B Tb DATA (NOAA-14)',\
                                                        +441'NC021023' :'MTYP 021-023 PROC AMSU-A 1B Tb DATA(NOAA-15-19,METOP-2)',\
                                                        +442'NC021024' :'MTYP 021-024 PROCESSED AMSU-B 1B Tb DATA (NOAA-15-17)',\
                                                        +443'NC021025' :'MTYP 021-025 PROCESSED HIRS-3 1B Tb DATA (NOAA-15-17)',\
                                                        +444'NC021027' :'MTYP 021-027 PROCESSED MHS Tb DATA (NOAA-18-19,METOP-2)',\
                                                        +445'NC021028' :'MTYP 021-028 PROC HIRS-4 1B Tb DATA(NOAA-18-19,METOP-2)',\
                                                        +446'NC021033' :'MTYP 021-033 RARS(EARS,AP,SA) AMSU-A 1C Tb DATA(N15-19)',\
                                                        +447'NC021034' :'MTYP 021-034 RARS(EARS,AP,SA) AMSU-B 1C Tb DATA(N15-17)',\
                                                        +448'NC021035' :'MTYP 021-035 RARS(EARS,AP,SA) HIRS   1C Tb DATA(N15-19)',\
                                                        +449'NC021036' :'MTYP 021-036 RARS(EARS,AP,SA) MHS 1C Tb DATA   (N18-19)',\
                                                        +450'NC021041' :'MTYP 021-041 PROCESSED GOES IMAGER Tb DATA',\
                                                        +451'NC021042' :'MTYP 021-042 PROC. MSG SEVIRI ALL SKY RADIANCES (ASR)',\
                                                        +452'NC021043' :'MTYP 021-043 PROC. MSG SEVIRI CLEAR SKY RADIANCES (CSR)',\
                                                        +453'NC021051' :'MTYP 021-051 PROC AVHRR(GAC) 1B Tb-CLR & SEA (N-17,M-2)',\
                                                        +454'NC021052' :'MTYP 021-052 PROC AVHRR(GAC) 1B Tb-CLD OR LND(N-17,M-2)',\
                                                        +455'NC021053' :'MTYP 021-053 PROC AVHRR(GAC) 1B Tb-CLR & SEA (NOAA-18)',\
                                                        +456'NC021054' :'MTYP 021-054 PROC AVHRR(GAC) 1B Tb-CLD OR LND(NOAA-18)',\
                                                        +457'NC021123' :'MTYP 021-123 PROC AMSU-A 1B Ta DATA(NOAA-15-18,METOP-2)',\
                                                        +458'NC021201' :'MTYP 021-201 DMSP SSM/IS Tb DATA(UNIFIED PRE-PROCESSOR)',\
                                                        +459'NC021202' :'MTYP 021-202 NPP CrIS RADIANCE DATA',\
                                                        +460'NC021203' :'MTYP 021-203 NPP ATMS RADIANCE DATA',\
                                                        +461'NC021241' :'MTYP 021-241 IASI 1C RADIANCE DATA(VARBL CHNS)(METOP-2)',\
                                                        +462'NC021249' :'MTYP 021-249 EVERY  FOV AIRS/AMSU-A/HSB 1B DATA (AQUA)',\
                                                        +463'NC021250' :'MTYP 021-250 CENTER FOV AIRS/AMSU-A/HSB 1B DATA (AQUA)',\
                                                        +464'NC021251' :'MTYP 021-251 ATOVS AMSU-A RADIANCE DATA',\
                                                        +465'NC021252' :'MTYP 021-252 ATOVS AMSU-B RADIANCE DATA',\
                                                        +466'NC021253' :'MTYP 021-253 AIRS PRINCIPAL COMPONENTS',\
                                                        +467'NC021254' :'MTYP 021-254 AMSR-E CHANNEL DATA',\
                                                        +468'NC021255' :'MTYP 021-255 WARMEST FOV AIRS/AMSU-A/HSB 1B DATA (AQUA)',\
                                                        +469'YYMMDD' :'DATE -- YEAR, MONTH, DAY',\
                                                        +470'HHMM' :'TIME -- HOUR, MINUTE',\
                                                        +471'HHMMSS' :'TIME -- HOUR, MINUTE, SECOND',\
                                                        +472'LTLONH' :'HIGH ACCURACY LATITUDE/LONGITUDE POSITION',\
                                                        +473'SIDGRSEQ' :'SATELLITE IDENTIFIER/GENERATING RESOLUTION',\
                                                        +474'SIDENSEQ' :'SATELLITE IDENTIFICATION',\
                                                        +475'LOCPLAT' :'LOCATION OF PLATFORM (SATELLITE) SEQUENCE',\
                                                        +476'ALLSKYRD' :'ALL SKY RADIANCE DATA',\
                                                        +477'CLOUDCOV' :'CLOUD COVERAGE',\
                                                        +478'ATOVAMUA' :'ATOVS AMSU-A REPORT',\
                                                        +479'ATOVAMUB' :'ATOVS AMSU-B REPORT',\
                                                        +480'ATFOV' :'ATOVS FIELD OF VIEW VARIABLES',\
                                                        +481'ATCHV' :'ATOVS CHANNEL VARIABLES',\
                                                        +482'SSMISTEM' :'SSM/IS TEMPERATURE DATA RECORD',\
                                                        +483'ALLSKYRP' :'ALL SKY RADIANCE PRODUCT MAIN SEQUENCE',\
                                                        +484'SCO1C3IN' :'SATELLITE COLOCATED 1C REPORTS WITH 3 INSTRUMENTS',\
                                                        +485'SPITSEQN' :'SATELLITE POSITION AND INSTRUMENT TEMPERATURES',\
                                                        +486'SITPSEQN' :'SATELLITE INSTRUMENT TYPE AND POSITION',\
                                                        +487'SCBTSEQN' :'SAT CHANNELS AND BRIGHT TEMPS WITH EXPANDED CHANNEL SET',\
                                                        +488'SVCASEQN' :'SAT VISB CHANNELS AND ALBEDOS WITH EXPANDED CHANNEL SET',\
                                                        +489'SATRCPRC' :'SATELLITE RADIANCE/CHANNEL PRINCIPAL COMPONENTS',\
                                                        +490'IASIL1CB' :'IASI LEVEL 1C BAND DESCRIPTION SEQUENCE',\
                                                        +491'IASIL1CS' :'IASI LEVEL 1C AVHRR SINGLE SCENE SEQUENCE',\
                                                        +492'BCFQFSQ' :'NPP CrIS BAND CALIBRATION & F-O-V QUALITY FLAG SEQUENCE',\
                                                        +493'CRCHN' :'NPP CrIS CHANNEL DATA',\
                                                        +494'AMSUSPOT' :'AMSU-A SPOT SEQUENCE (AQUA SATELLITE)',\
                                                        +495'AMSUCHAN' :'AMSU-A CHANNEL SEQUENCE (AQUA SATELLITE)',\
                                                        +496'HSBSPOT' :'HSB (HUMIDITY) SPOT SEQUENCE (AQUA SATELLITE)',\
                                                        +497'HSBCHAN' :'HSB (HUMIDITY) CHANNEL SEQUENCE (AQUA SATELLITE)',\
                                                        +498'ATMSCH' :'NPP ATMS CHANNEL DATA',\
                                                        +499'INTMS' :'SATELLITE INSTRUMENT TEMPERATURES',\
                                                        +500'AIRSPC' :'AIRS PRINCIPAL COMPONENT SEQUENCE',\
                                                        +501'AIRSCORE' :'AIRS PRINCIPAL COMPONENT FITS TO DATA SEQUENCE',\
                                                        +502'AVCSEQ' :'AVHRR (GAC) CHANNEL SEQUENCE',\
                                                        +503'BID' :'BULLETIN HEADER DATA',\
                                                        +504'RCPTIM' :'REPORT RECEIPT TIME DATA',\
                                                        +505'SATEPHEM' :'SSM/IS SATELLITE EPHEMERIS INFORMATION',\
                                                        +506'SCLINGEO' :'SSM/IS SCAN LINE GEOMETRY',\
                                                        +507'SSMISCHN' :'SSM/IS CHANNEL SEQUENCE',\
                                                        +508'IASICHN' :'IASI LEVEL 1C SCALED RADIANCE SEQUENCE',\
                                                        +509'AVHRCHN' :'IASI LEVEL 1C MEAN AND STANDARD DEVIATION RADIANCE SEQ',\
                                                        +510'BRITCSTC' :'BRIGHTNESS TEMPERATURE SEQUENCE #2',\
                                                        +511'BRIT' :'BRIGHTNESS TEMPERATURE SEQUENCE',\
                                                        +512'RADS' :'RADIANCE SEQUENCE',\
                                                        +513'AMSRCHAN' :'AMSR-E CHANNEL SEQUENCE (AQUA SATELLITE)',\
                                                        +514'AMSRDICE' :'AMSR-E 2 CHANNEL 4 SPOT SOUNDING SEQUENCE (AQUA SAT)',\
                                                        +515'RPSEQ7' :'CSR SEVIRI CLOUD & BRIGHTNESS TEMPERATURE DATA SEQUENCE',\
                                                        +516'RPSEQ8' :'PERCENT CONFIDENCE W/MDPC REPLICATED DATA SEQUENCE',\
                                                        +517'RPSEQ4' :'PERCENT CONFIDENCE REPLICATED DATA SEQUENCE',\
                                                        +518'WLTMSEQN' :'WARM LOAD TEMPERATURE SEQUENCE',\
                                                        +519'MUHOSEQN' :'MULTIPLEXER HOUSEKEEPING SEQUENCE',\
                                                        +520'SAID' :'SATELLITE IDENTIFIER',\
                                                        +521'GCLONG' :'ORIGINATING/GENERATING CENTER',\
                                                        +522'GNAP' :'GENERATING APPLICATION',\
                                                        +523'OGCE' :'IDENTIFICATION OF ORIGINATING/GENERATING CENTER',\
                                                        +524'GSES' :'IDENTIFICATION OF ORIGINATING/GENERATING SUB-CENTER',\
                                                        +525'SIID' :'SATELLITE INSTRUMENTS',\
                                                        +526'SCLF' :'SATELLITE CLASSIFICATION',\
                                                        +527'SIDU' :'SATELLITE INSTRUMENT DATA USED IN PROCESSING',\
                                                        +528'IMHC' :'INTEGRATED MEAN HUMIDITY COMPUTATIONAL METHOD',\
                                                        +529'SSNX' :'SEGMENT SIZE AT NADIR IN X DIRECTION',\
                                                        +530'SSNY' :'SEGMENT SIZE AT NADIR IN Y DIRECTION',\
                                                        +531'SSIN' :'SATELLITE SENSOR INDICATOR',\
                                                        +532'ANPO' :'ANTENNA POLARIZATION',\
                                                        +533'RAIA' :'RADAR INCIDENCE ANGLE',\
                                                        +534'INCN' :'TOVS/ATOVS/AVHRR INSTRUMENTATION CHANNEL NUMBER',\
                                                        +535'RAID' :'RADIOMETER IDENTIFIER',\
                                                        +536'SIDP' :'SATELLITE INSTRUMENT DATA USED IN PROCESSING',\
                                                        +537'SCCF' :'SATELLITE CHANNEL CENTER FREQUENCY',\
                                                        +538'SCBW' :'SATELLITE CHANNEL BAND WIDTH',\
                                                        +539'RDTF' :'RADIANCE TYPE FLAGS',\
                                                        +540'RDTP' :'RADIANCE TYPE',\
                                                        +541'RDCM' :'RADIANCE COMPUTATIONAL METHOD',\
                                                        +542'YEAR' :'YEAR',\
                                                        +543'MNTH' :'MONTH',\
                                                        +544'DAYS' :'DAY',\
                                                        +545'HOUR' :'HOUR',\
                                                        +546'MINU' :'MINUTE',\
                                                        +547'SECO' :'SECOND',\
                                                        +548'TPSE' :'TIME PERIOD OR DISPLACEMENT',\
                                                        +549'RCYR' :'YEAR   - TIME OF RECEIPT',\
                                                        +550'RCMO' :'MONTH  - TIME OF RECEIPT',\
                                                        +551'RCDY' :'DAY    - TIME OF RECEIPT',\
                                                        +552'RCHR' :'HOUR   - TIME OF RECEIPT',\
                                                        +553'RCMI' :'MINUTE - TIME OF RECEIPT',\
                                                        +554'CLATH' :'LATITUDE (HIGH ACCURACY)',\
                                                        +555'CLAT' :'LATITUDE (COARSE ACCURACY)',\
                                                        +556'BEARAZ' :'BEARING OR AZIMUTH',\
                                                        +557'SOLAZI' :'SOLAR AZIMUTH',\
                                                        +558'ORBN' :'ORBIT NUMBER',\
                                                        +559'SLNM' :'SCAN LINE NUMBER',\
                                                        +560'CHNM' :'CHANNEL NUMBER',\
                                                        +561'FOVN' :'FIELD OF VIEW NUMBER',\
                                                        +562'FORN' :'FIELD OF REGARD NUMBER',\
                                                        +563'YAPCG' :'Y ANGULAR POSITION OF CENTER OF GRAVITY',\
                                                        +564'ZAPCG' :'Z ANGULAR POSITION OF CENTER OF GRAVITY',\
                                                        +565'CLONH' :'LONGITUDE (HIGH ACCURACY)',\
                                                        +566'CLON' :'LONGITUDE (COARSE ACCURACY)',\
                                                        +567'WVNM' :'WAVE NUMBER',\
                                                        +568'SELV' :'HEIGHT OF STATION',\
                                                        +569'HMSL' :'HEIGHT OR ALTITUDE',\
                                                        +570'PRLC' :'PRESSURE',\
                                                        +571'SAZA' :'SATELLITE ZENITH ANGLE',\
                                                        +572'SOZA' :'SOLAR ZENITH ANGLE',\
                                                        +573'VSIG' :'VERTICAL SOUNDING SIGNIFICANCE',\
                                                        +574'VSAT' :'VERTICAL SIGNIFICANCE (SATELLITE OBSERVATIONS)',\
                                                        +575'DIMS' :'DIMENSIONAL SIGNIFICANCE',\
                                                        +576'LSQL' :'LAND/SEA QUALIFIER',\
                                                        +577'TSIG' :'TIME SIGNIFICANCE',\
                                                        +578'FOST' :'FIRST ORDER STATISTICS',\
                                                        +579'MDPC' :'METHOD OF DEVIATION OF PERCENTAGE CONFIDENCE',\
                                                        +580'TAPQ' :'TOVS/ATOVS PRODUCT IDENTIFIER',\
                                                        +581'STKO' :'ASCENDING/DESCENDING ORBIT QUALIFIER',\
                                                        +582'TOBD' :'TYPE OF BAND',\
                                                        +583'RCTS' :'RECEIPT TIME SIGNIFICANCE',\
                                                        +584'HOLS' :'HEIGHT OF LAND SURFACE',\
                                                        +585'HITE' :'GEOPOTENTIAL HEIGHT',\
                                                        +586'PDNP' :"IN DIR. OF NORTH POLE, DISTANCE FROM THE EARTH'S CENTER",\
                                                        +587'TMBRST' :'BRIGHTNESS TEMPERATURE',\
                                                        +588'TMINST' :'INSTRUMENT TEMPERATURE',\
                                                        +589'SDTB' :'STANDARD DEVIATION BRIGHTNESS TEMPERATURE',\
                                                        +590'TMANT' :'ANTENNA TEMPERATURE',\
                                                        +591'WLTM' :'WARM LOAD TEMPERATURE',\
                                                        +592'SPRD' :'SPECTRAL RADIANCE',\
                                                        +593'RDNE' :'RADIANCE',\
                                                        +594'NEDTCO' :'NOISE-EQUIVALENT DELTA TEMPERATURE VIEWING COLD TARGET',\
                                                        +595'NEDTWA' :'NOISE-EQUIVALENT DELTA TEMPERATURE VIEWING WARM TARGET',\
                                                        +596'TMBR' :'BRIGHTNESS TEMPERATURE (HIGH ACCURACY)',\
                                                        +597'CSTC' :'COLD SPACE TEMPERATURE CORRECTION',\
                                                        +598'REHU' :'RELATIVE HUMIDITY',\
                                                        +599'SFLG' :'SURFACE FLAG',\
                                                        +600'ALBD' :'ALBEDO',\
                                                        +601'SRAD' :'CHANNEL RADIANCE',\
                                                        +602'CHRAD' :'CHANNEL RADIANCE',\
                                                        +603'SCRA' :'SCALED IASI RADIANCE',\
                                                        +604'SMRA' :'SCALED MEAN AVHRR RADIANCE',\
                                                        +605'SSDR' :'SCALED STANDARD DEVIATION OF AVHRR RADIANCE',\
                                                        +606'LOGCT' :'LOG10 OF CLOUD TEST RESULTS',\
                                                        +607'TOCC' :'CLOUD COVER (TOTAL)',\
                                                        +608'CLTP' :'CLOUD TYPE',\
                                                        +609'HOCT' :'HEIGHT OF TOP OF CLOUD',\
                                                        +610'RFLAG' :'RAIN FLAG',\
                                                        +611'CLDMNT' :'CLOUD AMOUNT IN SEGMENT',\
                                                        +612'NCLDMNT' :'AMOUNT SEGMENT CLOUD FREE',\
                                                        +613'CLAVR' :'CLOUD FROM AVHRR (CLAVR) CLOUD MASK',\
                                                        +614'WTCA' :'WARM TARGET CALIBRATION',\
                                                        +615'CTCA' :'COLD TARGET CALIBRATION',\
                                                        +616'ALFR' :'LAND FRACTION',\
                                                        +617'APCOMP' :'PRINCIPAL COMPONENT SCORE',\
                                                        +618'AVHCST' :'AVHRR CHANNEL COMBINATION',\
                                                        +619'APCFIT' :'LOG OF PRINCIPAL COMPONENTS NORMALIZED FIT TO DATA',\
                                                        +620'SSID' :'SSMIS SUBFRAME ID NUMBER',\
                                                        +621'MUHO' :'MULTIPLEXOR HOUSEKEEPING',\
                                                        +622'MJFC' :'MAJOR FRAME COUNT',\
                                                        +623'SACV' :'SATELLITE ANTENNA CORRECTIONS VERSION NUMBER',\
                                                        +624'LOGRCW' :'LOG-10 OF (TEMPERATURE-RADIANCE CENTRAL WAVENUMBER)',\
                                                        +625'BWCC1' :'BANDWIDTH CORRECTION COEFFICIENT 1 FOR ATOVS',\
                                                        +626'BWCC2' :'BANDWIDTH CORRECTION COEFFICIENT 2 FOR ATOVS',\
                                                        +627'ASFI' :'ALBEDO-RADIANCE SOLAR FILTERED IRRADIANCE FOR ATOVS',\
                                                        +628'AEFW' :'ALBEDO-RADIANCE EQUIVALENT FILTER WIDTH FOR ATOVS',\
                                                        +629'FCPH' :'FRACTION OF CLEAR PIXELS IN HIRS FOV',\
                                                        +630'STCH' :'START CHANNEL',\
                                                        +631'ENCH' :'END CHANNEL',\
                                                        +632'CHSF' :'CHANNEL SCALE FACTOR',\
                                                        +633'PD00' :"IN DIRECTION OF  0 DEG E, DISTANCE FROM EARTH'S CENTER",\
                                                        +634'PD90' :"IN DIRECTION OF 90 DEG E, DISTANCE FROM EARTH'S CENTER",\
                                                        +635'NPPR' :'NUMBER OF PIXELS PER ROW',\
                                                        +636'NPPC' :'NUMBER OF PIXELS PER COLUMN',\
                                                        +637'QMRKH' :'QUALITY INFORMATION',\
                                                        +638'PCCF' :'PERCENT CONFIDENCE',\
                                                        +639'SLSF' :'SCAN LINE STATUS FLAGS FOR ATOVS',\
                                                        +640'SLQF' :'SCAN LINE QUALITY FLAGS FOR ATOVS',\
                                                        +641'ACQF' :'CHANNEL QUALITY FLAGS FOR ATOVS',\
                                                        +642'FOVQ' :'FIELD OF VIEW QUALITY FLAGS FOR ATOVS',\
                                                        +643'QGFQ' :'INDIVIDUAL IASI-SYSTEM QUALITY FLAG',\
                                                        +644'QGQI' :'INSTR. NOISE PERF. INDICATOR (SPECTRAL & RADIOMETRIC)',\
                                                        +645'QGQIL' :'GEOMETRIC QUALITY INDEX INDICATOR',\
                                                        +646'QGQIR' :'INSTR. NOISE PERF. INDICATOR (RADIOMETRIC CALIBRATION)',\
                                                        +647'QGQIS' :'INSTRUMENT NOISE PERF. INDICATOR (SPECTRAL CALIBRATION)',\
                                                        +648'QGSSQ' :'OUTPUT OF TEC FUNCTION',\
                                                        +649'NSQF' :'SCAN LEVEL QUALITY FLAGS',\
                                                        +650'NCQF' :'CALIBRATION QUALITY FLAGS',\
                                                        +651'NFQF' :'FIELD OF VIEW QUALITY FLAGS',\
                                                        +652'NGQI' :'GEOLOCATION QUALITY',\
                                                        +653'ATMSGQ' :'GRANULE LEVEL QUALITY FLAGS',\
                                                        +654'ATMSSQ' :'SCAN LEVEL QUALITY FLAGS',\
                                                        +655'ATMSCHQ' :'CHANNEL DATA QUALITY FLAGS',\
                                                        +656'BUHD' :'BULLETIN BEING MONITORED (TTAAii)',\
                                                        +657'BULTIM' :'BULLETIN BEING MONITORED (YYGGgg)',\
                                                        +658'BORG' :'BULLETIN BEING MONITORED (CCCC)',\
                                                        +659'BBB' :'BULLETIN BEING MONITORED (BBB)',\
                                                        +660'SEQNUM' :'CHANNEL SEQUENCE NUMBER'}
                                                        +661'''dictionary mapping amsu mnemonics to human readable descriptions'''
                                                        +
                                                        + + +
                                                        +
                                                        +
                                                        + prepbufr_mnemonics_dict = + + {'PW2Q': '0.9 TO 0.7 SIGMA LAYER PRECIP. WATER (QUALITY) MARKER', 'PW2P': '0.9 TO 0.7 SIGMA LAYER PRECIP. WATER EVENT PROGRAM CODE', 'T__EVENT': 'TEMPERATURE EVENT SEQUENCE', 'PW2R': '0.9 TO 0.7 SIGMA LAYER PRECIP. WATER EVENT REASON CODE', 'T__POSTP': 'TEMPERATURE POSTPROCESSING SEQUENCE', 'PW2A': 'ANALYZED 0.9 TO 0.7 SIGMA LAYER PRECIP. WATER VALUE', 'WFC__MSQ': 'MODEL WIND FORECAST SEQUENCE', 'TP24': 'TOTAL PRECIPITATION PAST 24 HOURS', 'YCOR': "INDICATOR WHETHER LAT IN'YOB' WAS CORRECTED FRM'YORG'", 'PW2E': '0.9 TO 0.7 SIGMA LAYER PRECIP. WATER OBSERVATION ERROR', 'PREWXSEQ': 'PRESENT WEATHER SEQUENCE', 'XCOR': "INDICATOR WHETHER LON IN'XOB' WAS CORRECTED FRM'XORG'", 'PW2O': '0.9 TO 0.7 SIGMA LAYER PRECIPITABLE WATER OBSERVATION', 'PW3EVENT': '0.7 TO 0.3 PRECIPITABLE WATER EVENT SEQUENCE', 'UAN': 'ANALYZED U-COMPONENT WIND VALUE', 'TAN': 'ANALYZED TEMPERATURE VALUE', 'MSST': 'METHOD OF SEA SURFACE TEMPERATURE MEASUREMENT', 'VAN': 'ANALYZED V-COMPONENT WIND VALUE', 'WRC': 'U-, V-COMPONENT WIND (UOB/VOB) EVENT REASON CODE', 'SFCSHP': 'SURFACE MARINE (SHIP, BUOY, C-MAN PLATFORM) REPORTS', 'ADPUPA': 'UPPER-AIR (RAOB, PIBAL, RECCO, DROPS) REPORTS', 'DF_EVENT': 'WIND (DIRECTION/SPEED) EVENT SEQUENCE', 'TURB3SEQ': 'TURBULENCE SEQUENCE # 3', 'QQM': 'SPECIFIC HUMIDITY (QUALITY) MARKER', 'E1': 'ERS ERROR ESTIMATE NUMBER 1', 'SPSSMI': 'SSM/I RETRIEVAL PRODUCTS (REPROCESSED WIND SPEED, TPW)', 'PQM': 'PRESSURE (QUALITY) MARKER', 'CLOUDSEQ': 'OBSERVED CLOUD SEQUENCE # 1', 'SNOW_SEQ': 'SNOW DEPTH SEQUENCE', 'ZQM': 'HEIGHT (QUALITY) MARKER', 'CTCN': 'CROSS TRACK CELL NUMBER (QUIKSCAT & ASCAT REPORTS ONLY)', 'ACID_SEQ': 'AIRCRAFT FLIGHT NUMBER SEQUENCE', 'TFC__MSQ': 'MODEL TEMPERATURE FORECAST SEQUENCE', 'QFC__MSQ': 'MODEL SPECIFIC HUMIDITY FORECAST SEQUENCE', 'PCS': 'STANDARD DEVIATION OF CLIMATOLOGICAL PRESSURE VALUE', 'SID': 'STATION IDENTIFICATION', 'TSB': 'REPORT SUBTYPE (HAS VARIOUS MEANINGS DEPENDING ON TYPE)', 'UOB': 'U-COMPONENT WIND OBSERVATION (M/S)', 'PCL': 'CLIMATOLOGICAL PRESSURE VALUE', 'VADWND': 'VAD (NEXRAD) WIND REPORTS', 'TOPC': 'TOTAL PRECIPITATION/TOTAL WATER EQUIVALENT', 'SST_INFO': 'SEA TEMPERATURE INFORMATION', 'PREVENT': 'PRE-EVENTS BACKGROUND/OBSERVATION ERROR PROCESSING STEP', 'GUST1SEQ': 'MAXIMUM WIND GUST SEQUENCE # 1', 'RF10M': '10 METER WIND REDUCTION FACTOR', 'PAN': 'ANALYZED PRESSURE VALUE', 'ELEV': 'SATELLITE ELEVATION (ZENITH ANGLE)', 'TMXMNSEQ': 'MAXIMUM/MINIMUM TEMPERATURE SEQUENCE', 'CTPQM': 'CLOUD TOP PRESSURE (QUALITY) MARKER', 'MSTQ': 'MOISTURE QUALITY', 'PCLIMATO': 'PRESSURE CLIMATOLOGY SEQUENCE', 'SAID': 'SATELLITE IDENTIFIER (SATELLITE REPORTS ONLY)', 'MWD10': 'MODEL WIND DIRECTION AT 10 M', 'CQCVAD': 'VAD WIND QUALITY CONTROL STEP', 'PW1F_MSQ': 'MODEL 1.0 TO 0.9 SIGMA LAYER PRECIP WATER FORECAST SEQ.', 'SOEL': 'SOLAR ELEVATION (ZENITH ANGLE)', 'ALTIMSEQ': 'ALTIMETER SETTING SEQUENCE', 'SSTRC': 'SEA TEMPERATURE EVENT REASON CODE', 'S3': 'ERS BACKSCATTER NUMBER 3', 'S2': 'ERS BACKSCATTER NUMBER 2', 'S1': 'ERS BACKSCATTER NUMBER 1', 'IALR': 'INSTANTANEOUS ALTITUDE RATE', 'RADCOR': 'RAWINSONDE HEIGHT/TEMP INTERSONDE(RADIATION) CORR. STEP', 'ACID': 'AIRCRAFT FLIGHT NUMBER', 'RRTBACKG': 'RAIN RATE BACKGROUND SEQUENCE', 'ERS1DA': 'ERS SCATTEROMETER DATA (REPROCESSED WIND SPEED)', 'CLAM': 'CLOUD AMOUNT', 'POWV': 'PERIOD OF WAVES', 'POWW': 'PERIOD OF WIND WAVES', 'RCT': 'RECEIPT TIME', 'BTMPINFO': 'TOVS OR GOES BRIGHTNESS TEMPERATURE INFORMATION', 'DFQ': 'WIND DIRECTION/SPEED (DDO/FFO) (QUALITY) MARKER', 'DFP': 'WIND DIRECTION/SPEED (DDO/FFO) EVENT PROGRAM CODE', 'DFR': 'WIND DIRECTION/SPEED (DDO/FFO) EVENT REASON CODE', 'HOSW': 'HEIGHT OF SWELL WAVES', 'SYNDAT': 'SYNTHETIC TROPICAL CYCLONE BOGUS REPORTS', 'PW4FMOD': 'MODEL .3-0. SIG. LYR PWATER FCST(GLOBAL MODEL SEE PW4F)', 'DGOT': 'DEGREE OF TURBULENCE', 'PW1FMOD': 'MODEL 1.-.9 SIG. LYR PWATER FCST(GLOBAL MODEL SEE PW1F)', 'UFCMOD': 'MODEL U-COMPONENT FORECAST VALUE (GLOBAL MODEL SEE UFC)', 'MRWVC': 'MWR WATER VAPOR CONTENT (TOTAL WATER VAPOR)', 'TRBX32': 'TURBULENCE INDEX FOR PERIOD (TOB-3 MIN) -> (TOB-2 MIN)', 'WQM': 'U-, V-COMPONENT WIND (UOB/VOB) (QUALITY) MARKER', 'PW4F_MSQ': 'MODEL 0.3 TO 0.0 SIGMA LAYER PRECIP WATER FORECAST SEQ.', 'PW2F': 'FCST(BACKGRND) 0.9 TO 0.7 SIGMA LYR PRECIP. WATER VALUE', 'GPSIPW': 'GLOBAL POSITIONING SATELLITE-INTEGRATED PRECIP. WATER', 'QOETU': 'ANALYSIS-TUNED RELATIVE HUMIDITY OBSERVATION ERROR', 'CAT': 'PREPBUFR DATA LEVEL CATEGORY', 'MITM': 'MINIMUM TEMPERATURE', 'ACARSQC': 'MDCRS ACARS AIRCRAFT QUALITY CONTROL STEP', 'TOB': 'TEMPERATURE OBSERVATION (DEGREES C)', 'TOE': 'TEMPERATURE OBSERVATION ERROR (DEGREES C)', 'RRTPC': 'RAINFALL (AVERAGE RATE) EVENT PROGRAM CODE', 'BSCD': 'BACKSCATTER DISTANCE (ASCAT REPORTS ONLY)', 'PW1O': '1.0 TO 0.9 SIGMA LAYER PRECIPITABLE WATER OBSERVATION', 'PW1A': 'ANALYZED 1.0 TO 0.9 SIGMA LAYER PRECIP. WATER VALUE', 'PFCMOD': 'MODEL PRESSURE FORECAST VALUE (GLOBAL MODEL SEE PFC)', 'PW1F': 'FCST(BACKGRND) 1.0 TO 0.9 SIGMA LYR PRECIP. WATER VALUE', 'HOCT_SEQ': 'HEIGHT OF TOP OF CLOUD SEQUENCE', 'SOB': 'WIND SPEED OBSERVATION', 'XOB': 'LONGITUDE (DEG E)', 'PW1P': '1.0 TO 0.9 SIGMA LAYER PRECIP. WATER EVENT PROGRAM CODE', 'PW1Q': '1.0 TO 0.9 SIGMA LAYER PRECIP. WATER (QUALITY) MARKER', 'PW1R': '1.0 TO 0.9 SIGMA LAYER PRECIP. WATER EVENT REASON CODE', 'PWETU': 'ANALYSIS-TUNED TOTAL PRECIPITABLE WATER OBS ERROR', 'TP12_SEQ': 'TOTAL PRECIPITATION PAST 12 HOURS SEQUENCE', 'PKWDDR': 'PEAK WIND DIRECTION', 'CHPT': 'CHARACTERISTIC OF PRESSURE TENDENCY', 'TFC': 'FORECAST (BACKGROUND) TEMPERATURE VALUE', 'TURB1SEQ': 'TURBULENCE SEQUENCE # 1', 'PW2_INFO': '0.9 TO 0.7 SIGMA LAYER PRECIPITABLE WATER INFORMATION', 'EXPRSRD': 'EXPIRATION OF RESTRICTIONS ON REDISTRIBUTION', 'VFC': 'FORECAST (BACKGROUND) V-COMPONENT WIND VALUE', 'CTPOE': 'CLOUD TOP PRESSURE OBSERVATION ERROR', 'PW1POSTP': '1.0 TO 0.9 SIGMA LAYER PRECIP WATER POSTPROCESSING SEQ.', 'WOETU': 'ANALYSIS-TUNED WIND OBSERVATION ERROR', 'PRC': 'PRESSURE EVENT REASON CODE', 'QPC': 'SPECIFIC HUMIDITY EVENT PROGRAM CODE', 'P__POSTP': 'PRESSURE POSTPROCESSING SEQUENCE', 'ADPSFC': 'SURFACE LAND (SYNOPTIC, METAR) REPORTS', 'ZFC__MSQ': 'MODEL HEIGHT FORECAST SEQUENCE', 'CTPFC': 'FORECAST (BACKGROUND) CLOUD TOP PRESSURE VALUE', 'TPC': 'TEMPERATURE EVENT PROGRAM CODE', 'RFFL': 'PERCENT CONFIDENCE BASED ON NESDIS RECURSIVE FILTER FCN', 'PSW2': 'PAST WEATHER (2)', 'PSW1': 'PAST WEATHER (1)', 'NRLACQC': 'NRL AIRCRAFT QUALITY CONTROL STEP', 'CTPEVENT': 'CLOUD TOP PRESSURE EVENT SEQUENCE', 'PW2POSTP': '0.9 TO 0.7 SIGMA LAYER PRECIP WATER POSTPROCESSING SEQ.', 'PW1EVENT': '1.0 TO 0.9 PRECIPITABLE WATER EVENT SEQUENCE', 'VISB2SEQ': 'VISIBILITY SEQUENCE # 2', 'HOVI': 'HORIZONTAL VISIBILITY (M)', 'POAF': 'PHASE OF AIRCRAFT FLIGHT', 'GUST2SEQ': 'MAXIMUM WIND GUST SEQUENCE # 2', 'TYP': 'PREPBUFR REPORT TYPE', 'PW4F': 'FCST(BACKGRND) 0.3 TO 0.0 SIGMA LYR PRECIP. WATER VALUE', 'PW4E': '0.3 TO 0.0 SIGMA LAYER PRECIP. WATER OBSERVATION ERROR', 'HEADR': 'REPORT HEADER SEQUENCE', 'PW4A': 'ANALYZED 0.3 TO 0.0 SIGMA LAYER PRECIP. WATER VALUE', 'PW4O': '0.3 TO 0.0 SIGMA LAYER PRECIPITABLE WATER OBSERVATION', 'CTPPC': 'CLOUD TOP PRESSURE EVENT PROGRAM CODE', 'PW4R': '0.3 TO 0.0 SIGMA LAYER PRECIP. WATER EVENT REASON CODE', 'PW4Q': '0.3 TO 0.0 SIGMA LAYER PRECIP. WATER (QUALITY) MARKER', 'PW4P': '0.3 TO 0.0 SIGMA LAYER PRECIP. WATER EVENT PROGRAM CODE', 'FFO': 'WIND SPEED OBSERVATION (NOT ASSIMILATED)', 'ASMP': 'AVG SPD OF SHIP DURING PAST 3 HOURS', 'CHSQ': 'CHI-SQUARED (OF THE WIND VECTOR RETRIEVAL)', 'QOE': 'RELATIVE HUMIDITY OBSERVATION ERROR (PERCENT DIVIDED BY 10)', 'SFCBOG': 'MEAN SEA-LEVEL PRESSURE BOGUS REPORTS', 'QOB': 'SPECIFIC HUMIDITY OBSERVATION (MG/KG)', 'PW3POSTP': '0.7 TO 0.3 SIGMA LAYER PRECIP WATER POSTPROCESSING SEQ.', 'E3': 'ERS ERROR ESTIMATE NUMBER 3', 'E2': 'ERS ERROR ESTIMATE NUMBER 2', 'PKWDSP': 'PEAK WIND SPEED', 'ESBAK': 'FORECAST(BACKGROUND) SATURATION SPECIFIC HUMIDITY VALUE', 'SATWND': 'SATELLITE-DERIVED WIND REPORTS', 'PW1E': '1.0 TO 0.9 SIGMA LAYER PRECIP. WATER OBSERVATION ERROR', 'TOETU': 'ANALYSIS-TUNED TEMPERATURE OBSERVATION ERROR', 'PHER': 'EST. ERROR COVARIANCE FOR WIND DIRECTION RETRIEVAL', 'WCLIMATO': 'WIND CLIMATOLOGY SEQUENCE', 'WOE': 'WIND OBSERVATION ERROR (M/S)', 'POSW': 'PERIOD OF SWELL WAVES', 'SCATINFO': 'SCATTEROMETER DATA INFORMATION', 'CLDE': 'EST. ERROR COVARIANCE FOR TOTAL CLD LIQUID WATER RETR.', 'RRTPOSTP': 'RAIN RATE POSTPROCESSING SEQUENCE', 'SSI': 'SSI GLOBAL ANALYSIS STEP', 'ZRC': 'HEIGHT EVENT REASON CODE', 'PW2FMOD': 'MODEL .9-.7 SIG. LYR PWATER FCST(GLOBAL MODEL SEE PW2F)', 'Z___INFO': 'HEIGHT INFORMATION', 'RASSDA': 'RADIO ACOUSTIC SOUNDING SYSTEM (RASS) TEMP PROFILE RPTS', 'PTE24SEQ': '24 HOUR PRESSURE TENDENCY SEQUENCE', 'RRTFC': 'FORECAST (BACKGROUND) RAINFALL (AVERAGE RATE) VALUE', 'HRDR': 'PROFILE LVL TIME-CYCLE (FOR RAOB/PIBAL, BASED ON B DFT, HOURS)', 'ACFT_SEQ': 'AIRCRAFT SUPPLEMENTARY DATA SEQUENCE', 'POETU': 'ANALYSIS-TUNED PRESSURE OBSERVATION ERROR', 'P__BACKG': 'PRESSURE BACKGROUND SEQUENCE', 'NUL': 'NULL (IGNORE)', 'RRTOE': 'RAINFALL (AVERAGE RATE) OBSERVATION ERROR', 'TDMP': 'TRUE DIRECTION OF SHIP DURING PAST 3 HOURS', 'WPC': 'U-, V-COMPONENT WIND (UOB/VOB) EVENT PROGRAM CODE', 'TOSS': 'TOTAL SUNSHINE', 'CDTP': 'CLOUD TOP PRESSURE OBSERVATION', 'W__EVENT': 'WIND EVENT SEQUENCE', 'CLIMO': 'CLIMOTOLOGICAL PROCESSING STEP', 'XS20': '20 METER EXTRAPOLATED WIND SPEED', 'TOSD': 'TOTAL SNOW DEPTH', 'QFC': 'FORECAST (BACKGROUND) SPECIFIC HUMIDITY VALUE', 'PREPRO': 'INITIAL PREPBUFR PROCESSING STEP', 'SYNDATA': 'SYNTHETIC TROPICAL CYCLONE BOGUS PROCESSING STEP', 'PKWNDSEQ': 'PEAK WIND SEQUENCE', 'ITP': 'INSTRUMENT TYPE', 'Q__POSTP': 'SPECIFIC HUMIDITY POSTPROCESSING SEQUENCE', 'PWTVWTA': 'ANAL VARIAT. QC WGHT ON TOT PREC. WTR OBS BASED ON ANAL', 'TCLIMATO': 'TEMPERATURE CLIMATOLOGY SEQUENCE', 'PWTVWTG': 'ANAL VARIAT. QC WGHT ON TOT PREC. WTR OBS BASED ON GESS', 'RPT': 'REPORTED OBSERVATION TIME', 'TP01': 'TOTAL PRECIPITATION PAST 1 HOUR', 'TP03': 'TOTAL PRECIPITATION PAST 3 HOURS', 'VTVI_SEQ': 'VERTICAL VISIBILITY SEQUENCE', 'TP06': 'TOTAL PRECIPITATION PAST 6 HOURS', 'POE': 'PRESSURE OBSERVATION ERROR (MB)', 'POB': 'PRESSURE OBSERVATION (MB)', 'PW2BACKG': '0.9 TO 0.7 SIGMA LAYER PRECIP WATER BACKGROUND SEQUENCE', 'TURB2SEQ': 'TURBULENCE SEQUENCE # 2', 'PW__INFO': 'PRECIPITABLE WATER INFORMATION', 'PWA': 'ANALYZED TOTAL PRECIPITABLE WATER VALUE', 'VCL': 'CLIMATOLOGICAL V-COMPONENT WIND VALUE', 'VCS': 'STANDARD DEVIATION OF CLIMATOLOGICAL V-COMP WIND VALUE', 'SSTQM': 'SEA TEMPERATURE (QUALITY) MARKER', 'DHR': 'OBSERVATION TIME MINUS CYCLE TIME (HOURS)', 'VIRTMP': 'VIRTUAL TEMPERATURE/SPECIFIC HUMIDITY PROCESSING STEP', '24PC': '24 HOUR PRESSURE CHANGE', 'PVWTG': 'ANAL VARIATIONAL QC WEIGHT ON PRESS. OBS BASED ON GUESS', 'PVWTA': 'ANAL VARIATIONAL QC WEIGHT ON PRESS. OBS BASED ON ANAL', 'ROLF': 'AIRCRAFT ROLL ANGLE FLAG', 'TQM': 'TEMPERATURE (QUALITY) MARKER', 'AIRCFT': 'AIREP, PIREP, AMDAR, TAMDAR AIRCRAFT REPORTS', 'HBOI': 'HEIGHT OF BASE OF ICING', 'PRSLEVEL': 'PRESSURE LEVEL SEQUENCE (ALL TYPES EXCEPT GOESND)', 'LATCORSQ': 'LATITUDE CORRECTION SEQUENCE', 'HBOT': 'HEIGHT OF BASE OF TURBULENCE', 'ZFC': 'FORECAST (BACKGROUND) HEIGHT VALUE', 'QAN': 'ANALYZED SPECIFIC HUMIDITY VALUE', 'Q___INFO': 'SPECIFIC HUMIDITY INFORMATION', 'QIFY': 'PERCENT CONFIDENCE BASED ON EUMETSAT QUAL INDX W/ FCST', 'P___INFO': 'PRESSURE INFORMATION', 'SSTFC': 'FORECAST (BACKGROUND) SEA TEMPERATURE VALUE', 'QIFN': 'PERCENT CONFIDENCE BASED ON EUMETSAT QUAL INDX W/O FCST', 'TPRECSEQ': 'TOTAL PRECIPITATION SEQUENCE', 'Z__POSTP': 'HEIGHT POSTPROCESSING SEQUENCE', 'QRC': 'SPECIFIC HUMIDITY EVENT REASON CODE', 'PTENDSEQ': 'PRESSURE TENDENCY SEQUENCE', 'XWSPDSEQ': 'EXTRAPOLATED WIND SPEED SEQUENCE', 'ZAN': 'ANALYZED HEIGHT VALUE', 'RRTQM': 'RAINFALL (AVERAGE RATE) (QUALITY) MARKER', 'PROFLR': 'WIND PROFILER REPORTS', 'PWTPOSTP': 'TOTAL PRECIPITABLE WATER POSTPROCESSING SEQUENCE', 'CHNM': 'CHANNEL NUMBER', 'CTP_INFO': 'CLOUD TOP INFORMATION', 'SSTAN': 'ANALYZED SEA TEMPERATURE VALUE', 'PW3BACKG': '0.7 TO 0.3 SIGMA LAYER PRECIP WATER BACKGROUND SEQUENCE', 'HOCT': 'HEIGHT OF TOP OF CLOUD', 'SUNSHSEQ': 'TOTAL SUNSHINE SEQUENCE', 'PRWE': 'PRESENT WEATHER', 'XS10': '10 METER EXTRAPOLATED WIND SPEED', 'NRLQMS': 'NRL AIRCRAFT QUALITY CNTRL MARK (ADDED BY PGM NRLACQC)', 'PWF__MSQ': 'MODEL TOTAL PRECIPITABLE WATER FORECAST SEQUENCE', 'Q__EVENT': 'SPECIFIC HUMIDITY EVENT SEQUENCE', 'TCS': 'STANDARD DEVIATION OF CLIMATOLOGICAL TEMPERATURE VALUE', 'TCL': 'CLIMATOLOGICAL TEMPERATURE VALUE', 'W__BACKG': 'WIND BACKGROUND SEQUENCE', 'XDR': 'PROFILE LEVEL LON (FOR RAOB/PIBAL BASED ON BALLOON DFT, DEG E)', 'DOFS': 'DEPTH OF FRESH SNOW', 'PFC__MSQ': 'MODEL PRESSURE FORECAST SEQUENCE', 'SIRC': 'RAWINSONDE SOLAR & INFRARED RADIATION CORR. INDICATOR', 'ZOB': 'HEIGHT OBSERVATION (M)', 'ZOE': 'HEIGHT OBSERVATION ERROR (M)', 'RSRD_SEQ': 'RESTRICTIONS ON REDISTRIBUTION SEQUENCE', 'SATEMP': 'TOVS SATELLITE DATA (SOUNDINGS, RETRIEVALS, RADIANCES)', 'SSTOE': 'SEA TEMPERATURE OBSERVATION ERROR', 'DDO': 'WIND DIRECTION OBSERVATION (NOT ASSIMILATED)', 'SSTPOSTP': 'SEA TEMPERATURE POSTPROCESSING SEQUENCE', 'AFIC_SEQ': 'AIRCRAFT ICING SEQUENCE', 'PCCF_SEQ': 'SATELLITE WIND PERCENT CONFIDENCE SEQUENCE', 'CTPPOSTP': 'CLOUD TOP PRESSURE POSTPROCESSING SEQUENCE', 'WSPD1': 'SURFACE WIND SPEED', 'TRBX10': 'TURBULENCE INDEX FOR PERIOD (TOB-1 MIN) -> TOB', 'SPRR': 'SEAWINDS PROBABILITY OF RAIN (QUIKSCAT REPORTS ONLY)', 'LKCS': 'LIKELIHOOD COMPUTED FOR SOLUTION (ASCAT REPORTS ONLY)', 'PRSLEVLG': 'GOESND PRESSURE LEVEL SEQUENCE', 'OZON': 'OZONE', 'CTPAN': 'ANALYZED CLOUD TOP PRESSURE VALUE', 'R3DVAR': '3DVAR REGIONAL ANALYSIS STEP', 'Z__EVENT': 'HEIGHT EVENT SEQUENCE', 'PWFMOD': 'MODEL TOTAL PWATER FORECAST VALUE(GLOBAL MODEL SEE PWC)', 'ASCATW': 'ASCAT SCATTEROMETER DATA (REPROCESSED)', 'MRLWC': 'MWR LIQUID WATER CONTENT (TOTAL CLOUD LIQUID WATER)', 'VISB1SEQ': 'VISIBILITY SEQUENCE # 1', 'PW4_INFO': '0.3 TO 0.0 SIGMA LAYER PRECIPITABLE WATER INFORMATION', 'TMBR': 'BRIGHTNESS TEMPERATURE (KELVIN)', 'MXGD': 'MAXIMUM WIND GUST DIRECTION', 'EEQF': 'PERCENT CONFIDENCE BASED ON NESDIS EXPECTED ERROR', 'TVO': 'NON-Q. CONTROLLED VIRTUAL TEMP OBS (NOT ASSIMILATED)', 'MXGS': 'MAXIMUM WIND SPEED (GUSTS, M/S)', 'P__EVENT': 'PRESSURE EVENT SEQUENCE', 'WDSATR': 'WINDSAT SCATTEROMETER DATA (REPROCESSED)', 'REQV': 'RAINFALL (AVERAGE RATE) OBSERVATION', 'QFCMOD': 'MODEL S. HUMIDITY FORECAST VALUE (GLOBAL MODEL SEE QFC)', 'ATRN': 'ALONG TRACK ROW NUMBER (QUIKSCAT REPORTS ONLY)', 'WDIR1': 'SURFACE WIND DIRECTION', 'LONCORSQ': 'LONGITUDE CORRECTION SEQUENCE', 'XORG': 'REPORTED (ORIGINAL) LONGITUDE', 'RRTEVENT': 'RATE RATE EVENT SEQUENCE', 'YORG': 'REPORTED (ORIGINAL) LATITUDE', 'MWS10': 'MODEL WIND SPEED AT 10 M', 'TDO': 'DEWPOINT TEMPERATURE OBSERVATION (NOT ASSIMILATED, DEGREES C)', 'YDR': 'PROFILE LEVEL LAT (FOR RAOB/PIBAL BASED ON BALLOON DFT, DEG N)', 'UFC': 'FORECAST (BACKGROUND) U-COMPONENT WIND VALUE', 'W__POSTP': 'WIND POSTPROCESSING SEQUENCE', 'SWINDSEQ': 'SURFACE WIND SEQUENCE', 'PRSS': 'SURFACE PRESSURE OBSERVATION (PASCALS)', 'SSTPC': 'SEA TEMPERATURE EVENT PROGRAM CODE', 'WSPD_SEQ': 'WIND SPEED SEQUENCE', 'VFCMOD': 'MODEL V-COMPONENT FORECAST VALUE (GLOBAL MODEL SEE VFC)', 'AFIC': 'AIRFRAME ICING', 'WSEQC1': 'WINDSAT EDR QC FLAG #1', 'DOSW': 'DIRECTION OF SWELL WAVES', 'PPC': 'PRESSURE EVENT PROGRAM CODE', 'PWTBACKG': 'TOTAL PRECIPITABLE WATER BACKGROUND SEQUENCE', 'VPRE': 'EST. ERROR COVARIANCE FOR TOTAL WATER VAPOR RETRIEVAL', 'PWL_INFO': 'LAYER PRECIPITABLE WATER INFORMATION', 'TVWTA': 'ANAL VARIATIONAL QC WEIGHT ON TEMP. OBS BASED ON ANAL', 'PRSLEVLA': 'AIRCRAFT (AIRCFT/AIRCAR) PRESSURE LEVEL SEQUENCE', 'HTOI': 'HEIGHT OF TOP OF ICING', 'YOB': 'LATITUDE (DEG N)', 'TVWTG': 'ANAL VARIATIONAL QC WEIGHT ON TEMP. OBS BASED ON GUESS', 'HTOT': 'HEIGHT OF TOP OF TURBULENCE', 'SSTBACKG': 'SEA TEMPERATURE BACKGROUND SEQUENCE', 'UCS': 'STANDARD DEVIATION OF CLIMATOLOGICAL U-COMP WIND VALUE', 'PWR': 'TOTAL PRECIPITABLE WATER EVENT REASON CODE', 'PWP': 'TOTAL PRECIPITABLE WATER EVENT PROGRAM CODE', 'PWQ': 'TOTAL PRECIPITABLE WATER (QUALITY) MARKER', 'TP12': 'TOTAL PRECIPITATION PAST 12 HOURS', '3HPC': '3 HOUR PRESSURE CHANGE', 'PWF': 'FORECAST (BACKGROUND) TOTAL PRECIPITABLE WATER VALUE', 'PWE': 'TOTAL PRECIPITABLE WATER OBSERVATION ERROR (MM)', 'QKSWND': 'QUIKSCAT SCATTEROMETER DATA (REPROCESSED)', 'TRBX43': 'TURBULENCE INDEX FOR PERIOD (TOB-4 MIN) -> (TOB-3 MIN)', 'PWO': 'TOTAL PRECIPITABLE WATER OBSERVATION (MM)', 'TRBX': 'TURBULENCE INDEX', 'PW3FMOD': 'MODEL .7-.3 SIG. LYR PWATER FCST(GLOBAL MODEL SEE PW3F)', 'GSI': 'GSI ANALYSIS STEP', 'A1': 'ERS INCIDENT ANGLE NUMBER 1', 'RRTRC': 'RAINFALL (AVERAGE RATE) EVENT REASON CODE', 'QVWTA': 'ANAL VARIATIONAL QC WEIGHT ON MOIST. OBS BASED ON ANAL', 'TFCMOD': 'MODEL TEMPERATURE FORECAST VALUE (GLOBAL MODEL SEE TFC)', 'QVWTG': 'ANAL VARIATIONAL QC WEIGHT ON MOIST. OBS BASED ON GUESS', 'SPDE': 'EST. ERROR COVARIANCE FOR WIND SPEED RETRIEVAL', 'CTPBACKG': 'CLOUD TOP PRESSURE BACKGROUND SEQUENCE', 'GCDTT': 'GOES CLOUD TOP TEMPERATURE OBSERVATION', 'PW3R': '0.7 TO 0.3 SIGMA LAYER PRECIP. WATER EVENT REASON CODE', 'PW3P': '0.7 TO 0.3 SIGMA LAYER PRECIP. WATER EVENT PROGRAM CODE', 'PW3Q': '0.7 TO 0.3 SIGMA LAYER PRECIP. WATER (QUALITY) MARKER', 'PW3F': 'FCST(BACKGRND) 0.7 TO 0.3 SIGMA LYR PRECIP. WATER VALUE', 'PW3E': '0.7 TO 0.3 SIGMA LAYER PRECIP. WATER OBSERVATION ERROR', 'PW3A': 'ANALYZED 0.7 TO 0.3 SIGMA LAYER PRECIP. WATER VALUE', 'PW3O': '0.7 TO 0.3 SIGMA LAYER PRECIPITABLE WATER OBSERVATION', 'ZPC': 'HEIGHT EVENT PROGRAM CODE', 'UCL': 'CLIMATOLOGICAL U-COMPONENT WIND VALUE', 'PW1BACKG': '1.0 TO 0.9 SIGMA LAYER PRECIP WATER BACKGROUND SEQUENCE', 'SQN': 'REPORT SEQUENCE NUMBER', 'B2': 'ERS AZIMUTH ANGLE NUMBER 2', 'B3': 'ERS AZIMUTH ANGLE NUMBER 3', 'PWT_INFO': 'TOTAL PRECIPITABLE WATER INFORMATION', 'PW4BACKG': '0.3 TO 0.0 SIGMA LAYER PRECIP WATER BACKGROUND SEQUENCE', 'SWELLSEQ': 'SWELL WAVE SEQUENCE', 'CLTP': 'CLOUD TYPE', 'GOESND': 'GOES SATELLITE DATA (SOUNDINGS, RETRIEVALS, RADIANCES)', 'WAVE_SEQ': 'WAVE SEQUENCE', 'PW1_INFO': '1.0 TO 0.9 SIGMA LAYER PRECIPITABLE WATER INFORMATION', 'PW3_INFO': '0.7 TO 0.3 SIGMA LAYER PRECIPITABLE WATER INFORMATION', 'WSST': 'WINDSAT SURFACE TYPE', 'CQCPROF': 'WIND PROFILER QUALITY CONTROL STEP', 'BTMPLEVL': "BRIGHTNESS TEMPERATURE'LEVEL' SEQUENCE", 'W___INFO': 'WIND INFORMATION', 'VTVI': 'VERTICAL VISIBILITY', 'MXTM': 'MAXIMUM TEMPERATURE', 'SPRVSTG': 'MESONET SUBPROVIDER ID STRING', 'B1': 'ERS AZIMUTH ANGLE NUMBER 1', 'TCOR': "INDICATOR WHETHER OBS. TIME IN'DHR' WAS CORRECTED", 'PSTWXSEQ': 'PAST WEATHER SEQUENCE', 'AIRCAR': 'MDCRS ACARS AIRCRAFT REPORTS', 'TRC': 'TEMPERATURE EVENT REASON CODE', 'TOPC_SEQ': 'TOTAL PRECIPITATION/TOTAL WATER EQUIVALENT SEQUENCE', 'T__BACKG': 'TEMPERATURE BACKGROUND SEQUENCE', 'T29': 'DATA DUMP REPORT TYPE', 'T___INFO': 'TEMPERATURE INFORMATION', 'PW3F_MSQ': 'MODEL 0.7 TO 0.3 SIGMA LAYER PRECIP WATER FORECAST SEQ.', 'VOB': 'V-COMPONENT WIND OBSERVATION (M/S)', 'QCLIMATO': 'SPECIFIC HUMIDITY CLIMATOLOGY SEQUENCE', 'OIQC': 'OI-QUALITY MULTI-PLATFROM CONTROL STEP', 'PMSL_SEQ': 'MEAN SEA LEVEL PRESSURE SEQUENCE', 'WVCQ': 'WIND VECTOR CELL QUALITY (ASCAT REPORTS ONLY)', 'DEFAULT': 'NON-DEFINED STEP (DEFAULT)', 'TOCC': 'CLOUD COVER (TOTAL)', 'SST1': 'SEA TEMPERATURE', 'ACAV': 'TOTAL NUMBER WITH RESPECT TO ACCUMULATION OR AVERAGE', 'CTPRC': 'CLOUD TOP PRESSURE EVENT REASON CODE', 'PRVSTG': 'MESONET PROVIDER ID STRING', 'TRBX21': 'TURBULENCE INDEX FOR PERIOD (TOB-2 MIN) -> (TOB-1 MIN)', 'PMQ': 'MEAN SEA-LVL PRESSURE (QUALITY) MARKER', 'DBSS_SEQ': 'DEPTH BELOW SEA SURFACE SEQUENCE', 'MSONET': 'MESONET SURFACE REPORTS (COOPERATIVE NETWORKS)', 'PMO': 'MEAN SEA-LEVEL PRESSURE OBSERVATION (MB)', 'PWTEVENT': 'TOTAL PRECIPITABLE WATER EVENT SEQUENCE', 'PW4POSTP': '0.3 TO 0.0 SIGMA LAYER PRECIP WATER POSTPROCESSING SEQ.', 'TMSK': 'SKIN TEMPERATURE', 'CLOU2SEQ': 'OBSERVED CLOUD SEQUENCE # 2', 'PW2F_MSQ': 'MODEL 0.9 TO 0.7 SIGMA LAYER PRECIP WATER FORECAST SEQ.', 'WVWTG': 'ANAL VARIATIONAL QC WEIGHT ON WIND OBS BASED ON GUESS', 'ELV': 'STATION ELEVATION (M)', 'WVWTA': 'ANAL VARIATIONAL QC WEIGHT ON WIND OBS BASED ON ANAL', 'ZFCMOD': 'MODEL HEIGHT FORECAST VALUE (GLOBAL MODEL SEE ZFC)', 'RSRD': 'RESTRICTIONS ON REDISTRIBUTION', 'PREPACQC': 'AIRCRAFT QUALITY CONTROL STEP (NOT INCL. MDCRS ACARS)', 'SSTE': 'EST. ERROR COVARIANCE FOR SEA SURFACE TEMP RETRIEVAL', 'QCS': 'STANDARD DEV OF CLIMATOLOGICAL SPECIFIC HUMIDITY VALUE', 'ZCLIMATO': 'HEIGHT CLIMATOLOGY SEQUENCE', 'PCAT': 'PRECISION OF TEMPERATURE OBSERVATION', 'QCL': 'CLIMATOLOGICAL SPECIFIC HUMIDITY VALUE', 'PW4EVENT': '0.3 TO 0.0 PRECIPITABLE WATER EVENT SEQUENCE', 'HOWV': 'HEIGHT OF WAVES', 'HOWW': 'HEIGHT OF WIND WAVES', 'CQCHT': 'RAWINSONDE HEIGHT/TEMP COMPLEX QUALITY CONTROL STEP', 'RRTAN': 'ANALYZED RAINFALL (AVERAGE RATE) VALUE', 'A3': 'ERS INCIDENT ANGLE NUMBER 3', 'A2': 'ERS INCIDENT ANGLE NUMBER 2', 'ALSE': 'ALTIMETER SETTING OBSERVATION', 'HOCB': 'HEIGHT OF BASE OF CLOUD', 'SSTEVENT': 'SEA TEMPERATURE EVENT SEQUENCE', 'SQM': 'WIND SPEED (SOB) (QUALITY) MARKER', 'Q__BACKG': 'SPECIFIC HUMIDITY BACKGROUND SEQUENCE', 'PROCN': 'PROCESS NUMBER FOR THIS MPI RUN (OBTAINED FROM SCRIPT)', 'HBLCS': 'HEIGHT ABOVE SURFACE OF BASE OF LOWEST CLOUD SEEN', 'RRT_INFO': 'RAIN RATE INFORMATION', 'PW2EVENT': '0.9 TO 0.7 PRECIPITABLE WATER EVENT SEQUENCE', 'Z__BACKG': 'HEIGHT BACKGROUND SEQUENCE', 'PFC': 'FORECAST (BACKGROUND) PRESSURE VALUE', 'ZCL': 'CLIMATOLOGICAL HEIGHT VALUE', 'SHIP_SEQ': 'SHIP DIRECTION/SPEED SEQUENCE', 'VSSO': 'VERT. SIGNIFICANCE (SFC OBSERVATION)', 'DRFTINFO': 'PROFILE LEVEL TIME/LOCATION INFORMATION', 'ZCS': 'STANDARD DEVIATION OF CLIMATOLOGICAL HEIGHT VALUE', 'DBSS': 'DEPTH BELOW SEA SURFACE'} + + +
                                                        + + +

                                                        dictionary mapping prepbufr mnemonics to human readable descriptions

                                                        +
                                                        + + +
                                                        +
                                                        +
                                                        + amsu_mnemonics_dict = + + {'NC021021': 'MTYP 021-021 PROCESSED HIRS-2 1B Tb DATA (NOAA-14)', 'NC021022': 'MTYP 021-022 PROCESSED MSU 1B Tb DATA (NOAA-14)', 'NC021023': 'MTYP 021-023 PROC AMSU-A 1B Tb DATA(NOAA-15-19,METOP-2)', 'NC021024': 'MTYP 021-024 PROCESSED AMSU-B 1B Tb DATA (NOAA-15-17)', 'NC021025': 'MTYP 021-025 PROCESSED HIRS-3 1B Tb DATA (NOAA-15-17)', 'NC021027': 'MTYP 021-027 PROCESSED MHS Tb DATA (NOAA-18-19,METOP-2)', 'NC021028': 'MTYP 021-028 PROC HIRS-4 1B Tb DATA(NOAA-18-19,METOP-2)', 'NC021033': 'MTYP 021-033 RARS(EARS,AP,SA) AMSU-A 1C Tb DATA(N15-19)', 'NC021034': 'MTYP 021-034 RARS(EARS,AP,SA) AMSU-B 1C Tb DATA(N15-17)', 'NC021035': 'MTYP 021-035 RARS(EARS,AP,SA) HIRS 1C Tb DATA(N15-19)', 'NC021036': 'MTYP 021-036 RARS(EARS,AP,SA) MHS 1C Tb DATA (N18-19)', 'NC021041': 'MTYP 021-041 PROCESSED GOES IMAGER Tb DATA', 'NC021042': 'MTYP 021-042 PROC. MSG SEVIRI ALL SKY RADIANCES (ASR)', 'NC021043': 'MTYP 021-043 PROC. MSG SEVIRI CLEAR SKY RADIANCES (CSR)', 'NC021051': 'MTYP 021-051 PROC AVHRR(GAC) 1B Tb-CLR & SEA (N-17,M-2)', 'NC021052': 'MTYP 021-052 PROC AVHRR(GAC) 1B Tb-CLD OR LND(N-17,M-2)', 'NC021053': 'MTYP 021-053 PROC AVHRR(GAC) 1B Tb-CLR & SEA (NOAA-18)', 'NC021054': 'MTYP 021-054 PROC AVHRR(GAC) 1B Tb-CLD OR LND(NOAA-18)', 'NC021123': 'MTYP 021-123 PROC AMSU-A 1B Ta DATA(NOAA-15-18,METOP-2)', 'NC021201': 'MTYP 021-201 DMSP SSM/IS Tb DATA(UNIFIED PRE-PROCESSOR)', 'NC021202': 'MTYP 021-202 NPP CrIS RADIANCE DATA', 'NC021203': 'MTYP 021-203 NPP ATMS RADIANCE DATA', 'NC021241': 'MTYP 021-241 IASI 1C RADIANCE DATA(VARBL CHNS)(METOP-2)', 'NC021249': 'MTYP 021-249 EVERY FOV AIRS/AMSU-A/HSB 1B DATA (AQUA)', 'NC021250': 'MTYP 021-250 CENTER FOV AIRS/AMSU-A/HSB 1B DATA (AQUA)', 'NC021251': 'MTYP 021-251 ATOVS AMSU-A RADIANCE DATA', 'NC021252': 'MTYP 021-252 ATOVS AMSU-B RADIANCE DATA', 'NC021253': 'MTYP 021-253 AIRS PRINCIPAL COMPONENTS', 'NC021254': 'MTYP 021-254 AMSR-E CHANNEL DATA', 'NC021255': 'MTYP 021-255 WARMEST FOV AIRS/AMSU-A/HSB 1B DATA (AQUA)', 'YYMMDD': 'DATE -- YEAR, MONTH, DAY', 'HHMM': 'TIME -- HOUR, MINUTE', 'HHMMSS': 'TIME -- HOUR, MINUTE, SECOND', 'LTLONH': 'HIGH ACCURACY LATITUDE/LONGITUDE POSITION', 'SIDGRSEQ': 'SATELLITE IDENTIFIER/GENERATING RESOLUTION', 'SIDENSEQ': 'SATELLITE IDENTIFICATION', 'LOCPLAT': 'LOCATION OF PLATFORM (SATELLITE) SEQUENCE', 'ALLSKYRD': 'ALL SKY RADIANCE DATA', 'CLOUDCOV': 'CLOUD COVERAGE', 'ATOVAMUA': 'ATOVS AMSU-A REPORT', 'ATOVAMUB': 'ATOVS AMSU-B REPORT', 'ATFOV': 'ATOVS FIELD OF VIEW VARIABLES', 'ATCHV': 'ATOVS CHANNEL VARIABLES', 'SSMISTEM': 'SSM/IS TEMPERATURE DATA RECORD', 'ALLSKYRP': 'ALL SKY RADIANCE PRODUCT MAIN SEQUENCE', 'SCO1C3IN': 'SATELLITE COLOCATED 1C REPORTS WITH 3 INSTRUMENTS', 'SPITSEQN': 'SATELLITE POSITION AND INSTRUMENT TEMPERATURES', 'SITPSEQN': 'SATELLITE INSTRUMENT TYPE AND POSITION', 'SCBTSEQN': 'SAT CHANNELS AND BRIGHT TEMPS WITH EXPANDED CHANNEL SET', 'SVCASEQN': 'SAT VISB CHANNELS AND ALBEDOS WITH EXPANDED CHANNEL SET', 'SATRCPRC': 'SATELLITE RADIANCE/CHANNEL PRINCIPAL COMPONENTS', 'IASIL1CB': 'IASI LEVEL 1C BAND DESCRIPTION SEQUENCE', 'IASIL1CS': 'IASI LEVEL 1C AVHRR SINGLE SCENE SEQUENCE', 'BCFQFSQ': 'NPP CrIS BAND CALIBRATION & F-O-V QUALITY FLAG SEQUENCE', 'CRCHN': 'NPP CrIS CHANNEL DATA', 'AMSUSPOT': 'AMSU-A SPOT SEQUENCE (AQUA SATELLITE)', 'AMSUCHAN': 'AMSU-A CHANNEL SEQUENCE (AQUA SATELLITE)', 'HSBSPOT': 'HSB (HUMIDITY) SPOT SEQUENCE (AQUA SATELLITE)', 'HSBCHAN': 'HSB (HUMIDITY) CHANNEL SEQUENCE (AQUA SATELLITE)', 'ATMSCH': 'NPP ATMS CHANNEL DATA', 'INTMS': 'SATELLITE INSTRUMENT TEMPERATURES', 'AIRSPC': 'AIRS PRINCIPAL COMPONENT SEQUENCE', 'AIRSCORE': 'AIRS PRINCIPAL COMPONENT FITS TO DATA SEQUENCE', 'AVCSEQ': 'AVHRR (GAC) CHANNEL SEQUENCE', 'BID': 'BULLETIN HEADER DATA', 'RCPTIM': 'REPORT RECEIPT TIME DATA', 'SATEPHEM': 'SSM/IS SATELLITE EPHEMERIS INFORMATION', 'SCLINGEO': 'SSM/IS SCAN LINE GEOMETRY', 'SSMISCHN': 'SSM/IS CHANNEL SEQUENCE', 'IASICHN': 'IASI LEVEL 1C SCALED RADIANCE SEQUENCE', 'AVHRCHN': 'IASI LEVEL 1C MEAN AND STANDARD DEVIATION RADIANCE SEQ', 'BRITCSTC': 'BRIGHTNESS TEMPERATURE SEQUENCE #2', 'BRIT': 'BRIGHTNESS TEMPERATURE SEQUENCE', 'RADS': 'RADIANCE SEQUENCE', 'AMSRCHAN': 'AMSR-E CHANNEL SEQUENCE (AQUA SATELLITE)', 'AMSRDICE': 'AMSR-E 2 CHANNEL 4 SPOT SOUNDING SEQUENCE (AQUA SAT)', 'RPSEQ7': 'CSR SEVIRI CLOUD & BRIGHTNESS TEMPERATURE DATA SEQUENCE', 'RPSEQ8': 'PERCENT CONFIDENCE W/MDPC REPLICATED DATA SEQUENCE', 'RPSEQ4': 'PERCENT CONFIDENCE REPLICATED DATA SEQUENCE', 'WLTMSEQN': 'WARM LOAD TEMPERATURE SEQUENCE', 'MUHOSEQN': 'MULTIPLEXER HOUSEKEEPING SEQUENCE', 'SAID': 'SATELLITE IDENTIFIER', 'GCLONG': 'ORIGINATING/GENERATING CENTER', 'GNAP': 'GENERATING APPLICATION', 'OGCE': 'IDENTIFICATION OF ORIGINATING/GENERATING CENTER', 'GSES': 'IDENTIFICATION OF ORIGINATING/GENERATING SUB-CENTER', 'SIID': 'SATELLITE INSTRUMENTS', 'SCLF': 'SATELLITE CLASSIFICATION', 'SIDU': 'SATELLITE INSTRUMENT DATA USED IN PROCESSING', 'IMHC': 'INTEGRATED MEAN HUMIDITY COMPUTATIONAL METHOD', 'SSNX': 'SEGMENT SIZE AT NADIR IN X DIRECTION', 'SSNY': 'SEGMENT SIZE AT NADIR IN Y DIRECTION', 'SSIN': 'SATELLITE SENSOR INDICATOR', 'ANPO': 'ANTENNA POLARIZATION', 'RAIA': 'RADAR INCIDENCE ANGLE', 'INCN': 'TOVS/ATOVS/AVHRR INSTRUMENTATION CHANNEL NUMBER', 'RAID': 'RADIOMETER IDENTIFIER', 'SIDP': 'SATELLITE INSTRUMENT DATA USED IN PROCESSING', 'SCCF': 'SATELLITE CHANNEL CENTER FREQUENCY', 'SCBW': 'SATELLITE CHANNEL BAND WIDTH', 'RDTF': 'RADIANCE TYPE FLAGS', 'RDTP': 'RADIANCE TYPE', 'RDCM': 'RADIANCE COMPUTATIONAL METHOD', 'YEAR': 'YEAR', 'MNTH': 'MONTH', 'DAYS': 'DAY', 'HOUR': 'HOUR', 'MINU': 'MINUTE', 'SECO': 'SECOND', 'TPSE': 'TIME PERIOD OR DISPLACEMENT', 'RCYR': 'YEAR - TIME OF RECEIPT', 'RCMO': 'MONTH - TIME OF RECEIPT', 'RCDY': 'DAY - TIME OF RECEIPT', 'RCHR': 'HOUR - TIME OF RECEIPT', 'RCMI': 'MINUTE - TIME OF RECEIPT', 'CLATH': 'LATITUDE (HIGH ACCURACY)', 'CLAT': 'LATITUDE (COARSE ACCURACY)', 'BEARAZ': 'BEARING OR AZIMUTH', 'SOLAZI': 'SOLAR AZIMUTH', 'ORBN': 'ORBIT NUMBER', 'SLNM': 'SCAN LINE NUMBER', 'CHNM': 'CHANNEL NUMBER', 'FOVN': 'FIELD OF VIEW NUMBER', 'FORN': 'FIELD OF REGARD NUMBER', 'YAPCG': 'Y ANGULAR POSITION OF CENTER OF GRAVITY', 'ZAPCG': 'Z ANGULAR POSITION OF CENTER OF GRAVITY', 'CLONH': 'LONGITUDE (HIGH ACCURACY)', 'CLON': 'LONGITUDE (COARSE ACCURACY)', 'WVNM': 'WAVE NUMBER', 'SELV': 'HEIGHT OF STATION', 'HMSL': 'HEIGHT OR ALTITUDE', 'PRLC': 'PRESSURE', 'SAZA': 'SATELLITE ZENITH ANGLE', 'SOZA': 'SOLAR ZENITH ANGLE', 'VSIG': 'VERTICAL SOUNDING SIGNIFICANCE', 'VSAT': 'VERTICAL SIGNIFICANCE (SATELLITE OBSERVATIONS)', 'DIMS': 'DIMENSIONAL SIGNIFICANCE', 'LSQL': 'LAND/SEA QUALIFIER', 'TSIG': 'TIME SIGNIFICANCE', 'FOST': 'FIRST ORDER STATISTICS', 'MDPC': 'METHOD OF DEVIATION OF PERCENTAGE CONFIDENCE', 'TAPQ': 'TOVS/ATOVS PRODUCT IDENTIFIER', 'STKO': 'ASCENDING/DESCENDING ORBIT QUALIFIER', 'TOBD': 'TYPE OF BAND', 'RCTS': 'RECEIPT TIME SIGNIFICANCE', 'HOLS': 'HEIGHT OF LAND SURFACE', 'HITE': 'GEOPOTENTIAL HEIGHT', 'PDNP': "IN DIR. OF NORTH POLE, DISTANCE FROM THE EARTH'S CENTER", 'TMBRST': 'BRIGHTNESS TEMPERATURE', 'TMINST': 'INSTRUMENT TEMPERATURE', 'SDTB': 'STANDARD DEVIATION BRIGHTNESS TEMPERATURE', 'TMANT': 'ANTENNA TEMPERATURE', 'WLTM': 'WARM LOAD TEMPERATURE', 'SPRD': 'SPECTRAL RADIANCE', 'RDNE': 'RADIANCE', 'NEDTCO': 'NOISE-EQUIVALENT DELTA TEMPERATURE VIEWING COLD TARGET', 'NEDTWA': 'NOISE-EQUIVALENT DELTA TEMPERATURE VIEWING WARM TARGET', 'TMBR': 'BRIGHTNESS TEMPERATURE (HIGH ACCURACY)', 'CSTC': 'COLD SPACE TEMPERATURE CORRECTION', 'REHU': 'RELATIVE HUMIDITY', 'SFLG': 'SURFACE FLAG', 'ALBD': 'ALBEDO', 'SRAD': 'CHANNEL RADIANCE', 'CHRAD': 'CHANNEL RADIANCE', 'SCRA': 'SCALED IASI RADIANCE', 'SMRA': 'SCALED MEAN AVHRR RADIANCE', 'SSDR': 'SCALED STANDARD DEVIATION OF AVHRR RADIANCE', 'LOGCT': 'LOG10 OF CLOUD TEST RESULTS', 'TOCC': 'CLOUD COVER (TOTAL)', 'CLTP': 'CLOUD TYPE', 'HOCT': 'HEIGHT OF TOP OF CLOUD', 'RFLAG': 'RAIN FLAG', 'CLDMNT': 'CLOUD AMOUNT IN SEGMENT', 'NCLDMNT': 'AMOUNT SEGMENT CLOUD FREE', 'CLAVR': 'CLOUD FROM AVHRR (CLAVR) CLOUD MASK', 'WTCA': 'WARM TARGET CALIBRATION', 'CTCA': 'COLD TARGET CALIBRATION', 'ALFR': 'LAND FRACTION', 'APCOMP': 'PRINCIPAL COMPONENT SCORE', 'AVHCST': 'AVHRR CHANNEL COMBINATION', 'APCFIT': 'LOG OF PRINCIPAL COMPONENTS NORMALIZED FIT TO DATA', 'SSID': 'SSMIS SUBFRAME ID NUMBER', 'MUHO': 'MULTIPLEXOR HOUSEKEEPING', 'MJFC': 'MAJOR FRAME COUNT', 'SACV': 'SATELLITE ANTENNA CORRECTIONS VERSION NUMBER', 'LOGRCW': 'LOG-10 OF (TEMPERATURE-RADIANCE CENTRAL WAVENUMBER)', 'BWCC1': 'BANDWIDTH CORRECTION COEFFICIENT 1 FOR ATOVS', 'BWCC2': 'BANDWIDTH CORRECTION COEFFICIENT 2 FOR ATOVS', 'ASFI': 'ALBEDO-RADIANCE SOLAR FILTERED IRRADIANCE FOR ATOVS', 'AEFW': 'ALBEDO-RADIANCE EQUIVALENT FILTER WIDTH FOR ATOVS', 'FCPH': 'FRACTION OF CLEAR PIXELS IN HIRS FOV', 'STCH': 'START CHANNEL', 'ENCH': 'END CHANNEL', 'CHSF': 'CHANNEL SCALE FACTOR', 'PD00': "IN DIRECTION OF 0 DEG E, DISTANCE FROM EARTH'S CENTER", 'PD90': "IN DIRECTION OF 90 DEG E, DISTANCE FROM EARTH'S CENTER", 'NPPR': 'NUMBER OF PIXELS PER ROW', 'NPPC': 'NUMBER OF PIXELS PER COLUMN', 'QMRKH': 'QUALITY INFORMATION', 'PCCF': 'PERCENT CONFIDENCE', 'SLSF': 'SCAN LINE STATUS FLAGS FOR ATOVS', 'SLQF': 'SCAN LINE QUALITY FLAGS FOR ATOVS', 'ACQF': 'CHANNEL QUALITY FLAGS FOR ATOVS', 'FOVQ': 'FIELD OF VIEW QUALITY FLAGS FOR ATOVS', 'QGFQ': 'INDIVIDUAL IASI-SYSTEM QUALITY FLAG', 'QGQI': 'INSTR. NOISE PERF. INDICATOR (SPECTRAL & RADIOMETRIC)', 'QGQIL': 'GEOMETRIC QUALITY INDEX INDICATOR', 'QGQIR': 'INSTR. NOISE PERF. INDICATOR (RADIOMETRIC CALIBRATION)', 'QGQIS': 'INSTRUMENT NOISE PERF. INDICATOR (SPECTRAL CALIBRATION)', 'QGSSQ': 'OUTPUT OF TEC FUNCTION', 'NSQF': 'SCAN LEVEL QUALITY FLAGS', 'NCQF': 'CALIBRATION QUALITY FLAGS', 'NFQF': 'FIELD OF VIEW QUALITY FLAGS', 'NGQI': 'GEOLOCATION QUALITY', 'ATMSGQ': 'GRANULE LEVEL QUALITY FLAGS', 'ATMSSQ': 'SCAN LEVEL QUALITY FLAGS', 'ATMSCHQ': 'CHANNEL DATA QUALITY FLAGS', 'BUHD': 'BULLETIN BEING MONITORED (TTAAii)', 'BULTIM': 'BULLETIN BEING MONITORED (YYGGgg)', 'BORG': 'BULLETIN BEING MONITORED (CCCC)', 'BBB': 'BULLETIN BEING MONITORED (BBB)', 'SEQNUM': 'CHANNEL SEQUENCE NUMBER'} + + +
                                                        + + +

                                                        dictionary mapping amsu mnemonics to human readable descriptions

                                                        +
                                                        + + +
                                                        +
                                                        + + \ No newline at end of file diff --git a/previous_versions/v12.1.0/python/search.js b/previous_versions/v12.1.0/python/search.js new file mode 100644 index 000000000..d0f159a97 --- /dev/null +++ b/previous_versions/v12.1.0/python/search.js @@ -0,0 +1,46 @@ +window.pdocSearch = (function(){ +/** elasticlunr - http://weixsong.github.io * Copyright (C) 2017 Oliver Nightingale * Copyright (C) 2017 Wei Song * MIT Licensed */!function(){function e(e){if(null===e||"object"!=typeof e)return e;var t=e.constructor();for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n]);return t}var t=function(e){var n=new t.Index;return n.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),e&&e.call(n,n),n};t.version="0.9.5",lunr=t,t.utils={},t.utils.warn=function(e){return function(t){e.console&&console.warn&&console.warn(t)}}(this),t.utils.toString=function(e){return void 0===e||null===e?"":e.toString()},t.EventEmitter=function(){this.events={}},t.EventEmitter.prototype.addListener=function(){var e=Array.prototype.slice.call(arguments),t=e.pop(),n=e;if("function"!=typeof t)throw new TypeError("last argument must be a function");n.forEach(function(e){this.hasHandler(e)||(this.events[e]=[]),this.events[e].push(t)},this)},t.EventEmitter.prototype.removeListener=function(e,t){if(this.hasHandler(e)){var n=this.events[e].indexOf(t);-1!==n&&(this.events[e].splice(n,1),0==this.events[e].length&&delete this.events[e])}},t.EventEmitter.prototype.emit=function(e){if(this.hasHandler(e)){var t=Array.prototype.slice.call(arguments,1);this.events[e].forEach(function(e){e.apply(void 0,t)},this)}},t.EventEmitter.prototype.hasHandler=function(e){return e in this.events},t.tokenizer=function(e){if(!arguments.length||null===e||void 0===e)return[];if(Array.isArray(e)){var n=e.filter(function(e){return null===e||void 0===e?!1:!0});n=n.map(function(e){return t.utils.toString(e).toLowerCase()});var i=[];return n.forEach(function(e){var n=e.split(t.tokenizer.seperator);i=i.concat(n)},this),i}return e.toString().trim().toLowerCase().split(t.tokenizer.seperator)},t.tokenizer.defaultSeperator=/[\s\-]+/,t.tokenizer.seperator=t.tokenizer.defaultSeperator,t.tokenizer.setSeperator=function(e){null!==e&&void 0!==e&&"object"==typeof e&&(t.tokenizer.seperator=e)},t.tokenizer.resetSeperator=function(){t.tokenizer.seperator=t.tokenizer.defaultSeperator},t.tokenizer.getSeperator=function(){return t.tokenizer.seperator},t.Pipeline=function(){this._queue=[]},t.Pipeline.registeredFunctions={},t.Pipeline.registerFunction=function(e,n){n in t.Pipeline.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+n),e.label=n,t.Pipeline.registeredFunctions[n]=e},t.Pipeline.getRegisteredFunction=function(e){return e in t.Pipeline.registeredFunctions!=!0?null:t.Pipeline.registeredFunctions[e]},t.Pipeline.warnIfFunctionNotRegistered=function(e){var n=e.label&&e.label in this.registeredFunctions;n||t.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",e)},t.Pipeline.load=function(e){var n=new t.Pipeline;return e.forEach(function(e){var i=t.Pipeline.getRegisteredFunction(e);if(!i)throw new Error("Cannot load un-registered function: "+e);n.add(i)}),n},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(e){t.Pipeline.warnIfFunctionNotRegistered(e),this._queue.push(e)},this)},t.Pipeline.prototype.after=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var i=this._queue.indexOf(e);if(-1===i)throw new Error("Cannot find existingFn");this._queue.splice(i+1,0,n)},t.Pipeline.prototype.before=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var i=this._queue.indexOf(e);if(-1===i)throw new Error("Cannot find existingFn");this._queue.splice(i,0,n)},t.Pipeline.prototype.remove=function(e){var t=this._queue.indexOf(e);-1!==t&&this._queue.splice(t,1)},t.Pipeline.prototype.run=function(e){for(var t=[],n=e.length,i=this._queue.length,o=0;n>o;o++){for(var r=e[o],s=0;i>s&&(r=this._queue[s](r,o,e),void 0!==r&&null!==r);s++);void 0!==r&&null!==r&&t.push(r)}return t},t.Pipeline.prototype.reset=function(){this._queue=[]},t.Pipeline.prototype.get=function(){return this._queue},t.Pipeline.prototype.toJSON=function(){return this._queue.map(function(e){return t.Pipeline.warnIfFunctionNotRegistered(e),e.label})},t.Index=function(){this._fields=[],this._ref="id",this.pipeline=new t.Pipeline,this.documentStore=new t.DocumentStore,this.index={},this.eventEmitter=new t.EventEmitter,this._idfCache={},this.on("add","remove","update",function(){this._idfCache={}}.bind(this))},t.Index.prototype.on=function(){var e=Array.prototype.slice.call(arguments);return this.eventEmitter.addListener.apply(this.eventEmitter,e)},t.Index.prototype.off=function(e,t){return this.eventEmitter.removeListener(e,t)},t.Index.load=function(e){e.version!==t.version&&t.utils.warn("version mismatch: current "+t.version+" importing "+e.version);var n=new this;n._fields=e.fields,n._ref=e.ref,n.documentStore=t.DocumentStore.load(e.documentStore),n.pipeline=t.Pipeline.load(e.pipeline),n.index={};for(var i in e.index)n.index[i]=t.InvertedIndex.load(e.index[i]);return n},t.Index.prototype.addField=function(e){return this._fields.push(e),this.index[e]=new t.InvertedIndex,this},t.Index.prototype.setRef=function(e){return this._ref=e,this},t.Index.prototype.saveDocument=function(e){return this.documentStore=new t.DocumentStore(e),this},t.Index.prototype.addDoc=function(e,n){if(e){var n=void 0===n?!0:n,i=e[this._ref];this.documentStore.addDoc(i,e),this._fields.forEach(function(n){var o=this.pipeline.run(t.tokenizer(e[n]));this.documentStore.addFieldLength(i,n,o.length);var r={};o.forEach(function(e){e in r?r[e]+=1:r[e]=1},this);for(var s in r){var u=r[s];u=Math.sqrt(u),this.index[n].addToken(s,{ref:i,tf:u})}},this),n&&this.eventEmitter.emit("add",e,this)}},t.Index.prototype.removeDocByRef=function(e){if(e&&this.documentStore.isDocStored()!==!1&&this.documentStore.hasDoc(e)){var t=this.documentStore.getDoc(e);this.removeDoc(t,!1)}},t.Index.prototype.removeDoc=function(e,n){if(e){var n=void 0===n?!0:n,i=e[this._ref];this.documentStore.hasDoc(i)&&(this.documentStore.removeDoc(i),this._fields.forEach(function(n){var o=this.pipeline.run(t.tokenizer(e[n]));o.forEach(function(e){this.index[n].removeToken(e,i)},this)},this),n&&this.eventEmitter.emit("remove",e,this))}},t.Index.prototype.updateDoc=function(e,t){var t=void 0===t?!0:t;this.removeDocByRef(e[this._ref],!1),this.addDoc(e,!1),t&&this.eventEmitter.emit("update",e,this)},t.Index.prototype.idf=function(e,t){var n="@"+t+"/"+e;if(Object.prototype.hasOwnProperty.call(this._idfCache,n))return this._idfCache[n];var i=this.index[t].getDocFreq(e),o=1+Math.log(this.documentStore.length/(i+1));return this._idfCache[n]=o,o},t.Index.prototype.getFields=function(){return this._fields.slice()},t.Index.prototype.search=function(e,n){if(!e)return[];e="string"==typeof e?{any:e}:JSON.parse(JSON.stringify(e));var i=null;null!=n&&(i=JSON.stringify(n));for(var o=new t.Configuration(i,this.getFields()).get(),r={},s=Object.keys(e),u=0;u0&&t.push(e);for(var i in n)"docs"!==i&&"df"!==i&&this.expandToken(e+i,t,n[i]);return t},t.InvertedIndex.prototype.toJSON=function(){return{root:this.root}},t.Configuration=function(e,n){var e=e||"";if(void 0==n||null==n)throw new Error("fields should not be null");this.config={};var i;try{i=JSON.parse(e),this.buildUserConfig(i,n)}catch(o){t.utils.warn("user configuration parse failed, will use default configuration"),this.buildDefaultConfig(n)}},t.Configuration.prototype.buildDefaultConfig=function(e){this.reset(),e.forEach(function(e){this.config[e]={boost:1,bool:"OR",expand:!1}},this)},t.Configuration.prototype.buildUserConfig=function(e,n){var i="OR",o=!1;if(this.reset(),"bool"in e&&(i=e.bool||i),"expand"in e&&(o=e.expand||o),"fields"in e)for(var r in e.fields)if(n.indexOf(r)>-1){var s=e.fields[r],u=o;void 0!=s.expand&&(u=s.expand),this.config[r]={boost:s.boost||0===s.boost?s.boost:1,bool:s.bool||i,expand:u}}else t.utils.warn("field name in user configuration not found in index instance fields");else this.addAllFields2UserConfig(i,o,n)},t.Configuration.prototype.addAllFields2UserConfig=function(e,t,n){n.forEach(function(n){this.config[n]={boost:1,bool:e,expand:t}},this)},t.Configuration.prototype.get=function(){return this.config},t.Configuration.prototype.reset=function(){this.config={}},lunr.SortedSet=function(){this.length=0,this.elements=[]},lunr.SortedSet.load=function(e){var t=new this;return t.elements=e,t.length=e.length,t},lunr.SortedSet.prototype.add=function(){var e,t;for(e=0;e1;){if(r===e)return o;e>r&&(t=o),r>e&&(n=o),i=n-t,o=t+Math.floor(i/2),r=this.elements[o]}return r===e?o:-1},lunr.SortedSet.prototype.locationFor=function(e){for(var t=0,n=this.elements.length,i=n-t,o=t+Math.floor(i/2),r=this.elements[o];i>1;)e>r&&(t=o),r>e&&(n=o),i=n-t,o=t+Math.floor(i/2),r=this.elements[o];return r>e?o:e>r?o+1:void 0},lunr.SortedSet.prototype.intersect=function(e){for(var t=new lunr.SortedSet,n=0,i=0,o=this.length,r=e.length,s=this.elements,u=e.elements;;){if(n>o-1||i>r-1)break;s[n]!==u[i]?s[n]u[i]&&i++:(t.add(s[n]),n++,i++)}return t},lunr.SortedSet.prototype.clone=function(){var e=new lunr.SortedSet;return e.elements=this.toArray(),e.length=e.elements.length,e},lunr.SortedSet.prototype.union=function(e){var t,n,i;this.length>=e.length?(t=this,n=e):(t=e,n=this),i=t.clone();for(var o=0,r=n.toArray();o

                                                        \n"}, "ncepbufr.set_param": {"fullname": "ncepbufr.set_param", "modulename": "ncepbufr", "qualname": "set_param", "kind": "function", "doc": "

                                                        set BUFRLIB internal parameters controlling size limits.\nMust be done prior to opening a bufr file. Valid parameters are\nlisted in the docblock of the isetprm source file.

                                                        \n\n

                                                        The 'get_param' function can be used to obtain the current value of these\nparameters.

                                                        \n", "signature": "(key, value):", "funcdef": "def"}, "ncepbufr.get_param": {"fullname": "ncepbufr.get_param", "modulename": "ncepbufr", "qualname": "get_param", "kind": "function", "doc": "

                                                        get the values BUFRLIB internal parameters controlling size limits.\nsee 'set_param' docstring for allowable parameter names.

                                                        \n", "signature": "(key):", "funcdef": "def"}, "ncepbufr.set_missing_value": {"fullname": "ncepbufr.set_missing_value", "modulename": "ncepbufr", "qualname": "set_missing_value", "kind": "function", "doc": "

                                                        set bufr missing value.

                                                        \n", "signature": "(missing_value):", "funcdef": "def"}, "ncepbufr.get_missing_value": {"fullname": "ncepbufr.get_missing_value", "modulename": "ncepbufr", "qualname": "get_missing_value", "kind": "function", "doc": "

                                                        get bufr missing value.

                                                        \n", "signature": "():", "funcdef": "def"}, "ncepbufr.set_datelength": {"fullname": "ncepbufr.set_datelength", "modulename": "ncepbufr", "qualname": "set_datelength", "kind": "function", "doc": "

                                                        set number of digits for date specification (10 gives YYYYMMDDHH)

                                                        \n", "signature": "(charlen):", "funcdef": "def"}, "ncepbufr.open": {"fullname": "ncepbufr.open", "modulename": "ncepbufr", "qualname": "open", "kind": "class", "doc": "

                                                        bufr file object.

                                                        \n\n

                                                        ncepbufr.open.__init__ used to construct instance.

                                                        \n\n

                                                        ncepbufr.open.advance method can be used step through bufr messages.

                                                        \n"}, "ncepbufr.open.__init__": {"fullname": "ncepbufr.open.__init__", "modulename": "ncepbufr", "qualname": "open.__init__", "kind": "function", "doc": "

                                                        bufr object constructor

                                                        \n\n

                                                        filename: bufr file name.

                                                        \n\n

                                                        mode: 'r' for read, 'w' for write, 'a' for append (default\n'r').

                                                        \n\n

                                                        table: bufr table filename or ncepbufr.open instance.\nMust be specified for mode='w', optional for mode='r'.\nIf table is an existing ncepbufr.open instance, the table\nwill be shared. If not, it is assumed to be the filename of a bufr table.\nFor mode='r', bufr table embedded in file will be used if not specified.

                                                        \n", "signature": "(filename, mode='r', table=None)"}, "ncepbufr.open.lunit": {"fullname": "ncepbufr.open.lunit", "modulename": "ncepbufr", "qualname": "open.lunit", "kind": "variable", "doc": "

                                                        \n"}, "ncepbufr.open.filename": {"fullname": "ncepbufr.open.filename", "modulename": "ncepbufr", "qualname": "open.filename", "kind": "variable", "doc": "

                                                        bufr file opened with this fortran unit number

                                                        \n"}, "ncepbufr.open.msg_counter": {"fullname": "ncepbufr.open.msg_counter", "modulename": "ncepbufr", "qualname": "open.msg_counter", "kind": "variable", "doc": "

                                                        current bufr message number

                                                        \n"}, "ncepbufr.open.msg_type": {"fullname": "ncepbufr.open.msg_type", "modulename": "ncepbufr", "qualname": "open.msg_type", "kind": "variable", "doc": "

                                                        current bufr message type

                                                        \n"}, "ncepbufr.open.msg_date": {"fullname": "ncepbufr.open.msg_date", "modulename": "ncepbufr", "qualname": "open.msg_date", "kind": "variable", "doc": "

                                                        reference date for bufr message

                                                        \n"}, "ncepbufr.open.receipt_time": {"fullname": "ncepbufr.open.receipt_time", "modulename": "ncepbufr", "qualname": "open.receipt_time", "kind": "variable", "doc": "

                                                        tank receipt time for bufr message (YYYYMMDDHHMM), -1 if missing

                                                        \n"}, "ncepbufr.open.subsets": {"fullname": "ncepbufr.open.subsets", "modulename": "ncepbufr", "qualname": "open.subsets", "kind": "variable", "doc": "

                                                        number of subsets in the bufr message

                                                        \n"}, "ncepbufr.open.missing_value": {"fullname": "ncepbufr.open.missing_value", "modulename": "ncepbufr", "qualname": "open.missing_value", "kind": "variable", "doc": "

                                                        bufr missing value

                                                        \n"}, "ncepbufr.open.dump_table": {"fullname": "ncepbufr.open.dump_table", "modulename": "ncepbufr", "qualname": "open.dump_table", "kind": "function", "doc": "

                                                        dump embedded bufr table to a file

                                                        \n", "signature": "(self, filename):", "funcdef": "def"}, "ncepbufr.open.print_table": {"fullname": "ncepbufr.open.print_table", "modulename": "ncepbufr", "qualname": "open.print_table", "kind": "function", "doc": "

                                                        print embedded bufr table to stdout

                                                        \n", "signature": "(self):", "funcdef": "def"}, "ncepbufr.open.close": {"fullname": "ncepbufr.open.close", "modulename": "ncepbufr", "qualname": "open.close", "kind": "function", "doc": "

                                                        close the bufr file

                                                        \n", "signature": "(self):", "funcdef": "def"}, "ncepbufr.open.cmpmsg": {"fullname": "ncepbufr.open.cmpmsg", "modulename": "ncepbufr", "qualname": "open.cmpmsg", "kind": "function", "doc": "

                                                        compress the data in subsequent writes to the bufr file

                                                        \n", "signature": "(self, cmp):", "funcdef": "def"}, "ncepbufr.open.advance": {"fullname": "ncepbufr.open.advance", "modulename": "ncepbufr", "qualname": "open.advance", "kind": "function", "doc": "

                                                        advance to the next msg in the bufr file\nreturns 0 if advance was sucessful,\n1 if not (presumably because the end\nof the file was reached).

                                                        \n\n

                                                        The following attributes are set each time\nfile is advanced to the next message:

                                                        \n\n

                                                        msg_type: string describing type of message.

                                                        \n\n

                                                        msg_date: reference date (YYYYMMDDHH) for message.

                                                        \n\n

                                                        msg_counter: message number.

                                                        \n\n

                                                        receipt_time: bufr tank receipt time.

                                                        \n\n

                                                        subsets: number of subsets in the message.

                                                        \n\n

                                                        subset_loaded: Boolean indicating whether a subset has been\nloaded with ncepbufr.open.load_subset. Initialized to False.

                                                        \n\n

                                                        To loop through all the bufr messages in a file:

                                                        \n\n
                                                        :::python\n>>> bufr = ncepbufr.open(filename)\n>>> while bufr.advance() == 0:\n>>>     # processing code for each message here\n
                                                        \n", "signature": "(self):", "funcdef": "def"}, "ncepbufr.open.inventory": {"fullname": "ncepbufr.open.inventory", "modulename": "ncepbufr", "qualname": "open.inventory", "kind": "function", "doc": "

                                                        return a list containing an inventory of the bufr file.\nThe list contains a tuple for each message.\ncontaining (msg_type,msg_date,receipt_time,subsets).

                                                        \n", "signature": "(self):", "funcdef": "def"}, "ncepbufr.open.print_subset": {"fullname": "ncepbufr.open.print_subset", "modulename": "ncepbufr", "qualname": "open.print_subset", "kind": "function", "doc": "

                                                        print a textual representation of the decoded\ndata in the currently loaded subset.

                                                        \n\n

                                                        If verbose=True, more complete but harder to read info is written.

                                                        \n\n

                                                        ncepbufr.open.load_subset must be called before\ntrying to print the decoded subset using ncepbufr.open.print_subset.

                                                        \n", "signature": "(self, verbose=False):", "funcdef": "def"}, "ncepbufr.open.copy_subset": {"fullname": "ncepbufr.open.copy_subset", "modulename": "ncepbufr", "qualname": "open.copy_subset", "kind": "function", "doc": "

                                                        copy the currently loaded subset from the specified bufr file object\nand write to the current bufr message

                                                        \n", "signature": "(self, bufrin):", "funcdef": "def"}, "ncepbufr.open.dump_subset": {"fullname": "ncepbufr.open.dump_subset", "modulename": "ncepbufr", "qualname": "open.dump_subset", "kind": "function", "doc": "

                                                        dump a textual representation of the decoded\ndata in the currently loaded subset to a file.

                                                        \n\n

                                                        If append=True, append to an existing file\n(otherwise over-write file).

                                                        \n\n

                                                        If verbose=True, more complete but harder to read info is written.

                                                        \n\n

                                                        ncepbufr.open.load_subset must be called before\ntrying to print the decoded subset using ncepbufr.open.dump_subset.

                                                        \n", "signature": "(self, filename, append=False, verbose=False):", "funcdef": "def"}, "ncepbufr.open.get_program_code": {"fullname": "ncepbufr.open.get_program_code", "modulename": "ncepbufr", "qualname": "open.get_program_code", "kind": "function", "doc": "

                                                        return prepbufr event program code\nassociated with specified mnemonic\n(see src/ufbqcd.f for more details)

                                                        \n", "signature": "(self, mnemonic):", "funcdef": "def"}, "ncepbufr.open.get_flag_table_bits": {"fullname": "ncepbufr.open.get_flag_table_bits", "modulename": "ncepbufr", "qualname": "open.get_flag_table_bits", "kind": "function", "doc": "

                                                        return bit settings associated with\na specifed value and flag table mnemonic\n(see src/upftbv.f for more details)

                                                        \n", "signature": "(self, mnemonic, val):", "funcdef": "def"}, "ncepbufr.open.checkpoint": {"fullname": "ncepbufr.open.checkpoint", "modulename": "ncepbufr", "qualname": "open.checkpoint", "kind": "function", "doc": "

                                                        mark where we are in the bufr file,\nand rewind the file.\nThe ncepbufr.open.restore method can then be\nused to go back to this state.

                                                        \n", "signature": "(self):", "funcdef": "def"}, "ncepbufr.open.rewind": {"fullname": "ncepbufr.open.rewind", "modulename": "ncepbufr", "qualname": "open.rewind", "kind": "function", "doc": "

                                                        rewind the bufr file (same as ncepbufr.open.checkpoint).

                                                        \n", "signature": "(self):", "funcdef": "def"}, "ncepbufr.open.restore": {"fullname": "ncepbufr.open.restore", "modulename": "ncepbufr", "qualname": "open.restore", "kind": "function", "doc": "

                                                        restore the state of the bufr\nfile that recorded by a previous call\nto ncepbufr.open.checkpoint.

                                                        \n", "signature": "(self):", "funcdef": "def"}, "ncepbufr.open.open_message": {"fullname": "ncepbufr.open.open_message", "modulename": "ncepbufr", "qualname": "open.open_message", "kind": "function", "doc": "

                                                        open new bufr message.

                                                        \n\n

                                                        Mandatory arguments:

                                                        \n\n

                                                        msg_type: string describing type of message.

                                                        \n\n

                                                        msg_date: reference date (e.g. YYYYMMDDHH) for message. The\nnumber of digits in the reference date is controlled by\nmodule function set_datelength, and is 10 by default.

                                                        \n\n

                                                        msg_receipt_time bufr tank receipt time YYYYMMDDHHMM (optional).

                                                        \n", "signature": "(self, msg_type, msg_date, msg_receipt_time=None):", "funcdef": "def"}, "ncepbufr.open.copy_message": {"fullname": "ncepbufr.open.copy_message", "modulename": "ncepbufr", "qualname": "open.copy_message", "kind": "function", "doc": "

                                                        copy the currently loaded message from the specified bufr file object\nand write to the file

                                                        \n", "signature": "(self, bufrin):", "funcdef": "def"}, "ncepbufr.open.close_message": {"fullname": "ncepbufr.open.close_message", "modulename": "ncepbufr", "qualname": "open.close_message", "kind": "function", "doc": "

                                                        close bufr message

                                                        \n", "signature": "(self):", "funcdef": "def"}, "ncepbufr.open.load_subset": {"fullname": "ncepbufr.open.load_subset", "modulename": "ncepbufr", "qualname": "open.load_subset", "kind": "function", "doc": "

                                                        load subset data from the current message\n(must be called before ncepbufr.open.read_subset).\nTo loop through all messages in a file, and\nall subsets in each message:

                                                        \n\n
                                                        :::python\n>>> bufr = ncepbufr.open(filename)\n>>> while bufr.advance() == 0:\n>>>     while bufr.load_subset() == 0:\n>>>         # processing code for each subset here\n
                                                        \n", "signature": "(self):", "funcdef": "def"}, "ncepbufr.open.read_long_string": {"fullname": "ncepbufr.open.read_long_string", "modulename": "ncepbufr", "qualname": "open.read_long_string", "kind": "function", "doc": "

                                                        Decode character string from the currently loaded message subset\nusing the specified mnemonic (a 'mnemonic' is simply a\ndescriptive, alphanumeric name for a data value, like\na key in a python dictionary). The mnemonic string\nmust be a single mnemonic only. If the subset contains more \nthan one occurrence of the mnemonic, then can append '#X' to \nthe mnemonic to request the character string corresponding to \nthe Xth occurrence of the mnemonic, counting from the beginning \nof the subset. Otherwise, X is assumed to be 1.

                                                        \n\n

                                                        Returns the character string, if found, or \"MISSING\" if not.

                                                        \n\n

                                                        Example:

                                                        \n\n
                                                        :::python\n>>> bufr = ncepbufr.open(filename)\n>>> while bufr.advance() == 0:\n>>>     while bufr.load_subset() == 0:\n>>>         st_name = bufr.read_long_string(mnemonic='STSN')\n
                                                        \n", "signature": "(self, mnemonic):", "funcdef": "def"}, "ncepbufr.open.read_subset": {"fullname": "ncepbufr.open.read_subset", "modulename": "ncepbufr", "qualname": "open.read_subset", "kind": "function", "doc": "

                                                        decode the data from the currently loaded message subset\nusing the specified mnemonics (a 'mnemonic' is simply a\ndescriptive, alphanumeric name for a data value, like\na key in a python dictionary). The mnemonics string\nmay contain multiple space delimited mnemonics\n(e.g. mnemonics='MNEMONIC1 MNEMONIC2 MNEMONIC3').

                                                        \n\n

                                                        By default, the mnemonics are assumed to be part of a delayed\nreplication sequence, or have no replication at all, and ufbint\nis used to read the data.

                                                        \n\n

                                                        ncepbufr.open.load_subset must be called before\ntrying to decode a subset using ncepbufr.open.read_subset.

                                                        \n\n

                                                        if rep = True, ufbrep is used to read data represented\na regular replication sequence. See the comments in src/ufbrep.f for\nmore details. Used for radiance data.

                                                        \n\n

                                                        if seq=True, ufbseq is used to read data represented by\na sequence mnemonic. Used for gps data.

                                                        \n\n

                                                        if events=True, ufbevn is used to read prepbufr\n\"events\", and a 3-d array is returned.

                                                        \n\n

                                                        Only one of seq, rep and events can be True.

                                                        \n\n

                                                        returns a numpy masked array with decoded values\n(missing values are masked).\nThe shape of the array is (nm,nlevs), where\nwhere nm is the number of elements in the specified\nmnemonics string, and nlevs is the number of levels in the report.\nIf events=True, a 3rd dimension representing the prepbufr\nevent codes is added.

                                                        \n", "signature": "(self, mnemonics, rep=False, seq=False, events=False):", "funcdef": "def"}, "ncepbufr.open.write_subset": {"fullname": "ncepbufr.open.write_subset", "modulename": "ncepbufr", "qualname": "open.write_subset", "kind": "function", "doc": "

                                                        write data to message subset using the specified mnemonics\n(a 'mnemonic' is simply a descriptive, alphanumeric name for a\ndata value, like a key in a python dictionary). The mnemonics string\nmay contain multiple space delimited mnemonics\n(e.g. mnemonics='MNEMONIC1 MNEMONIC2 MNEMONIC3').

                                                        \n\n

                                                        By default, the mnemonics are assumed to be part of a delayed\nreplication sequence, or have no replication at all, and ufbint\nis used to write the data.

                                                        \n\n

                                                        if rep = True, ufbrep is used to write data represented\na regular replication sequence. See the comments in src/ufbrep.f for\nmore details. Used for radiance data.

                                                        \n\n

                                                        if seq=True, ufbseq is used to write data represented by\na sequence mnemonic. Used for gps data.

                                                        \n\n

                                                        if events=True, ufbevn is used to write prepbufr\n\"events\" (a 3-d data array is required)

                                                        \n\n

                                                        Only one of seq, rep and events can be True.

                                                        \n\n

                                                        If end=True, the message subset is closed and written\nto the bufr file (default False).

                                                        \n", "signature": "(self, data, mnemonics, rep=False, seq=False, events=False, end=False):", "funcdef": "def"}, "ncepbufr.bufr_mnemonics": {"fullname": "ncepbufr.bufr_mnemonics", "modulename": "ncepbufr.bufr_mnemonics", "kind": "module", "doc": "

                                                        \n"}, "ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"fullname": "ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict", "modulename": "ncepbufr.bufr_mnemonics", "qualname": "prepbufr_mnemonics_dict", "kind": "variable", "doc": "

                                                        dictionary mapping prepbufr mnemonics to human readable descriptions

                                                        \n", "default_value": "{'PW2Q': '0.9 TO 0.7 SIGMA LAYER PRECIP. WATER (QUALITY) MARKER', 'PW2P': '0.9 TO 0.7 SIGMA LAYER PRECIP. WATER EVENT PROGRAM CODE', 'T__EVENT': 'TEMPERATURE EVENT SEQUENCE', 'PW2R': '0.9 TO 0.7 SIGMA LAYER PRECIP. WATER EVENT REASON CODE', 'T__POSTP': 'TEMPERATURE POSTPROCESSING SEQUENCE', 'PW2A': 'ANALYZED 0.9 TO 0.7 SIGMA LAYER PRECIP. WATER VALUE', 'WFC__MSQ': 'MODEL WIND FORECAST SEQUENCE', 'TP24': 'TOTAL PRECIPITATION PAST 24 HOURS', 'YCOR': "INDICATOR WHETHER LAT IN'YOB' WAS CORRECTED FRM'YORG'", 'PW2E': '0.9 TO 0.7 SIGMA LAYER PRECIP. WATER OBSERVATION ERROR', 'PREWXSEQ': 'PRESENT WEATHER SEQUENCE', 'XCOR': "INDICATOR WHETHER LON IN'XOB' WAS CORRECTED FRM'XORG'", 'PW2O': '0.9 TO 0.7 SIGMA LAYER PRECIPITABLE WATER OBSERVATION', 'PW3EVENT': '0.7 TO 0.3 PRECIPITABLE WATER EVENT SEQUENCE', 'UAN': 'ANALYZED U-COMPONENT WIND VALUE', 'TAN': 'ANALYZED TEMPERATURE VALUE', 'MSST': 'METHOD OF SEA SURFACE TEMPERATURE MEASUREMENT', 'VAN': 'ANALYZED V-COMPONENT WIND VALUE', 'WRC': 'U-, V-COMPONENT WIND (UOB/VOB) EVENT REASON CODE', 'SFCSHP': 'SURFACE MARINE (SHIP, BUOY, C-MAN PLATFORM) REPORTS', 'ADPUPA': 'UPPER-AIR (RAOB, PIBAL, RECCO, DROPS) REPORTS', 'DF_EVENT': 'WIND (DIRECTION/SPEED) EVENT SEQUENCE', 'TURB3SEQ': 'TURBULENCE SEQUENCE # 3', 'QQM': 'SPECIFIC HUMIDITY (QUALITY) MARKER', 'E1': 'ERS ERROR ESTIMATE NUMBER 1', 'SPSSMI': 'SSM/I RETRIEVAL PRODUCTS (REPROCESSED WIND SPEED, TPW)', 'PQM': 'PRESSURE (QUALITY) MARKER', 'CLOUDSEQ': 'OBSERVED CLOUD SEQUENCE # 1', 'SNOW_SEQ': 'SNOW DEPTH SEQUENCE', 'ZQM': 'HEIGHT (QUALITY) MARKER', 'CTCN': 'CROSS TRACK CELL NUMBER (QUIKSCAT & ASCAT REPORTS ONLY)', 'ACID_SEQ': 'AIRCRAFT FLIGHT NUMBER SEQUENCE', 'TFC__MSQ': 'MODEL TEMPERATURE FORECAST SEQUENCE', 'QFC__MSQ': 'MODEL SPECIFIC HUMIDITY FORECAST SEQUENCE', 'PCS': 'STANDARD DEVIATION OF CLIMATOLOGICAL PRESSURE VALUE', 'SID': 'STATION IDENTIFICATION', 'TSB': 'REPORT SUBTYPE (HAS VARIOUS MEANINGS DEPENDING ON TYPE)', 'UOB': 'U-COMPONENT WIND OBSERVATION (M/S)', 'PCL': 'CLIMATOLOGICAL PRESSURE VALUE', 'VADWND': 'VAD (NEXRAD) WIND REPORTS', 'TOPC': 'TOTAL PRECIPITATION/TOTAL WATER EQUIVALENT', 'SST_INFO': 'SEA TEMPERATURE INFORMATION', 'PREVENT': 'PRE-EVENTS BACKGROUND/OBSERVATION ERROR PROCESSING STEP', 'GUST1SEQ': 'MAXIMUM WIND GUST SEQUENCE # 1', 'RF10M': '10 METER WIND REDUCTION FACTOR', 'PAN': 'ANALYZED PRESSURE VALUE', 'ELEV': 'SATELLITE ELEVATION (ZENITH ANGLE)', 'TMXMNSEQ': 'MAXIMUM/MINIMUM TEMPERATURE SEQUENCE', 'CTPQM': 'CLOUD TOP PRESSURE (QUALITY) MARKER', 'MSTQ': 'MOISTURE QUALITY', 'PCLIMATO': 'PRESSURE CLIMATOLOGY SEQUENCE', 'SAID': 'SATELLITE IDENTIFIER (SATELLITE REPORTS ONLY)', 'MWD10': 'MODEL WIND DIRECTION AT 10 M', 'CQCVAD': 'VAD WIND QUALITY CONTROL STEP', 'PW1F_MSQ': 'MODEL 1.0 TO 0.9 SIGMA LAYER PRECIP WATER FORECAST SEQ.', 'SOEL': 'SOLAR ELEVATION (ZENITH ANGLE)', 'ALTIMSEQ': 'ALTIMETER SETTING SEQUENCE', 'SSTRC': 'SEA TEMPERATURE EVENT REASON CODE', 'S3': 'ERS BACKSCATTER NUMBER 3', 'S2': 'ERS BACKSCATTER NUMBER 2', 'S1': 'ERS BACKSCATTER NUMBER 1', 'IALR': 'INSTANTANEOUS ALTITUDE RATE', 'RADCOR': 'RAWINSONDE HEIGHT/TEMP INTERSONDE(RADIATION) CORR. STEP', 'ACID': 'AIRCRAFT FLIGHT NUMBER', 'RRTBACKG': 'RAIN RATE BACKGROUND SEQUENCE', 'ERS1DA': 'ERS SCATTEROMETER DATA (REPROCESSED WIND SPEED)', 'CLAM': 'CLOUD AMOUNT', 'POWV': 'PERIOD OF WAVES', 'POWW': 'PERIOD OF WIND WAVES', 'RCT': 'RECEIPT TIME', 'BTMPINFO': 'TOVS OR GOES BRIGHTNESS TEMPERATURE INFORMATION', 'DFQ': 'WIND DIRECTION/SPEED (DDO/FFO) (QUALITY) MARKER', 'DFP': 'WIND DIRECTION/SPEED (DDO/FFO) EVENT PROGRAM CODE', 'DFR': 'WIND DIRECTION/SPEED (DDO/FFO) EVENT REASON CODE', 'HOSW': 'HEIGHT OF SWELL WAVES', 'SYNDAT': 'SYNTHETIC TROPICAL CYCLONE BOGUS REPORTS', 'PW4FMOD': 'MODEL .3-0. SIG. LYR PWATER FCST(GLOBAL MODEL SEE PW4F)', 'DGOT': 'DEGREE OF TURBULENCE', 'PW1FMOD': 'MODEL 1.-.9 SIG. LYR PWATER FCST(GLOBAL MODEL SEE PW1F)', 'UFCMOD': 'MODEL U-COMPONENT FORECAST VALUE (GLOBAL MODEL SEE UFC)', 'MRWVC': 'MWR WATER VAPOR CONTENT (TOTAL WATER VAPOR)', 'TRBX32': 'TURBULENCE INDEX FOR PERIOD (TOB-3 MIN) -> (TOB-2 MIN)', 'WQM': 'U-, V-COMPONENT WIND (UOB/VOB) (QUALITY) MARKER', 'PW4F_MSQ': 'MODEL 0.3 TO 0.0 SIGMA LAYER PRECIP WATER FORECAST SEQ.', 'PW2F': 'FCST(BACKGRND) 0.9 TO 0.7 SIGMA LYR PRECIP. WATER VALUE', 'GPSIPW': 'GLOBAL POSITIONING SATELLITE-INTEGRATED PRECIP. WATER', 'QOETU': 'ANALYSIS-TUNED RELATIVE HUMIDITY OBSERVATION ERROR', 'CAT': 'PREPBUFR DATA LEVEL CATEGORY', 'MITM': 'MINIMUM TEMPERATURE', 'ACARSQC': 'MDCRS ACARS AIRCRAFT QUALITY CONTROL STEP', 'TOB': 'TEMPERATURE OBSERVATION (DEGREES C)', 'TOE': 'TEMPERATURE OBSERVATION ERROR (DEGREES C)', 'RRTPC': 'RAINFALL (AVERAGE RATE) EVENT PROGRAM CODE', 'BSCD': 'BACKSCATTER DISTANCE (ASCAT REPORTS ONLY)', 'PW1O': '1.0 TO 0.9 SIGMA LAYER PRECIPITABLE WATER OBSERVATION', 'PW1A': 'ANALYZED 1.0 TO 0.9 SIGMA LAYER PRECIP. WATER VALUE', 'PFCMOD': 'MODEL PRESSURE FORECAST VALUE (GLOBAL MODEL SEE PFC)', 'PW1F': 'FCST(BACKGRND) 1.0 TO 0.9 SIGMA LYR PRECIP. WATER VALUE', 'HOCT_SEQ': 'HEIGHT OF TOP OF CLOUD SEQUENCE', 'SOB': 'WIND SPEED OBSERVATION', 'XOB': 'LONGITUDE (DEG E)', 'PW1P': '1.0 TO 0.9 SIGMA LAYER PRECIP. WATER EVENT PROGRAM CODE', 'PW1Q': '1.0 TO 0.9 SIGMA LAYER PRECIP. WATER (QUALITY) MARKER', 'PW1R': '1.0 TO 0.9 SIGMA LAYER PRECIP. WATER EVENT REASON CODE', 'PWETU': 'ANALYSIS-TUNED TOTAL PRECIPITABLE WATER OBS ERROR', 'TP12_SEQ': 'TOTAL PRECIPITATION PAST 12 HOURS SEQUENCE', 'PKWDDR': 'PEAK WIND DIRECTION', 'CHPT': 'CHARACTERISTIC OF PRESSURE TENDENCY', 'TFC': 'FORECAST (BACKGROUND) TEMPERATURE VALUE', 'TURB1SEQ': 'TURBULENCE SEQUENCE # 1', 'PW2_INFO': '0.9 TO 0.7 SIGMA LAYER PRECIPITABLE WATER INFORMATION', 'EXPRSRD': 'EXPIRATION OF RESTRICTIONS ON REDISTRIBUTION', 'VFC': 'FORECAST (BACKGROUND) V-COMPONENT WIND VALUE', 'CTPOE': 'CLOUD TOP PRESSURE OBSERVATION ERROR', 'PW1POSTP': '1.0 TO 0.9 SIGMA LAYER PRECIP WATER POSTPROCESSING SEQ.', 'WOETU': 'ANALYSIS-TUNED WIND OBSERVATION ERROR', 'PRC': 'PRESSURE EVENT REASON CODE', 'QPC': 'SPECIFIC HUMIDITY EVENT PROGRAM CODE', 'P__POSTP': 'PRESSURE POSTPROCESSING SEQUENCE', 'ADPSFC': 'SURFACE LAND (SYNOPTIC, METAR) REPORTS', 'ZFC__MSQ': 'MODEL HEIGHT FORECAST SEQUENCE', 'CTPFC': 'FORECAST (BACKGROUND) CLOUD TOP PRESSURE VALUE', 'TPC': 'TEMPERATURE EVENT PROGRAM CODE', 'RFFL': 'PERCENT CONFIDENCE BASED ON NESDIS RECURSIVE FILTER FCN', 'PSW2': 'PAST WEATHER (2)', 'PSW1': 'PAST WEATHER (1)', 'NRLACQC': 'NRL AIRCRAFT QUALITY CONTROL STEP', 'CTPEVENT': 'CLOUD TOP PRESSURE EVENT SEQUENCE', 'PW2POSTP': '0.9 TO 0.7 SIGMA LAYER PRECIP WATER POSTPROCESSING SEQ.', 'PW1EVENT': '1.0 TO 0.9 PRECIPITABLE WATER EVENT SEQUENCE', 'VISB2SEQ': 'VISIBILITY SEQUENCE # 2', 'HOVI': 'HORIZONTAL VISIBILITY (M)', 'POAF': 'PHASE OF AIRCRAFT FLIGHT', 'GUST2SEQ': 'MAXIMUM WIND GUST SEQUENCE # 2', 'TYP': 'PREPBUFR REPORT TYPE', 'PW4F': 'FCST(BACKGRND) 0.3 TO 0.0 SIGMA LYR PRECIP. WATER VALUE', 'PW4E': '0.3 TO 0.0 SIGMA LAYER PRECIP. WATER OBSERVATION ERROR', 'HEADR': 'REPORT HEADER SEQUENCE', 'PW4A': 'ANALYZED 0.3 TO 0.0 SIGMA LAYER PRECIP. WATER VALUE', 'PW4O': '0.3 TO 0.0 SIGMA LAYER PRECIPITABLE WATER OBSERVATION', 'CTPPC': 'CLOUD TOP PRESSURE EVENT PROGRAM CODE', 'PW4R': '0.3 TO 0.0 SIGMA LAYER PRECIP. WATER EVENT REASON CODE', 'PW4Q': '0.3 TO 0.0 SIGMA LAYER PRECIP. WATER (QUALITY) MARKER', 'PW4P': '0.3 TO 0.0 SIGMA LAYER PRECIP. WATER EVENT PROGRAM CODE', 'FFO': 'WIND SPEED OBSERVATION (NOT ASSIMILATED)', 'ASMP': 'AVG SPD OF SHIP DURING PAST 3 HOURS', 'CHSQ': 'CHI-SQUARED (OF THE WIND VECTOR RETRIEVAL)', 'QOE': 'RELATIVE HUMIDITY OBSERVATION ERROR (PERCENT DIVIDED BY 10)', 'SFCBOG': 'MEAN SEA-LEVEL PRESSURE BOGUS REPORTS', 'QOB': 'SPECIFIC HUMIDITY OBSERVATION (MG/KG)', 'PW3POSTP': '0.7 TO 0.3 SIGMA LAYER PRECIP WATER POSTPROCESSING SEQ.', 'E3': 'ERS ERROR ESTIMATE NUMBER 3', 'E2': 'ERS ERROR ESTIMATE NUMBER 2', 'PKWDSP': 'PEAK WIND SPEED', 'ESBAK': 'FORECAST(BACKGROUND) SATURATION SPECIFIC HUMIDITY VALUE', 'SATWND': 'SATELLITE-DERIVED WIND REPORTS', 'PW1E': '1.0 TO 0.9 SIGMA LAYER PRECIP. WATER OBSERVATION ERROR', 'TOETU': 'ANALYSIS-TUNED TEMPERATURE OBSERVATION ERROR', 'PHER': 'EST. ERROR COVARIANCE FOR WIND DIRECTION RETRIEVAL', 'WCLIMATO': 'WIND CLIMATOLOGY SEQUENCE', 'WOE': 'WIND OBSERVATION ERROR (M/S)', 'POSW': 'PERIOD OF SWELL WAVES', 'SCATINFO': 'SCATTEROMETER DATA INFORMATION', 'CLDE': 'EST. ERROR COVARIANCE FOR TOTAL CLD LIQUID WATER RETR.', 'RRTPOSTP': 'RAIN RATE POSTPROCESSING SEQUENCE', 'SSI': 'SSI GLOBAL ANALYSIS STEP', 'ZRC': 'HEIGHT EVENT REASON CODE', 'PW2FMOD': 'MODEL .9-.7 SIG. LYR PWATER FCST(GLOBAL MODEL SEE PW2F)', 'Z___INFO': 'HEIGHT INFORMATION', 'RASSDA': 'RADIO ACOUSTIC SOUNDING SYSTEM (RASS) TEMP PROFILE RPTS', 'PTE24SEQ': '24 HOUR PRESSURE TENDENCY SEQUENCE', 'RRTFC': 'FORECAST (BACKGROUND) RAINFALL (AVERAGE RATE) VALUE', 'HRDR': 'PROFILE LVL TIME-CYCLE (FOR RAOB/PIBAL, BASED ON B DFT, HOURS)', 'ACFT_SEQ': 'AIRCRAFT SUPPLEMENTARY DATA SEQUENCE', 'POETU': 'ANALYSIS-TUNED PRESSURE OBSERVATION ERROR', 'P__BACKG': 'PRESSURE BACKGROUND SEQUENCE', 'NUL': 'NULL (IGNORE)', 'RRTOE': 'RAINFALL (AVERAGE RATE) OBSERVATION ERROR', 'TDMP': 'TRUE DIRECTION OF SHIP DURING PAST 3 HOURS', 'WPC': 'U-, V-COMPONENT WIND (UOB/VOB) EVENT PROGRAM CODE', 'TOSS': 'TOTAL SUNSHINE', 'CDTP': 'CLOUD TOP PRESSURE OBSERVATION', 'W__EVENT': 'WIND EVENT SEQUENCE', 'CLIMO': 'CLIMOTOLOGICAL PROCESSING STEP', 'XS20': '20 METER EXTRAPOLATED WIND SPEED', 'TOSD': 'TOTAL SNOW DEPTH', 'QFC': 'FORECAST (BACKGROUND) SPECIFIC HUMIDITY VALUE', 'PREPRO': 'INITIAL PREPBUFR PROCESSING STEP', 'SYNDATA': 'SYNTHETIC TROPICAL CYCLONE BOGUS PROCESSING STEP', 'PKWNDSEQ': 'PEAK WIND SEQUENCE', 'ITP': 'INSTRUMENT TYPE', 'Q__POSTP': 'SPECIFIC HUMIDITY POSTPROCESSING SEQUENCE', 'PWTVWTA': 'ANAL VARIAT. QC WGHT ON TOT PREC. WTR OBS BASED ON ANAL', 'TCLIMATO': 'TEMPERATURE CLIMATOLOGY SEQUENCE', 'PWTVWTG': 'ANAL VARIAT. QC WGHT ON TOT PREC. WTR OBS BASED ON GESS', 'RPT': 'REPORTED OBSERVATION TIME', 'TP01': 'TOTAL PRECIPITATION PAST 1 HOUR', 'TP03': 'TOTAL PRECIPITATION PAST 3 HOURS', 'VTVI_SEQ': 'VERTICAL VISIBILITY SEQUENCE', 'TP06': 'TOTAL PRECIPITATION PAST 6 HOURS', 'POE': 'PRESSURE OBSERVATION ERROR (MB)', 'POB': 'PRESSURE OBSERVATION (MB)', 'PW2BACKG': '0.9 TO 0.7 SIGMA LAYER PRECIP WATER BACKGROUND SEQUENCE', 'TURB2SEQ': 'TURBULENCE SEQUENCE # 2', 'PW__INFO': 'PRECIPITABLE WATER INFORMATION', 'PWA': 'ANALYZED TOTAL PRECIPITABLE WATER VALUE', 'VCL': 'CLIMATOLOGICAL V-COMPONENT WIND VALUE', 'VCS': 'STANDARD DEVIATION OF CLIMATOLOGICAL V-COMP WIND VALUE', 'SSTQM': 'SEA TEMPERATURE (QUALITY) MARKER', 'DHR': 'OBSERVATION TIME MINUS CYCLE TIME (HOURS)', 'VIRTMP': 'VIRTUAL TEMPERATURE/SPECIFIC HUMIDITY PROCESSING STEP', '24PC': '24 HOUR PRESSURE CHANGE', 'PVWTG': 'ANAL VARIATIONAL QC WEIGHT ON PRESS. OBS BASED ON GUESS', 'PVWTA': 'ANAL VARIATIONAL QC WEIGHT ON PRESS. OBS BASED ON ANAL', 'ROLF': 'AIRCRAFT ROLL ANGLE FLAG', 'TQM': 'TEMPERATURE (QUALITY) MARKER', 'AIRCFT': 'AIREP, PIREP, AMDAR, TAMDAR AIRCRAFT REPORTS', 'HBOI': 'HEIGHT OF BASE OF ICING', 'PRSLEVEL': 'PRESSURE LEVEL SEQUENCE (ALL TYPES EXCEPT GOESND)', 'LATCORSQ': 'LATITUDE CORRECTION SEQUENCE', 'HBOT': 'HEIGHT OF BASE OF TURBULENCE', 'ZFC': 'FORECAST (BACKGROUND) HEIGHT VALUE', 'QAN': 'ANALYZED SPECIFIC HUMIDITY VALUE', 'Q___INFO': 'SPECIFIC HUMIDITY INFORMATION', 'QIFY': 'PERCENT CONFIDENCE BASED ON EUMETSAT QUAL INDX W/ FCST', 'P___INFO': 'PRESSURE INFORMATION', 'SSTFC': 'FORECAST (BACKGROUND) SEA TEMPERATURE VALUE', 'QIFN': 'PERCENT CONFIDENCE BASED ON EUMETSAT QUAL INDX W/O FCST', 'TPRECSEQ': 'TOTAL PRECIPITATION SEQUENCE', 'Z__POSTP': 'HEIGHT POSTPROCESSING SEQUENCE', 'QRC': 'SPECIFIC HUMIDITY EVENT REASON CODE', 'PTENDSEQ': 'PRESSURE TENDENCY SEQUENCE', 'XWSPDSEQ': 'EXTRAPOLATED WIND SPEED SEQUENCE', 'ZAN': 'ANALYZED HEIGHT VALUE', 'RRTQM': 'RAINFALL (AVERAGE RATE) (QUALITY) MARKER', 'PROFLR': 'WIND PROFILER REPORTS', 'PWTPOSTP': 'TOTAL PRECIPITABLE WATER POSTPROCESSING SEQUENCE', 'CHNM': 'CHANNEL NUMBER', 'CTP_INFO': 'CLOUD TOP INFORMATION', 'SSTAN': 'ANALYZED SEA TEMPERATURE VALUE', 'PW3BACKG': '0.7 TO 0.3 SIGMA LAYER PRECIP WATER BACKGROUND SEQUENCE', 'HOCT': 'HEIGHT OF TOP OF CLOUD', 'SUNSHSEQ': 'TOTAL SUNSHINE SEQUENCE', 'PRWE': 'PRESENT WEATHER', 'XS10': '10 METER EXTRAPOLATED WIND SPEED', 'NRLQMS': 'NRL AIRCRAFT QUALITY CNTRL MARK (ADDED BY PGM NRLACQC)', 'PWF__MSQ': 'MODEL TOTAL PRECIPITABLE WATER FORECAST SEQUENCE', 'Q__EVENT': 'SPECIFIC HUMIDITY EVENT SEQUENCE', 'TCS': 'STANDARD DEVIATION OF CLIMATOLOGICAL TEMPERATURE VALUE', 'TCL': 'CLIMATOLOGICAL TEMPERATURE VALUE', 'W__BACKG': 'WIND BACKGROUND SEQUENCE', 'XDR': 'PROFILE LEVEL LON (FOR RAOB/PIBAL BASED ON BALLOON DFT, DEG E)', 'DOFS': 'DEPTH OF FRESH SNOW', 'PFC__MSQ': 'MODEL PRESSURE FORECAST SEQUENCE', 'SIRC': 'RAWINSONDE SOLAR & INFRARED RADIATION CORR. INDICATOR', 'ZOB': 'HEIGHT OBSERVATION (M)', 'ZOE': 'HEIGHT OBSERVATION ERROR (M)', 'RSRD_SEQ': 'RESTRICTIONS ON REDISTRIBUTION SEQUENCE', 'SATEMP': 'TOVS SATELLITE DATA (SOUNDINGS, RETRIEVALS, RADIANCES)', 'SSTOE': 'SEA TEMPERATURE OBSERVATION ERROR', 'DDO': 'WIND DIRECTION OBSERVATION (NOT ASSIMILATED)', 'SSTPOSTP': 'SEA TEMPERATURE POSTPROCESSING SEQUENCE', 'AFIC_SEQ': 'AIRCRAFT ICING SEQUENCE', 'PCCF_SEQ': 'SATELLITE WIND PERCENT CONFIDENCE SEQUENCE', 'CTPPOSTP': 'CLOUD TOP PRESSURE POSTPROCESSING SEQUENCE', 'WSPD1': 'SURFACE WIND SPEED', 'TRBX10': 'TURBULENCE INDEX FOR PERIOD (TOB-1 MIN) -> TOB', 'SPRR': 'SEAWINDS PROBABILITY OF RAIN (QUIKSCAT REPORTS ONLY)', 'LKCS': 'LIKELIHOOD COMPUTED FOR SOLUTION (ASCAT REPORTS ONLY)', 'PRSLEVLG': 'GOESND PRESSURE LEVEL SEQUENCE', 'OZON': 'OZONE', 'CTPAN': 'ANALYZED CLOUD TOP PRESSURE VALUE', 'R3DVAR': '3DVAR REGIONAL ANALYSIS STEP', 'Z__EVENT': 'HEIGHT EVENT SEQUENCE', 'PWFMOD': 'MODEL TOTAL PWATER FORECAST VALUE(GLOBAL MODEL SEE PWC)', 'ASCATW': 'ASCAT SCATTEROMETER DATA (REPROCESSED)', 'MRLWC': 'MWR LIQUID WATER CONTENT (TOTAL CLOUD LIQUID WATER)', 'VISB1SEQ': 'VISIBILITY SEQUENCE # 1', 'PW4_INFO': '0.3 TO 0.0 SIGMA LAYER PRECIPITABLE WATER INFORMATION', 'TMBR': 'BRIGHTNESS TEMPERATURE (KELVIN)', 'MXGD': 'MAXIMUM WIND GUST DIRECTION', 'EEQF': 'PERCENT CONFIDENCE BASED ON NESDIS EXPECTED ERROR', 'TVO': 'NON-Q. CONTROLLED VIRTUAL TEMP OBS (NOT ASSIMILATED)', 'MXGS': 'MAXIMUM WIND SPEED (GUSTS, M/S)', 'P__EVENT': 'PRESSURE EVENT SEQUENCE', 'WDSATR': 'WINDSAT SCATTEROMETER DATA (REPROCESSED)', 'REQV': 'RAINFALL (AVERAGE RATE) OBSERVATION', 'QFCMOD': 'MODEL S. HUMIDITY FORECAST VALUE (GLOBAL MODEL SEE QFC)', 'ATRN': 'ALONG TRACK ROW NUMBER (QUIKSCAT REPORTS ONLY)', 'WDIR1': 'SURFACE WIND DIRECTION', 'LONCORSQ': 'LONGITUDE CORRECTION SEQUENCE', 'XORG': 'REPORTED (ORIGINAL) LONGITUDE', 'RRTEVENT': 'RATE RATE EVENT SEQUENCE', 'YORG': 'REPORTED (ORIGINAL) LATITUDE', 'MWS10': 'MODEL WIND SPEED AT 10 M', 'TDO': 'DEWPOINT TEMPERATURE OBSERVATION (NOT ASSIMILATED, DEGREES C)', 'YDR': 'PROFILE LEVEL LAT (FOR RAOB/PIBAL BASED ON BALLOON DFT, DEG N)', 'UFC': 'FORECAST (BACKGROUND) U-COMPONENT WIND VALUE', 'W__POSTP': 'WIND POSTPROCESSING SEQUENCE', 'SWINDSEQ': 'SURFACE WIND SEQUENCE', 'PRSS': 'SURFACE PRESSURE OBSERVATION (PASCALS)', 'SSTPC': 'SEA TEMPERATURE EVENT PROGRAM CODE', 'WSPD_SEQ': 'WIND SPEED SEQUENCE', 'VFCMOD': 'MODEL V-COMPONENT FORECAST VALUE (GLOBAL MODEL SEE VFC)', 'AFIC': 'AIRFRAME ICING', 'WSEQC1': 'WINDSAT EDR QC FLAG #1', 'DOSW': 'DIRECTION OF SWELL WAVES', 'PPC': 'PRESSURE EVENT PROGRAM CODE', 'PWTBACKG': 'TOTAL PRECIPITABLE WATER BACKGROUND SEQUENCE', 'VPRE': 'EST. ERROR COVARIANCE FOR TOTAL WATER VAPOR RETRIEVAL', 'PWL_INFO': 'LAYER PRECIPITABLE WATER INFORMATION', 'TVWTA': 'ANAL VARIATIONAL QC WEIGHT ON TEMP. OBS BASED ON ANAL', 'PRSLEVLA': 'AIRCRAFT (AIRCFT/AIRCAR) PRESSURE LEVEL SEQUENCE', 'HTOI': 'HEIGHT OF TOP OF ICING', 'YOB': 'LATITUDE (DEG N)', 'TVWTG': 'ANAL VARIATIONAL QC WEIGHT ON TEMP. OBS BASED ON GUESS', 'HTOT': 'HEIGHT OF TOP OF TURBULENCE', 'SSTBACKG': 'SEA TEMPERATURE BACKGROUND SEQUENCE', 'UCS': 'STANDARD DEVIATION OF CLIMATOLOGICAL U-COMP WIND VALUE', 'PWR': 'TOTAL PRECIPITABLE WATER EVENT REASON CODE', 'PWP': 'TOTAL PRECIPITABLE WATER EVENT PROGRAM CODE', 'PWQ': 'TOTAL PRECIPITABLE WATER (QUALITY) MARKER', 'TP12': 'TOTAL PRECIPITATION PAST 12 HOURS', '3HPC': '3 HOUR PRESSURE CHANGE', 'PWF': 'FORECAST (BACKGROUND) TOTAL PRECIPITABLE WATER VALUE', 'PWE': 'TOTAL PRECIPITABLE WATER OBSERVATION ERROR (MM)', 'QKSWND': 'QUIKSCAT SCATTEROMETER DATA (REPROCESSED)', 'TRBX43': 'TURBULENCE INDEX FOR PERIOD (TOB-4 MIN) -> (TOB-3 MIN)', 'PWO': 'TOTAL PRECIPITABLE WATER OBSERVATION (MM)', 'TRBX': 'TURBULENCE INDEX', 'PW3FMOD': 'MODEL .7-.3 SIG. LYR PWATER FCST(GLOBAL MODEL SEE PW3F)', 'GSI': 'GSI ANALYSIS STEP', 'A1': 'ERS INCIDENT ANGLE NUMBER 1', 'RRTRC': 'RAINFALL (AVERAGE RATE) EVENT REASON CODE', 'QVWTA': 'ANAL VARIATIONAL QC WEIGHT ON MOIST. OBS BASED ON ANAL', 'TFCMOD': 'MODEL TEMPERATURE FORECAST VALUE (GLOBAL MODEL SEE TFC)', 'QVWTG': 'ANAL VARIATIONAL QC WEIGHT ON MOIST. OBS BASED ON GUESS', 'SPDE': 'EST. ERROR COVARIANCE FOR WIND SPEED RETRIEVAL', 'CTPBACKG': 'CLOUD TOP PRESSURE BACKGROUND SEQUENCE', 'GCDTT': 'GOES CLOUD TOP TEMPERATURE OBSERVATION', 'PW3R': '0.7 TO 0.3 SIGMA LAYER PRECIP. WATER EVENT REASON CODE', 'PW3P': '0.7 TO 0.3 SIGMA LAYER PRECIP. WATER EVENT PROGRAM CODE', 'PW3Q': '0.7 TO 0.3 SIGMA LAYER PRECIP. WATER (QUALITY) MARKER', 'PW3F': 'FCST(BACKGRND) 0.7 TO 0.3 SIGMA LYR PRECIP. WATER VALUE', 'PW3E': '0.7 TO 0.3 SIGMA LAYER PRECIP. WATER OBSERVATION ERROR', 'PW3A': 'ANALYZED 0.7 TO 0.3 SIGMA LAYER PRECIP. WATER VALUE', 'PW3O': '0.7 TO 0.3 SIGMA LAYER PRECIPITABLE WATER OBSERVATION', 'ZPC': 'HEIGHT EVENT PROGRAM CODE', 'UCL': 'CLIMATOLOGICAL U-COMPONENT WIND VALUE', 'PW1BACKG': '1.0 TO 0.9 SIGMA LAYER PRECIP WATER BACKGROUND SEQUENCE', 'SQN': 'REPORT SEQUENCE NUMBER', 'B2': 'ERS AZIMUTH ANGLE NUMBER 2', 'B3': 'ERS AZIMUTH ANGLE NUMBER 3', 'PWT_INFO': 'TOTAL PRECIPITABLE WATER INFORMATION', 'PW4BACKG': '0.3 TO 0.0 SIGMA LAYER PRECIP WATER BACKGROUND SEQUENCE', 'SWELLSEQ': 'SWELL WAVE SEQUENCE', 'CLTP': 'CLOUD TYPE', 'GOESND': 'GOES SATELLITE DATA (SOUNDINGS, RETRIEVALS, RADIANCES)', 'WAVE_SEQ': 'WAVE SEQUENCE', 'PW1_INFO': '1.0 TO 0.9 SIGMA LAYER PRECIPITABLE WATER INFORMATION', 'PW3_INFO': '0.7 TO 0.3 SIGMA LAYER PRECIPITABLE WATER INFORMATION', 'WSST': 'WINDSAT SURFACE TYPE', 'CQCPROF': 'WIND PROFILER QUALITY CONTROL STEP', 'BTMPLEVL': "BRIGHTNESS TEMPERATURE'LEVEL' SEQUENCE", 'W___INFO': 'WIND INFORMATION', 'VTVI': 'VERTICAL VISIBILITY', 'MXTM': 'MAXIMUM TEMPERATURE', 'SPRVSTG': 'MESONET SUBPROVIDER ID STRING', 'B1': 'ERS AZIMUTH ANGLE NUMBER 1', 'TCOR': "INDICATOR WHETHER OBS. TIME IN'DHR' WAS CORRECTED", 'PSTWXSEQ': 'PAST WEATHER SEQUENCE', 'AIRCAR': 'MDCRS ACARS AIRCRAFT REPORTS', 'TRC': 'TEMPERATURE EVENT REASON CODE', 'TOPC_SEQ': 'TOTAL PRECIPITATION/TOTAL WATER EQUIVALENT SEQUENCE', 'T__BACKG': 'TEMPERATURE BACKGROUND SEQUENCE', 'T29': 'DATA DUMP REPORT TYPE', 'T___INFO': 'TEMPERATURE INFORMATION', 'PW3F_MSQ': 'MODEL 0.7 TO 0.3 SIGMA LAYER PRECIP WATER FORECAST SEQ.', 'VOB': 'V-COMPONENT WIND OBSERVATION (M/S)', 'QCLIMATO': 'SPECIFIC HUMIDITY CLIMATOLOGY SEQUENCE', 'OIQC': 'OI-QUALITY MULTI-PLATFROM CONTROL STEP', 'PMSL_SEQ': 'MEAN SEA LEVEL PRESSURE SEQUENCE', 'WVCQ': 'WIND VECTOR CELL QUALITY (ASCAT REPORTS ONLY)', 'DEFAULT': 'NON-DEFINED STEP (DEFAULT)', 'TOCC': 'CLOUD COVER (TOTAL)', 'SST1': 'SEA TEMPERATURE', 'ACAV': 'TOTAL NUMBER WITH RESPECT TO ACCUMULATION OR AVERAGE', 'CTPRC': 'CLOUD TOP PRESSURE EVENT REASON CODE', 'PRVSTG': 'MESONET PROVIDER ID STRING', 'TRBX21': 'TURBULENCE INDEX FOR PERIOD (TOB-2 MIN) -> (TOB-1 MIN)', 'PMQ': 'MEAN SEA-LVL PRESSURE (QUALITY) MARKER', 'DBSS_SEQ': 'DEPTH BELOW SEA SURFACE SEQUENCE', 'MSONET': 'MESONET SURFACE REPORTS (COOPERATIVE NETWORKS)', 'PMO': 'MEAN SEA-LEVEL PRESSURE OBSERVATION (MB)', 'PWTEVENT': 'TOTAL PRECIPITABLE WATER EVENT SEQUENCE', 'PW4POSTP': '0.3 TO 0.0 SIGMA LAYER PRECIP WATER POSTPROCESSING SEQ.', 'TMSK': 'SKIN TEMPERATURE', 'CLOU2SEQ': 'OBSERVED CLOUD SEQUENCE # 2', 'PW2F_MSQ': 'MODEL 0.9 TO 0.7 SIGMA LAYER PRECIP WATER FORECAST SEQ.', 'WVWTG': 'ANAL VARIATIONAL QC WEIGHT ON WIND OBS BASED ON GUESS', 'ELV': 'STATION ELEVATION (M)', 'WVWTA': 'ANAL VARIATIONAL QC WEIGHT ON WIND OBS BASED ON ANAL', 'ZFCMOD': 'MODEL HEIGHT FORECAST VALUE (GLOBAL MODEL SEE ZFC)', 'RSRD': 'RESTRICTIONS ON REDISTRIBUTION', 'PREPACQC': 'AIRCRAFT QUALITY CONTROL STEP (NOT INCL. MDCRS ACARS)', 'SSTE': 'EST. ERROR COVARIANCE FOR SEA SURFACE TEMP RETRIEVAL', 'QCS': 'STANDARD DEV OF CLIMATOLOGICAL SPECIFIC HUMIDITY VALUE', 'ZCLIMATO': 'HEIGHT CLIMATOLOGY SEQUENCE', 'PCAT': 'PRECISION OF TEMPERATURE OBSERVATION', 'QCL': 'CLIMATOLOGICAL SPECIFIC HUMIDITY VALUE', 'PW4EVENT': '0.3 TO 0.0 PRECIPITABLE WATER EVENT SEQUENCE', 'HOWV': 'HEIGHT OF WAVES', 'HOWW': 'HEIGHT OF WIND WAVES', 'CQCHT': 'RAWINSONDE HEIGHT/TEMP COMPLEX QUALITY CONTROL STEP', 'RRTAN': 'ANALYZED RAINFALL (AVERAGE RATE) VALUE', 'A3': 'ERS INCIDENT ANGLE NUMBER 3', 'A2': 'ERS INCIDENT ANGLE NUMBER 2', 'ALSE': 'ALTIMETER SETTING OBSERVATION', 'HOCB': 'HEIGHT OF BASE OF CLOUD', 'SSTEVENT': 'SEA TEMPERATURE EVENT SEQUENCE', 'SQM': 'WIND SPEED (SOB) (QUALITY) MARKER', 'Q__BACKG': 'SPECIFIC HUMIDITY BACKGROUND SEQUENCE', 'PROCN': 'PROCESS NUMBER FOR THIS MPI RUN (OBTAINED FROM SCRIPT)', 'HBLCS': 'HEIGHT ABOVE SURFACE OF BASE OF LOWEST CLOUD SEEN', 'RRT_INFO': 'RAIN RATE INFORMATION', 'PW2EVENT': '0.9 TO 0.7 PRECIPITABLE WATER EVENT SEQUENCE', 'Z__BACKG': 'HEIGHT BACKGROUND SEQUENCE', 'PFC': 'FORECAST (BACKGROUND) PRESSURE VALUE', 'ZCL': 'CLIMATOLOGICAL HEIGHT VALUE', 'SHIP_SEQ': 'SHIP DIRECTION/SPEED SEQUENCE', 'VSSO': 'VERT. SIGNIFICANCE (SFC OBSERVATION)', 'DRFTINFO': 'PROFILE LEVEL TIME/LOCATION INFORMATION', 'ZCS': 'STANDARD DEVIATION OF CLIMATOLOGICAL HEIGHT VALUE', 'DBSS': 'DEPTH BELOW SEA SURFACE'}"}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"fullname": "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict", "modulename": "ncepbufr.bufr_mnemonics", "qualname": "amsu_mnemonics_dict", "kind": "variable", "doc": "

                                                        dictionary mapping amsu mnemonics to human readable descriptions

                                                        \n", "default_value": "{'NC021021': 'MTYP 021-021 PROCESSED HIRS-2 1B Tb DATA (NOAA-14)', 'NC021022': 'MTYP 021-022 PROCESSED MSU 1B Tb DATA (NOAA-14)', 'NC021023': 'MTYP 021-023 PROC AMSU-A 1B Tb DATA(NOAA-15-19,METOP-2)', 'NC021024': 'MTYP 021-024 PROCESSED AMSU-B 1B Tb DATA (NOAA-15-17)', 'NC021025': 'MTYP 021-025 PROCESSED HIRS-3 1B Tb DATA (NOAA-15-17)', 'NC021027': 'MTYP 021-027 PROCESSED MHS Tb DATA (NOAA-18-19,METOP-2)', 'NC021028': 'MTYP 021-028 PROC HIRS-4 1B Tb DATA(NOAA-18-19,METOP-2)', 'NC021033': 'MTYP 021-033 RARS(EARS,AP,SA) AMSU-A 1C Tb DATA(N15-19)', 'NC021034': 'MTYP 021-034 RARS(EARS,AP,SA) AMSU-B 1C Tb DATA(N15-17)', 'NC021035': 'MTYP 021-035 RARS(EARS,AP,SA) HIRS 1C Tb DATA(N15-19)', 'NC021036': 'MTYP 021-036 RARS(EARS,AP,SA) MHS 1C Tb DATA (N18-19)', 'NC021041': 'MTYP 021-041 PROCESSED GOES IMAGER Tb DATA', 'NC021042': 'MTYP 021-042 PROC. MSG SEVIRI ALL SKY RADIANCES (ASR)', 'NC021043': 'MTYP 021-043 PROC. MSG SEVIRI CLEAR SKY RADIANCES (CSR)', 'NC021051': 'MTYP 021-051 PROC AVHRR(GAC) 1B Tb-CLR & SEA (N-17,M-2)', 'NC021052': 'MTYP 021-052 PROC AVHRR(GAC) 1B Tb-CLD OR LND(N-17,M-2)', 'NC021053': 'MTYP 021-053 PROC AVHRR(GAC) 1B Tb-CLR & SEA (NOAA-18)', 'NC021054': 'MTYP 021-054 PROC AVHRR(GAC) 1B Tb-CLD OR LND(NOAA-18)', 'NC021123': 'MTYP 021-123 PROC AMSU-A 1B Ta DATA(NOAA-15-18,METOP-2)', 'NC021201': 'MTYP 021-201 DMSP SSM/IS Tb DATA(UNIFIED PRE-PROCESSOR)', 'NC021202': 'MTYP 021-202 NPP CrIS RADIANCE DATA', 'NC021203': 'MTYP 021-203 NPP ATMS RADIANCE DATA', 'NC021241': 'MTYP 021-241 IASI 1C RADIANCE DATA(VARBL CHNS)(METOP-2)', 'NC021249': 'MTYP 021-249 EVERY FOV AIRS/AMSU-A/HSB 1B DATA (AQUA)', 'NC021250': 'MTYP 021-250 CENTER FOV AIRS/AMSU-A/HSB 1B DATA (AQUA)', 'NC021251': 'MTYP 021-251 ATOVS AMSU-A RADIANCE DATA', 'NC021252': 'MTYP 021-252 ATOVS AMSU-B RADIANCE DATA', 'NC021253': 'MTYP 021-253 AIRS PRINCIPAL COMPONENTS', 'NC021254': 'MTYP 021-254 AMSR-E CHANNEL DATA', 'NC021255': 'MTYP 021-255 WARMEST FOV AIRS/AMSU-A/HSB 1B DATA (AQUA)', 'YYMMDD': 'DATE -- YEAR, MONTH, DAY', 'HHMM': 'TIME -- HOUR, MINUTE', 'HHMMSS': 'TIME -- HOUR, MINUTE, SECOND', 'LTLONH': 'HIGH ACCURACY LATITUDE/LONGITUDE POSITION', 'SIDGRSEQ': 'SATELLITE IDENTIFIER/GENERATING RESOLUTION', 'SIDENSEQ': 'SATELLITE IDENTIFICATION', 'LOCPLAT': 'LOCATION OF PLATFORM (SATELLITE) SEQUENCE', 'ALLSKYRD': 'ALL SKY RADIANCE DATA', 'CLOUDCOV': 'CLOUD COVERAGE', 'ATOVAMUA': 'ATOVS AMSU-A REPORT', 'ATOVAMUB': 'ATOVS AMSU-B REPORT', 'ATFOV': 'ATOVS FIELD OF VIEW VARIABLES', 'ATCHV': 'ATOVS CHANNEL VARIABLES', 'SSMISTEM': 'SSM/IS TEMPERATURE DATA RECORD', 'ALLSKYRP': 'ALL SKY RADIANCE PRODUCT MAIN SEQUENCE', 'SCO1C3IN': 'SATELLITE COLOCATED 1C REPORTS WITH 3 INSTRUMENTS', 'SPITSEQN': 'SATELLITE POSITION AND INSTRUMENT TEMPERATURES', 'SITPSEQN': 'SATELLITE INSTRUMENT TYPE AND POSITION', 'SCBTSEQN': 'SAT CHANNELS AND BRIGHT TEMPS WITH EXPANDED CHANNEL SET', 'SVCASEQN': 'SAT VISB CHANNELS AND ALBEDOS WITH EXPANDED CHANNEL SET', 'SATRCPRC': 'SATELLITE RADIANCE/CHANNEL PRINCIPAL COMPONENTS', 'IASIL1CB': 'IASI LEVEL 1C BAND DESCRIPTION SEQUENCE', 'IASIL1CS': 'IASI LEVEL 1C AVHRR SINGLE SCENE SEQUENCE', 'BCFQFSQ': 'NPP CrIS BAND CALIBRATION & F-O-V QUALITY FLAG SEQUENCE', 'CRCHN': 'NPP CrIS CHANNEL DATA', 'AMSUSPOT': 'AMSU-A SPOT SEQUENCE (AQUA SATELLITE)', 'AMSUCHAN': 'AMSU-A CHANNEL SEQUENCE (AQUA SATELLITE)', 'HSBSPOT': 'HSB (HUMIDITY) SPOT SEQUENCE (AQUA SATELLITE)', 'HSBCHAN': 'HSB (HUMIDITY) CHANNEL SEQUENCE (AQUA SATELLITE)', 'ATMSCH': 'NPP ATMS CHANNEL DATA', 'INTMS': 'SATELLITE INSTRUMENT TEMPERATURES', 'AIRSPC': 'AIRS PRINCIPAL COMPONENT SEQUENCE', 'AIRSCORE': 'AIRS PRINCIPAL COMPONENT FITS TO DATA SEQUENCE', 'AVCSEQ': 'AVHRR (GAC) CHANNEL SEQUENCE', 'BID': 'BULLETIN HEADER DATA', 'RCPTIM': 'REPORT RECEIPT TIME DATA', 'SATEPHEM': 'SSM/IS SATELLITE EPHEMERIS INFORMATION', 'SCLINGEO': 'SSM/IS SCAN LINE GEOMETRY', 'SSMISCHN': 'SSM/IS CHANNEL SEQUENCE', 'IASICHN': 'IASI LEVEL 1C SCALED RADIANCE SEQUENCE', 'AVHRCHN': 'IASI LEVEL 1C MEAN AND STANDARD DEVIATION RADIANCE SEQ', 'BRITCSTC': 'BRIGHTNESS TEMPERATURE SEQUENCE #2', 'BRIT': 'BRIGHTNESS TEMPERATURE SEQUENCE', 'RADS': 'RADIANCE SEQUENCE', 'AMSRCHAN': 'AMSR-E CHANNEL SEQUENCE (AQUA SATELLITE)', 'AMSRDICE': 'AMSR-E 2 CHANNEL 4 SPOT SOUNDING SEQUENCE (AQUA SAT)', 'RPSEQ7': 'CSR SEVIRI CLOUD & BRIGHTNESS TEMPERATURE DATA SEQUENCE', 'RPSEQ8': 'PERCENT CONFIDENCE W/MDPC REPLICATED DATA SEQUENCE', 'RPSEQ4': 'PERCENT CONFIDENCE REPLICATED DATA SEQUENCE', 'WLTMSEQN': 'WARM LOAD TEMPERATURE SEQUENCE', 'MUHOSEQN': 'MULTIPLEXER HOUSEKEEPING SEQUENCE', 'SAID': 'SATELLITE IDENTIFIER', 'GCLONG': 'ORIGINATING/GENERATING CENTER', 'GNAP': 'GENERATING APPLICATION', 'OGCE': 'IDENTIFICATION OF ORIGINATING/GENERATING CENTER', 'GSES': 'IDENTIFICATION OF ORIGINATING/GENERATING SUB-CENTER', 'SIID': 'SATELLITE INSTRUMENTS', 'SCLF': 'SATELLITE CLASSIFICATION', 'SIDU': 'SATELLITE INSTRUMENT DATA USED IN PROCESSING', 'IMHC': 'INTEGRATED MEAN HUMIDITY COMPUTATIONAL METHOD', 'SSNX': 'SEGMENT SIZE AT NADIR IN X DIRECTION', 'SSNY': 'SEGMENT SIZE AT NADIR IN Y DIRECTION', 'SSIN': 'SATELLITE SENSOR INDICATOR', 'ANPO': 'ANTENNA POLARIZATION', 'RAIA': 'RADAR INCIDENCE ANGLE', 'INCN': 'TOVS/ATOVS/AVHRR INSTRUMENTATION CHANNEL NUMBER', 'RAID': 'RADIOMETER IDENTIFIER', 'SIDP': 'SATELLITE INSTRUMENT DATA USED IN PROCESSING', 'SCCF': 'SATELLITE CHANNEL CENTER FREQUENCY', 'SCBW': 'SATELLITE CHANNEL BAND WIDTH', 'RDTF': 'RADIANCE TYPE FLAGS', 'RDTP': 'RADIANCE TYPE', 'RDCM': 'RADIANCE COMPUTATIONAL METHOD', 'YEAR': 'YEAR', 'MNTH': 'MONTH', 'DAYS': 'DAY', 'HOUR': 'HOUR', 'MINU': 'MINUTE', 'SECO': 'SECOND', 'TPSE': 'TIME PERIOD OR DISPLACEMENT', 'RCYR': 'YEAR - TIME OF RECEIPT', 'RCMO': 'MONTH - TIME OF RECEIPT', 'RCDY': 'DAY - TIME OF RECEIPT', 'RCHR': 'HOUR - TIME OF RECEIPT', 'RCMI': 'MINUTE - TIME OF RECEIPT', 'CLATH': 'LATITUDE (HIGH ACCURACY)', 'CLAT': 'LATITUDE (COARSE ACCURACY)', 'BEARAZ': 'BEARING OR AZIMUTH', 'SOLAZI': 'SOLAR AZIMUTH', 'ORBN': 'ORBIT NUMBER', 'SLNM': 'SCAN LINE NUMBER', 'CHNM': 'CHANNEL NUMBER', 'FOVN': 'FIELD OF VIEW NUMBER', 'FORN': 'FIELD OF REGARD NUMBER', 'YAPCG': 'Y ANGULAR POSITION OF CENTER OF GRAVITY', 'ZAPCG': 'Z ANGULAR POSITION OF CENTER OF GRAVITY', 'CLONH': 'LONGITUDE (HIGH ACCURACY)', 'CLON': 'LONGITUDE (COARSE ACCURACY)', 'WVNM': 'WAVE NUMBER', 'SELV': 'HEIGHT OF STATION', 'HMSL': 'HEIGHT OR ALTITUDE', 'PRLC': 'PRESSURE', 'SAZA': 'SATELLITE ZENITH ANGLE', 'SOZA': 'SOLAR ZENITH ANGLE', 'VSIG': 'VERTICAL SOUNDING SIGNIFICANCE', 'VSAT': 'VERTICAL SIGNIFICANCE (SATELLITE OBSERVATIONS)', 'DIMS': 'DIMENSIONAL SIGNIFICANCE', 'LSQL': 'LAND/SEA QUALIFIER', 'TSIG': 'TIME SIGNIFICANCE', 'FOST': 'FIRST ORDER STATISTICS', 'MDPC': 'METHOD OF DEVIATION OF PERCENTAGE CONFIDENCE', 'TAPQ': 'TOVS/ATOVS PRODUCT IDENTIFIER', 'STKO': 'ASCENDING/DESCENDING ORBIT QUALIFIER', 'TOBD': 'TYPE OF BAND', 'RCTS': 'RECEIPT TIME SIGNIFICANCE', 'HOLS': 'HEIGHT OF LAND SURFACE', 'HITE': 'GEOPOTENTIAL HEIGHT', 'PDNP': "IN DIR. OF NORTH POLE, DISTANCE FROM THE EARTH'S CENTER", 'TMBRST': 'BRIGHTNESS TEMPERATURE', 'TMINST': 'INSTRUMENT TEMPERATURE', 'SDTB': 'STANDARD DEVIATION BRIGHTNESS TEMPERATURE', 'TMANT': 'ANTENNA TEMPERATURE', 'WLTM': 'WARM LOAD TEMPERATURE', 'SPRD': 'SPECTRAL RADIANCE', 'RDNE': 'RADIANCE', 'NEDTCO': 'NOISE-EQUIVALENT DELTA TEMPERATURE VIEWING COLD TARGET', 'NEDTWA': 'NOISE-EQUIVALENT DELTA TEMPERATURE VIEWING WARM TARGET', 'TMBR': 'BRIGHTNESS TEMPERATURE (HIGH ACCURACY)', 'CSTC': 'COLD SPACE TEMPERATURE CORRECTION', 'REHU': 'RELATIVE HUMIDITY', 'SFLG': 'SURFACE FLAG', 'ALBD': 'ALBEDO', 'SRAD': 'CHANNEL RADIANCE', 'CHRAD': 'CHANNEL RADIANCE', 'SCRA': 'SCALED IASI RADIANCE', 'SMRA': 'SCALED MEAN AVHRR RADIANCE', 'SSDR': 'SCALED STANDARD DEVIATION OF AVHRR RADIANCE', 'LOGCT': 'LOG10 OF CLOUD TEST RESULTS', 'TOCC': 'CLOUD COVER (TOTAL)', 'CLTP': 'CLOUD TYPE', 'HOCT': 'HEIGHT OF TOP OF CLOUD', 'RFLAG': 'RAIN FLAG', 'CLDMNT': 'CLOUD AMOUNT IN SEGMENT', 'NCLDMNT': 'AMOUNT SEGMENT CLOUD FREE', 'CLAVR': 'CLOUD FROM AVHRR (CLAVR) CLOUD MASK', 'WTCA': 'WARM TARGET CALIBRATION', 'CTCA': 'COLD TARGET CALIBRATION', 'ALFR': 'LAND FRACTION', 'APCOMP': 'PRINCIPAL COMPONENT SCORE', 'AVHCST': 'AVHRR CHANNEL COMBINATION', 'APCFIT': 'LOG OF PRINCIPAL COMPONENTS NORMALIZED FIT TO DATA', 'SSID': 'SSMIS SUBFRAME ID NUMBER', 'MUHO': 'MULTIPLEXOR HOUSEKEEPING', 'MJFC': 'MAJOR FRAME COUNT', 'SACV': 'SATELLITE ANTENNA CORRECTIONS VERSION NUMBER', 'LOGRCW': 'LOG-10 OF (TEMPERATURE-RADIANCE CENTRAL WAVENUMBER)', 'BWCC1': 'BANDWIDTH CORRECTION COEFFICIENT 1 FOR ATOVS', 'BWCC2': 'BANDWIDTH CORRECTION COEFFICIENT 2 FOR ATOVS', 'ASFI': 'ALBEDO-RADIANCE SOLAR FILTERED IRRADIANCE FOR ATOVS', 'AEFW': 'ALBEDO-RADIANCE EQUIVALENT FILTER WIDTH FOR ATOVS', 'FCPH': 'FRACTION OF CLEAR PIXELS IN HIRS FOV', 'STCH': 'START CHANNEL', 'ENCH': 'END CHANNEL', 'CHSF': 'CHANNEL SCALE FACTOR', 'PD00': "IN DIRECTION OF 0 DEG E, DISTANCE FROM EARTH'S CENTER", 'PD90': "IN DIRECTION OF 90 DEG E, DISTANCE FROM EARTH'S CENTER", 'NPPR': 'NUMBER OF PIXELS PER ROW', 'NPPC': 'NUMBER OF PIXELS PER COLUMN', 'QMRKH': 'QUALITY INFORMATION', 'PCCF': 'PERCENT CONFIDENCE', 'SLSF': 'SCAN LINE STATUS FLAGS FOR ATOVS', 'SLQF': 'SCAN LINE QUALITY FLAGS FOR ATOVS', 'ACQF': 'CHANNEL QUALITY FLAGS FOR ATOVS', 'FOVQ': 'FIELD OF VIEW QUALITY FLAGS FOR ATOVS', 'QGFQ': 'INDIVIDUAL IASI-SYSTEM QUALITY FLAG', 'QGQI': 'INSTR. NOISE PERF. INDICATOR (SPECTRAL & RADIOMETRIC)', 'QGQIL': 'GEOMETRIC QUALITY INDEX INDICATOR', 'QGQIR': 'INSTR. NOISE PERF. INDICATOR (RADIOMETRIC CALIBRATION)', 'QGQIS': 'INSTRUMENT NOISE PERF. INDICATOR (SPECTRAL CALIBRATION)', 'QGSSQ': 'OUTPUT OF TEC FUNCTION', 'NSQF': 'SCAN LEVEL QUALITY FLAGS', 'NCQF': 'CALIBRATION QUALITY FLAGS', 'NFQF': 'FIELD OF VIEW QUALITY FLAGS', 'NGQI': 'GEOLOCATION QUALITY', 'ATMSGQ': 'GRANULE LEVEL QUALITY FLAGS', 'ATMSSQ': 'SCAN LEVEL QUALITY FLAGS', 'ATMSCHQ': 'CHANNEL DATA QUALITY FLAGS', 'BUHD': 'BULLETIN BEING MONITORED (TTAAii)', 'BULTIM': 'BULLETIN BEING MONITORED (YYGGgg)', 'BORG': 'BULLETIN BEING MONITORED (CCCC)', 'BBB': 'BULLETIN BEING MONITORED (BBB)', 'SEQNUM': 'CHANNEL SEQUENCE NUMBER'}"}}, "docInfo": {"ncepbufr": {"qualname": 0, "fullname": 1, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "ncepbufr.set_param": {"qualname": 2, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 49}, "ncepbufr.get_param": {"qualname": 2, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 20}, "ncepbufr.set_missing_value": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 12, "bases": 0, "doc": 7}, "ncepbufr.get_missing_value": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 7, "bases": 0, "doc": 7}, "ncepbufr.set_datelength": {"qualname": 2, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 15}, "ncepbufr.open": {"qualname": 1, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 35}, "ncepbufr.open.__init__": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 33, "bases": 0, "doc": 119}, "ncepbufr.open.lunit": {"qualname": 2, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "ncepbufr.open.filename": {"qualname": 2, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 10}, "ncepbufr.open.msg_counter": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 6}, "ncepbufr.open.msg_type": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 6}, "ncepbufr.open.msg_date": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 7}, "ncepbufr.open.receipt_time": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 14}, "ncepbufr.open.subsets": {"qualname": 2, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 9}, "ncepbufr.open.missing_value": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 5}, "ncepbufr.open.dump_table": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 9}, "ncepbufr.open.print_table": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 8}, "ncepbufr.open.close": {"qualname": 2, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 6}, "ncepbufr.open.cmpmsg": {"qualname": 2, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 12}, "ncepbufr.open.advance": {"qualname": 2, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 171}, "ncepbufr.open.inventory": {"qualname": 2, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 29}, "ncepbufr.open.print_subset": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 21, "bases": 0, "doc": 59}, "ncepbufr.open.copy_subset": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 20}, "ncepbufr.open.dump_subset": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 36, "bases": 0, "doc": 79}, "ncepbufr.open.get_program_code": {"qualname": 4, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 20}, "ncepbufr.open.get_flag_table_bits": {"qualname": 5, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 21, "bases": 0, "doc": 21}, "ncepbufr.open.checkpoint": {"qualname": 2, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 32}, "ncepbufr.open.rewind": {"qualname": 2, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 14}, "ncepbufr.open.restore": {"qualname": 2, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 22}, "ncepbufr.open.open_message": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 35, "bases": 0, "doc": 75}, "ncepbufr.open.copy_message": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 18}, "ncepbufr.open.close_message": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 5}, "ncepbufr.open.load_subset": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 71}, "ncepbufr.open.read_long_string": {"qualname": 4, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 144}, "ncepbufr.open.read_subset": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 46, "bases": 0, "doc": 278}, "ncepbufr.open.write_subset": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 61, "bases": 0, "doc": 203}, "ncepbufr.bufr_mnemonics": {"qualname": 0, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 5123, "signature": 0, "bases": 0, "doc": 10}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 2455, "signature": 0, "bases": 0, "doc": 10}}, "length": 40, "save": true}, "index": {"qualname": {"root": {"docs": {"ncepbufr.open.__init__": {"tf": 1}}, "df": 1, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.set_param": {"tf": 1}, "ncepbufr.set_missing_value": {"tf": 1}, "ncepbufr.set_datelength": {"tf": 1}}, "df": 3}}, "u": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.open.print_subset": {"tf": 1}, "ncepbufr.open.copy_subset": {"tf": 1}, "ncepbufr.open.dump_subset": {"tf": 1}, "ncepbufr.open.load_subset": {"tf": 1}, "ncepbufr.open.read_subset": {"tf": 1}, "ncepbufr.open.write_subset": {"tf": 1}}, "df": 6, "s": {"docs": {"ncepbufr.open.subsets": {"tf": 1}}, "df": 1}}}}}}, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"ncepbufr.open.read_long_string": {"tf": 1}}, "df": 1}}}}}}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {"ncepbufr.set_param": {"tf": 1}, "ncepbufr.get_param": {"tf": 1}}, "df": 2}}}}, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.open.print_table": {"tf": 1}, "ncepbufr.open.print_subset": {"tf": 1}}, "df": 2}}}, "o": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {"ncepbufr.open.get_program_code": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}}}, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.get_param": {"tf": 1}, "ncepbufr.get_missing_value": {"tf": 1}, "ncepbufr.open.get_program_code": {"tf": 1}, "ncepbufr.open.get_flag_table_bits": {"tf": 1}}, "df": 4}}}, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"ncepbufr.set_missing_value": {"tf": 1}, "ncepbufr.get_missing_value": {"tf": 1}, "ncepbufr.open.missing_value": {"tf": 1}}, "df": 3}}}}}}, "s": {"docs": {}, "df": 0, "g": {"docs": {"ncepbufr.open.msg_counter": {"tf": 1}, "ncepbufr.open.msg_type": {"tf": 1}, "ncepbufr.open.msg_date": {"tf": 1}}, "df": 3}}, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.open.open_message": {"tf": 1}, "ncepbufr.open.copy_message": {"tf": 1}, "ncepbufr.open.close_message": {"tf": 1}}, "df": 3}}}}}}, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "s": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 2}}}}}}}}}, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.set_missing_value": {"tf": 1}, "ncepbufr.get_missing_value": {"tf": 1}, "ncepbufr.open.missing_value": {"tf": 1}}, "df": 3}}}}}, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.open.msg_date": {"tf": 1}}, "df": 1, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"ncepbufr.set_datelength": {"tf": 1}}, "df": 1}}}}}}}}}, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {"ncepbufr.open.dump_table": {"tf": 1}, "ncepbufr.open.dump_subset": {"tf": 1}}, "df": 2}}}, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 2}}}}, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"ncepbufr.open": {"tf": 1}, "ncepbufr.open.__init__": {"tf": 1}, "ncepbufr.open.lunit": {"tf": 1}, "ncepbufr.open.filename": {"tf": 1}, "ncepbufr.open.msg_counter": {"tf": 1}, "ncepbufr.open.msg_type": {"tf": 1}, "ncepbufr.open.msg_date": {"tf": 1}, "ncepbufr.open.receipt_time": {"tf": 1}, "ncepbufr.open.subsets": {"tf": 1}, "ncepbufr.open.missing_value": {"tf": 1}, "ncepbufr.open.dump_table": {"tf": 1}, "ncepbufr.open.print_table": {"tf": 1}, "ncepbufr.open.close": {"tf": 1}, "ncepbufr.open.cmpmsg": {"tf": 1}, "ncepbufr.open.advance": {"tf": 1}, "ncepbufr.open.inventory": {"tf": 1}, "ncepbufr.open.print_subset": {"tf": 1}, "ncepbufr.open.copy_subset": {"tf": 1}, "ncepbufr.open.dump_subset": {"tf": 1}, "ncepbufr.open.get_program_code": {"tf": 1}, "ncepbufr.open.get_flag_table_bits": {"tf": 1}, "ncepbufr.open.checkpoint": {"tf": 1}, "ncepbufr.open.rewind": {"tf": 1}, "ncepbufr.open.restore": {"tf": 1}, "ncepbufr.open.open_message": {"tf": 1.4142135623730951}, "ncepbufr.open.copy_message": {"tf": 1}, "ncepbufr.open.close_message": {"tf": 1}, "ncepbufr.open.load_subset": {"tf": 1}, "ncepbufr.open.read_long_string": {"tf": 1}, "ncepbufr.open.read_subset": {"tf": 1}, "ncepbufr.open.write_subset": {"tf": 1}}, "df": 31}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.open.__init__": {"tf": 1}}, "df": 1}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"ncepbufr.open.inventory": {"tf": 1}}, "df": 1}}}}}}}}}, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.open.lunit": {"tf": 1}}, "df": 1}}}}, "o": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.open.load_subset": {"tf": 1}}, "df": 1}}, "n": {"docs": {}, "df": 0, "g": {"docs": {"ncepbufr.open.read_long_string": {"tf": 1}}, "df": 1}}}}, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.open.filename": {"tf": 1}}, "df": 1}}}}}}}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {"ncepbufr.open.get_flag_table_bits": {"tf": 1}}, "df": 1}}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.open.msg_counter": {"tf": 1}}, "df": 1}}}}}, "p": {"docs": {}, "df": 0, "y": {"docs": {"ncepbufr.open.copy_subset": {"tf": 1}, "ncepbufr.open.copy_message": {"tf": 1}}, "df": 2}}, "d": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.open.get_program_code": {"tf": 1}}, "df": 1}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.open.close": {"tf": 1}, "ncepbufr.open.close_message": {"tf": 1}}, "df": 2}}}}, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "g": {"docs": {"ncepbufr.open.cmpmsg": {"tf": 1}}, "df": 1}}}}}, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.open.checkpoint": {"tf": 1}}, "df": 1}}}}}}}}}}, "t": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.open.msg_type": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.open.receipt_time": {"tf": 1}}, "df": 1}}}, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.open.dump_table": {"tf": 1}, "ncepbufr.open.print_table": {"tf": 1}, "ncepbufr.open.get_flag_table_bits": {"tf": 1}}, "df": 3}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.open.receipt_time": {"tf": 1}}, "df": 1}}}}}, "w": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.open.rewind": {"tf": 1}}, "df": 1}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.open.restore": {"tf": 1}}, "df": 1}}}}}, "a": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.open.read_long_string": {"tf": 1}, "ncepbufr.open.read_subset": {"tf": 1}}, "df": 2}}}}, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.open.advance": {"tf": 1}}, "df": 1}}}}}}, "m": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "u": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "b": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"ncepbufr.open.get_flag_table_bits": {"tf": 1}}, "df": 1}}}}, "w": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.open.write_subset": {"tf": 1}}, "df": 1}}}}}}}, "fullname": {"root": {"docs": {"ncepbufr.open.__init__": {"tf": 1}}, "df": 1, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr": {"tf": 1}, "ncepbufr.set_param": {"tf": 1}, "ncepbufr.get_param": {"tf": 1}, "ncepbufr.set_missing_value": {"tf": 1}, "ncepbufr.get_missing_value": {"tf": 1}, "ncepbufr.set_datelength": {"tf": 1}, "ncepbufr.open": {"tf": 1}, "ncepbufr.open.__init__": {"tf": 1}, "ncepbufr.open.lunit": {"tf": 1}, "ncepbufr.open.filename": {"tf": 1}, "ncepbufr.open.msg_counter": {"tf": 1}, "ncepbufr.open.msg_type": {"tf": 1}, "ncepbufr.open.msg_date": {"tf": 1}, "ncepbufr.open.receipt_time": {"tf": 1}, "ncepbufr.open.subsets": {"tf": 1}, "ncepbufr.open.missing_value": {"tf": 1}, "ncepbufr.open.dump_table": {"tf": 1}, "ncepbufr.open.print_table": {"tf": 1}, "ncepbufr.open.close": {"tf": 1}, "ncepbufr.open.cmpmsg": {"tf": 1}, "ncepbufr.open.advance": {"tf": 1}, "ncepbufr.open.inventory": {"tf": 1}, "ncepbufr.open.print_subset": {"tf": 1}, "ncepbufr.open.copy_subset": {"tf": 1}, "ncepbufr.open.dump_subset": {"tf": 1}, "ncepbufr.open.get_program_code": {"tf": 1}, "ncepbufr.open.get_flag_table_bits": {"tf": 1}, "ncepbufr.open.checkpoint": {"tf": 1}, "ncepbufr.open.rewind": {"tf": 1}, "ncepbufr.open.restore": {"tf": 1}, "ncepbufr.open.open_message": {"tf": 1}, "ncepbufr.open.copy_message": {"tf": 1}, "ncepbufr.open.close_message": {"tf": 1}, "ncepbufr.open.load_subset": {"tf": 1}, "ncepbufr.open.read_long_string": {"tf": 1}, "ncepbufr.open.read_subset": {"tf": 1}, "ncepbufr.open.write_subset": {"tf": 1}, "ncepbufr.bufr_mnemonics": {"tf": 1}, "ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 40}}}}}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.set_param": {"tf": 1}, "ncepbufr.set_missing_value": {"tf": 1}, "ncepbufr.set_datelength": {"tf": 1}}, "df": 3}}, "u": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.open.print_subset": {"tf": 1}, "ncepbufr.open.copy_subset": {"tf": 1}, "ncepbufr.open.dump_subset": {"tf": 1}, "ncepbufr.open.load_subset": {"tf": 1}, "ncepbufr.open.read_subset": {"tf": 1}, "ncepbufr.open.write_subset": {"tf": 1}}, "df": 6, "s": {"docs": {"ncepbufr.open.subsets": {"tf": 1}}, "df": 1}}}}}}, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"ncepbufr.open.read_long_string": {"tf": 1}}, "df": 1}}}}}}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {"ncepbufr.set_param": {"tf": 1}, "ncepbufr.get_param": {"tf": 1}}, "df": 2}}}}, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.open.print_table": {"tf": 1}, "ncepbufr.open.print_subset": {"tf": 1}}, "df": 2}}}, "o": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {"ncepbufr.open.get_program_code": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}}}, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.get_param": {"tf": 1}, "ncepbufr.get_missing_value": {"tf": 1}, "ncepbufr.open.get_program_code": {"tf": 1}, "ncepbufr.open.get_flag_table_bits": {"tf": 1}}, "df": 4}}}, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"ncepbufr.set_missing_value": {"tf": 1}, "ncepbufr.get_missing_value": {"tf": 1}, "ncepbufr.open.missing_value": {"tf": 1}}, "df": 3}}}}}}, "s": {"docs": {}, "df": 0, "g": {"docs": {"ncepbufr.open.msg_counter": {"tf": 1}, "ncepbufr.open.msg_type": {"tf": 1}, "ncepbufr.open.msg_date": {"tf": 1}}, "df": 3}}, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.open.open_message": {"tf": 1}, "ncepbufr.open.copy_message": {"tf": 1}, "ncepbufr.open.close_message": {"tf": 1}}, "df": 3}}}}}}, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "s": {"docs": {"ncepbufr.bufr_mnemonics": {"tf": 1}, "ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.4142135623730951}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 3}}}}}}}}}, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.set_missing_value": {"tf": 1}, "ncepbufr.get_missing_value": {"tf": 1}, "ncepbufr.open.missing_value": {"tf": 1}}, "df": 3}}}}}, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.open.msg_date": {"tf": 1}}, "df": 1, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"ncepbufr.set_datelength": {"tf": 1}}, "df": 1}}}}}}}}}, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {"ncepbufr.open.dump_table": {"tf": 1}, "ncepbufr.open.dump_subset": {"tf": 1}}, "df": 2}}}, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 2}}}}, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"ncepbufr.open": {"tf": 1}, "ncepbufr.open.__init__": {"tf": 1}, "ncepbufr.open.lunit": {"tf": 1}, "ncepbufr.open.filename": {"tf": 1}, "ncepbufr.open.msg_counter": {"tf": 1}, "ncepbufr.open.msg_type": {"tf": 1}, "ncepbufr.open.msg_date": {"tf": 1}, "ncepbufr.open.receipt_time": {"tf": 1}, "ncepbufr.open.subsets": {"tf": 1}, "ncepbufr.open.missing_value": {"tf": 1}, "ncepbufr.open.dump_table": {"tf": 1}, "ncepbufr.open.print_table": {"tf": 1}, "ncepbufr.open.close": {"tf": 1}, "ncepbufr.open.cmpmsg": {"tf": 1}, "ncepbufr.open.advance": {"tf": 1}, "ncepbufr.open.inventory": {"tf": 1}, "ncepbufr.open.print_subset": {"tf": 1}, "ncepbufr.open.copy_subset": {"tf": 1}, "ncepbufr.open.dump_subset": {"tf": 1}, "ncepbufr.open.get_program_code": {"tf": 1}, "ncepbufr.open.get_flag_table_bits": {"tf": 1}, "ncepbufr.open.checkpoint": {"tf": 1}, "ncepbufr.open.rewind": {"tf": 1}, "ncepbufr.open.restore": {"tf": 1}, "ncepbufr.open.open_message": {"tf": 1.4142135623730951}, "ncepbufr.open.copy_message": {"tf": 1}, "ncepbufr.open.close_message": {"tf": 1}, "ncepbufr.open.load_subset": {"tf": 1}, "ncepbufr.open.read_long_string": {"tf": 1}, "ncepbufr.open.read_subset": {"tf": 1}, "ncepbufr.open.write_subset": {"tf": 1}}, "df": 31}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.open.__init__": {"tf": 1}}, "df": 1}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"ncepbufr.open.inventory": {"tf": 1}}, "df": 1}}}}}}}}}, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.open.lunit": {"tf": 1}}, "df": 1}}}}, "o": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.open.load_subset": {"tf": 1}}, "df": 1}}, "n": {"docs": {}, "df": 0, "g": {"docs": {"ncepbufr.open.read_long_string": {"tf": 1}}, "df": 1}}}}, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.open.filename": {"tf": 1}}, "df": 1}}}}}}}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {"ncepbufr.open.get_flag_table_bits": {"tf": 1}}, "df": 1}}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.open.msg_counter": {"tf": 1}}, "df": 1}}}}}, "p": {"docs": {}, "df": 0, "y": {"docs": {"ncepbufr.open.copy_subset": {"tf": 1}, "ncepbufr.open.copy_message": {"tf": 1}}, "df": 2}}, "d": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.open.get_program_code": {"tf": 1}}, "df": 1}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.open.close": {"tf": 1}, "ncepbufr.open.close_message": {"tf": 1}}, "df": 2}}}}, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "g": {"docs": {"ncepbufr.open.cmpmsg": {"tf": 1}}, "df": 1}}}}}, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.open.checkpoint": {"tf": 1}}, "df": 1}}}}}}}}}}, "t": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.open.msg_type": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.open.receipt_time": {"tf": 1}}, "df": 1}}}, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.open.dump_table": {"tf": 1}, "ncepbufr.open.print_table": {"tf": 1}, "ncepbufr.open.get_flag_table_bits": {"tf": 1}}, "df": 3}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.open.receipt_time": {"tf": 1}}, "df": 1}}}}}, "w": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.open.rewind": {"tf": 1}}, "df": 1}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.open.restore": {"tf": 1}}, "df": 1}}}}}, "a": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.open.read_long_string": {"tf": 1}, "ncepbufr.open.read_subset": {"tf": 1}}, "df": 2}}}}, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.open.advance": {"tf": 1}}, "df": 1}}}}}}, "m": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "u": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "b": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"ncepbufr.open.get_flag_table_bits": {"tf": 1}}, "df": 1}}}, "u": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.bufr_mnemonics": {"tf": 1}, "ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 3}}}}, "w": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.open.write_subset": {"tf": 1}}, "df": 1}}}}}}}, "annotation": {"root": {"docs": {}, "df": 0}}, "default_value": {"root": {"0": {"2": {"1": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 5.5677643628300215}}, "df": 1}, "2": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}, "3": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}, "4": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}, "5": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}, "7": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}, "8": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "3": {"3": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}, "4": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}, "5": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}, "6": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "4": {"1": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}, "2": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}, "3": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "5": {"1": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}, "2": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}, "3": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}, "4": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 10.44030650891055}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 2}, "1": {"0": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 2.23606797749979}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 2}, "2": {"3": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}, "docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1}, "4": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1}, "5": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 2}}, "df": 1}, "7": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 2.23606797749979}}, "df": 1}, "8": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 2.23606797749979}}, "df": 1}, "9": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 2.449489742783178}}, "df": 1}, "docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 5.0990195135927845}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 2, "b": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 3.7416573867739413}}, "df": 1}, "c": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 3.1622776601683795}}, "df": 1}}, "2": {"0": {"1": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}, "2": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}, "3": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}, "docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "4": {"1": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}, "9": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}, "docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.7320508075688772}}, "df": 1, "p": {"docs": {}, "df": 0, "c": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "5": {"0": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}, "1": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}, "2": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}, "3": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}, "4": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}, "5": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 3.3166247903554}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 3.3166247903554}}, "df": 2}, "3": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 6.082762530298219}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 2, "d": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "h": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "c": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "4": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 2}, "6": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "7": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 5.0990195135927845}}, "df": 1}, "9": {"0": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}, "docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 5.0990195135927845}}, "df": 1}, "docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 21.095023109728988}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 14.966629547095765}}, "df": 2, "x": {"2": {"7": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 41.71330722922842}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 29.748949561287034}}, "df": 2}, "docs": {}, "df": 0}, "docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "b": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1}, "r": {"docs": {}, "df": 0, "g": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1}}}, "s": {"1": {"0": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "2": {"0": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "w": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}}, "d": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "p": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 2}}, "df": 1, "w": {"1": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1, "f": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.7320508075688772}}, "df": 1, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "o": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "a": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "p": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "p": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}, "q": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "r": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "e": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}, "b": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "g": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}, "2": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1, "q": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "p": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "p": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}, "r": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "a": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "e": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}, "o": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "f": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.7320508075688772}}, "df": 1, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "b": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "g": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}, "3": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1, "e": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}, "p": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "p": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}, "b": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "g": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}, "f": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.7320508075688772}}, "df": 1, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "r": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "q": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "a": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "o": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "4": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1, "f": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.7320508075688772}}, "df": 1, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}, "a": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "o": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "r": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "q": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "p": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "p": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}, "b": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "g": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}, "docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1, "a": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 2.23606797749979}}, "df": 1}}}}, "e": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1, "t": {"docs": {}, "df": 0, "u": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "t": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1, "v": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "g": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "p": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}, "b": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "g": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}, "f": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "c": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "l": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "r": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "p": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "q": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "o": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "r": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 2, "c": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1, "i": {"docs": {}, "df": 0, "p": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 6.082762530298219}}, "df": 1, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 2.6457513110645907}}, "df": 1, "/": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}}}, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 5.196152422706632}}, "df": 1}}}}}}}, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}, "w": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1}}}, "s": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 6.324555320336759}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 2}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "p": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.7320508075688772}}, "df": 1}}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "c": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}, "o": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 3.7416573867739413}}, "df": 1}}}}, "d": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1, "s": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}, "c": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 3}}, "df": 1, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 2.23606797749979}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 2}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 2.449489742783178}}, "df": 1}}, "o": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}, "n": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 2.23606797749979}}, "df": 1, "r": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1}}}}, "l": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "b": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}}}, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}, "c": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "s": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "l": {"docs": {}, "df": 0, "g": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "a": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}, "s": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "w": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "v": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "g": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 2.449489742783178}}, "df": 1}}}}}}}, "l": {"docs": {}, "df": 0, "c": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "p": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 2.23606797749979}}, "df": 1, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 3.605551275463989}}, "df": 1}}}}}}}}}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 2.23606797749979}}, "df": 1, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}}}, "w": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "w": {"docs": {}, "df": 0, "v": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "w": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "a": {"docs": {}, "df": 0, "f": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "e": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1, "t": {"docs": {}, "df": 0, "u": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "b": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}}}}, "e": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 3.3166247903554}}, "df": 1}, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "s": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}, "n": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 2}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}}, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "x": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "s": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.7320508075688772}}, "df": 1}}}}}, "q": {"docs": {}, "df": 0, "m": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "c": {"docs": {}, "df": 0, "s": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "l": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}, "c": {"docs": {}, "df": 0, "f": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 2}}, "a": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 2.6457513110645907}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 2}}}, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 2.449489742783178}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.7320508075688772}}, "df": 2, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}}, "f": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.7320508075688772}}, "df": 1}}, "a": {"docs": {}, "df": 0, "k": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.7320508075688772}}, "df": 1}}}, "f": {"docs": {}, "df": 0, "c": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.7320508075688772}}, "df": 1, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}, "k": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "s": {"docs": {}, "df": 0, "p": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}}, "s": {"docs": {}, "df": 0, "w": {"1": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "2": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "t": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}}, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "t": {"docs": {}, "df": 0, "e": {"2": {"4": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "docs": {}, "df": 0}, "docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}}, "v": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "g": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "a": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "g": {"docs": {}, "df": 0, "m": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "p": {"docs": {}, "df": 0, "c": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "m": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "l": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "q": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "o": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "d": {"0": {"0": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "9": {"0": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "p": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "t": {"2": {"9": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 2}}, "df": 1, "o": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 7}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 2, "t": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1, "a": {"docs": {}, "df": 0, "l": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 5.656854249492381}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 2}}}, "p": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 4}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 2, "c": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1}}, "v": {"docs": {}, "df": 0, "s": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1, "/": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "s": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1, "/": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "b": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 3}}, "df": 1, "d": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}, "e": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1, "t": {"docs": {}, "df": 0, "u": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "s": {"docs": {}, "df": 0, "s": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "d": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "c": {"docs": {}, "df": 0, "c": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 2}}}, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 2.23606797749979}}, "df": 1, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 6.244997998398398}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 3.872983346207417}}, "df": 2, "/": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}}}}, "s": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}, "s": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "y": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.7320508075688772}}, "df": 1}}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}, "c": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}, "p": {"0": {"1": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "3": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "6": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "1": {"2": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1}, "docs": {}, "df": 0}, "2": {"4": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0, "w": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "c": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "a": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1, "n": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "m": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "p": {"docs": {}, "df": 0, "q": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}, "r": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 2}}, "df": 1}}}}}, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "b": {"1": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "2": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "3": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 3.3166247903554}}, "df": 1}}}}}}}}, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 2.23606797749979}}, "df": 1}}}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "b": {"docs": {}, "df": 0, "x": {"1": {"0": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "2": {"1": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "3": {"2": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "4": {"3": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "u": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "c": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "f": {"docs": {}, "df": 0, "c": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.7320508075688772}}, "df": 1, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}, "s": {"docs": {}, "df": 0, "b": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "i": {"docs": {}, "df": 0, "g": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "y": {"docs": {}, "df": 0, "p": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1, "e": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 2.449489742783178}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 2.23606797749979}}, "df": 2, "s": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "m": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}, "b": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 2, "s": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "s": {"docs": {}, "df": 0, "k": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 2.449489742783178}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 3.3166247903554}}, "df": 2, "/": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "h": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 2}, "i": {"docs": {}, "df": 0, "s": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "d": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "o": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "c": {"docs": {}, "df": 0, "l": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}, "s": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "o": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "q": {"docs": {}, "df": 0, "m": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "v": {"docs": {}, "df": 0, "o": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "w": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "g": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "b": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 4.123105625617661}}, "df": 1}, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "i": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}, "s": {"1": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "2": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "3": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.7320508075688772}}, "df": 2, "i": {"docs": {}, "df": 0, "g": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 2}}, "df": 1, "m": {"docs": {}, "df": 0, "a": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 6.6332495807108}}, "df": 1}}, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 2.23606797749979}}, "df": 2}}}}}}}}}}, "d": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}, "u": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}, "p": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}, "r": {"docs": {}, "df": 0, "c": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "t": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "n": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}, "z": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "q": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 4.795831523312719}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 2, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 9.539392014169456}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 5}}, "df": 2}}}}}, "n": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "a": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 4.358898943540674}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 2, "w": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "s": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}, "t": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "e": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 3.3166247903554}}, "df": 1, "n": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.7320508075688772}}, "df": 1}}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1, "n": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1}}}}, "g": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 2}}, "df": 1}}}}}, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "l": {"docs": {}, "df": 0, "v": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 3.605551275463989}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 2}}}}}, "b": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1, "t": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}}}, "f": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}, "p": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}}}}}}, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}}, "f": {"docs": {}, "df": 0, "c": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1, "s": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "p": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "b": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "g": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "l": {"docs": {}, "df": 0, "g": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 2.23606797749979}}, "df": 1}}}, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 3.872983346207417}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.7320508075688772}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 3.7416573867739413}}, "df": 1}}}, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "d": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1, "e": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "r": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "v": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "g": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "d": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "n": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}, "o": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.7320508075688772}}, "df": 1}}, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "s": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "i": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1, "s": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 2.23606797749979}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "s": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "n": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}, "t": {"1": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1, "r": {"docs": {}, "df": 0, "c": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "q": {"docs": {}, "df": 0, "m": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "f": {"docs": {}, "df": 0, "c": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "a": {"docs": {}, "df": 0, "n": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "o": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "p": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "c": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "b": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "g": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}, "i": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1, "n": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}, "d": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}, "n": {"docs": {}, "df": 0, "x": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}, "y": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}, "d": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 2}}, "df": 1}}}, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 2.449489742783178}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.7320508075688772}}, "df": 2}}}}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.4142135623730951}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 2}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "s": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}, "u": {"docs": {}, "df": 0, "s": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "r": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "p": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 4.123105625617661}}, "df": 1}}, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1}}}}, "k": {"docs": {}, "df": 0, "o": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}, "c": {"docs": {}, "df": 0, "h": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "a": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 2}}, "df": 1, "t": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.7320508075688772}}, "df": 1, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 2.8284271247461903}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 5}}, "df": 2}}}}}, "m": {"docs": {}, "df": 0, "p": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "p": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}}, "w": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "c": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}, "i": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 2}}, "z": {"docs": {}, "df": 0, "a": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}, "c": {"docs": {}, "df": 0, "v": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.4142135623730951}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.7320508075688772}}, "df": 2}, "z": {"docs": {}, "df": 0, "i": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}, "b": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 2, "s": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}, "z": {"docs": {}, "df": 0, "a": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 2.23606797749979}}, "df": 1}}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "o": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}, "n": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 2.449489742783178}}, "df": 1}, "l": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1, "d": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 2}}, "df": 1}}}}, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "a": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}, "o": {"1": {"docs": {}, "df": 0, "c": {"3": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "docs": {}, "df": 0}}, "docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "b": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "n": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}, "w": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "o": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}, "f": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}, "c": {"docs": {}, "df": 0, "f": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "w": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 2}}, "df": 1, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}}, "y": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1, "a": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 2}}}}}, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}, "n": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "m": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "k": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "y": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 2}}, "df": 1}}, "v": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "n": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}}, "l": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "m": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}, "s": {"docs": {}, "df": 0, "f": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}, "q": {"docs": {}, "df": 0, "f": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "d": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "b": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "m": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 6.4031242374328485}}, "df": 1}}}, "t": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "q": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.7320508075688772}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 2, "/": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}, "n": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 2, "/": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}}, "o": {"docs": {}, "df": 0, "n": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1, "g": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.7320508075688772}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 2}}}}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "q": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}, "w": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "c": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}, "a": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1}}, "g": {"1": {"0": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1, "c": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "w": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}, "y": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 2.8284271247461903}}, "df": 1}}, "e": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 3.3166247903554}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 2.6457513110645907}}, "df": 2}}}}, "i": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.7320508075688772}}, "df": 1}}}}, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}}}, "n": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 2}}, "df": 1}}}, "v": {"docs": {}, "df": 0, "l": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1}}, "k": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "s": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "n": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1}}, "t": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "h": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}, "s": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "l": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "w": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 2.23606797749979}}, "df": 1, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 8.48528137423857}}, "df": 1}}}, "s": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.7320508075688772}}, "df": 1}, "v": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.7320508075688772}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 2, "s": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 2.6457513110645907}}, "df": 1}, "n": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}}}, "r": {"docs": {}, "df": 0, "m": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 2}}, "df": 1, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}, "f": {"docs": {}, "df": 0, "c": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 7.874007874011811}}, "df": 1, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.7320508075688772}}, "df": 1}}}}}, "t": {"docs": {}, "df": 0, "h": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.7320508075688772}}, "df": 2}}, "d": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1}}}}, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.7320508075688772}}, "df": 1}}}}}}, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 2.23606797749979}}, "df": 1}}}}}, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 2.8284271247461903}}, "df": 1}}}}}, "r": {"docs": {}, "df": 0, "c": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "q": {"docs": {}, "df": 0, "m": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "o": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1, "t": {"docs": {}, "df": 0, "u": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "c": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}}, "p": {"docs": {}, "df": 0, "c": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "g": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1}}}, "t": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1}, "c": {"docs": {}, "df": 0, "a": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "/": {"docs": {}, "df": 0, "o": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "m": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "c": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "d": {"1": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "e": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "c": {"1": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "d": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "r": {"1": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}}}, "v": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "q": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "w": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "g": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "a": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "n": {"docs": {}, "df": 0, "m": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "m": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "n": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}}}, "q": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 2.23606797749979}}, "df": 1, "u": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 5.0990195135927845}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 3.7416573867739413}}, "df": 2}}, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}, "o": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 2.8284271247461903}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 2.449489742783178}}, "df": 2}}, "i": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 2}}, "df": 1}}}}}}}, "q": {"docs": {}, "df": 0, "m": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "f": {"docs": {}, "df": 0, "c": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.7320508075688772}}, "df": 1, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}, "o": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1, "t": {"docs": {}, "df": 0, "u": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "b": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "p": {"docs": {}, "df": 0, "c": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "c": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 3.3166247903554}}, "df": 1, "l": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}, "s": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "a": {"docs": {}, "df": 0, "n": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "y": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "n": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "r": {"docs": {}, "df": 0, "c": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "k": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}, "v": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "g": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "m": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "h": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "g": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "q": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}, "q": {"docs": {}, "df": 0, "i": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1, "l": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}, "r": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}, "s": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "q": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}, "m": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 2.449489742783178}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 2, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "k": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 4}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "n": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "x": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 2.23606797749979}}, "df": 1, "/": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}, "s": {"docs": {}, "df": 0, "k": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}, "j": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "s": {"docs": {}, "df": 0, "q": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 3.1622776601683795}}, "df": 1}, "s": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "t": {"docs": {}, "df": 0, "q": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "u": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}, "g": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1}}, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 5.830951894845301}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.7320508075688772}}, "df": 1}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 2}}, "df": 1}}}}}}}}, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.7320508075688772}}, "df": 2}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.7320508075688772}}, "df": 1}}, "a": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "o": {"docs": {}, "df": 0, "p": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 2.23606797749979}}, "df": 1}}}, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}}}, "n": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 2}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.7320508075688772}}, "df": 2, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "s": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}, "s": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.7320508075688772}}, "df": 1}}}}}}, "/": {"docs": {}, "df": 0, "s": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 2}}, "df": 1}}, "w": {"docs": {}, "df": 0, "d": {"1": {"0": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "r": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1}, "s": {"1": {"0": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}}, "r": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "c": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "l": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "c": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 2.6457513110645907}}, "df": 1, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "u": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1, "s": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "t": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 2}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "m": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "d": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.7320508075688772}}, "df": 1}}}, "p": {"docs": {}, "df": 0, "c": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "g": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "g": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "b": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.7320508075688772}}, "df": 1}, "x": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "s": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "t": {"docs": {}, "df": 0, "m": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "m": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1}, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}, "o": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}}}}, "h": {"docs": {}, "df": 0, "o": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "n": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}}, "p": {"docs": {}, "df": 0, "i": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "t": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 5.477225575051661}}, "df": 1}}}, "h": {"docs": {}, "df": 0, "s": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1}}, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "j": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "c": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "e": {"1": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "2": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "3": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.4142135623730951}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 2.23606797749979}}, "df": 2, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 6.928203230275509}}, "df": 1, "s": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "r": {"docs": {}, "df": 0, "y": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 5.291502622129181}}, "df": 1}}}, "s": {"1": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 3.605551275463989}}, "df": 1}}, "s": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 2.23606797749979}}, "df": 1, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.7320508075688772}}, "df": 1}}}}}}, "b": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "k": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.4142135623730951}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.7320508075688772}}, "df": 2}}}}}}}}}, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "v": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.7320508075688772}}, "df": 1}}}}}}}, "v": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "x": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}}, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.7320508075688772}}, "df": 1}}}}}}}}}}, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}, "e": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "f": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "d": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 2}}, "df": 1}, "t": {"docs": {}, "df": 0, "h": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.7320508075688772}}, "df": 1}}}}, "p": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}}}, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}, "d": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "c": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 2}}, "df": 1, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 5.291502622129181}}, "df": 1}}, "r": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.7320508075688772}}, "df": 1}}, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.4142135623730951}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.7320508075688772}}, "df": 2, "s": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}}}}, "m": {"docs": {}, "df": 0, "p": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 3.605551275463989}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.7320508075688772}}, "df": 2, "s": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.7320508075688772}}, "df": 1}}}}}}, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}}, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "x": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "b": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}}}}, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 2.6457513110645907}}, "df": 1, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1}}}}, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 2.23606797749979}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 2}}, "df": 2}}}}}}}}, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 2.23606797749979}}, "df": 1}}}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 2, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}, "d": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.7320508075688772}}, "df": 1}, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1}}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"2": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "docs": {}, "df": 0, "d": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 4.69041575982343}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 3.1622776601683795}}, "df": 2, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "v": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}, "n": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1, "h": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 3.4641016151377544}}, "df": 1}}}}, "y": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 2.23606797749979}}, "df": 1}}}}}}}, "o": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "a": {"docs": {}, "df": 0, "m": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}}}}}}, "t": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1, "h": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}, "v": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1}}}, "d": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 2, "e": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "p": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 2}}, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1}}}, "r": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1}}, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "n": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "a": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}, "p": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1, "q": {"docs": {}, "df": 0, "m": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "o": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "f": {"docs": {}, "df": 0, "c": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "e": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}, "p": {"docs": {}, "df": 0, "c": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "p": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "b": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "g": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}, "r": {"docs": {}, "df": 0, "c": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "s": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.7320508075688772}}, "df": 1}}, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "n": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1}}, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 3.1622776601683795}}, "df": 1}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}, "q": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "f": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "h": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "y": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1}}}, "e": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 2.449489742783178}}, "df": 1}}}}}}}}}}, "h": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}}}}}}, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1}}, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 5}}, "df": 2, "s": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "s": {"docs": {}, "df": 0, "q": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "f": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}, "i": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "n": {"docs": {}, "df": 0, "m": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 2}, "s": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "d": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "p": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "l": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "s": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1}, "t": {"docs": {}, "df": 0, "c": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "c": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "c": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "r": {"3": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}, "docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 3.7416573867739413}}, "df": 1}}}}, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 2.23606797749979}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.7320508075688772}}, "df": 2, "s": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 4.242640687119285}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 2}, "e": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.7320508075688772}}, "df": 1}}}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 2.23606797749979}}, "df": 1}}}}}}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}, "c": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "e": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 2.6457513110645907}}, "df": 2}}}}, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 2.449489742783178}}, "df": 1, "s": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}, "d": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.7320508075688772}}, "df": 1}}}}}}}}}}}}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.4142135623730951}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 2}}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.7320508075688772}}, "df": 1}}}}}}}}}, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}}, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}, "g": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "q": {"docs": {}, "df": 0, "v": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "h": {"docs": {}, "df": 0, "u": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "a": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "b": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1, "/": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.7320508075688772}}, "df": 1}}}}}}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 3.605551275463989}}, "df": 1}}, "d": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1}}}}, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 4.795831523312719}}, "df": 1, "s": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.4142135623730951}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 2}, "/": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "o": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}, "s": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}, "a": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "w": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.7320508075688772}}, "df": 1}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 2}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 2, "f": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 2.6457513110645907}}, "df": 1}}}}}, "a": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}, "d": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}, "s": {"docs": {}, "df": 0, "s": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1, "d": {"docs": {}, "df": 0, "a": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "r": {"docs": {}, "df": 0, "s": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 2}}, "df": 1}}}, "f": {"1": {"0": {"docs": {}, "df": 0, "m": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "docs": {}, "df": 0}, "docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "l": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "r": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1, "b": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "g": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}, "p": {"docs": {}, "df": 0, "c": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "p": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}, "f": {"docs": {}, "df": 0, "c": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "o": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "q": {"docs": {}, "df": 0, "m": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "e": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}, "r": {"docs": {}, "df": 0, "c": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "a": {"docs": {}, "df": 0, "n": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "c": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1, "s": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "y": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}, "m": {"docs": {}, "df": 0, "o": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}, "i": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}, "d": {"docs": {}, "df": 0, "y": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}, "h": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "p": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1, "s": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"4": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}, "7": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}, "8": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}}}}, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "f": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "l": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "w": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 2}}, "s": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "d": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "f": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}, "p": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}, "c": {"docs": {}, "df": 0, "m": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}, "n": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "a": {"1": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "2": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "3": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 2.6457513110645907}}, "df": 1, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 3.872983346207417}}, "df": 1, "y": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 3.7416573867739413}}, "df": 1}}}, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 2.8284271247461903}}, "df": 1}}}}}}, "g": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 3}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.7320508075688772}}, "df": 2}}, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "d": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 2.23606797749979}}, "df": 1}, "p": {"docs": {}, "df": 0, "o": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.7320508075688772}}, "df": 1}}}}}}, "d": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "s": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "c": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 3.605551275463989}}, "df": 1}}}}, "f": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1, "/": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "p": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "f": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}, "s": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.7320508075688772}}, "df": 1, "/": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "u": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.7320508075688772}}, "df": 1}}}}}, "p": {"docs": {}, "df": 0, "c": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}}, "m": {"docs": {}, "df": 0, "p": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.4142135623730951}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 2.23606797749979}}, "df": 2}, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 2}}}}, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "s": {"docs": {}, "df": 0, "u": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 3.3166247903554}}, "df": 1, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}, "r": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.7320508075688772}}, "df": 1, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}}, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 2.23606797749979}}, "df": 1, "w": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 2}}, "df": 1}}}}}}}}}, "m": {"docs": {}, "df": 0, "p": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "r": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}, "f": {"docs": {}, "df": 0, "i": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.7320508075688772}}, "df": 1, "q": {"docs": {}, "df": 0, "c": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "v": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}, "f": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "c": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "y": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 2.449489742783178}}, "df": 1}}}}}}, "q": {"docs": {}, "df": 0, "f": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "t": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.4142135623730951}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 2, "r": {"docs": {}, "df": 0, "n": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "m": {"docs": {}, "df": 0, "s": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1, "c": {"docs": {}, "df": 0, "h": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1, "q": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "g": {"docs": {}, "df": 0, "q": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}, "s": {"docs": {}, "df": 0, "q": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "o": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "s": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 3.7416573867739413}}, "df": 1}, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "a": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}, "b": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "v": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "v": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 2}}}}}}, "l": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.7320508075688772}}, "df": 2, "s": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}, "p": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "b": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "o": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.7320508075688772}}, "df": 1, "s": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "d": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}, "f": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 2.8284271247461903}}, "df": 1}}}}}, "g": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "h": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 3.1622776601683795}}, "df": 1}, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "n": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "c": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "c": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1}}}, "z": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.7320508075688772}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 2}}}}}}, "b": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "p": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 2}}, "df": 1, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}, "/": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "b": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.7320508075688772}}, "df": 1}}}}, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "a": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 3}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "w": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "v": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 3}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 2, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 6.928203230275509}}, "df": 1}}}, "n": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "s": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 2.8284271247461903}}, "df": 1}}}}}}, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "b": {"docs": {}, "df": 0, "l": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "d": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1, "w": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.7320508075688772}}, "df": 1}}}}, "f": {"docs": {}, "df": 0, "c": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "b": {"1": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "2": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 2.23606797749979}}, "df": 1}}}}}}}}, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "u": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "w": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 2}}, "df": 1, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1}}}}, "r": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.4142135623730951}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 2}}}}}, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}, "t": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1}}}, "c": {"docs": {}, "df": 0, "l": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "s": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "b": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "o": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "i": {"docs": {}, "df": 0, "g": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}, "a": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "f": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1, "o": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 3.7416573867739413}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 2.8284271247461903}}, "df": 2, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 5.291502622129181}}, "df": 1}}}}}, "n": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}, "v": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 2}}, "df": 1, "n": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}, "q": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}, "s": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "r": {"docs": {}, "df": 0, "m": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1}, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "y": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}, "e": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}, "o": {"docs": {}, "df": 0, "m": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 2}}, "df": 2}}, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "m": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.7320508075688772}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "g": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.4142135623730951}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 2}}, "df": 2, "s": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 3.3166247903554}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 2}}}}}, "c": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 3.1622776601683795}}, "df": 1}}, "n": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "p": {"docs": {}, "df": 0, "h": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 2, "e": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 2.23606797749979}}, "df": 1}}}, "t": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1, "s": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "f": {"docs": {}, "df": 0, "o": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}}}, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 2}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 2.23606797749979}}, "df": 2, "s": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 3}}, "df": 1}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}}}, "s": {"docs": {}, "df": 0, "w": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "c": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.4142135623730951}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 2}, "b": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "v": {"docs": {}, "df": 0, "i": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}}}, "w": {"docs": {}, "df": 0, "v": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "w": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "l": {"docs": {}, "df": 0, "s": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 4.358898943540674}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 2}}, "df": 2}}}}}}}, "e": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 5.196152422706632}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 2.23606797749979}}, "df": 2, "/": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}}, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "e": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 2}}}}}, "a": {"docs": {}, "df": 0, "s": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "r": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "b": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "i": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "t": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "l": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "s": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "i": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "t": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 2.23606797749979}}, "df": 1}}, "g": {"docs": {}, "df": 0, "h": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 2}}, "df": 1}}, "t": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "h": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "m": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1, "s": {"docs": {}, "df": 0, "s": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}, "s": {"docs": {}, "df": 0, "b": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}, "m": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "l": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "y": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "b": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1}, "r": {"docs": {}, "df": 0, "g": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1}}}, "d": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "y": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "g": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "g": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 2}}, "df": 1}}}, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "g": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.7320508075688772}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 3}}, "df": 2, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 2}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 2.23606797749979}}, "df": 2}}}}}, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}}, "e": {"docs": {}, "df": 0, "x": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 2.23606797749979}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 2}}, "x": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1}}, "f": {"docs": {}, "df": 0, "o": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 3.872983346207417}}, "df": 1, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 4.242640687119285}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 2}}}}}}}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "s": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}}}}, "r": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 2.6457513110645907}}, "df": 2, "s": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}}}}}}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 2}}}}}}}, "m": {"docs": {}, "df": 0, "s": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.7320508075688772}}, "df": 1}, "c": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}, "l": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "n": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "d": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.4142135623730951}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 2, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.7320508075688772}}, "df": 2}}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.7320508075688772}}, "df": 2, "/": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "s": {"docs": {}, "df": 0, "i": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 2.6457513110645907}}, "df": 1, "l": {"1": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "b": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}, "s": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "docs": {}, "df": 0}, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "n": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}, "g": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}, "t": {"docs": {}, "df": 0, "p": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 2}}, "df": 1}}}}, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "h": {"docs": {}, "df": 0, "c": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}}}}}, "o": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1, "b": {"docs": {}, "df": 0, "s": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 3.605551275463989}}, "df": 1, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 6.48074069840786}}, "df": 1, "s": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}}, "f": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 6.324555320336759}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 5.916079783099616}}, "df": 2}, "n": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 5.5677643628300215}}, "df": 1, "l": {"docs": {}, "df": 0, "y": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 2.6457513110645907}}, "df": 1}}}, "r": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.4142135623730951}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 2.23606797749979}}, "df": 2, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.7320508075688772}}, "df": 1}}}}}}}}}}}}}}}}}}}}, "b": {"docs": {}, "df": 0, "n": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}, "i": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "z": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1, "e": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "i": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1, "q": {"docs": {}, "df": 0, "c": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "g": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}, "u": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 3}}, "df": 1, "a": {"docs": {}, "df": 0, "n": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "o": {"docs": {}, "df": 0, "b": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1, "/": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "b": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.7320508075688772}}, "df": 1}}}}}}, "p": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "f": {"docs": {}, "df": 0, "c": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}, "c": {"docs": {}, "df": 0, "s": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "l": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1}}}}, "b": {"1": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "2": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "3": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 2}}, "df": 2, "u": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "y": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 2.23606797749979}}, "df": 1}}}}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "h": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "g": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 2.23606797749979}}, "df": 1, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 4.898979485566356}}, "df": 1, "/": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}, "n": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 2}}, "df": 1}}}}, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 2}}, "df": 1}}}}}}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 2}}, "df": 1, "d": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 4.123105625617661}}, "df": 1}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "n": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 2}}, "df": 1, "w": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}, "t": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "o": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "l": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}}, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.7320508075688772}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 2.449489742783178}}, "df": 2}}}}}}}, "t": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1, "c": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "c": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}}, "o": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "s": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.7320508075688772}}, "df": 1}}}, "r": {"docs": {}, "df": 0, "g": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "y": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1}, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "z": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 2}}, "df": 1}}}}, "c": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "q": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}, "i": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}, "w": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "c": {"1": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}, "2": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}}}, "b": {"docs": {}, "df": 0, "b": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1}}}, "d": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "s": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "f": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "o": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}}, "f": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1, "q": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "p": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "r": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "t": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.7320508075688772}}, "df": 1}}, "i": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 2.8284271247461903}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 2}}, "df": 2, "/": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 2.23606797749979}}, "df": 1}}}}}}}}}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.7320508075688772}}, "df": 2}}}}}, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}}}}}, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}, "m": {"docs": {}, "df": 0, "s": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}}}}}, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 2.23606797749979}}, "df": 1}}, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}}, "v": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 2.23606797749979}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 2}}, "df": 2}}}}}}}, "g": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 2}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 2, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1, "s": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.7320508075688772}}, "df": 1}}}}}, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}, "w": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}, "f": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}}}}, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 3.1622776601683795}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 6.082762530298219}}, "df": 2}, "e": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}, "y": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.7320508075688772}}, "df": 1, "s": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "d": {"docs": {}, "df": 0, "o": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1, "/": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "o": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.7320508075688772}}, "df": 1}}}}}}, "g": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1}}}}, "m": {"docs": {}, "df": 0, "p": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "h": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1}}, "o": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "s": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "s": {"docs": {}, "df": 0, "w": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "b": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1}}}, "m": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "p": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "n": {"1": {"5": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.7320508075688772}}, "df": 1}, "8": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.4142135623730951}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 2, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 4.47213595499958}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 3.4641016151377544}}, "df": 2}}}}, "l": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1, "l": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "s": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "s": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}, "d": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}, "w": {"docs": {}, "df": 0, "a": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}, "r": {"docs": {}, "df": 0, "l": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "c": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1}}}}, "q": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "s": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}, "o": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 2.23606797749979}}, "df": 1}, "n": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1}, "a": {"docs": {}, "df": 0, "a": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 3.1622776601683795}}, "df": 1}}, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}}}, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 2.23606797749979}}, "df": 1}}}}, "c": {"0": {"2": {"1": {"0": {"2": {"1": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}, "2": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}, "3": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}, "4": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}, "5": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}, "7": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}, "8": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "3": {"3": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}, "4": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}, "5": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}, "6": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "4": {"1": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}, "2": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}, "3": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "5": {"1": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}, "2": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}, "3": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}, "4": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "1": {"2": {"3": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "2": {"0": {"1": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}, "2": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}, "3": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "4": {"1": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}, "9": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "5": {"0": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}, "1": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}, "2": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}, "3": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}, "4": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}, "5": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}, "q": {"docs": {}, "df": 0, "f": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "p": {"docs": {}, "df": 0, "p": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 2.23606797749979}}, "df": 1, "r": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}, "c": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1}}}}, "s": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "f": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "f": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "f": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "g": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "i": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "z": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 2}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 2, "q": {"docs": {}, "df": 0, "m": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.4142135623730951}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 2}}}}}, "f": {"docs": {}, "df": 0, "c": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.7320508075688772}}, "df": 1, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}, "r": {"docs": {}, "df": 0, "c": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "a": {"docs": {}, "df": 0, "n": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "p": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "g": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "o": {"docs": {}, "df": 0, "b": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}, "e": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "p": {"docs": {}, "df": 0, "c": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "c": {"docs": {}, "df": 0, "l": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}, "s": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "g": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"1": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "2": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.7320508075688772}}, "df": 1, "s": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 2}}, "df": 1}}}}, "o": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.7320508075688772}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 2, "n": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.7320508075688772}}, "df": 1}}}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 3.605551275463989}}, "df": 1}}}}}, "t": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 2}}, "df": 1}, "p": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "w": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}, "i": {"docs": {}, "df": 0, "c": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}}}}, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}}}}, "s": {"docs": {}, "df": 0, "i": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1}, "e": {"docs": {}, "df": 0, "s": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "c": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}, "a": {"docs": {}, "df": 0, "c": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 2.23606797749979}}, "df": 1}}, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 1}}}}, "n": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}}, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 1}}}}}}}}, "signature": {"root": {"3": {"9": {"docs": {"ncepbufr.open.__init__": {"tf": 1.4142135623730951}}, "df": 1}, "docs": {}, "df": 0}, "docs": {"ncepbufr.set_param": {"tf": 3.7416573867739413}, "ncepbufr.get_param": {"tf": 3.1622776601683795}, "ncepbufr.set_missing_value": {"tf": 3.1622776601683795}, "ncepbufr.get_missing_value": {"tf": 2.6457513110645907}, "ncepbufr.set_datelength": {"tf": 3.1622776601683795}, "ncepbufr.open.__init__": {"tf": 5.0990195135927845}, "ncepbufr.open.dump_table": {"tf": 3.7416573867739413}, "ncepbufr.open.print_table": {"tf": 3.1622776601683795}, "ncepbufr.open.close": {"tf": 3.1622776601683795}, "ncepbufr.open.cmpmsg": {"tf": 3.7416573867739413}, "ncepbufr.open.advance": {"tf": 3.1622776601683795}, "ncepbufr.open.inventory": {"tf": 3.1622776601683795}, "ncepbufr.open.print_subset": {"tf": 4.242640687119285}, "ncepbufr.open.copy_subset": {"tf": 3.7416573867739413}, "ncepbufr.open.dump_subset": {"tf": 5.477225575051661}, "ncepbufr.open.get_program_code": {"tf": 3.7416573867739413}, "ncepbufr.open.get_flag_table_bits": {"tf": 4.242640687119285}, "ncepbufr.open.checkpoint": {"tf": 3.1622776601683795}, "ncepbufr.open.rewind": {"tf": 3.1622776601683795}, "ncepbufr.open.restore": {"tf": 3.1622776601683795}, "ncepbufr.open.open_message": {"tf": 5.0990195135927845}, "ncepbufr.open.copy_message": {"tf": 3.7416573867739413}, "ncepbufr.open.close_message": {"tf": 3.1622776601683795}, "ncepbufr.open.load_subset": {"tf": 3.1622776601683795}, "ncepbufr.open.read_long_string": {"tf": 3.7416573867739413}, "ncepbufr.open.read_subset": {"tf": 6.164414002968976}, "ncepbufr.open.write_subset": {"tf": 7.0710678118654755}}, "df": 27, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "y": {"docs": {"ncepbufr.set_param": {"tf": 1}, "ncepbufr.get_param": {"tf": 1}}, "df": 2}}}, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"ncepbufr.open.get_flag_table_bits": {"tf": 1}}, "df": 1, "u": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.set_param": {"tf": 1}, "ncepbufr.set_missing_value": {"tf": 1}}, "df": 2}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.open.print_subset": {"tf": 1}, "ncepbufr.open.dump_subset": {"tf": 1}}, "df": 2}}}}}}}, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"ncepbufr.set_missing_value": {"tf": 1}}, "df": 1}}}}}}, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.open.__init__": {"tf": 1}}, "df": 1}}}, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {"ncepbufr.open.get_program_code": {"tf": 1}, "ncepbufr.open.get_flag_table_bits": {"tf": 1}, "ncepbufr.open.read_long_string": {"tf": 1}}, "df": 3, "s": {"docs": {"ncepbufr.open.read_subset": {"tf": 1}, "ncepbufr.open.write_subset": {"tf": 1}}, "df": 2}}}}}}}}, "s": {"docs": {}, "df": 0, "g": {"docs": {"ncepbufr.open.open_message": {"tf": 1.7320508075688772}}, "df": 1}}}, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"ncepbufr.set_datelength": {"tf": 1}}, "df": 1}}}}}}, "m": {"docs": {}, "df": 0, "p": {"docs": {"ncepbufr.open.cmpmsg": {"tf": 1}}, "df": 1}}}, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.open.__init__": {"tf": 1}, "ncepbufr.open.dump_table": {"tf": 1}, "ncepbufr.open.dump_subset": {"tf": 1}}, "df": 3}}}}}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.open.print_subset": {"tf": 1}, "ncepbufr.open.dump_subset": {"tf": 1.4142135623730951}, "ncepbufr.open.read_subset": {"tf": 1.7320508075688772}, "ncepbufr.open.write_subset": {"tf": 2}}, "df": 4}}}}}, "r": {"docs": {"ncepbufr.open.__init__": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.open.open_message": {"tf": 1}}, "df": 1}}}}}, "p": {"docs": {"ncepbufr.open.read_subset": {"tf": 1}, "ncepbufr.open.write_subset": {"tf": 1}}, "df": 2}}}, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.open.__init__": {"tf": 1}}, "df": 1}}}}, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.open.open_message": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.open.open_message": {"tf": 1}}, "df": 1}}}}, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.open.__init__": {"tf": 1}, "ncepbufr.open.open_message": {"tf": 1}}, "df": 2}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "f": {"docs": {"ncepbufr.open.dump_table": {"tf": 1}, "ncepbufr.open.print_table": {"tf": 1}, "ncepbufr.open.close": {"tf": 1}, "ncepbufr.open.cmpmsg": {"tf": 1}, "ncepbufr.open.advance": {"tf": 1}, "ncepbufr.open.inventory": {"tf": 1}, "ncepbufr.open.print_subset": {"tf": 1}, "ncepbufr.open.copy_subset": {"tf": 1}, "ncepbufr.open.dump_subset": {"tf": 1}, "ncepbufr.open.get_program_code": {"tf": 1}, "ncepbufr.open.get_flag_table_bits": {"tf": 1}, "ncepbufr.open.checkpoint": {"tf": 1}, "ncepbufr.open.rewind": {"tf": 1}, "ncepbufr.open.restore": {"tf": 1}, "ncepbufr.open.open_message": {"tf": 1}, "ncepbufr.open.copy_message": {"tf": 1}, "ncepbufr.open.close_message": {"tf": 1}, "ncepbufr.open.load_subset": {"tf": 1}, "ncepbufr.open.read_long_string": {"tf": 1}, "ncepbufr.open.read_subset": {"tf": 1}, "ncepbufr.open.write_subset": {"tf": 1}}, "df": 21}}, "q": {"docs": {"ncepbufr.open.read_subset": {"tf": 1}, "ncepbufr.open.write_subset": {"tf": 1}}, "df": 2}}}, "b": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"ncepbufr.open.copy_subset": {"tf": 1}, "ncepbufr.open.copy_message": {"tf": 1}}, "df": 2}}}}}}, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.open.dump_subset": {"tf": 1}}, "df": 1}}}}}}, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.open.open_message": {"tf": 1}}, "df": 1}, "a": {"docs": {"ncepbufr.open.write_subset": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"ncepbufr.open.read_subset": {"tf": 1}, "ncepbufr.open.write_subset": {"tf": 1}}, "df": 2}}}}}, "n": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.open.write_subset": {"tf": 1}}, "df": 1}}}}}, "bases": {"root": {"docs": {}, "df": 0}}, "doc": {"root": {"0": {"docs": {"ncepbufr.open.advance": {"tf": 1.4142135623730951}, "ncepbufr.open.load_subset": {"tf": 1.4142135623730951}, "ncepbufr.open.read_long_string": {"tf": 1.4142135623730951}}, "df": 3}, "1": {"0": {"docs": {"ncepbufr.set_datelength": {"tf": 1}, "ncepbufr.open.open_message": {"tf": 1}}, "df": 2}, "docs": {"ncepbufr.open.receipt_time": {"tf": 1}, "ncepbufr.open.advance": {"tf": 1}, "ncepbufr.open.read_long_string": {"tf": 1}}, "df": 3}, "3": {"docs": {"ncepbufr.open.read_subset": {"tf": 1}, "ncepbufr.open.write_subset": {"tf": 1}}, "df": 2, "r": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.open.read_subset": {"tf": 1}}, "df": 1}}}, "docs": {"ncepbufr": {"tf": 1.7320508075688772}, "ncepbufr.set_param": {"tf": 2.449489742783178}, "ncepbufr.get_param": {"tf": 1.7320508075688772}, "ncepbufr.set_missing_value": {"tf": 1.7320508075688772}, "ncepbufr.get_missing_value": {"tf": 1.7320508075688772}, "ncepbufr.set_datelength": {"tf": 2.23606797749979}, "ncepbufr.open": {"tf": 3.7416573867739413}, "ncepbufr.open.__init__": {"tf": 6.48074069840786}, "ncepbufr.open.lunit": {"tf": 1.7320508075688772}, "ncepbufr.open.filename": {"tf": 1.4142135623730951}, "ncepbufr.open.msg_counter": {"tf": 1.4142135623730951}, "ncepbufr.open.msg_type": {"tf": 1.4142135623730951}, "ncepbufr.open.msg_date": {"tf": 1.4142135623730951}, "ncepbufr.open.receipt_time": {"tf": 2}, "ncepbufr.open.subsets": {"tf": 1.4142135623730951}, "ncepbufr.open.missing_value": {"tf": 1.4142135623730951}, "ncepbufr.open.dump_table": {"tf": 1.4142135623730951}, "ncepbufr.open.print_table": {"tf": 1.4142135623730951}, "ncepbufr.open.close": {"tf": 1.4142135623730951}, "ncepbufr.open.cmpmsg": {"tf": 1.4142135623730951}, "ncepbufr.open.advance": {"tf": 6.855654600401044}, "ncepbufr.open.inventory": {"tf": 1.7320508075688772}, "ncepbufr.open.print_subset": {"tf": 3.872983346207417}, "ncepbufr.open.copy_subset": {"tf": 1.4142135623730951}, "ncepbufr.open.dump_subset": {"tf": 4.47213595499958}, "ncepbufr.open.get_program_code": {"tf": 2.23606797749979}, "ncepbufr.open.get_flag_table_bits": {"tf": 1.7320508075688772}, "ncepbufr.open.checkpoint": {"tf": 2.23606797749979}, "ncepbufr.open.rewind": {"tf": 2.23606797749979}, "ncepbufr.open.restore": {"tf": 2.23606797749979}, "ncepbufr.open.open_message": {"tf": 4.898979485566356}, "ncepbufr.open.copy_message": {"tf": 1.4142135623730951}, "ncepbufr.open.close_message": {"tf": 1.4142135623730951}, "ncepbufr.open.load_subset": {"tf": 3.1622776601683795}, "ncepbufr.open.read_long_string": {"tf": 3.605551275463989}, "ncepbufr.open.read_subset": {"tf": 7.54983443527075}, "ncepbufr.open.write_subset": {"tf": 6.6332495807108}, "ncepbufr.bufr_mnemonics": {"tf": 1.7320508075688772}, "ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1.4142135623730951}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1.4142135623730951}}, "df": 40, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.set_param": {"tf": 1}, "ncepbufr.get_param": {"tf": 1}, "ncepbufr.set_missing_value": {"tf": 1}, "ncepbufr.set_datelength": {"tf": 1}, "ncepbufr.open.advance": {"tf": 1}, "ncepbufr.open.open_message": {"tf": 1}}, "df": 6, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "s": {"docs": {"ncepbufr.open.get_flag_table_bits": {"tf": 1}}, "df": 1}}}}}}, "e": {"docs": {"ncepbufr.get_param": {"tf": 1}, "ncepbufr.open.get_program_code": {"tf": 1}, "ncepbufr.open.get_flag_table_bits": {"tf": 1}, "ncepbufr.open.read_subset": {"tf": 1}, "ncepbufr.open.write_subset": {"tf": 1}}, "df": 5}, "q": {"docs": {"ncepbufr.open.read_subset": {"tf": 1.4142135623730951}, "ncepbufr.open.write_subset": {"tf": 1.4142135623730951}}, "df": 2, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.open.read_subset": {"tf": 1.7320508075688772}, "ncepbufr.open.write_subset": {"tf": 1.7320508075688772}}, "df": 2}}}}}}}, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.set_param": {"tf": 1}, "ncepbufr.get_param": {"tf": 1}}, "df": 2}}, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"ncepbufr.open.read_long_string": {"tf": 1}, "ncepbufr.open.read_subset": {"tf": 1}, "ncepbufr.open.write_subset": {"tf": 1}}, "df": 3}}}}, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.open.read_long_string": {"tf": 1}}, "df": 1}}}}}, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.set_param": {"tf": 1}}, "df": 1}}}}}, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ncepbufr.set_datelength": {"tf": 1}}, "df": 1}}}}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.open.__init__": {"tf": 1.4142135623730951}, "ncepbufr.open.copy_subset": {"tf": 1}, "ncepbufr.open.get_program_code": {"tf": 1}, "ncepbufr.open.copy_message": {"tf": 1}, "ncepbufr.open.read_long_string": {"tf": 1}, "ncepbufr.open.read_subset": {"tf": 1.4142135623730951}, "ncepbufr.open.write_subset": {"tf": 1}}, "df": 7}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.open.get_flag_table_bits": {"tf": 1}}, "df": 1}}}}}}, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.open.read_subset": {"tf": 1}, "ncepbufr.open.write_subset": {"tf": 1}}, "df": 2}}}}, "t": {"docs": {"ncepbufr.open.read_long_string": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "p": {"docs": {"ncepbufr.open": {"tf": 1}}, "df": 1}}, "d": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.open.print_table": {"tf": 1}}, "df": 1}}}}, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"ncepbufr.open.advance": {"tf": 1}, "ncepbufr.open.open_message": {"tf": 1}, "ncepbufr.open.read_long_string": {"tf": 2.23606797749979}, "ncepbufr.open.read_subset": {"tf": 1.4142135623730951}, "ncepbufr.open.write_subset": {"tf": 1}}, "df": 5}}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.open.checkpoint": {"tf": 1}, "ncepbufr.open.restore": {"tf": 1}}, "df": 2}}}, "s": {"docs": {}, "df": 0, "n": {"docs": {"ncepbufr.open.read_long_string": {"tf": 1}}, "df": 1}}}, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.open.__init__": {"tf": 1}}, "df": 1}}}, "p": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.open.read_subset": {"tf": 1}}, "df": 1}}}}, "u": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.open.advance": {"tf": 1.7320508075688772}, "ncepbufr.open.print_subset": {"tf": 2}, "ncepbufr.open.copy_subset": {"tf": 1}, "ncepbufr.open.dump_subset": {"tf": 2}, "ncepbufr.open.load_subset": {"tf": 2}, "ncepbufr.open.read_long_string": {"tf": 2}, "ncepbufr.open.read_subset": {"tf": 2}, "ncepbufr.open.write_subset": {"tf": 1.4142135623730951}}, "df": 8, "s": {"docs": {"ncepbufr.open.subsets": {"tf": 1}, "ncepbufr.open.advance": {"tf": 1.4142135623730951}, "ncepbufr.open.inventory": {"tf": 1}, "ncepbufr.open.load_subset": {"tf": 1}}, "df": 4}}, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.open.cmpmsg": {"tf": 1}}, "df": 1}}}}}}}}, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {"ncepbufr.open.advance": {"tf": 1}}, "df": 1}}}}}}}}, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.open.get_program_code": {"tf": 1}}, "df": 1}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {"ncepbufr.open.read_subset": {"tf": 1}, "ncepbufr.open.write_subset": {"tf": 1}}, "df": 2}}}}}, "p": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "v": {"docs": {"ncepbufr.open.get_flag_table_bits": {"tf": 1}}, "df": 1}}}}}}}}}, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.open.rewind": {"tf": 1}}, "df": 1}}}}, "b": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.set_param": {"tf": 1}, "ncepbufr.set_missing_value": {"tf": 1}, "ncepbufr.get_missing_value": {"tf": 1}, "ncepbufr.open": {"tf": 1.4142135623730951}, "ncepbufr.open.__init__": {"tf": 2.23606797749979}, "ncepbufr.open.filename": {"tf": 1}, "ncepbufr.open.msg_counter": {"tf": 1}, "ncepbufr.open.msg_type": {"tf": 1}, "ncepbufr.open.msg_date": {"tf": 1}, "ncepbufr.open.receipt_time": {"tf": 1}, "ncepbufr.open.subsets": {"tf": 1}, "ncepbufr.open.missing_value": {"tf": 1}, "ncepbufr.open.dump_table": {"tf": 1}, "ncepbufr.open.print_table": {"tf": 1}, "ncepbufr.open.close": {"tf": 1}, "ncepbufr.open.cmpmsg": {"tf": 1}, "ncepbufr.open.advance": {"tf": 2.23606797749979}, "ncepbufr.open.inventory": {"tf": 1}, "ncepbufr.open.copy_subset": {"tf": 1.4142135623730951}, "ncepbufr.open.checkpoint": {"tf": 1}, "ncepbufr.open.rewind": {"tf": 1}, "ncepbufr.open.restore": {"tf": 1}, "ncepbufr.open.open_message": {"tf": 1.4142135623730951}, "ncepbufr.open.copy_message": {"tf": 1}, "ncepbufr.open.close_message": {"tf": 1}, "ncepbufr.open.load_subset": {"tf": 1.7320508075688772}, "ncepbufr.open.read_long_string": {"tf": 2}, "ncepbufr.open.write_subset": {"tf": 1}}, "df": 28, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {"ncepbufr.set_param": {"tf": 1}, "ncepbufr.get_param": {"tf": 1}}, "df": 2}}}}}, "t": {"docs": {"ncepbufr.open.print_subset": {"tf": 1}, "ncepbufr.open.dump_subset": {"tf": 1}}, "df": 2}}, "e": {"docs": {"ncepbufr.set_param": {"tf": 1.4142135623730951}, "ncepbufr.open": {"tf": 1}, "ncepbufr.open.__init__": {"tf": 2}, "ncepbufr.open.print_subset": {"tf": 1}, "ncepbufr.open.dump_subset": {"tf": 1}, "ncepbufr.open.checkpoint": {"tf": 1}, "ncepbufr.open.load_subset": {"tf": 1}, "ncepbufr.open.read_long_string": {"tf": 1.4142135623730951}, "ncepbufr.open.read_subset": {"tf": 1.7320508075688772}, "ncepbufr.open.write_subset": {"tf": 1.4142135623730951}}, "df": 10, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.open.advance": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "n": {"docs": {"ncepbufr.open.advance": {"tf": 1}}, "df": 1}}, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.open.print_subset": {"tf": 1}, "ncepbufr.open.dump_subset": {"tf": 1}, "ncepbufr.open.load_subset": {"tf": 1}, "ncepbufr.open.read_subset": {"tf": 1}}, "df": 4}}}}, "g": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"ncepbufr.open.read_long_string": {"tf": 1}}, "df": 1}}}}}}}}, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {"ncepbufr.open.advance": {"tf": 1}}, "df": 1}}}}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.open.get_flag_table_bits": {"tf": 1}}, "df": 1}}, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {"ncepbufr.open.checkpoint": {"tf": 1}}, "df": 1}}}, "y": {"docs": {"ncepbufr.open.restore": {"tf": 1}, "ncepbufr.open.open_message": {"tf": 1.4142135623730951}, "ncepbufr.open.read_subset": {"tf": 1.4142135623730951}, "ncepbufr.open.write_subset": {"tf": 1.4142135623730951}}, "df": 4}}, "i": {"docs": {}, "df": 0, "n": {"docs": {"ncepbufr.set_param": {"tf": 1}, "ncepbufr.open.__init__": {"tf": 1}, "ncepbufr.open.subsets": {"tf": 1}, "ncepbufr.open.cmpmsg": {"tf": 1}, "ncepbufr.open.advance": {"tf": 1.7320508075688772}, "ncepbufr.open.print_subset": {"tf": 1}, "ncepbufr.open.dump_subset": {"tf": 1}, "ncepbufr.open.checkpoint": {"tf": 1}, "ncepbufr.open.open_message": {"tf": 1}, "ncepbufr.open.load_subset": {"tf": 1.4142135623730951}, "ncepbufr.open.read_long_string": {"tf": 1}, "ncepbufr.open.read_subset": {"tf": 2}, "ncepbufr.open.write_subset": {"tf": 1.4142135623730951}}, "df": 13, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"ncepbufr.set_param": {"tf": 1}, "ncepbufr.get_param": {"tf": 1}}, "df": 2}}}}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.open": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.open.advance": {"tf": 1}}, "df": 1}}}}}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.open": {"tf": 1}, "ncepbufr.open.__init__": {"tf": 1.4142135623730951}}, "df": 2}}}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"ncepbufr.open.advance": {"tf": 1}}, "df": 1}}}}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"ncepbufr.open.inventory": {"tf": 1}}, "df": 1}}}}}}}, "f": {"docs": {}, "df": 0, "o": {"docs": {"ncepbufr.open.print_subset": {"tf": 1}, "ncepbufr.open.dump_subset": {"tf": 1}}, "df": 2}}}, "s": {"docs": {"ncepbufr.open.__init__": {"tf": 1.4142135623730951}, "ncepbufr.open.advance": {"tf": 1}, "ncepbufr.open.print_subset": {"tf": 1}, "ncepbufr.open.dump_subset": {"tf": 1}, "ncepbufr.open.open_message": {"tf": 1.4142135623730951}, "ncepbufr.open.read_long_string": {"tf": 1.4142135623730951}, "ncepbufr.open.read_subset": {"tf": 3.1622776601683795}, "ncepbufr.open.write_subset": {"tf": 2.6457513110645907}}, "df": 8, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {"ncepbufr.set_param": {"tf": 1}}, "df": 1}}}}}}, "f": {"docs": {"ncepbufr.open.__init__": {"tf": 1.7320508075688772}, "ncepbufr.open.receipt_time": {"tf": 1}, "ncepbufr.open.advance": {"tf": 1.4142135623730951}, "ncepbufr.open.print_subset": {"tf": 1}, "ncepbufr.open.dump_subset": {"tf": 1.4142135623730951}, "ncepbufr.open.read_long_string": {"tf": 1.7320508075688772}, "ncepbufr.open.read_subset": {"tf": 2}, "ncepbufr.open.write_subset": {"tf": 2}}, "df": 8}, "t": {"docs": {"ncepbufr.open.__init__": {"tf": 1}}, "df": 1}}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {"ncepbufr.set_param": {"tf": 1}, "ncepbufr.get_param": {"tf": 1}}, "df": 2, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.get_param": {"tf": 1}}, "df": 1, "s": {"docs": {"ncepbufr.set_param": {"tf": 1.7320508075688772}, "ncepbufr.get_param": {"tf": 1}}, "df": 2}}}}}}}, "t": {"docs": {"ncepbufr.open.read_subset": {"tf": 1}, "ncepbufr.open.write_subset": {"tf": 1}}, "df": 2}}}, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.set_param": {"tf": 1}}, "df": 1}}, "n": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.open.print_table": {"tf": 1}, "ncepbufr.open.print_subset": {"tf": 1.7320508075688772}, "ncepbufr.open.dump_subset": {"tf": 1}}, "df": 3}}}, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"ncepbufr.open.advance": {"tf": 1}}, "df": 1}}}}}}}, "p": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.open.get_program_code": {"tf": 1}, "ncepbufr.open.read_subset": {"tf": 1.4142135623730951}, "ncepbufr.open.write_subset": {"tf": 1}, "ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}}, "df": 4}}}}}, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "s": {"docs": {"ncepbufr.open.restore": {"tf": 1}}, "df": 1}}}}}}, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"ncepbufr.open.advance": {"tf": 1}, "ncepbufr.open.load_subset": {"tf": 1}}, "df": 2}}}}}}}, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {"ncepbufr.open.get_program_code": {"tf": 1}}, "df": 1}}}}}}, "y": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ncepbufr.open.advance": {"tf": 1}, "ncepbufr.open.load_subset": {"tf": 1}, "ncepbufr.open.read_long_string": {"tf": 1.4142135623730951}, "ncepbufr.open.read_subset": {"tf": 1}, "ncepbufr.open.write_subset": {"tf": 1}}, "df": 5}}}}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"ncepbufr.set_param": {"tf": 1}, "ncepbufr.get_param": {"tf": 1}}, "df": 2}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.open.open_message": {"tf": 1}}, "df": 1}}}}}}, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"ncepbufr.open.read_subset": {"tf": 1}, "ncepbufr.open.write_subset": {"tf": 1}}, "df": 2, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"ncepbufr.open.inventory": {"tf": 1.4142135623730951}}, "df": 1}}}, "s": {"docs": {"ncepbufr.open.inventory": {"tf": 1}, "ncepbufr.open.read_long_string": {"tf": 1}}, "df": 2}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.open": {"tf": 1}}, "df": 1, "o": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.open.__init__": {"tf": null}}, "df": 1}}}}}}}}}, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"ncepbufr.open.cmpmsg": {"tf": 1}}, "df": 1}}}}, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.open.print_subset": {"tf": 1}, "ncepbufr.open.dump_subset": {"tf": 1}}, "df": 2}}}}}, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"ncepbufr.open.read_subset": {"tf": 1}, "ncepbufr.open.write_subset": {"tf": 1}}, "df": 2}}}}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.open.advance": {"tf": 1}}, "df": 1}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"ncepbufr.open.read_long_string": {"tf": 1}}, "df": 1}}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.open.advance": {"tf": 1}, "ncepbufr.open.get_program_code": {"tf": 1}, "ncepbufr.open.load_subset": {"tf": 1}}, "df": 3, "s": {"docs": {"ncepbufr.open.read_subset": {"tf": 1}}, "df": 1}}}, "p": {"docs": {}, "df": 0, "y": {"docs": {"ncepbufr.open.copy_subset": {"tf": 1}, "ncepbufr.open.copy_message": {"tf": 1}}, "df": 2}}, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"ncepbufr.open.read_long_string": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {"ncepbufr.set_param": {"tf": 1}, "ncepbufr.open": {"tf": 1}, "ncepbufr.open.checkpoint": {"tf": 1}, "ncepbufr.open.read_long_string": {"tf": 1}, "ncepbufr.open.read_subset": {"tf": 1}, "ncepbufr.open.write_subset": {"tf": 1}}, "df": 6}, "l": {"docs": {}, "df": 0, "l": {"docs": {"ncepbufr.open.restore": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.open.print_subset": {"tf": 1}, "ncepbufr.open.dump_subset": {"tf": 1}, "ncepbufr.open.load_subset": {"tf": 1}, "ncepbufr.open.read_subset": {"tf": 1}}, "df": 4}}}}}, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.set_param": {"tf": 1}, "ncepbufr.open.msg_counter": {"tf": 1}, "ncepbufr.open.msg_type": {"tf": 1}, "ncepbufr.open.copy_subset": {"tf": 1}, "ncepbufr.open.load_subset": {"tf": 1}}, "df": 5, "l": {"docs": {}, "df": 0, "y": {"docs": {"ncepbufr.open.print_subset": {"tf": 1}, "ncepbufr.open.copy_subset": {"tf": 1}, "ncepbufr.open.dump_subset": {"tf": 1}, "ncepbufr.open.copy_message": {"tf": 1}, "ncepbufr.open.read_long_string": {"tf": 1}, "ncepbufr.open.read_subset": {"tf": 1}}, "df": 6}}}}}}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.open.close": {"tf": 1}, "ncepbufr.open.close_message": {"tf": 1}}, "df": 2, "d": {"docs": {"ncepbufr.open.write_subset": {"tf": 1}}, "df": 1}}}}}, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.open.rewind": {"tf": 1}, "ncepbufr.open.restore": {"tf": 1}}, "df": 2}}}}}}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.open.read_long_string": {"tf": 1.7320508075688772}}, "df": 1}}}}}}}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"ncepbufr.set_param": {"tf": 1}, "ncepbufr.get_param": {"tf": 1}}, "df": 2}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.open.inventory": {"tf": 1.4142135623730951}}, "df": 1, "e": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.set_param": {"tf": 1}}, "df": 1}}}}, "k": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.open.read_long_string": {"tf": 1}, "ncepbufr.open.read_subset": {"tf": 1}, "ncepbufr.open.write_subset": {"tf": 1}}, "df": 3}}}, "o": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.open.advance": {"tf": 1}, "ncepbufr.open.print_subset": {"tf": 1}, "ncepbufr.open.dump_subset": {"tf": 1}, "ncepbufr.open.load_subset": {"tf": 1.4142135623730951}, "ncepbufr.open.read_long_string": {"tf": 1}, "ncepbufr.open.read_subset": {"tf": 1}}, "df": 6, "e": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.open.advance": {"tf": 1.4142135623730951}, "ncepbufr.open.print_subset": {"tf": 1}, "ncepbufr.open.copy_subset": {"tf": 1}, "ncepbufr.open.dump_subset": {"tf": 1}, "ncepbufr.open.copy_message": {"tf": 1}, "ncepbufr.open.read_long_string": {"tf": 1}, "ncepbufr.open.read_subset": {"tf": 1}}, "df": 7}}}}, "o": {"docs": {}, "df": 0, "p": {"docs": {"ncepbufr.open.advance": {"tf": 1}, "ncepbufr.open.load_subset": {"tf": 1}}, "df": 2}}, "n": {"docs": {}, "df": 0, "g": {"docs": {"ncepbufr.open.read_long_string": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "s": {"docs": {"ncepbufr.open.read_subset": {"tf": 1}}, "df": 1}}}}}}, "m": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.set_param": {"tf": 1}, "ncepbufr.open.__init__": {"tf": 1}, "ncepbufr.open.print_subset": {"tf": 1}, "ncepbufr.open.dump_subset": {"tf": 1}, "ncepbufr.open.load_subset": {"tf": 1}, "ncepbufr.open.read_long_string": {"tf": 1}, "ncepbufr.open.read_subset": {"tf": 1}}, "df": 7}}, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.open.read_subset": {"tf": 1}, "ncepbufr.open.write_subset": {"tf": 1}}, "df": 2}}}}}}}, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"ncepbufr.set_missing_value": {"tf": 1}, "ncepbufr.get_missing_value": {"tf": 1}, "ncepbufr.open.receipt_time": {"tf": 1}, "ncepbufr.open.missing_value": {"tf": 1}, "ncepbufr.open.read_long_string": {"tf": 1}, "ncepbufr.open.read_subset": {"tf": 1}}, "df": 6}}}}}}, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.open": {"tf": 1}, "ncepbufr.open.checkpoint": {"tf": 1}}, "df": 2}}}}, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.open.msg_counter": {"tf": 1}, "ncepbufr.open.msg_type": {"tf": 1}, "ncepbufr.open.msg_date": {"tf": 1}, "ncepbufr.open.receipt_time": {"tf": 1}, "ncepbufr.open.subsets": {"tf": 1}, "ncepbufr.open.advance": {"tf": 2.449489742783178}, "ncepbufr.open.inventory": {"tf": 1}, "ncepbufr.open.copy_subset": {"tf": 1}, "ncepbufr.open.open_message": {"tf": 1.7320508075688772}, "ncepbufr.open.copy_message": {"tf": 1}, "ncepbufr.open.close_message": {"tf": 1}, "ncepbufr.open.load_subset": {"tf": 1.4142135623730951}, "ncepbufr.open.read_long_string": {"tf": 1}, "ncepbufr.open.read_subset": {"tf": 1}, "ncepbufr.open.write_subset": {"tf": 1.4142135623730951}}, "df": 15, "s": {"docs": {"ncepbufr.open": {"tf": 1}, "ncepbufr.open.advance": {"tf": 1}, "ncepbufr.open.load_subset": {"tf": 1}}, "df": 3}}}}}}}, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.open.__init__": {"tf": 2}}, "df": 1}, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.open.open_message": {"tf": 1}}, "df": 1}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.open.print_subset": {"tf": 1}, "ncepbufr.open.dump_subset": {"tf": 1}, "ncepbufr.open.get_program_code": {"tf": 1}, "ncepbufr.open.get_flag_table_bits": {"tf": 1}, "ncepbufr.open.read_long_string": {"tf": 1}, "ncepbufr.open.read_subset": {"tf": 1}, "ncepbufr.open.write_subset": {"tf": 1}}, "df": 7}}}, "s": {"docs": {}, "df": 0, "g": {"docs": {"ncepbufr.open.advance": {"tf": 2}, "ncepbufr.open.inventory": {"tf": 1.4142135623730951}, "ncepbufr.open.open_message": {"tf": 1.7320508075688772}}, "df": 3}}, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"1": {"docs": {"ncepbufr.open.read_subset": {"tf": 1}, "ncepbufr.open.write_subset": {"tf": 1}}, "df": 2}, "2": {"docs": {"ncepbufr.open.read_subset": {"tf": 1}, "ncepbufr.open.write_subset": {"tf": 1}}, "df": 2}, "3": {"docs": {"ncepbufr.open.read_subset": {"tf": 1}, "ncepbufr.open.write_subset": {"tf": 1}}, "df": 2}, "docs": {"ncepbufr.open.get_program_code": {"tf": 1}, "ncepbufr.open.get_flag_table_bits": {"tf": 1}, "ncepbufr.open.read_long_string": {"tf": 2.8284271247461903}, "ncepbufr.open.read_subset": {"tf": 1.4142135623730951}, "ncepbufr.open.write_subset": {"tf": 1.4142135623730951}}, "df": 5, "s": {"docs": {"ncepbufr.open.read_subset": {"tf": 2.449489742783178}, "ncepbufr.open.write_subset": {"tf": 2.23606797749979}, "ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 4}}}}}}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "k": {"docs": {"ncepbufr.open.checkpoint": {"tf": 1}}, "df": 1}}, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"ncepbufr.open.open_message": {"tf": 1}}, "df": 1}}}}}}}, "y": {"docs": {"ncepbufr.open.read_subset": {"tf": 1}, "ncepbufr.open.write_subset": {"tf": 1}}, "df": 2}, "s": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.open.read_subset": {"tf": 1.4142135623730951}}, "df": 1}}}}, "p": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 2}}}}}}}, "d": {"docs": {"ncepbufr.open.read_subset": {"tf": 1}, "ncepbufr.open.write_subset": {"tf": 1}}, "df": 2, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.set_param": {"tf": 1}}, "df": 1}}, "c": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {"ncepbufr.set_param": {"tf": 1}}, "df": 1}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"ncepbufr.get_param": {"tf": 1}}, "df": 1}}}}}}}}, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"ncepbufr.set_datelength": {"tf": 1}, "ncepbufr.open.open_message": {"tf": 1}}, "df": 2}}}}, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"ncepbufr.open.read_long_string": {"tf": 1}, "ncepbufr.open.read_subset": {"tf": 1}, "ncepbufr.open.write_subset": {"tf": 1}, "ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 5}}}}}}}}, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ncepbufr.open.read_subset": {"tf": 1}}, "df": 1}}}}}}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.set_datelength": {"tf": 1}, "ncepbufr.open.msg_date": {"tf": 1}, "ncepbufr.open.advance": {"tf": 1.4142135623730951}, "ncepbufr.open.inventory": {"tf": 1}, "ncepbufr.open.open_message": {"tf": 1.7320508075688772}}, "df": 5, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"ncepbufr.open.open_message": {"tf": 1}}, "df": 1}}}}}}}, "a": {"docs": {"ncepbufr.open.cmpmsg": {"tf": 1}, "ncepbufr.open.print_subset": {"tf": 1}, "ncepbufr.open.dump_subset": {"tf": 1}, "ncepbufr.open.load_subset": {"tf": 1}, "ncepbufr.open.read_long_string": {"tf": 1}, "ncepbufr.open.read_subset": {"tf": 2.6457513110645907}, "ncepbufr.open.write_subset": {"tf": 2.8284271247461903}}, "df": 7}}}, "e": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.open.__init__": {"tf": 1}, "ncepbufr.open.open_message": {"tf": 1}, "ncepbufr.open.read_subset": {"tf": 1}, "ncepbufr.open.write_subset": {"tf": 1.4142135623730951}}, "df": 4}}}}}, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"ncepbufr.open.advance": {"tf": 1}, "ncepbufr.open.open_message": {"tf": 1}}, "df": 2}}}}, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.open.read_long_string": {"tf": 1}, "ncepbufr.open.read_subset": {"tf": 1}, "ncepbufr.open.write_subset": {"tf": 1}}, "df": 3}}, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 2}}}}}}}}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.open.read_long_string": {"tf": 1}, "ncepbufr.open.read_subset": {"tf": 1.4142135623730951}}, "df": 2, "d": {"docs": {"ncepbufr.open.print_subset": {"tf": 1.4142135623730951}, "ncepbufr.open.dump_subset": {"tf": 1.4142135623730951}, "ncepbufr.open.read_subset": {"tf": 1}}, "df": 3}}}}}, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "s": {"docs": {"ncepbufr.open.get_program_code": {"tf": 1}, "ncepbufr.open.get_flag_table_bits": {"tf": 1}, "ncepbufr.open.read_subset": {"tf": 1}, "ncepbufr.open.write_subset": {"tf": 1}}, "df": 4}}}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.open.read_subset": {"tf": 1}, "ncepbufr.open.write_subset": {"tf": 1}}, "df": 2}}}}}}, "a": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.open.read_subset": {"tf": 1}, "ncepbufr.open.write_subset": {"tf": 1}}, "df": 2}}}}}}, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {"ncepbufr.open.dump_table": {"tf": 1}, "ncepbufr.open.dump_subset": {"tf": 1.4142135623730951}}, "df": 2}}}}, "t": {"docs": {}, "df": 0, "o": {"docs": {"ncepbufr.set_param": {"tf": 1.4142135623730951}, "ncepbufr.open": {"tf": 1}, "ncepbufr.open.__init__": {"tf": 1}, "ncepbufr.open.dump_table": {"tf": 1}, "ncepbufr.open.print_table": {"tf": 1}, "ncepbufr.open.cmpmsg": {"tf": 1}, "ncepbufr.open.advance": {"tf": 2}, "ncepbufr.open.print_subset": {"tf": 1.4142135623730951}, "ncepbufr.open.copy_subset": {"tf": 1}, "ncepbufr.open.dump_subset": {"tf": 2}, "ncepbufr.open.checkpoint": {"tf": 1.4142135623730951}, "ncepbufr.open.restore": {"tf": 1}, "ncepbufr.open.copy_message": {"tf": 1}, "ncepbufr.open.load_subset": {"tf": 1}, "ncepbufr.open.read_long_string": {"tf": 2}, "ncepbufr.open.read_subset": {"tf": 2.449489742783178}, "ncepbufr.open.write_subset": {"tf": 2.6457513110645907}, "ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 19}, "h": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.set_param": {"tf": 2}, "ncepbufr.get_param": {"tf": 1}, "ncepbufr.open.__init__": {"tf": 1.4142135623730951}, "ncepbufr.open.subsets": {"tf": 1}, "ncepbufr.open.close": {"tf": 1}, "ncepbufr.open.cmpmsg": {"tf": 1.4142135623730951}, "ncepbufr.open.advance": {"tf": 2.8284271247461903}, "ncepbufr.open.inventory": {"tf": 1.4142135623730951}, "ncepbufr.open.print_subset": {"tf": 1.7320508075688772}, "ncepbufr.open.copy_subset": {"tf": 1.7320508075688772}, "ncepbufr.open.dump_subset": {"tf": 1.7320508075688772}, "ncepbufr.open.checkpoint": {"tf": 1.7320508075688772}, "ncepbufr.open.rewind": {"tf": 1}, "ncepbufr.open.restore": {"tf": 1.4142135623730951}, "ncepbufr.open.open_message": {"tf": 1.4142135623730951}, "ncepbufr.open.copy_message": {"tf": 1.7320508075688772}, "ncepbufr.open.load_subset": {"tf": 1}, "ncepbufr.open.read_long_string": {"tf": 3.4641016151377544}, "ncepbufr.open.read_subset": {"tf": 3.7416573867739413}, "ncepbufr.open.write_subset": {"tf": 2.6457513110645907}}, "df": 20, "s": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.set_param": {"tf": 1}}, "df": 1}}, "n": {"docs": {"ncepbufr.open.checkpoint": {"tf": 1}, "ncepbufr.open.read_long_string": {"tf": 1}}, "df": 2}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "h": {"docs": {"ncepbufr.open": {"tf": 1}, "ncepbufr.open.advance": {"tf": 1}, "ncepbufr.open.load_subset": {"tf": 1}}, "df": 3}}}}}, "i": {"docs": {}, "df": 0, "s": {"docs": {"ncepbufr.open.filename": {"tf": 1}, "ncepbufr.open.checkpoint": {"tf": 1}}, "df": 2}}, "a": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.open.restore": {"tf": 1}}, "df": 1}, "n": {"docs": {"ncepbufr.open.read_long_string": {"tf": 1}}, "df": 1}}}, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.open.__init__": {"tf": 2.449489742783178}, "ncepbufr.open.dump_table": {"tf": 1}, "ncepbufr.open.print_table": {"tf": 1}, "ncepbufr.open.get_flag_table_bits": {"tf": 1}}, "df": 4}}}, "n": {"docs": {}, "df": 0, "k": {"docs": {"ncepbufr.open.receipt_time": {"tf": 1}, "ncepbufr.open.advance": {"tf": 1}, "ncepbufr.open.open_message": {"tf": 1}}, "df": 3}}}, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.open.msg_type": {"tf": 1}, "ncepbufr.open.advance": {"tf": 1.4142135623730951}, "ncepbufr.open.inventory": {"tf": 1}, "ncepbufr.open.open_message": {"tf": 1.4142135623730951}}, "df": 4}}}, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.open.receipt_time": {"tf": 1}, "ncepbufr.open.advance": {"tf": 1.7320508075688772}, "ncepbufr.open.inventory": {"tf": 1}, "ncepbufr.open.open_message": {"tf": 1.4142135623730951}}, "df": 4}}}, "u": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.open.inventory": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"ncepbufr.open.print_subset": {"tf": 1}, "ncepbufr.open.dump_subset": {"tf": 1}}, "df": 2}}}}}}, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.open.print_subset": {"tf": 1}, "ncepbufr.open.dump_subset": {"tf": 1.4142135623730951}, "ncepbufr.open.read_subset": {"tf": 2.23606797749979}, "ncepbufr.open.write_subset": {"tf": 2.23606797749979}}, "df": 4}}, "y": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"ncepbufr.open.print_subset": {"tf": 1}, "ncepbufr.open.dump_subset": {"tf": 1}, "ncepbufr.open.read_subset": {"tf": 1}}, "df": 3}}}}}}, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"ncepbufr.open": {"tf": 1.4142135623730951}, "ncepbufr.open.__init__": {"tf": 1.4142135623730951}, "ncepbufr.open.advance": {"tf": 1.4142135623730951}, "ncepbufr.open.print_subset": {"tf": 1.4142135623730951}, "ncepbufr.open.dump_subset": {"tf": 1.4142135623730951}, "ncepbufr.open.checkpoint": {"tf": 1}, "ncepbufr.open.rewind": {"tf": 1}, "ncepbufr.open.restore": {"tf": 1}, "ncepbufr.open.open_message": {"tf": 1}, "ncepbufr.open.load_subset": {"tf": 1.4142135623730951}, "ncepbufr.open.read_long_string": {"tf": 1}, "ncepbufr.open.read_subset": {"tf": 1.4142135623730951}}, "df": 12, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"ncepbufr.set_param": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.open.filename": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"ncepbufr.open.__init__": {"tf": 1}, "ncepbufr.open.open_message": {"tf": 1}}, "df": 2}}}}}}}, "f": {"docs": {"ncepbufr.set_param": {"tf": 1.4142135623730951}, "ncepbufr.set_datelength": {"tf": 1}, "ncepbufr.open.__init__": {"tf": 1}, "ncepbufr.open.subsets": {"tf": 1}, "ncepbufr.open.advance": {"tf": 1.7320508075688772}, "ncepbufr.open.inventory": {"tf": 1}, "ncepbufr.open.print_subset": {"tf": 1}, "ncepbufr.open.dump_subset": {"tf": 1}, "ncepbufr.open.restore": {"tf": 1}, "ncepbufr.open.open_message": {"tf": 1.4142135623730951}, "ncepbufr.open.read_long_string": {"tf": 1.7320508075688772}, "ncepbufr.open.read_subset": {"tf": 2.23606797749979}, "ncepbufr.open.write_subset": {"tf": 1.4142135623730951}}, "df": 13}, "b": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"ncepbufr.set_param": {"tf": 1}}, "df": 1}}}}, "j": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.open": {"tf": 1}, "ncepbufr.open.__init__": {"tf": 1}, "ncepbufr.open.copy_subset": {"tf": 1}, "ncepbufr.open.copy_message": {"tf": 1}}, "df": 4}}}}}, "r": {"docs": {"ncepbufr.open.__init__": {"tf": 1}, "ncepbufr.open.read_long_string": {"tf": 1}, "ncepbufr.open.read_subset": {"tf": 1}, "ncepbufr.open.write_subset": {"tf": 1}}, "df": 4}, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.open.dump_subset": {"tf": 1}, "ncepbufr.open.read_long_string": {"tf": 1}}, "df": 2}}}}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.open.dump_subset": {"tf": 1}}, "df": 1}}}, "n": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"ncepbufr.open.read_long_string": {"tf": 1}, "ncepbufr.open.read_subset": {"tf": 1}, "ncepbufr.open.write_subset": {"tf": 1}}, "df": 3}}, "e": {"docs": {"ncepbufr.open.read_long_string": {"tf": 1}, "ncepbufr.open.read_subset": {"tf": 1}, "ncepbufr.open.write_subset": {"tf": 1}}, "df": 3}}, "c": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.open.read_long_string": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}}}, "a": {"docs": {"ncepbufr.set_param": {"tf": 1}, "ncepbufr.open.__init__": {"tf": 1.4142135623730951}, "ncepbufr.open.dump_table": {"tf": 1}, "ncepbufr.open.advance": {"tf": 1.4142135623730951}, "ncepbufr.open.inventory": {"tf": 1.4142135623730951}, "ncepbufr.open.print_subset": {"tf": 1}, "ncepbufr.open.dump_subset": {"tf": 1.4142135623730951}, "ncepbufr.open.get_flag_table_bits": {"tf": 1}, "ncepbufr.open.restore": {"tf": 1}, "ncepbufr.open.load_subset": {"tf": 1}, "ncepbufr.open.read_long_string": {"tf": 2.449489742783178}, "ncepbufr.open.read_subset": {"tf": 3.4641016151377544}, "ncepbufr.open.write_subset": {"tf": 3}}, "df": 13, "r": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.set_param": {"tf": 1}, "ncepbufr.open.advance": {"tf": 1}, "ncepbufr.open.checkpoint": {"tf": 1}, "ncepbufr.open.read_subset": {"tf": 1.4142135623730951}, "ncepbufr.open.write_subset": {"tf": 1}}, "df": 5}, "g": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"ncepbufr.open.open_message": {"tf": 1}}, "df": 1}}}}}}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "y": {"docs": {"ncepbufr.open.read_subset": {"tf": 1.7320508075688772}, "ncepbufr.open.write_subset": {"tf": 1}}, "df": 2}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {"ncepbufr.open.advance": {"tf": 1}, "ncepbufr.open.load_subset": {"tf": 1.4142135623730951}, "ncepbufr.open.read_subset": {"tf": 1}, "ncepbufr.open.write_subset": {"tf": 1}}, "df": 4, "o": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.get_param": {"tf": 1}}, "df": 1}}}}}}}, "p": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {"ncepbufr.open.read_long_string": {"tf": 1}, "ncepbufr.open.read_subset": {"tf": 1}, "ncepbufr.open.write_subset": {"tf": 1}}, "df": 3}}}}}}}}}}}, "d": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.open": {"tf": 1}, "ncepbufr.open.advance": {"tf": 1.7320508075688772}, "ncepbufr.open.load_subset": {"tf": 1}, "ncepbufr.open.read_long_string": {"tf": 1}}, "df": 4, "d": {"docs": {"ncepbufr.open.advance": {"tf": 1}}, "df": 1}}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.open.read_subset": {"tf": 1}}, "df": 1}}}}, "p": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.open.__init__": {"tf": 1}, "ncepbufr.open.dump_subset": {"tf": 1.4142135623730951}, "ncepbufr.open.read_long_string": {"tf": 1}}, "df": 3}}}}}, "n": {"docs": {"ncepbufr.open.__init__": {"tf": 1}, "ncepbufr.open.inventory": {"tf": 1}, "ncepbufr.open.dump_subset": {"tf": 1}}, "df": 3, "d": {"docs": {"ncepbufr.open.copy_subset": {"tf": 1}, "ncepbufr.open.get_flag_table_bits": {"tf": 1}, "ncepbufr.open.checkpoint": {"tf": 1}, "ncepbufr.open.open_message": {"tf": 1}, "ncepbufr.open.copy_message": {"tf": 1}, "ncepbufr.open.load_subset": {"tf": 1}, "ncepbufr.open.read_subset": {"tf": 2}, "ncepbufr.open.write_subset": {"tf": 1.7320508075688772}}, "df": 8}}, "s": {"docs": {"ncepbufr.open.rewind": {"tf": 1}}, "df": 1, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.open.__init__": {"tf": 1}, "ncepbufr.open.read_long_string": {"tf": 1}, "ncepbufr.open.read_subset": {"tf": 1}, "ncepbufr.open.write_subset": {"tf": 1}}, "df": 4}}}}, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.open.get_program_code": {"tf": 1}, "ncepbufr.open.get_flag_table_bits": {"tf": 1}}, "df": 2}}}}}}}}}, "t": {"docs": {"ncepbufr.open.read_subset": {"tf": 1}, "ncepbufr.open.write_subset": {"tf": 1}}, "df": 2, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"ncepbufr.open.advance": {"tf": 1}}, "df": 1}}}}}}}}}, "m": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "u": {"docs": {"ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 1}}}}, "f": {"docs": {"ncepbufr.open.get_program_code": {"tf": 1}, "ncepbufr.open.get_flag_table_bits": {"tf": 1}, "ncepbufr.open.read_subset": {"tf": 1}, "ncepbufr.open.write_subset": {"tf": 1}}, "df": 4, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.set_param": {"tf": 1.4142135623730951}, "ncepbufr.open": {"tf": 1}, "ncepbufr.open.__init__": {"tf": 1.4142135623730951}, "ncepbufr.open.filename": {"tf": 1}, "ncepbufr.open.dump_table": {"tf": 1}, "ncepbufr.open.close": {"tf": 1}, "ncepbufr.open.cmpmsg": {"tf": 1}, "ncepbufr.open.advance": {"tf": 2}, "ncepbufr.open.inventory": {"tf": 1}, "ncepbufr.open.copy_subset": {"tf": 1}, "ncepbufr.open.dump_subset": {"tf": 1.7320508075688772}, "ncepbufr.open.checkpoint": {"tf": 1.4142135623730951}, "ncepbufr.open.rewind": {"tf": 1}, "ncepbufr.open.restore": {"tf": 1}, "ncepbufr.open.copy_message": {"tf": 1.4142135623730951}, "ncepbufr.open.load_subset": {"tf": 1}, "ncepbufr.open.write_subset": {"tf": 1}}, "df": 17, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.open.__init__": {"tf": 1.7320508075688772}, "ncepbufr.open.advance": {"tf": 1}, "ncepbufr.open.load_subset": {"tf": 1}, "ncepbufr.open.read_long_string": {"tf": 1}}, "df": 4}}}}}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ncepbufr.set_param": {"tf": 1}, "ncepbufr.open.open_message": {"tf": 1}}, "df": 2}}}}}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.get_param": {"tf": 1}, "ncepbufr.set_datelength": {"tf": 1}, "ncepbufr.open.__init__": {"tf": 2.449489742783178}, "ncepbufr.open.msg_date": {"tf": 1}, "ncepbufr.open.receipt_time": {"tf": 1}, "ncepbufr.open.advance": {"tf": 1.4142135623730951}, "ncepbufr.open.inventory": {"tf": 1}, "ncepbufr.open.get_program_code": {"tf": 1}, "ncepbufr.open.get_flag_table_bits": {"tf": 1}, "ncepbufr.open.open_message": {"tf": 1}, "ncepbufr.open.load_subset": {"tf": 1}, "ncepbufr.open.read_long_string": {"tf": 1}, "ncepbufr.open.read_subset": {"tf": 2}, "ncepbufr.open.write_subset": {"tf": 2}}, "df": 14, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {"ncepbufr.open.filename": {"tf": 1}}, "df": 1}}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"ncepbufr.open.advance": {"tf": 1}}, "df": 1}}}}}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.open.read_long_string": {"tf": 1}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.open.advance": {"tf": 1}, "ncepbufr.open.write_subset": {"tf": 1}}, "df": 2}}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {"ncepbufr.open.copy_subset": {"tf": 1}, "ncepbufr.open.copy_message": {"tf": 1}, "ncepbufr.open.load_subset": {"tf": 1}, "ncepbufr.open.read_long_string": {"tf": 1.4142135623730951}, "ncepbufr.open.read_subset": {"tf": 1}}, "df": 5}}}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {"ncepbufr.open.get_flag_table_bits": {"tf": 1}}, "df": 1}}}}, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.set_param": {"tf": 1}}, "df": 1}}, "u": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.set_param": {"tf": 1}, "ncepbufr.set_missing_value": {"tf": 1}, "ncepbufr.get_missing_value": {"tf": 1}, "ncepbufr.open.missing_value": {"tf": 1}, "ncepbufr.open.get_flag_table_bits": {"tf": 1}, "ncepbufr.open.read_long_string": {"tf": 1}, "ncepbufr.open.read_subset": {"tf": 1}, "ncepbufr.open.write_subset": {"tf": 1}}, "df": 8, "s": {"docs": {"ncepbufr.get_param": {"tf": 1}, "ncepbufr.open.read_subset": {"tf": 1.4142135623730951}}, "df": 2}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.open.print_subset": {"tf": 1}, "ncepbufr.open.dump_subset": {"tf": 1}}, "df": 2}}}}}}}, "g": {"docs": {"ncepbufr.open.open_message": {"tf": 1}, "ncepbufr.open.read_subset": {"tf": 1}, "ncepbufr.open.write_subset": {"tf": 1}}, "df": 3, "e": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.set_param": {"tf": 1}, "ncepbufr.get_param": {"tf": 1}, "ncepbufr.get_missing_value": {"tf": 1}}, "df": 3}}, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"ncepbufr.set_datelength": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {"ncepbufr.open.advance": {"tf": 3}, "ncepbufr.open.load_subset": {"tf": 3.4641016151377544}, "ncepbufr.open.read_long_string": {"tf": 3.4641016151377544}}, "df": 3}, "o": {"docs": {"ncepbufr.open.checkpoint": {"tf": 1}}, "df": 1}, "p": {"docs": {}, "df": 0, "s": {"docs": {"ncepbufr.open.read_subset": {"tf": 1}, "ncepbufr.open.write_subset": {"tf": 1}}, "df": 2}}}, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.set_param": {"tf": 1}, "ncepbufr.open": {"tf": 1.4142135623730951}, "ncepbufr.open.__init__": {"tf": 1}, "ncepbufr.open.checkpoint": {"tf": 1}, "ncepbufr.open.read_subset": {"tf": 2.449489742783178}, "ncepbufr.open.write_subset": {"tf": 2.449489742783178}}, "df": 6}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"ncepbufr.open.print_subset": {"tf": 1}, "ncepbufr.open.dump_subset": {"tf": 1}, "ncepbufr.open.read_long_string": {"tf": 1}, "ncepbufr.open.read_subset": {"tf": 1.4142135623730951}, "ncepbufr.open.write_subset": {"tf": 1}}, "df": 5}}}}, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.open.filename": {"tf": 1}}, "df": 1}}}, "f": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.open.read_subset": {"tf": 1}, "ncepbufr.open.write_subset": {"tf": 1}}, "df": 2}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {"ncepbufr.open.read_subset": {"tf": 1}, "ncepbufr.open.write_subset": {"tf": 1}}, "df": 2}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {"ncepbufr.open.read_subset": {"tf": 1}, "ncepbufr.open.write_subset": {"tf": 1}}, "df": 2}}}, "e": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "n": {"docs": {"ncepbufr.open.read_subset": {"tf": 1}, "ncepbufr.open.write_subset": {"tf": 1}}, "df": 2}}}}}}, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.open.__init__": {"tf": 1}, "ncepbufr.open.read_long_string": {"tf": 1.4142135623730951}, "ncepbufr.open.read_subset": {"tf": 1}, "ncepbufr.open.write_subset": {"tf": 1}}, "df": 4, "s": {"docs": {"ncepbufr.get_param": {"tf": 1}}, "df": 1}}}}, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.set_datelength": {"tf": 1}, "ncepbufr.open.filename": {"tf": 1}, "ncepbufr.open.msg_counter": {"tf": 1}, "ncepbufr.open.subsets": {"tf": 1}, "ncepbufr.open.advance": {"tf": 1.4142135623730951}, "ncepbufr.open.open_message": {"tf": 1}, "ncepbufr.open.read_subset": {"tf": 1.4142135623730951}}, "df": 7}}}, "p": {"docs": {}, "df": 0, "y": {"docs": {"ncepbufr.open.read_subset": {"tf": 1}}, "df": 1}}}}, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.open": {"tf": 1.4142135623730951}, "ncepbufr.open.__init__": {"tf": 1.4142135623730951}, "ncepbufr.open.advance": {"tf": 1.4142135623730951}, "ncepbufr.open.print_subset": {"tf": 1.4142135623730951}, "ncepbufr.open.dump_subset": {"tf": 1.4142135623730951}, "ncepbufr.open.checkpoint": {"tf": 1}, "ncepbufr.open.rewind": {"tf": 1}, "ncepbufr.open.restore": {"tf": 1}, "ncepbufr.open.load_subset": {"tf": 1.4142135623730951}, "ncepbufr.open.read_long_string": {"tf": 1}, "ncepbufr.open.read_subset": {"tf": 1.4142135623730951}}, "df": 11}}}}}}}, "o": {"docs": {"ncepbufr.open.read_subset": {"tf": 1}, "ncepbufr.open.write_subset": {"tf": 1}}, "df": 2, "t": {"docs": {"ncepbufr.open.__init__": {"tf": 1.4142135623730951}, "ncepbufr.open.advance": {"tf": 1}, "ncepbufr.open.read_long_string": {"tf": 1}}, "df": 3}}, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.open.advance": {"tf": 1.4142135623730951}}, "df": 1}}, "w": {"docs": {"ncepbufr.open.open_message": {"tf": 1}}, "df": 1}}, "m": {"docs": {"ncepbufr.open.read_subset": {"tf": 1.4142135623730951}}, "df": 1}, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "s": {"docs": {"ncepbufr.open.read_subset": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "y": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "h": {"docs": {"ncepbufr.set_datelength": {"tf": 1}, "ncepbufr.open.advance": {"tf": 1}, "ncepbufr.open.open_message": {"tf": 1}}, "df": 3, "m": {"docs": {}, "df": 0, "m": {"docs": {"ncepbufr.open.receipt_time": {"tf": 1}, "ncepbufr.open.open_message": {"tf": 1}}, "df": 2}}}}}}}}}}}}, "r": {"docs": {"ncepbufr.open.__init__": {"tf": 2}}, "df": 1, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.open.__init__": {"tf": 1}, "ncepbufr.open.print_subset": {"tf": 1}, "ncepbufr.open.dump_subset": {"tf": 1}, "ncepbufr.open.load_subset": {"tf": 1}, "ncepbufr.open.read_long_string": {"tf": 1}, "ncepbufr.open.read_subset": {"tf": 2.23606797749979}}, "df": 6, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 2}}}}}, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.open.advance": {"tf": 1}}, "df": 1}}}}}, "f": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.open.msg_date": {"tf": 1}, "ncepbufr.open.advance": {"tf": 1}, "ncepbufr.open.open_message": {"tf": 1.4142135623730951}}, "df": 3}}}}}}}, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.open.receipt_time": {"tf": 1}, "ncepbufr.open.advance": {"tf": 1.4142135623730951}, "ncepbufr.open.inventory": {"tf": 1}, "ncepbufr.open.open_message": {"tf": 1.4142135623730951}}, "df": 4}}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.open.restore": {"tf": 1}}, "df": 1}}}}}}, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {"ncepbufr.open.inventory": {"tf": 1}, "ncepbufr.open.get_program_code": {"tf": 1}, "ncepbufr.open.get_flag_table_bits": {"tf": 1}}, "df": 3, "s": {"docs": {"ncepbufr.open.advance": {"tf": 1}, "ncepbufr.open.read_long_string": {"tf": 1}, "ncepbufr.open.read_subset": {"tf": 1}}, "df": 3}, "e": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.open.read_subset": {"tf": 1}}, "df": 1}}}}}}, "p": {"docs": {"ncepbufr.open.read_subset": {"tf": 1.4142135623730951}, "ncepbufr.open.write_subset": {"tf": 1.4142135623730951}}, "df": 2, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ncepbufr.open.print_subset": {"tf": 1}, "ncepbufr.open.dump_subset": {"tf": 1}}, "df": 2}}}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.open.read_subset": {"tf": 1.4142135623730951}, "ncepbufr.open.write_subset": {"tf": 1.4142135623730951}}, "df": 2}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"ncepbufr.open.read_subset": {"tf": 1}}, "df": 1}}}}}}}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"ncepbufr.open.read_subset": {"tf": 1.7320508075688772}, "ncepbufr.open.write_subset": {"tf": 1.7320508075688772}}, "df": 2}}}}}}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.open.read_subset": {"tf": 1}}, "df": 1}}}}, "w": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.open.checkpoint": {"tf": 1}, "ncepbufr.open.rewind": {"tf": 1}}, "df": 2}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.open.checkpoint": {"tf": 1}, "ncepbufr.open.restore": {"tf": 1}}, "df": 2}}}}}, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.open.read_long_string": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.open.write_subset": {"tf": 1}}, "df": 1}}}}}}, "g": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.open.read_subset": {"tf": 1}, "ncepbufr.open.write_subset": {"tf": 1}}, "df": 2}}}}}}, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.open.read_subset": {"tf": 1}, "ncepbufr.open.write_subset": {"tf": 1}}, "df": 2}}}}}}}}, "w": {"docs": {"ncepbufr.open.__init__": {"tf": 1.4142135623730951}}, "df": 1, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.open.__init__": {"tf": 1}, "ncepbufr.open.copy_subset": {"tf": 1}, "ncepbufr.open.dump_subset": {"tf": 1}, "ncepbufr.open.copy_message": {"tf": 1}, "ncepbufr.open.write_subset": {"tf": 2.23606797749979}}, "df": 5, "s": {"docs": {"ncepbufr.open.cmpmsg": {"tf": 1}}, "df": 1}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"ncepbufr.open.print_subset": {"tf": 1}, "ncepbufr.open.dump_subset": {"tf": 1}, "ncepbufr.open.write_subset": {"tf": 1}}, "df": 3}}}}}}, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"ncepbufr.open.__init__": {"tf": 1.4142135623730951}}, "df": 1}}, "t": {"docs": {}, "df": 0, "h": {"docs": {"ncepbufr.open.filename": {"tf": 1}, "ncepbufr.open.advance": {"tf": 1}, "ncepbufr.open.get_program_code": {"tf": 1}, "ncepbufr.open.get_flag_table_bits": {"tf": 1}, "ncepbufr.open.read_subset": {"tf": 1}}, "df": 5}}}, "a": {"docs": {}, "df": 0, "s": {"docs": {"ncepbufr.open.advance": {"tf": 1.4142135623730951}}, "df": 1}}, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.open.advance": {"tf": 1}}, "df": 1}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.open.checkpoint": {"tf": 1}, "ncepbufr.open.read_subset": {"tf": 1.4142135623730951}}, "df": 2}}}, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.open.advance": {"tf": 1}, "ncepbufr.open.load_subset": {"tf": 1.4142135623730951}, "ncepbufr.open.read_long_string": {"tf": 1.4142135623730951}}, "df": 3}}}}, "e": {"docs": {"ncepbufr.open.checkpoint": {"tf": 1}}, "df": 1}}, "e": {"docs": {"ncepbufr.open.open_message": {"tf": 1}, "ncepbufr.open.read_subset": {"tf": 1}, "ncepbufr.open.write_subset": {"tf": 1}}, "df": 3, "x": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"ncepbufr.open.__init__": {"tf": 1}, "ncepbufr.open.dump_subset": {"tf": 1}}, "df": 2}}}}}}, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.open.read_long_string": {"tf": 1}}, "df": 1}}}}}}, "m": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.open.__init__": {"tf": 1}, "ncepbufr.open.dump_table": {"tf": 1}, "ncepbufr.open.print_table": {"tf": 1}}, "df": 3}}}}}}}, "n": {"docs": {}, "df": 0, "d": {"docs": {"ncepbufr.open.advance": {"tf": 1}, "ncepbufr.open.write_subset": {"tf": 1}}, "df": 2}}, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"ncepbufr.open.advance": {"tf": 1.4142135623730951}, "ncepbufr.open.inventory": {"tf": 1}, "ncepbufr.open.load_subset": {"tf": 1.4142135623730951}}, "df": 3}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"ncepbufr.open.get_program_code": {"tf": 1}, "ncepbufr.open.read_subset": {"tf": 1}}, "df": 2, "s": {"docs": {"ncepbufr.open.read_subset": {"tf": 2}, "ncepbufr.open.write_subset": {"tf": 1.7320508075688772}}, "df": 2}}}}}, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"ncepbufr.open.read_subset": {"tf": 1}}, "df": 1}}}}}}}}, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {"ncepbufr.open.advance": {"tf": 1}}, "df": 1}, "r": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"ncepbufr.open.print_subset": {"tf": 1}, "ncepbufr.open.dump_subset": {"tf": 1}}, "df": 2}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.open.read_subset": {"tf": 1}, "ncepbufr.open.write_subset": {"tf": 1}}, "df": 2}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"ncepbufr.open.advance": {"tf": 1}, "ncepbufr.open.load_subset": {"tf": 1}}, "df": 2}}}, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {"ncepbufr.bufr_mnemonics.prepbufr_mnemonics_dict": {"tf": 1}, "ncepbufr.bufr_mnemonics.amsu_mnemonics_dict": {"tf": 1}}, "df": 2}}}}}, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "y": {"docs": {"ncepbufr.open.read_long_string": {"tf": 1}, "ncepbufr.open.read_subset": {"tf": 1}, "ncepbufr.open.write_subset": {"tf": 1}}, "df": 3}}}, "x": {"docs": {"ncepbufr.open.read_long_string": {"tf": 1.4142135623730951}}, "df": 1, "t": {"docs": {}, "df": 0, "h": {"docs": {"ncepbufr.open.read_long_string": {"tf": 1}}, "df": 1}}}}}}, "pipeline": ["trimmer"], "_isPrebuiltIndex": true}; + + // mirrored in build-search-index.js (part 1) + // Also split on html tags. this is a cheap heuristic, but good enough. + elasticlunr.tokenizer.setSeperator(/[\s\-.;&_'"=,()]+|<[^>]*>/); + + let searchIndex; + if (docs._isPrebuiltIndex) { + console.info("using precompiled search index"); + searchIndex = elasticlunr.Index.load(docs); + } else { + console.time("building search index"); + // mirrored in build-search-index.js (part 2) + searchIndex = elasticlunr(function () { + this.pipeline.remove(elasticlunr.stemmer); + this.pipeline.remove(elasticlunr.stopWordFilter); + this.addField("qualname"); + this.addField("fullname"); + this.addField("annotation"); + this.addField("default_value"); + this.addField("signature"); + this.addField("bases"); + this.addField("doc"); + this.setRef("fullname"); + }); + for (let doc of docs) { + searchIndex.addDoc(doc); + } + console.timeEnd("building search index"); + } + + return (term) => searchIndex.search(term, { + fields: { + qualname: {boost: 4}, + fullname: {boost: 2}, + annotation: {boost: 2}, + default_value: {boost: 2}, + signature: {boost: 2}, + bases: {boost: 2}, + doc: {boost: 1}, + }, + expand: true + }); +})(); \ No newline at end of file diff --git a/previous_versions/v12.1.0/readbp_8F90.html b/previous_versions/v12.1.0/readbp_8F90.html new file mode 100644 index 000000000..d5679f2e7 --- /dev/null +++ b/previous_versions/v12.1.0/readbp_8F90.html @@ -0,0 +1,179 @@ + + + + + + + +NCEPLIBS-bufr: readbp.F90 File Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        readbp.F90 File Reference
                                                        +
                                                        +
                                                        + +

                                                        Read PREPBUFR file containing embedded DX BUFR tables, and print each report one at a time. +More...

                                                        + +

                                                        Go to the source code of this file.

                                                        + + + + + + + + +

                                                        +Functions/Subroutines

                                                        subroutine printx (str)
                                                         Print long lines to stdout using advance=no format clause. More...
                                                         
                                                        program readbp
                                                         Read PREPBUFR file containing embedded DX BUFR tables, and print each report one at a time. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Read PREPBUFR file containing embedded DX BUFR tables, and print each report one at a time.

                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition in file readbp.F90.

                                                        +

                                                        Function/Subroutine Documentation

                                                        + +

                                                        ◆ printx()

                                                        + +
                                                        +
                                                        + + + + + + + + +
                                                        subroutine printx (character(*) str)
                                                        +
                                                        + +

                                                        Print long lines to stdout using advance=no format clause.

                                                        +
                                                        Parameters
                                                        + + +
                                                        strString to print.
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 256 of file readbp.F90.

                                                        + +

                                                        Referenced by readbp().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ readbp()

                                                        + +
                                                        +
                                                        + + + + +
                                                        program readbp
                                                        +
                                                        + +

                                                        Read PREPBUFR file containing embedded DX BUFR tables, and print each report one at a time.

                                                        +

                                                        Options are listed by running "readbp" without argumets.

                                                        +
                                                        Returns
                                                        0 for success, error code otherwise.
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 18 of file readbp.F90.

                                                        + +

                                                        References datelen(), ireadmg(), ireadsb(), openbf(), printx(), ufbcnt(), ufbint(), and ufdump().

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/readbp_8F90.js b/previous_versions/v12.1.0/readbp_8F90.js new file mode 100644 index 000000000..592afda2c --- /dev/null +++ b/previous_versions/v12.1.0/readbp_8F90.js @@ -0,0 +1,5 @@ +var readbp_8F90 = +[ + [ "printx", "readbp_8F90.html#a20f66afc4b9a6ab619111b0d614e452c", null ], + [ "readbp", "readbp_8F90.html#ac55f7a6af2af963791bb395c6dcc331b", null ] +]; \ No newline at end of file diff --git a/previous_versions/v12.1.0/readbp_8F90_source.html b/previous_versions/v12.1.0/readbp_8F90_source.html new file mode 100644 index 000000000..2c0a2abe5 --- /dev/null +++ b/previous_versions/v12.1.0/readbp_8F90_source.html @@ -0,0 +1,356 @@ + + + + + + + +NCEPLIBS-bufr: readbp.F90 Source File + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        +
                                                        readbp.F90
                                                        +
                                                        +
                                                        +Go to the documentation of this file.
                                                        1 
                                                        +
                                                        6 
                                                        +
                                                        14 
                                                        +
                                                        15 !-----------------------------------------------------------------------
                                                        +
                                                        16 ! READ AND DISPLAY AN ON29BUFR FILE ONE REPORT AT A TIME
                                                        +
                                                        17 !-----------------------------------------------------------------------
                                                        +
                                                        18  PROGRAM readbp
                                                        +
                                                        19 
                                                        +
                                                        20  character(120) :: file
                                                        +
                                                        21  character(50) :: optarg
                                                        +
                                                        22  character(40) :: hstr,ostr,qstr
                                                        +
                                                        23  character(10) :: val
                                                        +
                                                        24  character(8) :: sid,sta,subset,msg,cmc(17)
                                                        +
                                                        25  character(3) :: vars(8)
                                                        +
                                                        26  integer :: iostat
                                                        +
                                                        27  real(8) :: hdr(10),obs(10,255),qms(10,255),qmc(17),xob,yob
                                                        +
                                                        28  logical :: window,steam,level,dump,hedr,exist
                                                        +
                                                        29 
                                                        +
                                                        30  equivalence(hdr(1),sid)
                                                        +
                                                        31  equivalence(qmc,cmc)
                                                        +
                                                        32 
                                                        +
                                                        33  DATA hstr/'SID XOB YOB DHR ELV T29 ITP TYP SRC PRG '/
                                                        +
                                                        34  DATA ostr/'CAT POB QOB TOB ZOB UOB VOB PSL '/
                                                        +
                                                        35  DATA qstr/'PQM QQM TQM ZQM WQM PSQ '/
                                                        +
                                                        36 
                                                        +
                                                        37  DATA vars/'LVL','CAT','POB','SPH','TOB','ZOB','UOB','VOB'/
                                                        +
                                                        38  DATA cmc /'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','*'/
                                                        +
                                                        39 
                                                        +
                                                        40  DATA lubfr /8 /
                                                        +
                                                        41  DATA sta /' '/
                                                        +
                                                        42  data msg /' '/
                                                        +
                                                        43  DATA pob /0/
                                                        +
                                                        44  data irt /0/
                                                        +
                                                        45  data itp /0/
                                                        +
                                                        46  data ikx /0/
                                                        +
                                                        47  data window /.false./
                                                        +
                                                        48  data steam /.false./
                                                        +
                                                        49  data level /.false./
                                                        +
                                                        50  data dump /.false./
                                                        +
                                                        51  data hedr /.false./
                                                        +
                                                        52 
                                                        +
                                                        53 !-----------------------------------------------------------------------
                                                        +
                                                        54 !-----------------------------------------------------------------------
                                                        +
                                                        55 
                                                        +
                                                        56 ! check for filename argument
                                                        +
                                                        57 
                                                        +
                                                        58  narg=command_argument_count()
                                                        +
                                                        59 1 if(narg<1) THEN
                                                        +
                                                        60  call printx(' ')
                                                        +
                                                        61  call printx('Usage: readbp <-s> <-w> <m> <-k> <-r> <-d> <-n> <-h> prep bufrfile ')
                                                        +
                                                        62  call printx(' ')
                                                        +
                                                        63  call printx('Search filter and/or print prepbufr reports in various ways ')
                                                        +
                                                        64  call printx(' ')
                                                        +
                                                        65  call printx('-s "station_id " print reports where "station_id" matches the report id up to the len of "station_id" ')
                                                        +
                                                        66  call printx('-w "x1 x2 y1 y2" print reports within a lon/lat box ')
                                                        +
                                                        67  call printx('-m "subset " print reports with this subset name ')
                                                        +
                                                        68  call printx('-k "gsi rtype " print reports with this gsi report type ')
                                                        +
                                                        69  call printx('-r "on29 rtype " print reports with this on29 report type ')
                                                        +
                                                        70  call printx('-d print reports using ufdump - note: this works with any NCEP BUFR file ')
                                                        +
                                                        71  call printx('-n no pause between reports output ')
                                                        +
                                                        72  call printx('-h print only report headers ')
                                                        +
                                                        73  call printx(' ')
                                                        +
                                                        74  call printx('Only a filename is required in which case step through the reports one at a time using "enter" ')
                                                        +
                                                        75  call printx(' ')
                                                        +
                                                        76  call printx('Optional arguments can also be applied in the pause between reports output without using a dash ')
                                                        +
                                                        77  call printx(' ')
                                                        +
                                                        78  call printx('Optional arguments will be applied in concert in most cases ')
                                                        +
                                                        79  call printx(' ')
                                                        +
                                                        80  call exit(2)
                                                        +
                                                        81  ENDIF
                                                        +
                                                        82 
                                                        +
                                                        83  iarg=1
                                                        +
                                                        84  do while(iarg<=narg)
                                                        +
                                                        85  call get_command_argument(iarg,file)
                                                        +
                                                        86  if(file(1:1)=='-') then
                                                        +
                                                        87  if(file(2:2)=='s') then
                                                        +
                                                        88  iarg=iarg+1; call get_command_argument(iarg,sta); nsta=len(trim(sta))
                                                        +
                                                        89  elseif(file(2:2)=='w') then
                                                        +
                                                        90  iarg=iarg+1; call get_command_argument(iarg,val); read(val,*)x1
                                                        +
                                                        91  iarg=iarg+1; call get_command_argument(iarg,val); read(val,*)x2
                                                        +
                                                        92  iarg=iarg+1; call get_command_argument(iarg,val); read(val,*)y1
                                                        +
                                                        93  iarg=iarg+1; call get_command_argument(iarg,val); read(val,*)y2
                                                        +
                                                        94  window=.true.
                                                        +
                                                        95  elseif(file(2:2)=='k') then
                                                        +
                                                        96  iarg=iarg+1; call get_command_argument(iarg,val); read(val,*)ikx
                                                        +
                                                        97  elseif(file(2:2)=='r') then
                                                        +
                                                        98  iarg=iarg+1; call get_command_argument(iarg,val); read(val,*)irt
                                                        +
                                                        99  elseif(file(2:2)=='m') then
                                                        +
                                                        100  iarg=iarg+1; call get_command_argument(iarg,val); msg=val(1:8)
                                                        +
                                                        101  elseif(file(2:2)=='d') then
                                                        +
                                                        102  iarg=iarg+1; dump=.true.
                                                        +
                                                        103  elseif(file(2:2)=='h') then
                                                        +
                                                        104  iarg=iarg+1; hedr=.true.
                                                        +
                                                        105  elseif(file(2:2)=='n') then
                                                        +
                                                        106  iarg=iarg+1; steam=.true.
                                                        +
                                                        107  else
                                                        +
                                                        108  iarg=iarg+1
                                                        +
                                                        109  endif
                                                        +
                                                        110  file='nofile'
                                                        +
                                                        111  cycle
                                                        +
                                                        112  endif
                                                        +
                                                        113  iarg=iarg+1
                                                        +
                                                        114  enddo
                                                        +
                                                        115 
                                                        +
                                                        116 ! check if file exists, then open it, else exit
                                                        +
                                                        117 
                                                        +
                                                        118  narg=0
                                                        +
                                                        119  if(file=='nofile') goto 1
                                                        +
                                                        120  file = trim(adjustl(file))
                                                        +
                                                        121  inquire(file=file,exist=exist)
                                                        +
                                                        122  if (.not.exist) then
                                                        +
                                                        123  print *, trim(file)//' does not exist'
                                                        +
                                                        124  call exit(3)
                                                        +
                                                        125  endif
                                                        +
                                                        126 
                                                        +
                                                        127 ! open the bufr input file
                                                        +
                                                        128 ! ------------------------
                                                        +
                                                        129 
                                                        +
                                                        130  open(lubfr,file=file,form='unformatted')
                                                        +
                                                        131  call openbf(lubfr,'IN',lubfr)
                                                        +
                                                        132  call datelen(10)
                                                        +
                                                        133 
                                                        +
                                                        134 ! READ A SUBSET - READ ANOTHER MESSAGE WHEN NO MORE SUBSETS
                                                        +
                                                        135 ! ---------------------------------------------------------
                                                        +
                                                        136 
                                                        +
                                                        137  do while(ireadmg(lubfr,subset,idate)==0)
                                                        +
                                                        138  do while(ireadsb(lubfr)==0)
                                                        +
                                                        139  call ufbcnt(lubfr,irec,isub)
                                                        +
                                                        140 
                                                        +
                                                        141  IF(msg/=' ' .and. msg/=subset) exit
                                                        +
                                                        142 
                                                        +
                                                        143  if(dump) then
                                                        +
                                                        144  call ufdump(lubfr,6)
                                                        +
                                                        145  goto 99
                                                        +
                                                        146  endif
                                                        +
                                                        147 
                                                        +
                                                        148 ! MOVE SUBSET CONTENTS INTO THIS PROGRAM
                                                        +
                                                        149 ! --------------------------------------
                                                        +
                                                        150 
                                                        +
                                                        151  CALL ufbint(lubfr,hdr,10, 1,iret,hstr)
                                                        +
                                                        152  xob = hdr(2)
                                                        +
                                                        153  yob = hdr(3)
                                                        +
                                                        154  jrt = nint(hdr(6))
                                                        +
                                                        155  jtp = nint(hdr(7))
                                                        +
                                                        156  jkx = nint(hdr(8))
                                                        +
                                                        157  IF(sta/=' ' .AND. sta/=sid(1:nsta)) cycle
                                                        +
                                                        158  IF(irt/=0 .and. irt/=jrt) cycle
                                                        +
                                                        159  IF(itp/=0 .and. itp/=jtp) cycle
                                                        +
                                                        160  IF(ikx/=0 .and. ikx/=jkx) cycle
                                                        +
                                                        161  if(window) then
                                                        +
                                                        162  if(.not.(xob>=x1 .and. xob<=x2))cycle
                                                        +
                                                        163  if(.not.(yob>=y1 .and. yob<=y2))cycle
                                                        +
                                                        164  endif
                                                        +
                                                        165 
                                                        +
                                                        166  CALL ufbint(lubfr,obs,10,255,nlev,ostr)
                                                        +
                                                        167  CALL ufbint(lubfr,qms,10,255,nleq,qstr)
                                                        +
                                                        168  IF(nlev/=nleq) stop 'NLEV<>NLEQ'
                                                        +
                                                        169 
                                                        +
                                                        170 ! MOVE CAT 8 DATA TO PRINT RANGE
                                                        +
                                                        171 ! ------------------------------
                                                        +
                                                        172  DO l=1,nlev
                                                        +
                                                        173  IF(obs(1,l)==8) THEN
                                                        +
                                                        174  obs(2,l) = obs(9,l)
                                                        +
                                                        175  obs(3,l) = obs(10,l)
                                                        +
                                                        176  ENDIF
                                                        +
                                                        177  ENDDO
                                                        +
                                                        178 
                                                        +
                                                        179 ! PRINT A REPORT 20 LINES AT A TIME
                                                        +
                                                        180 ! ---------------------------------
                                                        +
                                                        181 
                                                        +
                                                        182  if(hedr) then
                                                        +
                                                        183  print'(a8,1x,a8,7(f8.2,1x))',subset,(hdr(i),i=1,8)
                                                        +
                                                        184  if(steam) cycle
                                                        +
                                                        185  goto 99
                                                        +
                                                        186 
                                                        +
                                                        187  else
                                                        +
                                                        188 
                                                        +
                                                        189  print'(80(''-''))'
                                                        +
                                                        190  print'(''MESSAGE: '',A8,2(2X,I4),i12 )' , subset,irec,isub,idate
                                                        +
                                                        191  print'(''STATION: '',A8,1X,2(F8.2,1X))' , (hdr(i),i= 1,3)
                                                        +
                                                        192  print'(''TIME: '',I10,2x,F8.2 )' , idate,hdr(4)
                                                        +
                                                        193  print'(''ELV: '',F8.2 )' , (hdr(5) )
                                                        +
                                                        194  print'(''TYPE: '',3(F8.0,1X) )' , (hdr(i),i= 6,8)
                                                        +
                                                        195  print'(''DATA: '' )'
                                                        +
                                                        196 
                                                        +
                                                        197  endif
                                                        +
                                                        198 
                                                        +
                                                        199  do l=1,nlev
                                                        +
                                                        200  do i=1,7
                                                        +
                                                        201  iqm = nint(qms(i,l))
                                                        +
                                                        202  if(iqm<0)iqm=10e8
                                                        +
                                                        203  iqm = min(iqm,16)
                                                        +
                                                        204  qms(i,l) = qmc(iqm+1)
                                                        +
                                                        205  enddo
                                                        +
                                                        206  enddo
                                                        +
                                                        207 
                                                        +
                                                        208  nlne = 7
                                                        +
                                                        209  print'(2(1X,A3),6(8X,A3))',vars
                                                        +
                                                        210  DO 12 l=1,nlev
                                                        +
                                                        211  nlne = nlne+1
                                                        +
                                                        212  print 11, l,nint(obs(1,l)),(obs(i,l),qms(min(i-1,5),l),i=2,7)
                                                        +
                                                        213 11 FORMAT(2i4,6(1x,f7.1,'(',a1,')'))
                                                        +
                                                        214 12 ENDDO
                                                        +
                                                        215  print'(80(''-''))'
                                                        +
                                                        216  if(steam) cycle
                                                        +
                                                        217 
                                                        +
                                                        218 ! GO TO READ THE NEXT SUBSET IF NO 'Q' YOU
                                                        +
                                                        219 ! ----------------------------------------
                                                        +
                                                        220 
                                                        +
                                                        221 99 READ(5,'(a)',iostat=iostat) optarg
                                                        +
                                                        222  IF(optarg(1:1)=='q') then
                                                        +
                                                        223  stop
                                                        +
                                                        224  elseif(optarg(1:1)=='s') then
                                                        +
                                                        225  read(optarg(2:50),*) sta
                                                        +
                                                        226  nsta=len(trim(sta))
                                                        +
                                                        227  elseif(optarg(1:1)=='w') then
                                                        +
                                                        228  read(optarg(2:50),*) x1,x2,y1,y2
                                                        +
                                                        229  window=.true.
                                                        +
                                                        230  elseif(optarg(1:1)=='k') then
                                                        +
                                                        231  read(optarg(2:50),*) ikx
                                                        +
                                                        232  elseif(optarg(1:1)=='r') then
                                                        +
                                                        233  read(optarg(2:50),*) irt
                                                        +
                                                        234  elseif(optarg(1:1)=='m') then
                                                        +
                                                        235  read(optarg(2:50),*) msg
                                                        +
                                                        236  elseif(optarg(1:1)=='d') then
                                                        +
                                                        237  call ufdump(lubfr,6)
                                                        +
                                                        238  elseif(optarg(1:1)=='h') then
                                                        +
                                                        239  hedr=.true.
                                                        +
                                                        240  endif
                                                        +
                                                        241 
                                                        +
                                                        242  enddo ! end of subset loop
                                                        +
                                                        243  enddo ! end of message loop
                                                        +
                                                        244 
                                                        +
                                                        245 ! HERE WHEN ALL MESSAGES HAVE BEEN READ
                                                        +
                                                        246 ! -------------------------------------
                                                        +
                                                        247 
                                                        +
                                                        248  stop
                                                        +
                                                        249  END program
                                                        +
                                                        250 
                                                        +
                                                        256  subroutine printx(str)
                                                        +
                                                        257  character(*) :: str
                                                        +
                                                        258  lens=len(str)
                                                        +
                                                        259  do i=1,lens-1
                                                        +
                                                        260  write(*,'(a1)',advance="no")str(i:i)
                                                        +
                                                        261  enddo
                                                        +
                                                        262  write(*,'(a1)')str(lens:lens)
                                                        +
                                                        263  end subroutine
                                                        +
                                                        264 
                                                        +
                                                        recursive subroutine ufdump(lunit, luprt)
                                                        Print a verbose listing of the contents of a data subset, including all data values and replicated se...
                                                        Definition: dumpdata.F90:228
                                                        +
                                                        recursive subroutine openbf(lunit, io, lundx)
                                                        Connect a new file to the NCEPLIBS-bufr software for input or output operations, or initialize the li...
                                                        +
                                                        recursive subroutine ufbcnt(lunit, kmsg, ksub)
                                                        Get the current location of the file pointer within a BUFR file, in terms of a message number countin...
                                                        +
                                                        subroutine printx(str)
                                                        Print long lines to stdout using advance=no format clause.
                                                        Definition: readbp.F90:257
                                                        +
                                                        program readbp
                                                        Read PREPBUFR file containing embedded DX BUFR tables, and print each report one at a time.
                                                        Definition: readbp.F90:18
                                                        +
                                                        recursive integer function ireadmg(lunit, subset, idate)
                                                        Call subroutine readmg() and pass back its return code as the function value.
                                                        +
                                                        recursive integer function ireadsb(lunit)
                                                        Call subroutine readsb() and pass back its return code as the function value.
                                                        +
                                                        recursive subroutine ufbint(lunin, usr, i1, i2, iret, str)
                                                        Read or write one or more data values from or to a data subset.
                                                        +
                                                        recursive subroutine datelen(len)
                                                        Specify the format of Section 1 date-time values that will be output by future calls to any of the NC...
                                                        Definition: s013vals.F90:889
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/readmp_8F90.html b/previous_versions/v12.1.0/readmp_8F90.html new file mode 100644 index 000000000..37b167614 --- /dev/null +++ b/previous_versions/v12.1.0/readmp_8F90.html @@ -0,0 +1,143 @@ + + + + + + + +NCEPLIBS-bufr: readmp.F90 File Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        readmp.F90 File Reference
                                                        +
                                                        +
                                                        + +

                                                        Read BUFR file containing embedded DX BUFR tables, and print each report one at a time. +More...

                                                        + +

                                                        Go to the source code of this file.

                                                        + + + + + +

                                                        +Functions/Subroutines

                                                        program readmp
                                                         Read BUFR file containing embedded DX BUFR tables, and print each report one at a time. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Read BUFR file containing embedded DX BUFR tables, and print each report one at a time.

                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        2002-2-24
                                                        + +

                                                        Definition in file readmp.F90.

                                                        +

                                                        Function/Subroutine Documentation

                                                        + +

                                                        ◆ readmp()

                                                        + +
                                                        +
                                                        + + + + +
                                                        program readmp
                                                        +
                                                        + +

                                                        Read BUFR file containing embedded DX BUFR tables, and print each report one at a time.

                                                        +
                                                        Returns
                                                        0 for success, error code otherwise.
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        2002-02-24
                                                        + +

                                                        Definition at line 13 of file readmp.F90.

                                                        + +

                                                        References i4dy(), ireadmg(), ireadsb(), openbf(), and ufdump().

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/readmp_8F90.js b/previous_versions/v12.1.0/readmp_8F90.js new file mode 100644 index 000000000..909c4bda0 --- /dev/null +++ b/previous_versions/v12.1.0/readmp_8F90.js @@ -0,0 +1,4 @@ +var readmp_8F90 = +[ + [ "readmp", "readmp_8F90.html#a0b84a15ad24b7d8dfbef402295b8b650", null ] +]; \ No newline at end of file diff --git a/previous_versions/v12.1.0/readmp_8F90_source.html b/previous_versions/v12.1.0/readmp_8F90_source.html new file mode 100644 index 000000000..09e323904 --- /dev/null +++ b/previous_versions/v12.1.0/readmp_8F90_source.html @@ -0,0 +1,146 @@ + + + + + + + +NCEPLIBS-bufr: readmp.F90 Source File + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        +
                                                        readmp.F90
                                                        +
                                                        +
                                                        +Go to the documentation of this file.
                                                        1 
                                                        +
                                                        6 
                                                        +
                                                        13  program readmp
                                                        +
                                                        14 
                                                        +
                                                        15  implicit none
                                                        +
                                                        16 
                                                        +
                                                        17  character(255) :: file
                                                        +
                                                        18  character(8) :: subset
                                                        +
                                                        19  character(1) :: go
                                                        +
                                                        20  integer, parameter :: lunit = 20
                                                        +
                                                        21  integer :: idate,ireadmg,ireadsb,i4dy
                                                        +
                                                        22  logical :: exist
                                                        +
                                                        23 
                                                        +
                                                        24 ! get the filename to open and read
                                                        +
                                                        25 
                                                        +
                                                        26  call get_command_argument(1,file); file=trim(adjustl(file))
                                                        +
                                                        27  if (file == '') then
                                                        +
                                                        28  print *, 'Usage: readmp <bufrfile> will print reports one at a time'
                                                        +
                                                        29  call exit(2)
                                                        +
                                                        30  endif
                                                        +
                                                        31  inquire(file=file,exist=exist)
                                                        +
                                                        32  if (.not.exist) then
                                                        +
                                                        33  print *,trim(file)//' does not exist'
                                                        +
                                                        34  call exit(3)
                                                        +
                                                        35  endif
                                                        +
                                                        36  call get_command_argument(2,go); go=trim(adjustl(go)) ! this for testing
                                                        +
                                                        37  open(lunit,file=file,form='unformatted')
                                                        +
                                                        38 
                                                        +
                                                        39 ! open the file to bufr and dump the subsets to standard outout one at a time
                                                        +
                                                        40 
                                                        +
                                                        41  call openbf(lunit,'IN',lunit)
                                                        +
                                                        42  do while(ireadmg(lunit,subset,idate)==0)
                                                        +
                                                        43  do while(ireadsb(lunit)==0)
                                                        +
                                                        44  print*,'message date=',i4dy(idate)
                                                        +
                                                        45  call ufdump(lunit,6)
                                                        +
                                                        46  if(go/='q') read(5,'(a)') go
                                                        +
                                                        47  if(go=='q') stop
                                                        +
                                                        48  enddo
                                                        +
                                                        49  enddo
                                                        +
                                                        50 
                                                        +
                                                        51  end program readmp
                                                        +
                                                        recursive subroutine ufdump(lunit, luprt)
                                                        Print a verbose listing of the contents of a data subset, including all data values and replicated se...
                                                        Definition: dumpdata.F90:228
                                                        +
                                                        recursive subroutine openbf(lunit, io, lundx)
                                                        Connect a new file to the NCEPLIBS-bufr software for input or output operations, or initialize the li...
                                                        +
                                                        program readmp
                                                        Read BUFR file containing embedded DX BUFR tables, and print each report one at a time.
                                                        Definition: readmp.F90:13
                                                        +
                                                        recursive integer function ireadmg(lunit, subset, idate)
                                                        Call subroutine readmg() and pass back its return code as the function value.
                                                        +
                                                        recursive integer function ireadsb(lunit)
                                                        Call subroutine readsb() and pass back its return code as the function value.
                                                        +
                                                        recursive integer function i4dy(idate)
                                                        Convert a date-time with a 2-digit year (YYMMDDHH) to a date-time with a 4-digit year (YYYYMMDDHH) us...
                                                        Definition: s013vals.F90:1070
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/readwritemg_8F90.html b/previous_versions/v12.1.0/readwritemg_8F90.html new file mode 100644 index 000000000..a6eefa503 --- /dev/null +++ b/previous_versions/v12.1.0/readwritemg_8F90.html @@ -0,0 +1,1152 @@ + + + + + + + +NCEPLIBS-bufr: readwritemg.F90 File Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        readwritemg.F90 File Reference
                                                        +
                                                        +
                                                        + +

                                                        Read or write a BUFR message. +More...

                                                        + +

                                                        Go to the source code of this file.

                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                                                        +Functions/Subroutines

                                                        recursive subroutine closmg (lunin)
                                                         Close the BUFR message that is currently open for writing within internal arrays associated with logical unit abs(lunin), then write the message to that logical unit. More...
                                                         
                                                        recursive subroutine cnved4 (msgin, lmsgot, msgot)
                                                         Convert a BUFR edition 3 message to BUFR edition 4. More...
                                                         
                                                        recursive subroutine getlens (mbay, ll, len0, len1, len2, len3, len4, len5)
                                                         Read the section lengths of a BUFR message, up to a specified point in the message. More...
                                                         
                                                        recursive integer function ifbget (lunit)
                                                         Check whether there are any more data subsets available to be read from a BUFR message. More...
                                                         
                                                        integer function igetmxby ()
                                                         Get the maximum length of a BUFR message that can be written to an output file by the NCEPLIBS-bufr software. More...
                                                         
                                                        recursive integer function ireadmg (lunit, subset, idate)
                                                         Call subroutine readmg() and pass back its return code as the function value. More...
                                                         
                                                        integer function lmsg (sec0)
                                                         Given a character string containing Section 0 from a BUFR message, determine the array size (in integers) needed to store the entire BUFR message. More...
                                                         
                                                        recursive subroutine maxout (maxo)
                                                         Specify the maximum length of a BUFR message that can be written to any output file by the NCEPLIBS-bufr software. More...
                                                         
                                                        logical function msgfull (msiz, itoadd, mxsiz)
                                                         Check whether the current data subset in the internal arrays will fit within the current BUFR message in the internal arrays, based on the prescribed maximum size of a BUFR message and the allowance of some extra "wiggle room" that may be needed later when writing out the message. More...
                                                         
                                                        subroutine msgini (lun)
                                                         Initialize, within the internal arrays, a new uncompressed BUFR message for output. More...
                                                         
                                                        subroutine msgwrt (lunit, mesg, mgbyt)
                                                         Perform final checks and updates on a BUFR message before writing it to a specified Fortran logical unit. More...
                                                         
                                                        recursive integer function nmsub (lunit)
                                                         Get the total number of data subsets available within the BUFR message that was most recently opened for reading via a call to one of the message-reading subroutines for a specified Fortran logical unit. More...
                                                         
                                                        integer function nmwrd (mbay)
                                                         Given an integer array containing Section 0 from a BUFR message, determine the array size (in integers) needed to store the entire BUFR message. More...
                                                         
                                                        recursive subroutine openmb (lunit, subset, jdate)
                                                         Open and initialize a new BUFR message within internal arrays, for eventual output to logical unit lunit. More...
                                                         
                                                        recursive subroutine openmg (lunit, subset, jdate)
                                                         Open and initialize a new BUFR message within internal arrays, for eventual output to logical unit lunit. More...
                                                         
                                                        subroutine padmsg (mesg, lmesg, npbyt)
                                                         Pad a BUFR message with zeroed-out bytes from the end of the message up to the next 8-byte boundary. More...
                                                         
                                                        subroutine rdmsgw (lunit, mesg, iret)
                                                         Read the next BUFR message from logical unit lunit as an array of integer words. More...
                                                         
                                                        recursive subroutine readerme (mesg, lunit, subset, jdate, iret)
                                                         Read a BUFR message from a memory array. More...
                                                         
                                                        recursive subroutine readmg (lunxx, subset, jdate, iret)
                                                         Read the next BUFR message from logical unit abs(lunxx) into internal arrays. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Read or write a BUFR message.

                                                        +
                                                        Authors
                                                        J. Woollen, J. Ator
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition in file readwritemg.F90.

                                                        +

                                                        Function/Subroutine Documentation

                                                        + +

                                                        ◆ closmg()

                                                        + +
                                                        +
                                                        + + + + + + + + +
                                                        recursive subroutine closmg (integer, intent(in) lunin)
                                                        +
                                                        + +

                                                        Close the BUFR message that is currently open for writing within internal arrays associated with logical unit abs(lunin), then write the message to that logical unit.

                                                        +

                                                        Logical unit abs(lunin) should have already been opened for output operations via a previous call to subroutine openbf().

                                                        +

                                                        If lunin < 0, then any message containing zero data subsets will not be written to logical unit abs(lunin) for the remainder of the life of the application program. This includes suppressing the writing of any "dummy" messages containing dump center and initiation times that normally appear in the first 2 messages of NCEP dump files.

                                                        +
                                                        Parameters
                                                        + + +
                                                        lunin- Absolute value is Fortran logical unit number for BUFR file
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen, D. Keyser
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 532 of file readwritemg.F90.

                                                        + +

                                                        References bort(), moda_bitbuf::mbay, moda_bitbuf::mbyt, moda_msglim::msglim, msgwrt(), moda_msgcwd::nmsg, moda_msgcwd::nsub, status(), wrcmps(), wtstat(), and x84().

                                                        + +

                                                        Referenced by closbf(), makestab(), openmb(), openmg(), and writsa().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ cnved4()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        recursive subroutine cnved4 (integer, dimension(*), intent(in) msgin,
                                                        integer, intent(in) lmsgot,
                                                        integer, dimension(*), intent(out) msgot 
                                                        )
                                                        +
                                                        + +

                                                        Convert a BUFR edition 3 message to BUFR edition 4.

                                                        +

                                                        This subroutine reads an input BUFR message encoded using BUFR edition 3, then outputs an equivalent BUFR message encoded using BUFR edition 4.

                                                        +

                                                        This subroutine performs the same function as subroutine pkvs01() when the latter is called with s01mnem = 'BEN' and ival = 4, except that the latter subroutine operates on BUFR messages internally within the software, whereas this subroutine operates on a single BUFR message passed in via a memory array.

                                                        +
                                                        Parameters
                                                        + + + + +
                                                        msgin- BUFR message
                                                        lmsgot- Dimensioned size (in integers) of msgot; used by the subroutine to ensure that it doesn't overflow the msgot array
                                                        msgot- Copy of msgin encoded using BUFR edition 4
                                                        +
                                                        +
                                                        +
                                                        Remarks
                                                          +
                                                        • msgin and msgot must be separate arrays.
                                                        • +
                                                        • BUFR edition 4 messages are usually longer in length than their BUFR edition 3 counterparts, so it's usually a good idea to allow for extra space when allocating msgot within the application program.
                                                        • +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2005-11-29
                                                        + +

                                                        Definition at line 1292 of file readwritemg.F90.

                                                        + +

                                                        References bort(), getlens(), iupbs01(), mvb(), nmwrd(), pkb(), and x84().

                                                        + +

                                                        Referenced by msgwrt().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ getlens()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        recursive subroutine getlens (integer, dimension(*), intent(in) mbay,
                                                        integer, intent(in) ll,
                                                        integer, intent(out) len0,
                                                        integer, intent(out) len1,
                                                        integer, intent(out) len2,
                                                        integer, intent(out) len3,
                                                        integer, intent(out) len4,
                                                        integer, intent(out) len5 
                                                        )
                                                        +
                                                        + +

                                                        Read the section lengths of a BUFR message, up to a specified point in the message.

                                                        +

                                                        This subroutine will work on any BUFR message encoded using BUFR edition 2, 3, or 4.

                                                        +
                                                        Parameters
                                                        + + + + + + + + + +
                                                        mbay- BUFR message
                                                        ll- Number of last section for which the length is to be read. In other words, setting ll = N means to read and return the lengths of Sections 0 through N (i.e. len0, len1,...,lenN). Any section lengths that are not specified to be read are returned with a default placeholder value of -1.
                                                        len0- Length (in bytes) of Section 0
                                                        len1- Length (in bytes) of Section 1
                                                        len2- Length (in bytes) of Section 2
                                                        len3- Length (in bytes) of Section 3
                                                        len4- Length (in bytes) of Section 4
                                                        len5- Length (in bytes) of Section 5
                                                        +
                                                        +
                                                        +
                                                        Remarks
                                                          +
                                                        • The start of the BUFR message (i.e. the string 'BUFR') must be aligned on the first 4 bytes of mbay.
                                                        • +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2005-11-29
                                                        + +

                                                        Definition at line 1212 of file readwritemg.F90.

                                                        + +

                                                        References iupb(), iupbs01(), x48(), and x84().

                                                        + +

                                                        Referenced by atrcpt(), cktaba(), cnved4(), copysb(), iupbs3(), msgwrt(), stbfdx(), stndrd(), upds3(), wrdxtb(), and writlc().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ ifbget()

                                                        + +
                                                        +
                                                        + + + + + + + + +
                                                        recursive integer function ifbget (integer, intent(in) lunit)
                                                        +
                                                        + +

                                                        Check whether there are any more data subsets available to be read from a BUFR message.

                                                        +

                                                        The message that will checked is the one that's currently open for reading via the most recent call to any of the message-reading subroutines for the specified Fortran logical unit.

                                                        +
                                                        Parameters
                                                        + + +
                                                        lunit- Fortran logical unit number for BUFR file
                                                        +
                                                        +
                                                        +
                                                        Returns
                                                        ifbget - Return code:
                                                          +
                                                        • 0 = there's at least one more data subset to be read from the message
                                                        • +
                                                        • -1 = there are no more data subsets to be read from the message
                                                        • +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 1401 of file readwritemg.F90.

                                                        + +

                                                        References bort(), moda_msgcwd::msub, moda_msgcwd::nsub, status(), and x84().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ igetmxby()

                                                        + +
                                                        +
                                                        + + + + +
                                                        integer function igetmxby
                                                        +
                                                        + +

                                                        Get the maximum length of a BUFR message that can be written to an output file by the NCEPLIBS-bufr software.

                                                        +
                                                        Returns
                                                        igetmxby - Maximum length of a BUFR message that can be written to an output file by the NCEPLIBS-bufr software
                                                        +

                                                        This maximum length value can be changed at any time via a separate call to subroutine maxout().

                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2016-06-27
                                                        + +

                                                        Definition at line 1034 of file readwritemg.F90.

                                                        + +

                                                        References moda_bitbuf::maxbyt.

                                                        + +

                                                        Referenced by bufr_c2f_interface::igetmxby_c().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ ireadmg()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        recursive integer function ireadmg (integer, intent(in) lunit,
                                                        character*8, intent(out) subset,
                                                        integer, intent(out) idate 
                                                        )
                                                        +
                                                        + +

                                                        Call subroutine readmg() and pass back its return code as the function value.

                                                        +

                                                        The use of this function allows the return code from readmg() to be used as the target variable within an iterative program loop.

                                                        +
                                                        Parameters
                                                        + + + + +
                                                        lunit- Fortran logical unit number for BUFR file
                                                        subset- Table A mnemonic for type of BUFR message that was read (see DX BUFR Tables for further information about Table A mnemonics)
                                                        idate- Date-time stored within Section 1 of BUFR message that was read, in format of either YYMMDDHH or YYYYMMDDHH, depending on the most recent call to subroutine datelen()
                                                        +
                                                        +
                                                        +
                                                        Returns
                                                        ireadmg - Return code:
                                                          +
                                                        • 0 = new BUFR message was successfully read into internal arrays
                                                        • +
                                                        • -1 = there are no more BUFR messages in the file connected to logical unit lunit
                                                        • +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 143 of file readwritemg.F90.

                                                        + +

                                                        References readmg(), x48(), and x84().

                                                        + +

                                                        Referenced by binv(), bufr_c2f_interface::ireadmg_c(), readbp(), readmp(), split_by_subset(), and ufbtab().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ lmsg()

                                                        + +
                                                        +
                                                        + + + + + + + + +
                                                        integer function lmsg (character*8, intent(in) sec0)
                                                        +
                                                        + +

                                                        Given a character string containing Section 0 from a BUFR message, determine the array size (in integers) needed to store the entire BUFR message.

                                                        +

                                                        This function is similar to function nmwrd(), except that it takes a character string as input rather than an integer array.

                                                        +
                                                        Parameters
                                                        + + +
                                                        sec0- Section 0 from a BUFR message
                                                        +
                                                        +
                                                        +
                                                        Returns
                                                        lmsg - Array size (in integers) needed to store entire BUFR message
                                                        +
                                                        Remarks
                                                          +
                                                        • In some cases, the value returned may be slightly larger than the minimum number of integers needed to store the entire BUFR message.
                                                        • +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 1176 of file readwritemg.F90.

                                                        + +

                                                        References nmwrd().

                                                        + +

                                                        Referenced by readerme().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ maxout()

                                                        + +
                                                        +
                                                        + + + + + + + + +
                                                        recursive subroutine maxout (integer, intent(in) maxo)
                                                        +
                                                        + +

                                                        Specify the maximum length of a BUFR message that can be written to any output file by the NCEPLIBS-bufr software.

                                                        +

                                                        This subroutine can be called from within an application program at any time after the initial call to subroutine openbf(), and the specified value maxo will then be used for all future BUFR messages written by the software to all output files for the remainder of the program, unless another call is made to this same subroutine to reset the value of maxo again. Otherwise, if this subroutine is never called, a default maximum message length is used for all output files, as set via an initial internal call to subroutine bfrini().

                                                        +
                                                        Parameters
                                                        + + +
                                                        maxo- New maximum length (in bytes) for all BUFR messages written to all output files
                                                          +
                                                        • 0 = Set maxo to the maximum value allowed by the NCEPLIBS-bufr software
                                                        • +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        Authors
                                                        J. Woollen, J. Ator
                                                        +
                                                        Date
                                                        2002-05-14
                                                        + +

                                                        Definition at line 974 of file readwritemg.F90.

                                                        + +

                                                        References errwrt(), moda_bitbuf::maxbyt, and x84().

                                                        + +

                                                        Referenced by bufr_c2f_interface::maxout_c(), and split_by_subset().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ msgfull()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        logical function msgfull (integer, intent(in) msiz,
                                                        integer, intent(in) itoadd,
                                                        integer, intent(in) mxsiz 
                                                        )
                                                        +
                                                        + +

                                                        Check whether the current data subset in the internal arrays will fit within the current BUFR message in the internal arrays, based on the prescribed maximum size of a BUFR message and the allowance of some extra "wiggle room" that may be needed later when writing out the message.

                                                        +
                                                        Parameters
                                                        + + + + +
                                                        msiz- Size (in bytes) of current BUFR message
                                                        itoadd- Size (in bytes) of current data subset
                                                        mxsiz- Maximum size of a BUFR message
                                                        +
                                                        +
                                                        +
                                                        Returns
                                                        msgfull - Flag indicating whether the current data subset will fit within the current BUFR message
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2009-03-23
                                                        + +

                                                        Definition at line 917 of file readwritemg.F90.

                                                        + +

                                                        References moda_msgstd::csmf, and moda_tnkrcp::ctrt.

                                                        + +

                                                        Referenced by wrdxtb().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ msgini()

                                                        + +
                                                        +
                                                        + + + + + + + + +
                                                        subroutine msgini (integer, intent(in) lun)
                                                        +
                                                        + +

                                                        Initialize, within the internal arrays, a new uncompressed BUFR message for output.

                                                        +

                                                        Arrays are filled in common block msgptr and modules moda_msgcwd and moda_bitbuf.

                                                        +
                                                        Parameters
                                                        + + +
                                                        lun- file ID
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 777 of file readwritemg.F90.

                                                        + +

                                                        References bort(), moda_msgcwd::idate, moda_msgcwd::inode, moda_ufbcpl::luncpy, moda_bitbuf::mbay, moda_bitbuf::mbyt, nemtab(), nemtba(), moda_msgcwd::nmsg, moda_msgcwd::nsub, pkb(), pkc(), and moda_tables::tag.

                                                        + +

                                                        Referenced by cpyupd(), msgupd(), openmb(), and openmg().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ msgwrt()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        subroutine msgwrt (integer, intent(in) lunit,
                                                        integer, dimension(*), intent(in) mesg,
                                                        integer, intent(in) mgbyt 
                                                        )
                                                        +
                                                        + +

                                                        Perform final checks and updates on a BUFR message before writing it to a specified Fortran logical unit.

                                                        +

                                                        These final checks and updates include:

                                                          +
                                                        • Standardizing the BUFR message, if requested via a previous call subroutine stdmsg()
                                                        • +
                                                        • Converting the BUFR message from edition 3 to edition 4, if requested via a previous call to subroutine pkvs01()
                                                        • +
                                                        • Storing any customized values into Section 0 or Section 1 of the BUFR message, if requested via one or more previous calls to subroutine pkvs01()
                                                        • +
                                                        • Storing a tank receipt time into Section 1 of the BUFR message, if requested via a previous call to subroutine strcpt()
                                                        • +
                                                        • For edition 3 BUFR messages, ensuring each section of the message contains an even number of bytes
                                                        • +
                                                        • Storing '7777' into the last four bytes of the BUFR message, and storing the final message length in Section 0
                                                        • +
                                                        • Appending zeroed-out bytes after the end of the BUFR message, up to the next machine word boundary
                                                        • +
                                                        • Encapsulating the BUFR message with IEEE Fortran control words, if requested via a previous call to subroutine setblock()
                                                        • +
                                                        • Storing a copy of the final message into internal arrays for possible later retrival via subroutine writsa()
                                                        • +
                                                        +
                                                        Parameters
                                                        + + + + +
                                                        lunit- Fortran logical unit number for BUFR file
                                                        mesg- BUFR message
                                                        mgbyt- Size (in bytes) of BUFR message
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 597 of file readwritemg.F90.

                                                        + +

                                                        References atrcpt(), blocks(), bort(), moda_s01cm::cmnem, cnved4(), moda_msgstd::csmf, moda_tnkrcp::ctrt, errwrt(), getlens(), moda_s01cm::ivmnem, moda_mgwa::mgwa, moda_mgwb::mgwb, moda_bufrmg::msglen, moda_bufrmg::msgtxt, moda_s01cm::ns01v, moda_nulbfr::null, padmsg(), pkb(), pkbs1(), pkc(), status(), and stndrd().

                                                        + +

                                                        Referenced by closmg(), copybf(), copymg(), cpymem(), cpyupd(), msgupd(), wrcmps(), and wrdxtb().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ nmsub()

                                                        + +
                                                        +
                                                        + + + + + + + + +
                                                        recursive integer function nmsub (integer, intent(in) lunit)
                                                        +
                                                        + +

                                                        Get the total number of data subsets available within the BUFR message that was most recently opened for reading via a call to one of the message-reading subroutines for a specified Fortran logical unit.

                                                        +

                                                        The data subsets themselves do not need to have already been read via previous calls to any of the subset-reading subroutines.

                                                        +
                                                        Parameters
                                                        + + +
                                                        lunit- Fortran logical unit number for BUFR file
                                                        +
                                                        +
                                                        +
                                                        Returns
                                                        nmsub - Number of data subsets
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 1094 of file readwritemg.F90.

                                                        + +

                                                        References bort(), moda_msgcwd::msub, status(), and x84().

                                                        + +

                                                        Referenced by binv(), split_by_subset(), ufbmns(), ufbtab(), and ufbtam().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ nmwrd()

                                                        + +
                                                        +
                                                        + + + + + + + + +
                                                        integer function nmwrd (integer, dimension(*), intent(in) mbay)
                                                        +
                                                        + +

                                                        Given an integer array containing Section 0 from a BUFR message, determine the array size (in integers) needed to store the entire BUFR message.

                                                        +

                                                        This function is similar to function lmsg(), except that it takes an integer array as input rather than a character string.

                                                        +
                                                        Parameters
                                                        + + +
                                                        mbay- Section 0 from a BUFR message
                                                        +
                                                        +
                                                        +
                                                        Returns
                                                        nmwrd - Array size (in integers) needed to store entire BUFR message
                                                        +
                                                        Remarks
                                                          +
                                                        • In some cases, the value returned may be slightly larger than the minimum number of integers needed to store the entire BUFR message.
                                                        • +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2005-11-29
                                                        + +

                                                        Definition at line 1144 of file readwritemg.F90.

                                                        + +

                                                        References iupbs01().

                                                        + +

                                                        Referenced by cnved4(), lmsg(), ufbmem(), and ufbmex().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ openmb()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        recursive subroutine openmb (integer, intent(in) lunit,
                                                        character*(*), intent(in) subset,
                                                        integer, intent(in) jdate 
                                                        )
                                                        +
                                                        + +

                                                        Open and initialize a new BUFR message within internal arrays, for eventual output to logical unit lunit.

                                                        +

                                                        Logical unit lunit should have already been opened for output operations via a previous call to subroutine openbf().

                                                        +

                                                        This subroutine is similar to subroutine openmg(), except that it will only open a new message if either subset or jdate has changed since the previous call to this subroutine. Otherwise, it will leave the existing internal message unchanged so that the next data subset can be written into the same internal message, thereby improving overall storage efficiency by allowing the maximum number of data subsets to be stored within each output BUFR message. For this reason, openmb() is much more widely used than openmg().

                                                        +

                                                        If this subroutine does need to open and initialize a new BUFR message for output (e.g. if the value of subset or jdate has changed since the previous call to this subroutine), then any existing message within the internal arrays will be automatically flushed and written to logical unit lunit via an internal call to subroutine closmg(). In this case, the behavior of this subroutine then becomes exactly like that of subroutine openmg().

                                                        +
                                                        Parameters
                                                        + + + + +
                                                        lunit- Fortran logical unit number for BUFR file
                                                        subset- Table A mnemonic for type of BUFR BUFR message to be opened (see DX BUFR Tables for further information about Table A mnemonics)
                                                        jdate- Date-time to be stored within Section 1 of BUFR message being opened, in format of either YYMMDDHH or YYYYMMDDHH
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 396 of file readwritemg.F90.

                                                        + +

                                                        References bort(), closmg(), i4dy(), moda_msgcwd::idate, moda_msgcwd::inode, msgini(), nemtba(), status(), usrtpl(), wtstat(), and x84().

                                                        + +

                                                        Referenced by bufr_c2f_interface::openmb_c().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ openmg()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        recursive subroutine openmg (integer, intent(in) lunit,
                                                        character*(*), intent(in) subset,
                                                        integer, intent(in) jdate 
                                                        )
                                                        +
                                                        + +

                                                        Open and initialize a new BUFR message within internal arrays, for eventual output to logical unit lunit.

                                                        +

                                                        Logical unit lunit should have already been opened for output operations via a previous call to subroutine openbf().

                                                        +

                                                        This subroutine is similar to subroutine openmb(), except that it will always open a new message for output, regardless of the values of subset and jdate. Any existing message within the internal arrays will be automatically flushed and written to logical unit lunit via an internal call to subroutine closmg().

                                                        +
                                                        Parameters
                                                        + + + + +
                                                        lunit- Fortran logical unit number for BUFR file
                                                        subset- Table A mnemonic for type of BUFR message to be opened (see DX BUFR Tables for further information about Table A mnemonics)
                                                        jdate- Date-time to be stored within Section 1 of BUFR message being opened, in format of either YYMMDDHH or YYYYMMDDHH
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 468 of file readwritemg.F90.

                                                        + +

                                                        References bort(), closmg(), i4dy(), moda_msgcwd::idate, moda_msgcwd::inode, msgini(), nemtba(), status(), usrtpl(), wtstat(), and x84().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ padmsg()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        subroutine padmsg (integer, dimension(*), intent(inout) mesg,
                                                        integer, intent(in) lmesg,
                                                        integer, intent(out) npbyt 
                                                        )
                                                        +
                                                        + +

                                                        Pad a BUFR message with zeroed-out bytes from the end of the message up to the next 8-byte boundary.

                                                        +
                                                        Parameters
                                                        + + + + +
                                                        mesg- BUFR message:
                                                          +
                                                        • on input, contains BUFR message to be padded
                                                        • +
                                                        • on output, contains BUFR message with npbyt zeroed-out bytes appended to the end
                                                        • +
                                                        +
                                                        lmesg- Dimensioned size (in integer words) of mesg; used by the subroutine to ensure that it does not overflow the mesg array
                                                        npbyt- Number of zeroed-out bytes appended to mesg
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        Ator
                                                        +
                                                        Date
                                                        2005-11-29
                                                        + +

                                                        Definition at line 1055 of file readwritemg.F90.

                                                        + +

                                                        References bort(), and pkb().

                                                        + +

                                                        Referenced by msgwrt().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ rdmsgw()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        subroutine rdmsgw (integer, intent(in) lunit,
                                                        integer, dimension(*), intent(out) mesg,
                                                        integer, intent(out) iret 
                                                        )
                                                        +
                                                        + +

                                                        Read the next BUFR message from logical unit lunit as an array of integer words.

                                                        +
                                                        Parameters
                                                        + + + + +
                                                        lunit- Fortran logical unit number for BUFR file.
                                                        mesg- BUFR message.
                                                        iret- return code:
                                                          +
                                                        • 0 normal return.
                                                        • +
                                                        • -1 end-of-file encountered while reading from lunit.
                                                        • +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2005-11-29
                                                        + +

                                                        Definition at line 344 of file readwritemg.F90.

                                                        + +

                                                        References errwrt(), and status().

                                                        + +

                                                        Referenced by copybf(), cpdxmm(), datebf(), dumpbf(), mesgbc(), mesgbf(), posapx(), rdbfdx(), readmg(), ufbmem(), and ufbmex().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ readerme()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        recursive subroutine readerme (integer, dimension(*), intent(in) mesg,
                                                        integer, intent(in) lunit,
                                                        character*8, intent(out) subset,
                                                        integer, intent(out) jdate,
                                                        integer, intent(out) iret 
                                                        )
                                                        +
                                                        + +

                                                        Read a BUFR message from a memory array.

                                                        +

                                                        This subroutine is similar to subroutine readmg(), except that it reads a BUFR message from an array passed as input, whereas readmg() reads a BUFR message from a file on the local system.

                                                        +

                                                        This subroutine can be used in any context in which readmg() might otherwise be used, and from that point on, the application program can proceed with a call to one of the subset-reading subroutines (and then, subsequently, to any of the values-reading subroutines).

                                                        +

                                                        When using this subroutine, it's necessary for the application program to have previously called subroutine openbf() in order to associate a DX BUFR tables file with the message that is being input via mesg; it's also necessary to pass in the relevant lunit value as a call argument, even though in this case the subroutine will not actually try to read from the associated Fortran logical unit.

                                                        +

                                                        If mesg contains a DX BUFR table message, the subroutine will store the contents internally and use them to process any future BUFR messages associated with lunit. In this case, the subroutine will return with iret = 11, and any number of DX BUFR table messages passed in via consecutive calls to this subroutine will accumulate internally and be treated as a single DX BUFR table, up until a call is made where mesg no longer contains a DX BUFR table message.

                                                        +
                                                        Parameters
                                                        + + + + + + +
                                                        mesg- BUFR message
                                                        lunit- Fortran logical unit number for BUFR file
                                                        subset- Table A mnemonic for type of BUFR message that was read (see DX BUFR Tables or further information about Table A mnemonics)
                                                        jdate- Date-time stored within Section 1 of BUFR message that was read, in format of either YYMMDDHH or YYYYMMDDHH, depending on the most recent call to subroutine datelen()
                                                        iret- return code:
                                                          +
                                                        • 0 mesg was successfully read
                                                        • +
                                                        • 11 mesg contained a DX BUFR table message
                                                        • +
                                                        • -1 mesg contained an unrecognized Table A message type
                                                        • +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        Authors
                                                        J. Woollen J. Ator
                                                        +
                                                        Date
                                                        1995-06-28
                                                        + +

                                                        Definition at line 216 of file readwritemg.F90.

                                                        + +

                                                        References bort(), cktaba(), dxinit(), errwrt(), moda_idrdm::idrdm, idxmsg(), moda_sc3bfr::isc3, iupbs3(), lmsg(), makestab(), moda_bitbuf::mbay, reads3(), status(), stbfdx(), wtstat(), x48(), and x84().

                                                        + +

                                                        Referenced by fdebufr_c().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ readmg()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        recursive subroutine readmg (integer, intent(in) lunxx,
                                                        character*8, intent(out) subset,
                                                        integer, intent(out) jdate,
                                                        integer, intent(out) iret 
                                                        )
                                                        +
                                                        + +

                                                        Read the next BUFR message from logical unit abs(lunxx) into internal arrays.

                                                        +

                                                        Logical unit abs(lunxx) should have already been opened for input operations via a previous call to subroutine openbf().

                                                        +

                                                        Whenever this subroutine returns with iret = 0, this indicates that a new BUFR message of type subset and date-time jdate was successfully read into internal arrays within the NCEPLIBS-bufr software, and from where it can then be easily manipulated or further parsed via a call to one of the subset-reading subroutines. Otherwise, if the subroutine returns with iret = -1, then this indicates that there are no more BUFR messages (i.e. end-of-file) within the file connected to logical unit abs(lunxx).

                                                        +
                                                        Remarks
                                                          +
                                                        • Any DX BUFR table messages encountered within abs(lunxx) will be automatically processed and stored internally, so a successful return from this subroutine will always result in a BUFR message containing actual data values within the internal arrays.
                                                        • +
                                                        • In prior versions of the NCEPLIBS-bufr software, an input value of lunxx < 0 was an indicator to the subroutine to treat any read error from abs(lunxx) the same as an end-of-file condition. This option is no longer supported, but the capability to call this subroutine with lunxx < 0 is itself still supported for backwards-compatibility with certain legacy application programs.
                                                        • +
                                                        +
                                                        +
                                                        Parameters
                                                        + + + + + +
                                                        lunxx- Absolute value is Fortran logical unit number for BUFR file
                                                        subset- Table A mnemonic for type of BUFR message that was read (see DX BUFR Tables for further information about Table A mnemonics)
                                                        jdate- Date-time stored within Section 1 of BUFR message that was read, in format of either YYMMDDHH or YYYYMMDDHH, depending on the most recent call to subroutine datelen()
                                                        iret- return code
                                                          +
                                                        • 0 = new BUFR message was successfully read into internal arrays
                                                        • +
                                                        • -1 = there are no more BUFR messages in the file connected to logical unit abs(lunxx)
                                                        • +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        Authors
                                                        J. Woollen, J. Ator
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 43 of file readwritemg.F90.

                                                        + +

                                                        References bort(), cktaba(), errwrt(), moda_msgcwd::idate, idxmsg(), moda_msgcwd::inode, moda_sc3bfr::isc3, moda_bitbuf::mbay, rdbfdx(), rdmsgw(), reads3(), status(), wtstat(), x48(), and x84().

                                                        + +

                                                        Referenced by cmpbqm(), ireadmg(), rdmgsb(), readns(), rewnbf(), sinv(), ufbinx(), and ufbpos().

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/readwritemg_8F90.js b/previous_versions/v12.1.0/readwritemg_8F90.js new file mode 100644 index 000000000..ae87bc459 --- /dev/null +++ b/previous_versions/v12.1.0/readwritemg_8F90.js @@ -0,0 +1,22 @@ +var readwritemg_8F90 = +[ + [ "closmg", "readwritemg_8F90.html#a63b37b74d9833df9d99e3937a2fa293a", null ], + [ "cnved4", "readwritemg_8F90.html#adc65969dd9c1cedbab0425827e241963", null ], + [ "getlens", "readwritemg_8F90.html#ab6c6c3d1925977e2c4013b3da342dc37", null ], + [ "ifbget", "readwritemg_8F90.html#abb1acb6092b6e1f49737498c1f76f0d0", null ], + [ "igetmxby", "readwritemg_8F90.html#a87f1117bcbbc713c95bdca6f1bb1214c", null ], + [ "ireadmg", "readwritemg_8F90.html#ae023a7cc381f488ac7669dc3e3ee8236", null ], + [ "lmsg", "readwritemg_8F90.html#a44d876e69afb2688f364d8bdd0ca2400", null ], + [ "maxout", "readwritemg_8F90.html#a1c8cdc47f69010cd4eaa20710e28f53d", null ], + [ "msgfull", "readwritemg_8F90.html#a47d4a63b5e7276a90eee0ce83237cb60", null ], + [ "msgini", "readwritemg_8F90.html#ae5477034329440d4127a5243305b81e4", null ], + [ "msgwrt", "readwritemg_8F90.html#af49a08bdf36b69217da7571dcfc90624", null ], + [ "nmsub", "readwritemg_8F90.html#a7430cdcec381d86f72a4b60a6a7db982", null ], + [ "nmwrd", "readwritemg_8F90.html#a7c7234f006ddb78fb82844c95b608002", null ], + [ "openmb", "readwritemg_8F90.html#a5edbefade4e7194e4dd3ee42f394034b", null ], + [ "openmg", "readwritemg_8F90.html#a493ce59c1a2976e9714c2d9b283bdb11", null ], + [ "padmsg", "readwritemg_8F90.html#a127f4e4664445595654494dea28d7d8f", null ], + [ "rdmsgw", "readwritemg_8F90.html#ac23041847910e299fa2c89962597a312", null ], + [ "readerme", "readwritemg_8F90.html#aa2a7bf49cad422b474a24edd3a1cb232", null ], + [ "readmg", "readwritemg_8F90.html#aad947e23951efbcba54930d6f309e0a8", null ] +]; \ No newline at end of file diff --git a/previous_versions/v12.1.0/readwritemg_8F90_source.html b/previous_versions/v12.1.0/readwritemg_8F90_source.html new file mode 100644 index 000000000..f8f6aa1e3 --- /dev/null +++ b/previous_versions/v12.1.0/readwritemg_8F90_source.html @@ -0,0 +1,1292 @@ + + + + + + + +NCEPLIBS-bufr: readwritemg.F90 Source File + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        +
                                                        readwritemg.F90
                                                        +
                                                        +
                                                        +Go to the documentation of this file.
                                                        1 
                                                        +
                                                        5 
                                                        +
                                                        43 recursive subroutine readmg(lunxx,subset,jdate,iret)
                                                        +
                                                        44 
                                                        +
                                                        45  use bufrlib
                                                        +
                                                        46 
                                                        +
                                                        47  use modv_vars, only: im8b
                                                        +
                                                        48 
                                                        +
                                                        49  use moda_msgcwd
                                                        +
                                                        50  use moda_sc3bfr
                                                        +
                                                        51  use moda_bitbuf
                                                        +
                                                        52 
                                                        +
                                                        53  implicit none
                                                        +
                                                        54 
                                                        +
                                                        55  integer, intent(in) :: lunxx
                                                        +
                                                        56  integer, intent(out) :: jdate, iret
                                                        +
                                                        57  integer iprt, my_lunxx, lunit, lun, il, im, ier, idxmsg
                                                        +
                                                        58 
                                                        +
                                                        59  character*8, intent(out) :: subset
                                                        +
                                                        60  character*128 errstr
                                                        +
                                                        61 
                                                        +
                                                        62  common /quiet/ iprt
                                                        +
                                                        63 
                                                        +
                                                        64  ! Check for I8 integers
                                                        +
                                                        65 
                                                        +
                                                        66  if(im8b) then
                                                        +
                                                        67  im8b=.false.
                                                        +
                                                        68 
                                                        +
                                                        69  call x84(lunxx,my_lunxx,1)
                                                        +
                                                        70  call readmg(my_lunxx,subset,jdate,iret)
                                                        +
                                                        71  call x48(jdate,jdate,1)
                                                        +
                                                        72  call x48(iret,iret,1)
                                                        +
                                                        73 
                                                        +
                                                        74  im8b=.true.
                                                        +
                                                        75  return
                                                        +
                                                        76  endif
                                                        +
                                                        77 
                                                        +
                                                        78  iret = 0
                                                        +
                                                        79  lunit = abs(lunxx)
                                                        +
                                                        80 
                                                        +
                                                        81  ! Check the file status
                                                        +
                                                        82 
                                                        +
                                                        83  call status(lunit,lun,il,im)
                                                        +
                                                        84  if(il==0) call bort('BUFRLIB: READMG - INPUT BUFR FILE IS CLOSED, IT MUST BE OPEN FOR INPUT')
                                                        +
                                                        85  if(il>0) call bort('BUFRLIB: READMG - INPUT BUFR FILE IS OPEN FOR OUTPUT, IT MUST BE OPEN FOR INPUT')
                                                        +
                                                        86  call wtstat(lunit,lun,il,1)
                                                        +
                                                        87 
                                                        +
                                                        88  ! Read a message into the internal message buffer
                                                        +
                                                        89 
                                                        +
                                                        90  do while (.true.)
                                                        +
                                                        91  call rdmsgw(lunit,mbay(1,lun),ier)
                                                        +
                                                        92  if(ier==-1) then
                                                        +
                                                        93  ! EOF on attempted read
                                                        +
                                                        94  call wtstat(lunit,lun,il,0)
                                                        +
                                                        95  inode(lun) = 0
                                                        +
                                                        96  idate(lun) = 0
                                                        +
                                                        97  subset = ' '
                                                        +
                                                        98  jdate = 0
                                                        +
                                                        99  iret = -1
                                                        +
                                                        100  return
                                                        +
                                                        101  endif
                                                        +
                                                        102 
                                                        +
                                                        103  ! Parse the message section contents
                                                        +
                                                        104  if(isc3(lun)/=0) call reads3(lun)
                                                        +
                                                        105  call cktaba(lun,subset,jdate,iret)
                                                        +
                                                        106 
                                                        +
                                                        107  ! Check for a dictionary message
                                                        +
                                                        108  if(idxmsg(mbay(1,lun))/=1) return
                                                        +
                                                        109 
                                                        +
                                                        110  ! This is an internal dictionary message that was generated by the NCEPLIBS-bufr software.
                                                        +
                                                        111  if(isc3(lun)/=0) return
                                                        +
                                                        112 
                                                        +
                                                        113  ! Section 3 decoding isn't being used, so backspace the file pointer and then use subroutine rdbfdx() to read in
                                                        +
                                                        114  ! all such dictionary messages (they should be stored consecutively!) and reset the internal tables.
                                                        +
                                                        115  call backbufr_c(lun)
                                                        +
                                                        116  call rdbfdx(lunit,lun)
                                                        +
                                                        117  if(iprt>=1) then
                                                        +
                                                        118  call errwrt('++++++++++++++BUFR ARCHIVE LIBRARY+++++++++++++++++')
                                                        +
                                                        119  errstr = 'BUFRLIB: READMG - INTERNAL DICTIONARY MESSAGE READ; ACCOUNT FOR IT THEN READ IN NEXT MESSAGE WITHOUT RETURNING'
                                                        +
                                                        120  call errwrt(errstr)
                                                        +
                                                        121  call errwrt('++++++++++++++BUFR ARCHIVE LIBRARY+++++++++++++++++')
                                                        +
                                                        122  call errwrt(' ')
                                                        +
                                                        123  endif
                                                        +
                                                        124  enddo
                                                        +
                                                        125 
                                                        +
                                                        126 end subroutine readmg
                                                        +
                                                        127 
                                                        +
                                                        143 recursive integer function ireadmg(lunit,subset,idate) result(iret)
                                                        +
                                                        144 
                                                        +
                                                        145  use modv_vars, only: im8b
                                                        +
                                                        146 
                                                        +
                                                        147  implicit none
                                                        +
                                                        148 
                                                        +
                                                        149  integer, intent(in) :: lunit
                                                        +
                                                        150  integer, intent(out) :: idate
                                                        +
                                                        151  integer my_lunit
                                                        +
                                                        152 
                                                        +
                                                        153  character*8, intent(out) :: subset
                                                        +
                                                        154 
                                                        +
                                                        155  ! Check for I8 integers
                                                        +
                                                        156 
                                                        +
                                                        157  if(im8b) then
                                                        +
                                                        158  im8b=.false.
                                                        +
                                                        159 
                                                        +
                                                        160  call x84(lunit,my_lunit,1)
                                                        +
                                                        161  iret=ireadmg(my_lunit,subset,idate)
                                                        +
                                                        162  call x48(idate,idate,1)
                                                        +
                                                        163 
                                                        +
                                                        164  im8b=.true.
                                                        +
                                                        165  return
                                                        +
                                                        166  endif
                                                        +
                                                        167 
                                                        +
                                                        168  call readmg(lunit,subset,idate,iret)
                                                        +
                                                        169 
                                                        +
                                                        170  return
                                                        +
                                                        171 end function ireadmg
                                                        +
                                                        172 
                                                        +
                                                        216 recursive subroutine readerme(mesg,lunit,subset,jdate,iret)
                                                        +
                                                        217 
                                                        +
                                                        218  use modv_vars, only: mxmsgl, im8b, nbytw
                                                        +
                                                        219 
                                                        +
                                                        220  use moda_sc3bfr
                                                        +
                                                        221  use moda_idrdm
                                                        +
                                                        222  use moda_bitbuf
                                                        +
                                                        223 
                                                        +
                                                        224  implicit none
                                                        +
                                                        225 
                                                        +
                                                        226  integer, intent(in) :: lunit, mesg(*)
                                                        +
                                                        227  integer, intent(out) :: jdate, iret
                                                        +
                                                        228  integer iprt, my_lunit, iec0(2), lun, il, im, ii, lnmsg, lmsg, idxmsg, iupbs3
                                                        +
                                                        229 
                                                        +
                                                        230  character*8, intent(out) :: subset
                                                        +
                                                        231  character*8 sec0
                                                        +
                                                        232  character*128 errstr, bort_str
                                                        +
                                                        233 
                                                        +
                                                        234  logical endtbl
                                                        +
                                                        235 
                                                        +
                                                        236  equivalence(sec0,iec0)
                                                        +
                                                        237 
                                                        +
                                                        238  common /quiet/ iprt
                                                        +
                                                        239 
                                                        +
                                                        240  ! Check for I8 integers
                                                        +
                                                        241 
                                                        +
                                                        242  if(im8b) then
                                                        +
                                                        243  im8b=.false.
                                                        +
                                                        244 
                                                        +
                                                        245  call x84(lunit,my_lunit,1)
                                                        +
                                                        246  call readerme(mesg,my_lunit,subset,jdate,iret)
                                                        +
                                                        247  call x48(jdate,jdate,1)
                                                        +
                                                        248  call x48(iret,iret,1)
                                                        +
                                                        249 
                                                        +
                                                        250  im8b=.true.
                                                        +
                                                        251  return
                                                        +
                                                        252  endif
                                                        +
                                                        253 
                                                        +
                                                        254  iret = 0
                                                        +
                                                        255 
                                                        +
                                                        256  ! Check the file status
                                                        +
                                                        257 
                                                        +
                                                        258  call status(lunit,lun,il,im)
                                                        +
                                                        259  if(il==0) call bort('BUFRLIB: READERME - INPUT BUFR FILE IS CLOSED, IT MUST BE OPEN FOR INPUT')
                                                        +
                                                        260  if(il>0) call bort('BUFRLIB: READERME - INPUT BUFR FILE IS OPEN FOR OUTPUT, IT MUST BE OPEN FOR INPUT')
                                                        +
                                                        261  call wtstat(lunit,lun,il, 1)
                                                        +
                                                        262 
                                                        +
                                                        263  ! Copy the input message into the internal message buffer
                                                        +
                                                        264 
                                                        +
                                                        265  iec0(1) = mesg(1)
                                                        +
                                                        266  iec0(2) = mesg(2)
                                                        +
                                                        267  lnmsg = lmsg(sec0)
                                                        +
                                                        268  if(lnmsg*nbytw>mxmsgl) then
                                                        +
                                                        269  write(bort_str,'("BUFRLIB: READERME - INPUT BUFR MESSAGE LENGTH",1X,I6," BYTES) IS LARGER THAN '// &
                                                        +
                                                        270  'LIMIT OF ",I6," BYTES")') lnmsg*nbytw, mxmsgl
                                                        +
                                                        271  call bort(bort_str)
                                                        +
                                                        272  endif
                                                        +
                                                        273  do ii=1,lnmsg
                                                        +
                                                        274  mbay(ii,lun) = mesg(ii)
                                                        +
                                                        275  enddo
                                                        +
                                                        276 
                                                        +
                                                        277  ! Confirm that the first 4 bytes of SEC0 contain 'BUFR'.
                                                        +
                                                        278 
                                                        +
                                                        279  if(sec0(1:4)/='BUFR') &
                                                        +
                                                        280  call bort('BUFRLIB: READERME - FIRST 4 BYTES READ FROM RECORD NOT "BUFR", DOES NOT CONTAIN BUFR DATA')
                                                        +
                                                        281 
                                                        +
                                                        282  ! Parse the message section contents
                                                        +
                                                        283 
                                                        +
                                                        284  if(isc3(lun)/=0) call reads3(lun)
                                                        +
                                                        285  call cktaba(lun,subset,jdate,iret)
                                                        +
                                                        286  if(isc3(lun)/=0) return
                                                        +
                                                        287 
                                                        +
                                                        288  ! Check for a DX dictionary message
                                                        +
                                                        289 
                                                        +
                                                        290  ! A new DX dictionary table can be passed in as a consecutive set of DX dictionary messages. Each message should be passed
                                                        +
                                                        291  ! in one at a time, via input argument mesg during consecutive calls to this subroutine, and all such messages will be
                                                        +
                                                        292  ! treated as a single dictionary table up until the next message is passed in which either contains no data subsets or
                                                        +
                                                        293  ! else is a non-DX dictionary message.
                                                        +
                                                        294 
                                                        +
                                                        295  endtbl = .false.
                                                        +
                                                        296  if(idxmsg(mbay(1,lun))==1) then
                                                        +
                                                        297  ! This is a DX dictionary message that was generated by the NCEPLIBS-bufr software.
                                                        +
                                                        298  if(iupbs3(mbay(1,lun),'NSUB')==0) then
                                                        +
                                                        299  ! But it doesn't contain any actual dictionary information, so assume we've reached the end of the dictionary table.
                                                        +
                                                        300  if(idrdm(lun)>0) then
                                                        +
                                                        301  endtbl = .true.
                                                        +
                                                        302  endif
                                                        +
                                                        303  else
                                                        +
                                                        304  if(idrdm(lun)==0) then
                                                        +
                                                        305  ! This is the first DX dictionary message that is part of a new dictionary table.
                                                        +
                                                        306  call dxinit(lun,0)
                                                        +
                                                        307  endif
                                                        +
                                                        308  idrdm(lun) = idrdm(lun) + 1
                                                        +
                                                        309  call stbfdx(lun,mbay(1,lun))
                                                        +
                                                        310  endif
                                                        +
                                                        311  else if(idrdm(lun)>0) then
                                                        +
                                                        312  ! This is the first non-DX dictionary message received following a string of DX dictionary messages, so assume we've
                                                        +
                                                        313  ! reached the end of the dictionary table.
                                                        +
                                                        314  endtbl = .true.
                                                        +
                                                        315  endif
                                                        +
                                                        316 
                                                        +
                                                        317  if(endtbl) then
                                                        +
                                                        318  if ( iprt >= 2 ) then
                                                        +
                                                        319  call errwrt('+++++++++++++++++++++++++++++++++++++++++++++++++')
                                                        +
                                                        320  write ( unit=errstr, fmt='(A,I3,A)' ) &
                                                        +
                                                        321  'BUFRLIB: READERME - STORED NEW DX TABLE CONSISTING OF (', idrdm(lun), ') MESSAGES;'
                                                        +
                                                        322  call errwrt(errstr)
                                                        +
                                                        323  errstr = 'WILL APPLY THIS TABLE TO ALL SUBSEQUENT DATA MESSAGES UNTIL NEXT DX TABLE IS PASSED IN'
                                                        +
                                                        324  call errwrt(errstr)
                                                        +
                                                        325  call errwrt('+++++++++++++++++++++++++++++++++++++++++++++++++')
                                                        +
                                                        326  call errwrt(' ')
                                                        +
                                                        327  endif
                                                        +
                                                        328  idrdm(lun) = 0
                                                        +
                                                        329  call makestab
                                                        +
                                                        330  endif
                                                        +
                                                        331 
                                                        +
                                                        332  return
                                                        +
                                                        333 end subroutine readerme
                                                        +
                                                        334 
                                                        +
                                                        344 subroutine rdmsgw(lunit,mesg,iret)
                                                        +
                                                        345 
                                                        +
                                                        346  use bufrlib
                                                        +
                                                        347 
                                                        +
                                                        348  use modv_vars, only: mxmsgld4
                                                        +
                                                        349 
                                                        +
                                                        350  implicit none
                                                        +
                                                        351 
                                                        +
                                                        352  integer, intent(in) :: lunit
                                                        +
                                                        353  integer, intent(out) :: mesg(*), iret
                                                        +
                                                        354  integer lun, il, im
                                                        +
                                                        355 
                                                        +
                                                        356  call status(lunit,lun,il,im)
                                                        +
                                                        357  iret = -2
                                                        +
                                                        358  do while (iret<=-2)
                                                        +
                                                        359  iret = crdbufr_c(lun,mesg,mxmsgld4)
                                                        +
                                                        360  if(iret==-3) call errwrt('BUFRLIB: RDMSGW - SKIPPING OVERLARGE MESSAGE')
                                                        +
                                                        361  if(iret==-2) call errwrt('BUFRLIB: RDMSGW - SKIPPING CORRUPTED MESSAGE')
                                                        +
                                                        362  end do
                                                        +
                                                        363 
                                                        +
                                                        364  return
                                                        +
                                                        365 end subroutine rdmsgw
                                                        +
                                                        366 
                                                        +
                                                        396 recursive subroutine openmb(lunit,subset,jdate)
                                                        +
                                                        397 
                                                        +
                                                        398  use modv_vars, only: im8b
                                                        +
                                                        399 
                                                        +
                                                        400  use moda_msgcwd
                                                        +
                                                        401 
                                                        +
                                                        402  implicit none
                                                        +
                                                        403 
                                                        +
                                                        404  integer, intent(in) :: lunit, jdate
                                                        +
                                                        405  integer my_lunit, my_jdate, lun, il, im, mtyp, mstb, inod, i4dy
                                                        +
                                                        406 
                                                        +
                                                        407  character*(*), intent(in) :: subset
                                                        +
                                                        408 
                                                        +
                                                        409  logical open
                                                        +
                                                        410 
                                                        +
                                                        411  ! Check for I8 integers
                                                        +
                                                        412 
                                                        +
                                                        413  if(im8b) then
                                                        +
                                                        414  im8b=.false.
                                                        +
                                                        415 
                                                        +
                                                        416  call x84(lunit,my_lunit,1)
                                                        +
                                                        417  call x84(jdate,my_jdate,1)
                                                        +
                                                        418  call openmb(my_lunit,subset,my_jdate)
                                                        +
                                                        419 
                                                        +
                                                        420  im8b=.true.
                                                        +
                                                        421  return
                                                        +
                                                        422  endif
                                                        +
                                                        423 
                                                        +
                                                        424  ! Check the file status
                                                        +
                                                        425 
                                                        +
                                                        426  call status(lunit,lun,il,im)
                                                        +
                                                        427  if(il==0) call bort('BUFRLIB: OPENMB - OUTPUT BUFR FILE IS CLOSED, IT MUST BE OPEN FOR OUTPUT')
                                                        +
                                                        428  if(il<0) call bort('BUFRLIB: OPENMB - OUTPUT BUFR FILE IS OPEN FOR INPUT, IT MUST BE OPEN FOR OUTPUT')
                                                        +
                                                        429 
                                                        +
                                                        430  ! Get some subset particulars
                                                        +
                                                        431 
                                                        +
                                                        432  call nemtba(lun,subset,mtyp,mstb,inod)
                                                        +
                                                        433  open = im==0 .or. inod/=inode(lun) .or. i4dy(jdate)/=idate(lun)
                                                        +
                                                        434 
                                                        +
                                                        435  ! Maybe(?) open a new or different type of message
                                                        +
                                                        436 
                                                        +
                                                        437  if(open) then
                                                        +
                                                        438  call closmg(lunit)
                                                        +
                                                        439  call wtstat(lunit,lun,il, 1)
                                                        +
                                                        440  inode(lun) = inod
                                                        +
                                                        441  idate(lun) = i4dy(jdate)
                                                        +
                                                        442  ! Initialize the open message
                                                        +
                                                        443  call msgini(lun)
                                                        +
                                                        444  call usrtpl(lun,1,1)
                                                        +
                                                        445  endif
                                                        +
                                                        446 
                                                        +
                                                        447  return
                                                        +
                                                        448 end subroutine openmb
                                                        +
                                                        449 
                                                        +
                                                        468 recursive subroutine openmg(lunit,subset,jdate)
                                                        +
                                                        469 
                                                        +
                                                        470  use modv_vars, only: im8b
                                                        +
                                                        471 
                                                        +
                                                        472  use moda_msgcwd
                                                        +
                                                        473 
                                                        +
                                                        474  implicit none
                                                        +
                                                        475 
                                                        +
                                                        476  integer, intent(in) :: lunit, jdate
                                                        +
                                                        477  integer my_lunit, my_jdate, lun, il, im, mtyp, mstb, inod, i4dy
                                                        +
                                                        478 
                                                        +
                                                        479  character*(*), intent(in) :: subset
                                                        +
                                                        480 
                                                        +
                                                        481  ! Check for I8 integers
                                                        +
                                                        482 
                                                        +
                                                        483  if(im8b) then
                                                        +
                                                        484  im8b=.false.
                                                        +
                                                        485 
                                                        +
                                                        486  call x84(lunit,my_lunit,1)
                                                        +
                                                        487  call x84(jdate,my_jdate,1)
                                                        +
                                                        488  call openmg(my_lunit,subset,my_jdate)
                                                        +
                                                        489 
                                                        +
                                                        490  im8b=.true.
                                                        +
                                                        491  return
                                                        +
                                                        492  endif
                                                        +
                                                        493 
                                                        +
                                                        494  ! Check the file status
                                                        +
                                                        495 
                                                        +
                                                        496  call status(lunit,lun,il,im)
                                                        +
                                                        497  if(il==0) call bort('BUFRLIB: OPENMG - OUTPUT BUFR FILE IS CLOSED, IT MUST BE OPEN FOR OUTPUT')
                                                        +
                                                        498  if(il<0) call bort('BUFRLIB: OPENMG - OUTPUT BUFR FILE IS OPEN FOR INPUT, IT MUST BE OPEN FOR OUTPUT')
                                                        +
                                                        499  if(im/=0) call closmg(lunit)
                                                        +
                                                        500  call wtstat(lunit,lun,il, 1)
                                                        +
                                                        501 
                                                        +
                                                        502  ! Get some subset particulars
                                                        +
                                                        503 
                                                        +
                                                        504  call nemtba(lun,subset,mtyp,mstb,inod)
                                                        +
                                                        505  inode(lun) = inod
                                                        +
                                                        506  idate(lun) = i4dy(jdate)
                                                        +
                                                        507 
                                                        +
                                                        508  ! Initialize the open message
                                                        +
                                                        509 
                                                        +
                                                        510  call msgini(lun)
                                                        +
                                                        511  call usrtpl(lun,1,1)
                                                        +
                                                        512 
                                                        +
                                                        513  return
                                                        +
                                                        514 end subroutine openmg
                                                        +
                                                        515 
                                                        +
                                                        532 recursive subroutine closmg(lunin)
                                                        +
                                                        533 
                                                        +
                                                        534  use modv_vars, only: im8b
                                                        +
                                                        535 
                                                        +
                                                        536  use moda_msgcwd
                                                        +
                                                        537  use moda_msglim
                                                        +
                                                        538  use moda_bitbuf
                                                        +
                                                        539 
                                                        +
                                                        540  implicit none
                                                        +
                                                        541 
                                                        +
                                                        542  integer, intent(in) :: lunin
                                                        +
                                                        543  integer my_lunin, lunit, lun, il, im
                                                        +
                                                        544 
                                                        +
                                                        545  ! Check for I8 integers
                                                        +
                                                        546 
                                                        +
                                                        547  if(im8b) then
                                                        +
                                                        548  im8b=.false.
                                                        +
                                                        549 
                                                        +
                                                        550  call x84(lunin,my_lunin,1)
                                                        +
                                                        551  call closmg(my_lunin)
                                                        +
                                                        552 
                                                        +
                                                        553  im8b=.true.
                                                        +
                                                        554  return
                                                        +
                                                        555  endif
                                                        +
                                                        556 
                                                        +
                                                        557  ! Check the file status
                                                        +
                                                        558 
                                                        +
                                                        559  lunit = abs(lunin)
                                                        +
                                                        560  call status(lunit,lun,il,im)
                                                        +
                                                        561  if(lunit/=lunin) msglim(lun) = 0
                                                        +
                                                        562  if(il==0) call bort('BUFRLIB: CLOSMG - OUTPUT BUFR FILE IS CLOSED, IT MUST BE OPEN FOR OUTPUT')
                                                        +
                                                        563  if(il<0) call bort('BUFRLIB: CLOSMG - OUTPUT BUFR FILE IS OPEN FOR INPUT, IT MUST BE OPEN FOR OUTPUT')
                                                        +
                                                        564  if(im/=0) then
                                                        +
                                                        565  if(nsub(lun)>0) then
                                                        +
                                                        566  call msgwrt(lunit,mbay(1,lun),mbyt(lun))
                                                        +
                                                        567  else if(nsub(lun)==0.and.nmsg(lun)<msglim(lun)) then
                                                        +
                                                        568  call msgwrt(lunit,mbay(1,lun),mbyt(lun))
                                                        +
                                                        569  else if(nsub(lun)<0) then
                                                        +
                                                        570  call wrcmps(-lunit)
                                                        +
                                                        571  endif
                                                        +
                                                        572  endif
                                                        +
                                                        573  call wtstat(lunit,lun,il,0)
                                                        +
                                                        574 
                                                        +
                                                        575  return
                                                        +
                                                        576 end subroutine closmg
                                                        +
                                                        577 
                                                        +
                                                        597 subroutine msgwrt(lunit,mesg,mgbyt)
                                                        +
                                                        598 
                                                        +
                                                        599  use bufrlib
                                                        +
                                                        600 
                                                        +
                                                        601  use modv_vars, only: mxmsgld4
                                                        +
                                                        602 
                                                        +
                                                        603  use moda_nulbfr
                                                        +
                                                        604  use moda_bufrmg
                                                        +
                                                        605  use moda_mgwa
                                                        +
                                                        606  use moda_mgwb
                                                        +
                                                        607  use moda_s01cm
                                                        +
                                                        608  use moda_tnkrcp
                                                        +
                                                        609  use moda_msgstd
                                                        +
                                                        610 
                                                        +
                                                        611  implicit none
                                                        +
                                                        612 
                                                        +
                                                        613  integer, intent(in) :: lunit, mgbyt, mesg(*)
                                                        +
                                                        614  integer iprt, iec0(2), mbyt, ibit, kbit, ii, jj, len0, len1, len2, len3, len4, l5, iad4, iad5, lun, il, im, npbyt, mwrd, &
                                                        +
                                                        615  nmwrd, iupbs01, idxmsg
                                                        +
                                                        616 
                                                        +
                                                        617  character*128 errstr
                                                        +
                                                        618  character*4 bufr, sevn
                                                        +
                                                        619 
                                                        +
                                                        620  common /quiet/ iprt
                                                        +
                                                        621 
                                                        +
                                                        622  data bufr /'BUFR'/
                                                        +
                                                        623  data sevn /'7777'/
                                                        +
                                                        624 
                                                        +
                                                        625  ! Make a local copy of the input message for use within this subroutine, since internal calls to any or all of the
                                                        +
                                                        626  ! subroutines stndrd(), cnved4(), pkbs1(), atrcpt(), etc. may end up modifying the message before it finally gets
                                                        +
                                                        627  ! written out to lunit.
                                                        +
                                                        628 
                                                        +
                                                        629  mbyt = mgbyt
                                                        +
                                                        630 
                                                        +
                                                        631  iec0(1) = mesg(1)
                                                        +
                                                        632  iec0(2) = mesg(2)
                                                        +
                                                        633  ibit = 32
                                                        +
                                                        634  call pkb(mbyt,24,iec0,ibit)
                                                        +
                                                        635 
                                                        +
                                                        636  do ii = 1, nmwrd(iec0)
                                                        +
                                                        637  mgwa(ii) = mesg(ii)
                                                        +
                                                        638  enddo
                                                        +
                                                        639 
                                                        +
                                                        640  ! Overwrite any values within Section 0 or Section 1 that were requested via previous calls to pkvs01(). If a request
                                                        +
                                                        641  ! was made to change the BUFR edition number to 4, then actually convert the message as well.
                                                        +
                                                        642 
                                                        +
                                                        643  if(ns01v>0) then
                                                        +
                                                        644  do jj=1,ns01v
                                                        +
                                                        645  if(cmnem(jj)=='BEN') then
                                                        +
                                                        646  if(ivmnem(jj)==4) then
                                                        +
                                                        647  ! Install Section 0 byte count for use by cnved4()
                                                        +
                                                        648  ibit = 32
                                                        +
                                                        649  call pkb(mbyt,24,mgwa,ibit)
                                                        +
                                                        650  call cnved4(mgwa,mxmsgld4,mgwb)
                                                        +
                                                        651  ! Compute mbyt for the new edition 4 message
                                                        +
                                                        652  mbyt = iupbs01(mgwb,'LENM')
                                                        +
                                                        653  ! Copy the mgwb array back into mgwa
                                                        +
                                                        654  do ii = 1, nmwrd(mgwb)
                                                        +
                                                        655  mgwa(ii) = mgwb(ii)
                                                        +
                                                        656  enddo
                                                        +
                                                        657  endif
                                                        +
                                                        658  else
                                                        +
                                                        659  ! Overwrite the requested value
                                                        +
                                                        660  call pkbs1(ivmnem(jj),mgwa,cmnem(jj))
                                                        +
                                                        661  endif
                                                        +
                                                        662  enddo
                                                        +
                                                        663  endif
                                                        +
                                                        664 
                                                        +
                                                        665  ! Standardize the message if requested via module @ref moda_msgstd. However, we don't want to do this if the message
                                                        +
                                                        666  ! contains DX BUFR table information, because in that case it's already standard.
                                                        +
                                                        667 
                                                        +
                                                        668  if ( ( csmf=='Y' ) .and. ( idxmsg(mgwa)/=1 ) ) then
                                                        +
                                                        669  ! Install Section 0 byte count and Section 5 '7777' into the original message. This is necessary because
                                                        +
                                                        670  ! subroutine stndrd() requires a complete and well-formed BUFR message as its input.
                                                        +
                                                        671  ibit = 32
                                                        +
                                                        672  call pkb(mbyt,24,mgwa,ibit)
                                                        +
                                                        673  ibit = (mbyt-4)*8
                                                        +
                                                        674  call pkc(sevn,4,mgwa,ibit)
                                                        +
                                                        675  call stndrd(lunit,mgwa,mxmsgld4,mgwb)
                                                        +
                                                        676  ! Compute mbyt for the new standardized message
                                                        +
                                                        677  mbyt = iupbs01(mgwb,'LENM')
                                                        +
                                                        678  ! Copy the mgwb array back into mgwa
                                                        +
                                                        679  do ii = 1, nmwrd(mgwb)
                                                        +
                                                        680  mgwa(ii) = mgwb(ii)
                                                        +
                                                        681  enddo
                                                        +
                                                        682  endif
                                                        +
                                                        683 
                                                        +
                                                        684  ! Append the tank receipt time to Section 1 if requested via module @ref moda_tnkrcp, unless the message contains
                                                        +
                                                        685  ! DX BUFR table information.
                                                        +
                                                        686 
                                                        +
                                                        687  if ( ( ctrt=='Y' ) .and. ( idxmsg(mgwa)/=1 ) ) then
                                                        +
                                                        688  ! Install Section 0 byte count for use by subroutine atrcpt()
                                                        +
                                                        689  ibit = 32
                                                        +
                                                        690  call pkb(mbyt,24,mgwa,ibit)
                                                        +
                                                        691  call atrcpt(mgwa,mxmsgld4,mgwb)
                                                        +
                                                        692  ! Compute mbyt for the revised message
                                                        +
                                                        693  mbyt = iupbs01(mgwb,'LENM')
                                                        +
                                                        694  ! Copy the mgwb array back into mgwa
                                                        +
                                                        695  do ii = 1, nmwrd(mgwb)
                                                        +
                                                        696  mgwa(ii) = mgwb(ii)
                                                        +
                                                        697  enddo
                                                        +
                                                        698  endif
                                                        +
                                                        699 
                                                        +
                                                        700  ! Get the section lengths.
                                                        +
                                                        701 
                                                        +
                                                        702  call getlens(mgwa,4,len0,len1,len2,len3,len4,l5)
                                                        +
                                                        703 
                                                        +
                                                        704  ! Depending on the edition number of the message, we need to ensure that each section within the message has an even
                                                        +
                                                        705  ! number of bytes.
                                                        +
                                                        706 
                                                        +
                                                        707  if(iupbs01(mgwa,'BEN')<4) then
                                                        +
                                                        708  if(mod(len1,2)/=0) call bort ('BUFRLIB: MSGWRT - LENGTH OF SECTION 1 IS NOT A MULTIPLE OF 2')
                                                        +
                                                        709  if(mod(len2,2)/=0) call bort ('BUFRLIB: MSGWRT - LENGTH OF SECTION 2 IS NOT A MULTIPLE OF 2')
                                                        +
                                                        710  if(mod(len3,2)/=0) call bort ('BUFRLIB: MSGWRT - LENGTH OF SECTION 3 IS NOT A MULTIPLE OF 2')
                                                        +
                                                        711  if(mod(len4,2)/=0) then
                                                        +
                                                        712  ! Pad Section 4 with an additional byte that is zeroed out
                                                        +
                                                        713  iad4 = len0+len1+len2+len3
                                                        +
                                                        714  iad5 = iad4+len4
                                                        +
                                                        715  ibit = iad4*8
                                                        +
                                                        716  len4 = len4+1
                                                        +
                                                        717  call pkb(len4,24,mgwa,ibit)
                                                        +
                                                        718  ibit = iad5*8
                                                        +
                                                        719  call pkb(0,8,mgwa,ibit)
                                                        +
                                                        720  mbyt = mbyt+1
                                                        +
                                                        721  endif
                                                        +
                                                        722  endif
                                                        +
                                                        723 
                                                        +
                                                        724  ! Write Section 0 byte count and Section 5
                                                        +
                                                        725 
                                                        +
                                                        726  ibit = 0
                                                        +
                                                        727  call pkc(bufr, 4,mgwa,ibit)
                                                        +
                                                        728  call pkb(mbyt,24,mgwa,ibit)
                                                        +
                                                        729 
                                                        +
                                                        730  kbit = (mbyt-4)*8
                                                        +
                                                        731  call pkc(sevn, 4,mgwa,kbit)
                                                        +
                                                        732 
                                                        +
                                                        733  ! Zero out the extra bytes which will be written. Note that the BUFR message is stored within the integer array mgwa(*),
                                                        +
                                                        734  ! (rather than within a character array), so we need to make sure that the "7777" Is followed by zeroed-out bytes up to
                                                        +
                                                        735  ! the boundary of the last machine word that will be written out.
                                                        +
                                                        736 
                                                        +
                                                        737  call padmsg(mgwa,mxmsgld4,npbyt)
                                                        +
                                                        738 
                                                        +
                                                        739  ! Write the message plus padding to a word boundary if null(lun) = 0
                                                        +
                                                        740 
                                                        +
                                                        741  mwrd = nmwrd(mgwa)
                                                        +
                                                        742  call status(lunit,lun,il,im)
                                                        +
                                                        743  if(null(lun)==0) then
                                                        +
                                                        744  call blocks(mgwa,mwrd)
                                                        +
                                                        745  call cwrbufr_c(lun,mgwa,mwrd)
                                                        +
                                                        746  endif
                                                        +
                                                        747 
                                                        +
                                                        748  if(iprt>=2) then
                                                        +
                                                        749  call errwrt('++++++++++++++BUFR ARCHIVE LIBRARY+++++++++++++++++')
                                                        +
                                                        750  write ( unit=errstr, fmt='(A,I4,A,I7)') 'BUFRLIB: MSGWRT: LUNIT =', lunit, ', BYTES =', mbyt+npbyt
                                                        +
                                                        751  call errwrt(errstr)
                                                        +
                                                        752  call errwrt('++++++++++++++BUFR ARCHIVE LIBRARY+++++++++++++++++')
                                                        +
                                                        753  call errwrt(' ')
                                                        +
                                                        754  endif
                                                        +
                                                        755 
                                                        +
                                                        756  ! Save a memory copy of this message, unless it's a DX message.
                                                        +
                                                        757 
                                                        +
                                                        758  if(idxmsg(mgwa)/=1) then
                                                        +
                                                        759  ! Store a copy of this message within module @ref moda_bufrmg, for possible later retrieval during a future call to
                                                        +
                                                        760  ! subroutine writsa()
                                                        +
                                                        761  msglen(lun) = mwrd
                                                        +
                                                        762  do ii=1,msglen(lun)
                                                        +
                                                        763  msgtxt(ii,lun) = mgwa(ii)
                                                        +
                                                        764  enddo
                                                        +
                                                        765  endif
                                                        +
                                                        766 
                                                        +
                                                        767  return
                                                        +
                                                        768 end subroutine msgwrt
                                                        +
                                                        769 
                                                        +
                                                        777 subroutine msgini(lun)
                                                        +
                                                        778 
                                                        +
                                                        779  use moda_msgcwd
                                                        +
                                                        780  use moda_ufbcpl
                                                        +
                                                        781  use moda_bitbuf
                                                        +
                                                        782  use moda_tables
                                                        +
                                                        783 
                                                        +
                                                        784  implicit none
                                                        +
                                                        785 
                                                        +
                                                        786  integer, intent(in) :: lun
                                                        +
                                                        787  integer ibct, ipd1, ipd2, ipd3, ipd4, nby0, nby1, nby2, nby3, nby4, nby5, nbyt, mtyp, msbt, inod, isub, iret, &
                                                        +
                                                        788  mcen, mear, mmon, mday, mour, mmin, mbit
                                                        +
                                                        789 
                                                        +
                                                        790  character*128 bort_str
                                                        +
                                                        791  character*8 subtag
                                                        +
                                                        792  character*4 bufr, sevn
                                                        +
                                                        793  character tab
                                                        +
                                                        794 
                                                        +
                                                        795  data bufr /'BUFR'/
                                                        +
                                                        796  data sevn /'7777'/
                                                        +
                                                        797 
                                                        +
                                                        798  common /padesc/ ibct,ipd1,ipd2,ipd3,ipd4
                                                        +
                                                        799  common /msgptr/ nby0,nby1,nby2,nby3,nby4,nby5
                                                        +
                                                        800 
                                                        +
                                                        801  ! Get the message tag and type, and break up the date
                                                        +
                                                        802 
                                                        +
                                                        803  subtag = tag(inode(lun))(1:8)
                                                        +
                                                        804  call nemtba(lun,subtag,mtyp,msbt,inod)
                                                        +
                                                        805  if(inode(lun)/=inod) then
                                                        +
                                                        806  write(bort_str,'("BUFRLIB: MSGINI - MISMATCH BETWEEN INODE (=",I7,") & POSITIONAL INDEX, INOD (",I7,") '// &
                                                        +
                                                        807  'OF SUBTAG (",A,") IN DICTIONARY")') inode(lun), inod, subtag
                                                        +
                                                        808  call bort(bort_str)
                                                        +
                                                        809  endif
                                                        +
                                                        810  call nemtab(lun,subtag,isub,tab,iret)
                                                        +
                                                        811  if(iret==0) then
                                                        +
                                                        812  write(bort_str,'("BUFRLIB: MSGINI - TABLE A MESSAGE TYPE MNEMONIC ",A," NOT FOUND IN INTERNAL TABLE D ARRAYS")') subtag
                                                        +
                                                        813  call bort(bort_str)
                                                        +
                                                        814  endif
                                                        +
                                                        815 
                                                        +
                                                        816  ! Date can be YYMMDDHH or YYYYMMDDHH
                                                        +
                                                        817 
                                                        +
                                                        818  mcen = mod(idate(lun)/10**8,100)+1
                                                        +
                                                        819  mear = mod(idate(lun)/10**6,100)
                                                        +
                                                        820  mmon = mod(idate(lun)/10**4,100)
                                                        +
                                                        821  mday = mod(idate(lun)/10**2,100)
                                                        +
                                                        822  mour = mod(idate(lun) ,100)
                                                        +
                                                        823  mmin = 0
                                                        +
                                                        824 
                                                        +
                                                        825  if(mcen==1) call bort ('BUFRLIB: MSGINI - BUFR MESSAGE DATE (IDATE) is 0000000000')
                                                        +
                                                        826 
                                                        +
                                                        827  if(mear==0) mcen = mcen-1
                                                        +
                                                        828  if(mear==0) mear = 100
                                                        +
                                                        829 
                                                        +
                                                        830  ! Initialize the message
                                                        +
                                                        831 
                                                        +
                                                        832  mbit = 0
                                                        +
                                                        833  nby0 = 8
                                                        +
                                                        834  nby1 = 18
                                                        +
                                                        835  nby2 = 0
                                                        +
                                                        836  nby3 = 20
                                                        +
                                                        837  nby4 = 4
                                                        +
                                                        838  nby5 = 4
                                                        +
                                                        839  nbyt = nby0+nby1+nby2+nby3+nby4+nby5
                                                        +
                                                        840 
                                                        +
                                                        841  ! Section 0
                                                        +
                                                        842 
                                                        +
                                                        843  call pkc(bufr , 4 , mbay(1,lun),mbit)
                                                        +
                                                        844  call pkb(nbyt , 24 , mbay(1,lun),mbit)
                                                        +
                                                        845  call pkb( 3 , 8 , mbay(1,lun),mbit)
                                                        +
                                                        846 
                                                        +
                                                        847  ! Section 1
                                                        +
                                                        848 
                                                        +
                                                        849  call pkb(nby1 , 24 , mbay(1,lun),mbit)
                                                        +
                                                        850  call pkb( 0 , 8 , mbay(1,lun),mbit)
                                                        +
                                                        851  call pkb( 3 , 8 , mbay(1,lun),mbit)
                                                        +
                                                        852  call pkb( 7 , 8 , mbay(1,lun),mbit)
                                                        +
                                                        853  call pkb( 0 , 8 , mbay(1,lun),mbit)
                                                        +
                                                        854  call pkb( 0 , 8 , mbay(1,lun),mbit)
                                                        +
                                                        855  call pkb(mtyp , 8 , mbay(1,lun),mbit)
                                                        +
                                                        856  call pkb(msbt , 8 , mbay(1,lun),mbit)
                                                        +
                                                        857  call pkb( 36 , 8 , mbay(1,lun),mbit)
                                                        +
                                                        858  call pkb( 0 , 8 , mbay(1,lun),mbit)
                                                        +
                                                        859  call pkb(mear , 8 , mbay(1,lun),mbit)
                                                        +
                                                        860  call pkb(mmon , 8 , mbay(1,lun),mbit)
                                                        +
                                                        861  call pkb(mday , 8 , mbay(1,lun),mbit)
                                                        +
                                                        862  call pkb(mour , 8 , mbay(1,lun),mbit)
                                                        +
                                                        863  call pkb(mmin , 8 , mbay(1,lun),mbit)
                                                        +
                                                        864  call pkb(mcen , 8 , mbay(1,lun),mbit)
                                                        +
                                                        865 
                                                        +
                                                        866  ! Section 3
                                                        +
                                                        867 
                                                        +
                                                        868  call pkb(nby3 , 24 , mbay(1,lun),mbit)
                                                        +
                                                        869  call pkb( 0 , 8 , mbay(1,lun),mbit)
                                                        +
                                                        870  call pkb( 0 , 16 , mbay(1,lun),mbit)
                                                        +
                                                        871  call pkb(2**7 , 8 , mbay(1,lun),mbit)
                                                        +
                                                        872  call pkb(ibct , 16 , mbay(1,lun),mbit)
                                                        +
                                                        873  call pkb(isub , 16 , mbay(1,lun),mbit)
                                                        +
                                                        874  call pkb(ipd1 , 16 , mbay(1,lun),mbit)
                                                        +
                                                        875  call pkb(ipd2 , 16 , mbay(1,lun),mbit)
                                                        +
                                                        876  call pkb(ipd3 , 16 , mbay(1,lun),mbit)
                                                        +
                                                        877  call pkb(ipd4 , 16 , mbay(1,lun),mbit)
                                                        +
                                                        878  call pkb( 0 , 8 , mbay(1,lun),mbit)
                                                        +
                                                        879 
                                                        +
                                                        880  ! Section 4
                                                        +
                                                        881 
                                                        +
                                                        882  call pkb(nby4 , 24 , mbay(1,lun),mbit)
                                                        +
                                                        883  call pkb( 0 , 8 , mbay(1,lun),mbit)
                                                        +
                                                        884 
                                                        +
                                                        885  ! Section 5
                                                        +
                                                        886 
                                                        +
                                                        887  call pkc(sevn , 4 , mbay(1,lun),mbit)
                                                        +
                                                        888 
                                                        +
                                                        889  ! Double check initial message length
                                                        +
                                                        890 
                                                        +
                                                        891  if(mod(mbit,8)/=0) call bort('BUFRLIB: MSGINI - INITIALIZED MESSAGE DOES NOT END ON A BYTE BOUNDARY')
                                                        +
                                                        892  if(mbit/8/=nbyt) then
                                                        +
                                                        893  write(bort_str,'("BUFRLIB: MSGINI - NUMBER OF BYTES STORED FOR INITIALIZED MESSAGE (",I6,") IS NOT THE SAME AS FIRST '// &
                                                        +
                                                        894  'CALCULATED, NBYT (",I6)') mbit/8, nbyt
                                                        +
                                                        895  call bort(bort_str)
                                                        +
                                                        896  endif
                                                        +
                                                        897 
                                                        +
                                                        898  nmsg(lun) = nmsg(lun)+1
                                                        +
                                                        899  nsub(lun) = 0
                                                        +
                                                        900  mbyt(lun) = nbyt
                                                        +
                                                        901 
                                                        +
                                                        902  luncpy(lun)=0
                                                        +
                                                        903 
                                                        +
                                                        904  return
                                                        +
                                                        905 end subroutine msgini
                                                        +
                                                        906 
                                                        +
                                                        917 logical function msgfull(msiz,itoadd,mxsiz) result(bool)
                                                        +
                                                        918 
                                                        +
                                                        919  use modv_vars, only: maxnc
                                                        +
                                                        920 
                                                        +
                                                        921  use moda_tnkrcp
                                                        +
                                                        922  use moda_msgstd
                                                        +
                                                        923 
                                                        +
                                                        924  implicit none
                                                        +
                                                        925 
                                                        +
                                                        926  integer, intent(in) :: msiz, itoadd, mxsiz
                                                        +
                                                        927  integer iwgbyt
                                                        +
                                                        928 
                                                        +
                                                        929  ! Allow for at least 11 additional bytes of "wiggle room" in the message, because subroutine msgwrt() may do any or all
                                                        +
                                                        930  ! of the following:
                                                        +
                                                        931  ! 3 bytes may be added by a call to subroutine cnved4()
                                                        +
                                                        932  ! + 1 byte (at most) of padding may be added to Section 4
                                                        +
                                                        933  ! + 7 bytes (at most) of padding may be added up to the next word boundary after Section 5
                                                        +
                                                        934  ! ----
                                                        +
                                                        935  ! 11
                                                        +
                                                        936  iwgbyt = 11
                                                        +
                                                        937 
                                                        +
                                                        938  ! But subroutine msgwrt() may also do any of all of the following:
                                                        +
                                                        939 
                                                        +
                                                        940  ! 6 bytes may be added by a call to subroutine atrcpt()
                                                        +
                                                        941  if(ctrt=='Y') iwgbyt = iwgbyt + 6
                                                        +
                                                        942 
                                                        +
                                                        943  ! (maxnc*2) bytes (at most) may be added by a call to subroutine stndrd()
                                                        +
                                                        944  if(csmf=='Y') iwgbyt = iwgbyt + (maxnc*2)
                                                        +
                                                        945 
                                                        +
                                                        946  ! Determine whether the subset will fit.
                                                        +
                                                        947 
                                                        +
                                                        948  if ( ( msiz + itoadd + iwgbyt ) > mxsiz ) then
                                                        +
                                                        949  bool = .true.
                                                        +
                                                        950  else
                                                        +
                                                        951  bool = .false.
                                                        +
                                                        952  endif
                                                        +
                                                        953 
                                                        +
                                                        954  return
                                                        +
                                                        955 end function msgfull
                                                        +
                                                        956 
                                                        +
                                                        974 recursive subroutine maxout(maxo)
                                                        +
                                                        975 
                                                        +
                                                        976  use modv_vars, only: mxmsgl, im8b
                                                        +
                                                        977 
                                                        +
                                                        978  use moda_bitbuf
                                                        +
                                                        979 
                                                        +
                                                        980  implicit none
                                                        +
                                                        981 
                                                        +
                                                        982  integer, intent(in) :: maxo
                                                        +
                                                        983  integer my_maxo, iprt, newsiz, maxdx, idxv, nxstr, ldxa, ldxb, ldxd, ld30
                                                        +
                                                        984 
                                                        +
                                                        985  character*128 errstr
                                                        +
                                                        986  character*56 dxstr
                                                        +
                                                        987 
                                                        +
                                                        988  common /dxtab/ maxdx,idxv,nxstr(10),ldxa(10),ldxb(10),ldxd(10),ld30(10),dxstr(10)
                                                        +
                                                        989  common /quiet/ iprt
                                                        +
                                                        990 
                                                        +
                                                        991  ! Check for I8 integers
                                                        +
                                                        992 
                                                        +
                                                        993  if(im8b) then
                                                        +
                                                        994  im8b=.false.
                                                        +
                                                        995 
                                                        +
                                                        996  call x84(maxo,my_maxo,1)
                                                        +
                                                        997  call maxout(my_maxo)
                                                        +
                                                        998 
                                                        +
                                                        999  im8b=.true.
                                                        +
                                                        1000  return
                                                        +
                                                        1001  endif
                                                        +
                                                        1002 
                                                        +
                                                        1003  if((maxo==0).or.(maxo>mxmsgl)) then
                                                        +
                                                        1004  newsiz = mxmsgl
                                                        +
                                                        1005  else
                                                        +
                                                        1006  newsiz = maxo
                                                        +
                                                        1007  endif
                                                        +
                                                        1008 
                                                        +
                                                        1009  if(iprt>=0) then
                                                        +
                                                        1010  if(maxbyt/=newsiz) then
                                                        +
                                                        1011  call errwrt('++++++++++++++BUFR ARCHIVE LIBRARY+++++++++++++++++')
                                                        +
                                                        1012  write ( unit=errstr, fmt='(A,A,I7,A,I7)' ) 'BUFRLIB: MAXOUT - THE RECORD LENGTH OF ALL BUFR MESSAGES ',&
                                                        +
                                                        1013  'CREATED FROM THIS POINT ON IS BEING CHANGED FROM ', maxbyt, ' TO ', newsiz
                                                        +
                                                        1014  call errwrt(errstr)
                                                        +
                                                        1015  call errwrt('++++++++++++++BUFR ARCHIVE LIBRARY+++++++++++++++++')
                                                        +
                                                        1016  call errwrt(' ')
                                                        +
                                                        1017  endif
                                                        +
                                                        1018  endif
                                                        +
                                                        1019 
                                                        +
                                                        1020  maxbyt = newsiz
                                                        +
                                                        1021  maxdx = newsiz
                                                        +
                                                        1022 
                                                        +
                                                        1023  return
                                                        +
                                                        1024 end subroutine maxout
                                                        +
                                                        1025 
                                                        +
                                                        1034 integer function igetmxby() result(iret)
                                                        +
                                                        1035 
                                                        +
                                                        1036  use moda_bitbuf
                                                        +
                                                        1037 
                                                        +
                                                        1038  implicit none
                                                        +
                                                        1039 
                                                        +
                                                        1040  iret = maxbyt
                                                        +
                                                        1041 
                                                        +
                                                        1042  return
                                                        +
                                                        1043 end function igetmxby
                                                        +
                                                        1044 
                                                        +
                                                        1055 subroutine padmsg(mesg,lmesg,npbyt)
                                                        +
                                                        1056 
                                                        +
                                                        1057  use modv_vars, only: nbytw
                                                        +
                                                        1058 
                                                        +
                                                        1059  implicit none
                                                        +
                                                        1060 
                                                        +
                                                        1061  integer, intent(in) :: lmesg
                                                        +
                                                        1062  integer, intent(inout) :: mesg(*)
                                                        +
                                                        1063  integer, intent(out) :: npbyt
                                                        +
                                                        1064  integer nmw, nmb, ibit, i, nmwrd, iupbs01
                                                        +
                                                        1065 
                                                        +
                                                        1066  ! Make sure that the array is big enough to hold the additional byte padding that will be appended to the
                                                        +
                                                        1067  ! end of the message.
                                                        +
                                                        1068 
                                                        +
                                                        1069  nmw = nmwrd(mesg)
                                                        +
                                                        1070  if(nmw>lmesg) call bort('BUFRLIB: PADMSG - CANNOT ADD PADDING TO MESSAGE ARRAY; TRY A LARGER DIMENSION FOR THIS ARRAY')
                                                        +
                                                        1071 
                                                        +
                                                        1072  ! Pad from the end of the message up to the next 8-byte boundary.
                                                        +
                                                        1073 
                                                        +
                                                        1074  nmb = iupbs01(mesg,'LENM')
                                                        +
                                                        1075  ibit = nmb*8
                                                        +
                                                        1076  npbyt = ( nmw * nbytw ) - nmb
                                                        +
                                                        1077  do i = 1, npbyt
                                                        +
                                                        1078  call pkb(0,8,mesg,ibit)
                                                        +
                                                        1079  enddo
                                                        +
                                                        1080 
                                                        +
                                                        1081  return
                                                        +
                                                        1082 end subroutine padmsg
                                                        +
                                                        1083 
                                                        +
                                                        1094 recursive integer function nmsub(lunit) result(iret)
                                                        +
                                                        1095 
                                                        +
                                                        1096  use modv_vars, only: im8b
                                                        +
                                                        1097 
                                                        +
                                                        1098  use moda_msgcwd
                                                        +
                                                        1099 
                                                        +
                                                        1100  implicit none
                                                        +
                                                        1101 
                                                        +
                                                        1102  integer, intent(in) :: lunit
                                                        +
                                                        1103  integer my_lunit, lun, il, im
                                                        +
                                                        1104 
                                                        +
                                                        1105  ! Check for I8 integers
                                                        +
                                                        1106 
                                                        +
                                                        1107  if(im8b) then
                                                        +
                                                        1108  im8b=.false.
                                                        +
                                                        1109 
                                                        +
                                                        1110  call x84(lunit,my_lunit,1)
                                                        +
                                                        1111  iret=nmsub(my_lunit)
                                                        +
                                                        1112 
                                                        +
                                                        1113  im8b=.true.
                                                        +
                                                        1114  return
                                                        +
                                                        1115  endif
                                                        +
                                                        1116 
                                                        +
                                                        1117  iret = 0
                                                        +
                                                        1118 
                                                        +
                                                        1119  ! Check the file status
                                                        +
                                                        1120 
                                                        +
                                                        1121  call status(lunit,lun,il,im)
                                                        +
                                                        1122  if(il==0) call bort('BUFRLIB: NMSUB - INPUT BUFR FILE IS CLOSED, IT MUST BE OPEN FOR INPUT')
                                                        +
                                                        1123  if(il>0) call bort('BUFRLIB: NMSUB - INPUT BUFR FILE IS OPEN FOR OUTPUT, IT MUST BE OPEN FOR INPUT')
                                                        +
                                                        1124  if(im==0) call bort('BUFRLIB: NMSUB - A MESSAGE MUST BE OPEN IN INPUT BUFR FILE, NONE ARE')
                                                        +
                                                        1125 
                                                        +
                                                        1126  iret = msub(lun)
                                                        +
                                                        1127 
                                                        +
                                                        1128  return
                                                        +
                                                        1129 end function nmsub
                                                        +
                                                        1130 
                                                        +
                                                        1144 integer function nmwrd(mbay) result(iret)
                                                        +
                                                        1145 
                                                        +
                                                        1146  use modv_vars, only: nbytw
                                                        +
                                                        1147 
                                                        +
                                                        1148  implicit none
                                                        +
                                                        1149 
                                                        +
                                                        1150  integer, intent(in) :: mbay(*)
                                                        +
                                                        1151  integer lenm, iupbs01
                                                        +
                                                        1152 
                                                        +
                                                        1153  lenm = iupbs01(mbay,'LENM')
                                                        +
                                                        1154  if(lenm==0) then
                                                        +
                                                        1155  iret = 0
                                                        +
                                                        1156  else
                                                        +
                                                        1157  iret = ((lenm/8)+1)*(8/nbytw)
                                                        +
                                                        1158  endif
                                                        +
                                                        1159 
                                                        +
                                                        1160  return
                                                        +
                                                        1161 end function nmwrd
                                                        +
                                                        1162 
                                                        +
                                                        1176 integer function lmsg(sec0) result(iret)
                                                        +
                                                        1177 
                                                        +
                                                        1178  implicit none
                                                        +
                                                        1179 
                                                        +
                                                        1180  integer msec0(2), nmwrd
                                                        +
                                                        1181 
                                                        +
                                                        1182  character*8, intent(in) :: sec0
                                                        +
                                                        1183  character*8 csec0
                                                        +
                                                        1184 
                                                        +
                                                        1185  equivalence(msec0,csec0)
                                                        +
                                                        1186 
                                                        +
                                                        1187  csec0 = sec0
                                                        +
                                                        1188  iret = nmwrd(msec0)
                                                        +
                                                        1189 
                                                        +
                                                        1190  return
                                                        +
                                                        1191 end function lmsg
                                                        +
                                                        1192 
                                                        +
                                                        1212 recursive subroutine getlens (mbay,ll,len0,len1,len2,len3,len4,len5)
                                                        +
                                                        1213 
                                                        +
                                                        1214  use modv_vars, only: im8b
                                                        +
                                                        1215 
                                                        +
                                                        1216  implicit none
                                                        +
                                                        1217 
                                                        +
                                                        1218  integer, intent(in) :: mbay(*), ll
                                                        +
                                                        1219  integer, intent(out) :: len0, len1, len2, len3, len4, len5
                                                        +
                                                        1220  integer my_ll, iad2, iad3, iad4, iupbs01, iupb
                                                        +
                                                        1221 
                                                        +
                                                        1222  ! Check for I8 integers.
                                                        +
                                                        1223  if(im8b) then
                                                        +
                                                        1224  im8b=.false.
                                                        +
                                                        1225  call x84(ll,my_ll,1)
                                                        +
                                                        1226  call getlens(mbay,my_ll,len0,len1,len2,len3,len4,len5)
                                                        +
                                                        1227  call x48(len0,len0,1)
                                                        +
                                                        1228  call x48(len1,len1,1)
                                                        +
                                                        1229  call x48(len2,len2,1)
                                                        +
                                                        1230  call x48(len3,len3,1)
                                                        +
                                                        1231  call x48(len4,len4,1)
                                                        +
                                                        1232  call x48(len5,len5,1)
                                                        +
                                                        1233  im8b=.true.
                                                        +
                                                        1234  return
                                                        +
                                                        1235  endif
                                                        +
                                                        1236 
                                                        +
                                                        1237  len0 = -1
                                                        +
                                                        1238  len1 = -1
                                                        +
                                                        1239  len2 = -1
                                                        +
                                                        1240  len3 = -1
                                                        +
                                                        1241  len4 = -1
                                                        +
                                                        1242  len5 = -1
                                                        +
                                                        1243 
                                                        +
                                                        1244  if(ll<0) return
                                                        +
                                                        1245  len0 = iupbs01(mbay,'LEN0')
                                                        +
                                                        1246 
                                                        +
                                                        1247  if(ll<1) return
                                                        +
                                                        1248  len1 = iupbs01(mbay,'LEN1')
                                                        +
                                                        1249 
                                                        +
                                                        1250  if(ll<2) return
                                                        +
                                                        1251  iad2 = len0 + len1
                                                        +
                                                        1252  len2 = iupb(mbay,iad2+1,24) * iupbs01(mbay,'ISC2')
                                                        +
                                                        1253 
                                                        +
                                                        1254  if(ll<3) return
                                                        +
                                                        1255  iad3 = iad2 + len2
                                                        +
                                                        1256  len3 = iupb(mbay,iad3+1,24)
                                                        +
                                                        1257 
                                                        +
                                                        1258  if(ll<4) return
                                                        +
                                                        1259  iad4 = iad3 + len3
                                                        +
                                                        1260  len4 = iupb(mbay,iad4+1,24)
                                                        +
                                                        1261 
                                                        +
                                                        1262  if(ll<5) return
                                                        +
                                                        1263  len5 = 4
                                                        +
                                                        1264 
                                                        +
                                                        1265  return
                                                        +
                                                        1266 end subroutine getlens
                                                        +
                                                        1267 
                                                        +
                                                        1292 recursive subroutine cnved4(msgin,lmsgot,msgot)
                                                        +
                                                        1293 
                                                        +
                                                        1294  use modv_vars, only: im8b, nbytw
                                                        +
                                                        1295 
                                                        +
                                                        1296  implicit none
                                                        +
                                                        1297 
                                                        +
                                                        1298  integer, intent(in) :: msgin(*), lmsgot
                                                        +
                                                        1299  integer, intent(out) :: msgot(*)
                                                        +
                                                        1300  integer my_lmsgot, i, nmw, len0, len1, len2, len3, l4, l5, iad2, iad4, lenm, lenmot, len1ot, len3ot, ibit, iupbs01, nmwrd
                                                        +
                                                        1301 
                                                        +
                                                        1302  ! Check for I8 integers.
                                                        +
                                                        1303 
                                                        +
                                                        1304  if(im8b) then
                                                        +
                                                        1305  im8b=.false.
                                                        +
                                                        1306  call x84 ( lmsgot, my_lmsgot, 1 )
                                                        +
                                                        1307  call cnved4 ( msgin, my_lmsgot*2, msgot )
                                                        +
                                                        1308  im8b=.true.
                                                        +
                                                        1309  return
                                                        +
                                                        1310  endif
                                                        +
                                                        1311 
                                                        +
                                                        1312  if(iupbs01(msgin,'BEN')==4) then
                                                        +
                                                        1313 
                                                        +
                                                        1314  ! The input message is already encoded using edition 4, so just copy it from msgin to msgot and then return.
                                                        +
                                                        1315 
                                                        +
                                                        1316  nmw = nmwrd(msgin)
                                                        +
                                                        1317  if(nmw>lmsgot) &
                                                        +
                                                        1318  call bort('BUFRLIB: CNVED4 - OVERFLOW OF OUTPUT (EDITION 4) MESSAGE ARRAY; TRY A LARGER DIMENSION FOR THIS ARRAY')
                                                        +
                                                        1319  do i = 1, nmw
                                                        +
                                                        1320  msgot(i) = msgin(i)
                                                        +
                                                        1321  enddo
                                                        +
                                                        1322  return
                                                        +
                                                        1323  endif
                                                        +
                                                        1324 
                                                        +
                                                        1325  ! Get some section lengths and addresses from the input message.
                                                        +
                                                        1326 
                                                        +
                                                        1327  call getlens(msgin,3,len0,len1,len2,len3,l4,l5)
                                                        +
                                                        1328 
                                                        +
                                                        1329  iad2 = len0 + len1
                                                        +
                                                        1330  iad4 = iad2 + len2 + len3
                                                        +
                                                        1331 
                                                        +
                                                        1332  lenm = iupbs01(msgin,'LENM')
                                                        +
                                                        1333 
                                                        +
                                                        1334  ! Check for overflow of the output array. Note that the new edition 4 message will be a total of 3 bytes longer than the
                                                        +
                                                        1335  ! input message (i.e. 4 more bytes in Section 1, but 1 fewer byte in Section 3).
                                                        +
                                                        1336 
                                                        +
                                                        1337  lenmot = lenm + 3
                                                        +
                                                        1338  if(lenmot>(lmsgot*nbytw)) &
                                                        +
                                                        1339  call bort('BUFRLIB: CNVED4 - OVERFLOW OF OUTPUT (EDITION 4) MESSAGE ARRAY; TRY A LARGER DIMENSION FOR THIS ARRAY')
                                                        +
                                                        1340 
                                                        +
                                                        1341  len1ot = len1 + 4
                                                        +
                                                        1342  len3ot = len3 - 1
                                                        +
                                                        1343 
                                                        +
                                                        1344  ! Write Section 0 of the new message into the output array.
                                                        +
                                                        1345 
                                                        +
                                                        1346  call mvb ( msgin, 1, msgot, 1, 4 )
                                                        +
                                                        1347  ibit = 32
                                                        +
                                                        1348  call pkb ( lenmot, 24, msgot, ibit )
                                                        +
                                                        1349  call pkb ( 4, 8, msgot, ibit )
                                                        +
                                                        1350 
                                                        +
                                                        1351  ! Write Section 1 of the new message into the output array.
                                                        +
                                                        1352 
                                                        +
                                                        1353  call pkb ( len1ot, 24, msgot, ibit )
                                                        +
                                                        1354  call pkb ( iupbs01(msgin,'BMT'), 8, msgot, ibit )
                                                        +
                                                        1355  call pkb ( iupbs01(msgin,'OGCE'), 16, msgot, ibit )
                                                        +
                                                        1356  call pkb ( iupbs01(msgin,'GSES'), 16, msgot, ibit )
                                                        +
                                                        1357  call pkb ( iupbs01(msgin,'USN'), 8, msgot, ibit )
                                                        +
                                                        1358  call pkb ( iupbs01(msgin,'ISC2')*128, 8, msgot, ibit )
                                                        +
                                                        1359  call pkb ( iupbs01(msgin,'MTYP'), 8, msgot, ibit )
                                                        +
                                                        1360  ! Set a default of 255 for the international subcategory.
                                                        +
                                                        1361  call pkb ( 255, 8, msgot, ibit )
                                                        +
                                                        1362  call pkb ( iupbs01(msgin,'MSBT'), 8, msgot, ibit )
                                                        +
                                                        1363  call pkb ( iupbs01(msgin,'MTV'), 8, msgot, ibit )
                                                        +
                                                        1364  call pkb ( iupbs01(msgin,'MTVL'), 8, msgot, ibit )
                                                        +
                                                        1365  call pkb ( iupbs01(msgin,'YEAR'), 16, msgot, ibit )
                                                        +
                                                        1366  call pkb ( iupbs01(msgin,'MNTH'), 8, msgot, ibit )
                                                        +
                                                        1367  call pkb ( iupbs01(msgin,'DAYS'), 8, msgot, ibit )
                                                        +
                                                        1368  call pkb ( iupbs01(msgin,'HOUR'), 8, msgot, ibit )
                                                        +
                                                        1369  call pkb ( iupbs01(msgin,'MINU'), 8, msgot, ibit )
                                                        +
                                                        1370  ! Set a default of 0 for the second.
                                                        +
                                                        1371  call pkb ( 0, 8, msgot, ibit )
                                                        +
                                                        1372 
                                                        +
                                                        1373  ! Copy Section 2 (if it exists) through the next-to-last byte of Section 3 from the input array to the output array.
                                                        +
                                                        1374 
                                                        +
                                                        1375  call mvb ( msgin, iad2+1, msgot, (ibit/8)+1, len2+len3-1 )
                                                        +
                                                        1376 
                                                        +
                                                        1377  ! Store the length of the new Section 3.
                                                        +
                                                        1378 
                                                        +
                                                        1379  ibit = ( len0 + len1ot + len2 ) * 8
                                                        +
                                                        1380  call pkb ( len3ot, 24, msgot, ibit )
                                                        +
                                                        1381 
                                                        +
                                                        1382  ! Copy Section 4 and Section 5 from the input array to the output array.
                                                        +
                                                        1383 
                                                        +
                                                        1384  ibit = ibit + ( len3ot * 8 ) - 24
                                                        +
                                                        1385  call mvb ( msgin, iad4+1, msgot, (ibit/8)+1, lenm-iad4 )
                                                        +
                                                        1386 
                                                        +
                                                        1387  return
                                                        +
                                                        1388 end subroutine cnved4
                                                        +
                                                        1389 
                                                        +
                                                        1401 recursive integer function ifbget(lunit) result(iret)
                                                        +
                                                        1402 
                                                        +
                                                        1403  use modv_vars, only: im8b
                                                        +
                                                        1404 
                                                        +
                                                        1405  use moda_msgcwd
                                                        +
                                                        1406 
                                                        +
                                                        1407  implicit none
                                                        +
                                                        1408 
                                                        +
                                                        1409  integer, intent(in) :: lunit
                                                        +
                                                        1410  integer my_lunit, lun, il, im
                                                        +
                                                        1411 
                                                        +
                                                        1412  ! Check for I8 integers
                                                        +
                                                        1413 
                                                        +
                                                        1414  if(im8b) then
                                                        +
                                                        1415  im8b=.false.
                                                        +
                                                        1416  call x84(lunit,my_lunit,1)
                                                        +
                                                        1417  iret=ifbget(my_lunit)
                                                        +
                                                        1418  im8b=.true.
                                                        +
                                                        1419  return
                                                        +
                                                        1420  endif
                                                        +
                                                        1421 
                                                        +
                                                        1422  iret = -1
                                                        +
                                                        1423 
                                                        +
                                                        1424  ! Make sure a file/message is open for input
                                                        +
                                                        1425 
                                                        +
                                                        1426  call status(lunit,lun,il,im)
                                                        +
                                                        1427  if(il==0) call bort('BUFRLIB: IFBGET - INPUT BUFR FILE IS CLOSED, IT MUST BE OPEN FOR INPUT')
                                                        +
                                                        1428  if(il>0) call bort('BUFRLIB: IFBGET - INPUT BUFR FILE IS OPEN FOR OUTPUT, IT MUST BE OPEN FOR INPUT')
                                                        +
                                                        1429  if(im==0) call bort('BUFRLIB: IFBGET - A MESSAGE MUST BE OPEN IN INPUT BUFR FILE, NONE ARE')
                                                        +
                                                        1430 
                                                        +
                                                        1431  ! Check if there's another subset in the message
                                                        +
                                                        1432 
                                                        +
                                                        1433  if(nsub(lun)<msub(lun)) iret = 0
                                                        +
                                                        1434 
                                                        +
                                                        1435  return
                                                        +
                                                        1436 end function ifbget
                                                        +
                                                        subroutine blocks(mbay, mwrd)
                                                        Encapsulate a BUFR message with IEEE Fortran control words as specified via the most recent call to s...
                                                        Definition: blocks.F90:37
                                                        +
                                                        subroutine bort(str)
                                                        Log an error message, then abort the application program.
                                                        Definition: borts.F90:15
                                                        +
                                                        recursive integer function iupb(mbay, nbyt, nbit)
                                                        Decode an integer value from within a specified number of bits of an integer array,...
                                                        Definition: cidecode.F90:226
                                                        +
                                                        subroutine pkc(chr, nchr, ibay, ibit)
                                                        Encode a character string within a specified number of bytes of an integer array, starting at the bit...
                                                        Definition: ciencode.F90:25
                                                        +
                                                        subroutine pkb(nval, nbits, ibay, ibit)
                                                        Encode an integer value within a specified number of bits of an integer array, starting at the bit im...
                                                        Definition: ciencode.F90:140
                                                        +
                                                        subroutine wrcmps(lunix)
                                                        Write a compressed BUFR data subset.
                                                        Definition: compress.F90:387
                                                        +
                                                        subroutine mvb(ib1, nb1, ib2, nb2, nbm)
                                                        Copy a specified number of bytes from one packed binary array to another.
                                                        Definition: copydata.F90:731
                                                        +
                                                        subroutine nemtba(lun, nemo, mtyp, msbt, inod)
                                                        Get information about a Table A descriptor from the internal DX BUFR tables.
                                                        Definition: dxtable.F90:1247
                                                        +
                                                        subroutine stbfdx(lun, mesg)
                                                        Copy a DX BUFR tables message into the internal memory arrays in module moda_tababd.
                                                        Definition: dxtable.F90:990
                                                        +
                                                        subroutine dxinit(lun, ioi)
                                                        Clear out the internal arrays (in module moda_tababd) holding the DX BUFR table, then optionally init...
                                                        Definition: dxtable.F90:606
                                                        +
                                                        integer function idxmsg(mesg)
                                                        Check whether a BUFR message contains DX BUFR tables information that was generated by the NCEPLIBS-b...
                                                        Definition: dxtable.F90:1123
                                                        +
                                                        subroutine rdbfdx(lunit, lun)
                                                        Beginning at the current file pointer location within lunit, read a complete DX BUFR table into inter...
                                                        Definition: dxtable.F90:121
                                                        +
                                                        subroutine errwrt(str)
                                                        Specify a custom location for the logging of error and diagnostic messages generated by the NCEPLIBS-...
                                                        Definition: errwrt.F90:32
                                                        +
                                                        subroutine nemtab(lun, nemo, idn, tab, iret)
                                                        Get information about a descriptor, based on a mnemonic.
                                                        Definition: fxy.F90:432
                                                        + + + + +
                                                        Wrap C NCEPLIBS-bufr functions so they can be called from within the Fortran part of the library.
                                                        Definition: bufrlib.F90:11
                                                        +
                                                        Declare arrays and variables used to store BUFR messages internally for multiple file IDs.
                                                        +
                                                        integer, dimension(:,:), allocatable mbay
                                                        Current BUFR message for each file ID.
                                                        +
                                                        integer, dimension(:), allocatable mbyt
                                                        Length (in bytes) of current BUFR message for each file ID.
                                                        +
                                                        integer maxbyt
                                                        Maximum length of an output BUFR message.
                                                        +
                                                        Declare arrays used to store, for each output file ID, a copy of the BUFR message that was most recen...
                                                        +
                                                        integer, dimension(:), allocatable msglen
                                                        Length (in integers) of BUFR message most recently written to each output file ID.
                                                        +
                                                        integer, dimension(:,:), allocatable msgtxt
                                                        BUFR message most recently written to each output file ID.
                                                        +
                                                        Declare an array used by subroutine readerme() to read in a new DX dictionary table as a consecutive ...
                                                        +
                                                        integer, dimension(:), allocatable idrdm
                                                        DX BUFR tables message count for each file ID.
                                                        +
                                                        Declare an array used by various subroutines and functions to hold a temporary working copy of a BUFR...
                                                        +
                                                        integer, dimension(:), allocatable mgwa
                                                        Temporary working copy of BUFR message.
                                                        +
                                                        Declare an array used by various subroutines and functions to hold a temporary working copy of a BUFR...
                                                        +
                                                        integer, dimension(:), allocatable mgwb
                                                        Temporary working copy of BUFR message.
                                                        +
                                                        Declare arrays used to store information about the current BUFR message that is in the process of bei...
                                                        +
                                                        integer, dimension(:), allocatable inode
                                                        Table A mnemonic for type of BUFR message.
                                                        +
                                                        integer, dimension(:), allocatable idate
                                                        Section 1 date-time of message.
                                                        +
                                                        integer, dimension(:), allocatable nmsg
                                                        Current message pointer within logical unit.
                                                        +
                                                        integer, dimension(:), allocatable msub
                                                        Total number of data subsets in message.
                                                        +
                                                        integer, dimension(:), allocatable nsub
                                                        Current subset pointer within message.
                                                        +
                                                        Declare an array used to keep track of which logical units should not have any empty (zero data subse...
                                                        +
                                                        integer, dimension(:), allocatable msglim
                                                        Tracking index for each file ID.
                                                        +
                                                        Declare a variable used to indicate whether output BUFR messages should be standardized.
                                                        +
                                                        character csmf
                                                        Flag indicating whether BUFR output messages are to be standardized; this variable is initialized to ...
                                                        +
                                                        Declare an array used to store a switch for each file ID, indicating whether any BUFR messages should...
                                                        +
                                                        integer, dimension(:), allocatable null
                                                        Output switch for each file ID:
                                                        +
                                                        Declare arrays and variables used to store custom values for certain mnemonics within Sections 0 and ...
                                                        +
                                                        integer, dimension(:), allocatable ivmnem
                                                        Custom values for use within Sections 0 and 1 of all future output BUFR messages written to all Fortr...
                                                        +
                                                        integer ns01v
                                                        Number of custom values stored.
                                                        +
                                                        character *8, dimension(:), allocatable cmnem
                                                        Section 0 and 1 mnemonics corresponding to ivmnem.
                                                        +
                                                        Declare an array used to store a switch for each file ID, indicating whether BUFR messages read from ...
                                                        +
                                                        integer, dimension(:), allocatable isc3
                                                        Section 3 switch for each file ID:
                                                        +
                                                        Declare arrays and variables used to store the internal jump/link table.
                                                        +
                                                        character *10, dimension(:), allocatable tag
                                                        Mnemonics in the jump/link table.
                                                        +
                                                        Declare variables used to store tank receipt time information within Section 1 of BUFR messages.
                                                        +
                                                        character *1 ctrt
                                                        Flag indicating whether tank receipt times are to be included within output BUFR messages; this varia...
                                                        +
                                                        Declare an array used to store, for each file ID, the logical unit number corresponding to a separate...
                                                        +
                                                        integer, dimension(:), allocatable luncpy
                                                        Logical unit numbers used to copy long character strings between BUFR data subsets.
                                                        +
                                                        recursive subroutine status(lunit, lun, il, im)
                                                        Check whether a specified Fortran logical unit number is currently connected to the NCEPLIBS-bufr sof...
                                                        +
                                                        subroutine wtstat(lunit, lun, il, im)
                                                        Update file status in library internals.
                                                        +
                                                        subroutine padmsg(mesg, lmesg, npbyt)
                                                        Pad a BUFR message with zeroed-out bytes from the end of the message up to the next 8-byte boundary.
                                                        +
                                                        recursive subroutine maxout(maxo)
                                                        Specify the maximum length of a BUFR message that can be written to any output file by the NCEPLIBS-b...
                                                        +
                                                        integer function lmsg(sec0)
                                                        Given a character string containing Section 0 from a BUFR message, determine the array size (in integ...
                                                        +
                                                        logical function msgfull(msiz, itoadd, mxsiz)
                                                        Check whether the current data subset in the internal arrays will fit within the current BUFR message...
                                                        +
                                                        recursive subroutine openmg(lunit, subset, jdate)
                                                        Open and initialize a new BUFR message within internal arrays, for eventual output to logical unit lu...
                                                        +
                                                        recursive subroutine openmb(lunit, subset, jdate)
                                                        Open and initialize a new BUFR message within internal arrays, for eventual output to logical unit lu...
                                                        +
                                                        recursive subroutine closmg(lunin)
                                                        Close the BUFR message that is currently open for writing within internal arrays associated with logi...
                                                        +
                                                        recursive integer function nmsub(lunit)
                                                        Get the total number of data subsets available within the BUFR message that was most recently opened ...
                                                        +
                                                        integer function nmwrd(mbay)
                                                        Given an integer array containing Section 0 from a BUFR message, determine the array size (in integer...
                                                        +
                                                        integer function igetmxby()
                                                        Get the maximum length of a BUFR message that can be written to an output file by the NCEPLIBS-bufr s...
                                                        +
                                                        recursive subroutine readerme(mesg, lunit, subset, jdate, iret)
                                                        Read a BUFR message from a memory array.
                                                        +
                                                        recursive subroutine readmg(lunxx, subset, jdate, iret)
                                                        Read the next BUFR message from logical unit abs(lunxx) into internal arrays.
                                                        Definition: readwritemg.F90:44
                                                        +
                                                        recursive subroutine getlens(mbay, ll, len0, len1, len2, len3, len4, len5)
                                                        Read the section lengths of a BUFR message, up to a specified point in the message.
                                                        +
                                                        recursive integer function ifbget(lunit)
                                                        Check whether there are any more data subsets available to be read from a BUFR message.
                                                        +
                                                        subroutine rdmsgw(lunit, mesg, iret)
                                                        Read the next BUFR message from logical unit lunit as an array of integer words.
                                                        +
                                                        recursive subroutine cnved4(msgin, lmsgot, msgot)
                                                        Convert a BUFR edition 3 message to BUFR edition 4.
                                                        +
                                                        recursive integer function ireadmg(lunit, subset, idate)
                                                        Call subroutine readmg() and pass back its return code as the function value.
                                                        +
                                                        subroutine msgini(lun)
                                                        Initialize, within the internal arrays, a new uncompressed BUFR message for output.
                                                        +
                                                        subroutine msgwrt(lunit, mesg, mgbyt)
                                                        Perform final checks and updates on a BUFR message before writing it to a specified Fortran logical u...
                                                        +
                                                        subroutine usrtpl(lun, invn, nbmp)
                                                        Expand a subset template within internal arrays.
                                                        +
                                                        subroutine cktaba(lun, subset, jdate, iret)
                                                        Get the Table A mnemonic from Sections 1 and 3 of a BUFR message.
                                                        Definition: s013vals.F90:1272
                                                        +
                                                        recursive integer function iupbs01(mbay, s01mnem)
                                                        Read a specified value from within Section 0 or Section 1 of a BUFR message.
                                                        Definition: s013vals.F90:247
                                                        +
                                                        recursive subroutine pkbs1(ival, mbay, s1mnem)
                                                        Write a specified value into a specified location within Section 1 of a BUFR message,...
                                                        Definition: s013vals.F90:521
                                                        +
                                                        recursive integer function iupbs3(mbay, s3mnem)
                                                        Read a specified value from within Section 3 of a BUFR message.
                                                        Definition: s013vals.F90:349
                                                        +
                                                        subroutine reads3(lun)
                                                        Read the Section 3 descriptors from the BUFR message in mbay(1,lun), then use the BUFR master tables ...
                                                        Definition: s013vals.F90:686
                                                        +
                                                        recursive integer function i4dy(idate)
                                                        Convert a date-time with a 2-digit year (YYMMDDHH) to a date-time with a 4-digit year (YYYYMMDDHH) us...
                                                        Definition: s013vals.F90:1070
                                                        +
                                                        recursive subroutine stndrd(lunit, msgin, lmsgot, msgot)
                                                        Standardize a BUFR message.
                                                        Definition: standard.F90:73
                                                        +
                                                        recursive subroutine atrcpt(msgin, lmsgot, msgot)
                                                        Read an input message and output an equivalent BUFR message with a tank receipt time added to Section...
                                                        Definition: tankrcpt.F90:24
                                                        +
                                                        subroutine x48(iin4, iout8, nval)
                                                        Encode one or more 4-byte integer values as 8-byte integer values.
                                                        Definition: x4884.F90:18
                                                        +
                                                        subroutine x84(iin8, iout4, nval)
                                                        Encode one or more 8-byte integer values as 4-byte integer values.
                                                        Definition: x4884.F90:65
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/readwritesb_8F90.html b/previous_versions/v12.1.0/readwritesb_8F90.html new file mode 100644 index 000000000..abb4ea1af --- /dev/null +++ b/previous_versions/v12.1.0/readwritesb_8F90.html @@ -0,0 +1,1065 @@ + + + + + + + +NCEPLIBS-bufr: readwritesb.F90 File Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        readwritesb.F90 File Reference
                                                        +
                                                        +
                                                        + +

                                                        Read or write a BUFR data subset. +More...

                                                        + +

                                                        Go to the source code of this file.

                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                                                        +Functions/Subroutines

                                                        recursive subroutine invmrg (lubfi, lubfj)
                                                         Merge parts of data subsets which have duplicate space and time coordinates but different or unique observational data. More...
                                                         
                                                        recursive integer function ireadns (lunit, subset, idate)
                                                         Call subroutine readns() and pass back its return code as the function value. More...
                                                         
                                                        recursive integer function ireadsb (lunit)
                                                         Call subroutine readsb() and pass back its return code as the function value. More...
                                                         
                                                        recursive integer function lcmgdf (lunit, subset)
                                                         Check whether the subset definition for a given message type contains any long character strings (greater than 8 bytes). More...
                                                         
                                                        subroutine msgupd (lunit, lun)
                                                         Write an uncompressed BUFR data subset. More...
                                                         
                                                        integer function nwords (n, lun)
                                                         Compute the length of a specified delayed replication sequence within a data subset. More...
                                                         
                                                        subroutine pad (ibay, ibit, ibyt, ipadb)
                                                         Pad a BUFR data subset with zeroed-out bits up to the next byte boundary. More...
                                                         
                                                        subroutine rcstpl (lun, iret)
                                                         Initialize a subset template within internal arrays. More...
                                                         
                                                        recursive subroutine rdmgsb (lunit, imsg, isub)
                                                         Read a specified data subset from a BUFR file. More...
                                                         
                                                        subroutine rdtree (lun, iret)
                                                         Read the next uncompressed BUFR data subset into internal arrays. More...
                                                         
                                                        recursive subroutine readns (lunit, subset, jdate, iret)
                                                         Read the next data subset from a BUFR file. More...
                                                         
                                                        recursive subroutine readsb (lunit, iret)
                                                         Read the next data subset from a BUFR message. More...
                                                         
                                                        recursive subroutine ufbpos (lunit, irec, isub, subset, jdate)
                                                         Jump forwards or backwards to a specified data subset within a BUFR file. More...
                                                         
                                                        subroutine usrtpl (lun, invn, nbmp)
                                                         Expand a subset template within internal arrays. More...
                                                         
                                                        recursive subroutine writsa (lunxx, lmsgt, msgt, msgl)
                                                         Write a complete data subset into a BUFR message, and return each completed message within a memory array. More...
                                                         
                                                        recursive subroutine writsb (lunit)
                                                         Write a complete data subset into a BUFR message, for eventual output to logical unit lunit. More...
                                                         
                                                        subroutine wrtree (lun)
                                                         Pack a BUFR data subset. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Read or write a BUFR data subset.

                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition in file readwritesb.F90.

                                                        +

                                                        Function/Subroutine Documentation

                                                        + +

                                                        ◆ invmrg()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        recursive subroutine invmrg (integer, intent(in) lubfi,
                                                        integer, intent(in) lubfj 
                                                        )
                                                        +
                                                        + +

                                                        Merge parts of data subsets which have duplicate space and time coordinates but different or unique observational data.

                                                        +
                                                        Parameters
                                                        + + + +
                                                        lubfi- Fortran logical unit number for input BUFR file
                                                        lubfj- Fortran logical unit number for output BUFR file
                                                        +
                                                        +
                                                        +

                                                        Logical unit lubfi should have already been opened for input operations via a previous call to subroutine openbf().

                                                        +

                                                        Logical unit lubfj should have already been opened for output operations via a previous call to subroutine openbf().

                                                        +
                                                        Remarks
                                                          +
                                                        • This subroutine cannot merge parts of data subsets which are contained within replication sequences.
                                                        • +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1996-10-09
                                                        + +

                                                        Definition at line 1497 of file readwritesb.F90.

                                                        + +

                                                        References bort(), ibfms(), moda_usrint::inv, moda_tables::itp, moda_usrint::nval, nwords(), status(), moda_tables::typ, moda_usrint::val, and x84().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ ireadns()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        recursive integer function ireadns (integer, intent(in) lunit,
                                                        character*8, intent(out) subset,
                                                        integer, intent(out) idate 
                                                        )
                                                        +
                                                        + +

                                                        Call subroutine readns() and pass back its return code as the function value.

                                                        +

                                                        The use of this function allows the return code from readns() to be used as the target variable within an iterative program loop.

                                                        +
                                                        Parameters
                                                        + + + + +
                                                        lunit- Fortran logical unit number for BUFR file
                                                        subset- Table A mnemonic for type of data subset that was read (see DX BUFR Tables for further information about Table A mnemonics)
                                                        idate- Date-time stored within Section 1 of BUFR message containing data subset that was read, in format of either YYMMDDHH or YYYYMMDDHH, depending on the most recent call to subroutine datelen()
                                                        +
                                                        +
                                                        +
                                                        Returns
                                                        ireadns - return code:
                                                          +
                                                        • 0 = new BUFR data subset was successfully read into internal arrays
                                                        • +
                                                        • -1 = there are no more BUFR data subsets in the file connected to logical unit lunit
                                                        • +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 238 of file readwritesb.F90.

                                                        + +

                                                        References readns(), x48(), and x84().

                                                        + +

                                                        Referenced by bufr_c2f_interface::ireadns_c().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ ireadsb()

                                                        + +
                                                        +
                                                        + + + + + + + + +
                                                        recursive integer function ireadsb (integer, intent(in) lunit)
                                                        +
                                                        + +

                                                        Call subroutine readsb() and pass back its return code as the function value.

                                                        +

                                                        The use of this function allows the return code from readsb() to be used as the target variable within an iterative program loop.

                                                        +
                                                        Parameters
                                                        + + +
                                                        lunit- Fortran logical unit number for BUFR file
                                                        +
                                                        +
                                                        +
                                                        Returns
                                                        ireadsb - return code:
                                                          +
                                                        • 0 = new BUFR data subset was successfully read into internal arrays
                                                        • +
                                                        • -1 = there are no more BUFR data subsets in the BUFR message
                                                        • +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 116 of file readwritesb.F90.

                                                        + +

                                                        References readsb(), and x84().

                                                        + +

                                                        Referenced by bufr_c2f_interface::ireadsb_c(), readbp(), readmp(), and ufbtab().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ lcmgdf()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        recursive integer function lcmgdf (integer, intent(in) lunit,
                                                        character*8, intent(in) subset 
                                                        )
                                                        +
                                                        + +

                                                        Check whether the subset definition for a given message type contains any long character strings (greater than 8 bytes).

                                                        +
                                                        Parameters
                                                        + + + +
                                                        lunit- Fortran logical unit number for BUFR file
                                                        subset- Table A mnemonic of message type to be checked
                                                        +
                                                        +
                                                        +
                                                        Returns
                                                        lcmgdf - Return code:
                                                          +
                                                        • 0 = subset does not contain any long character strings
                                                        • +
                                                        • 1 = subset contains at least one long character string
                                                        • +
                                                        +
                                                        +
                                                        Remarks
                                                          +
                                                        • lunit may be open for either input or output operations via a previous call to subroutine openbf(). However, in either case, subset must already be defined within the BUFR tables that are associated with lunit, typically as DX BUFR tables information supplied via argument lundx when openbf() was called, or, if openbf() was called with IO = 'SEC3', then as master BUFR table information during a previous call to one of the message-reading subroutines.
                                                        • +
                                                        • Note that this function does not return mnemonic(s) associated with any long character string(s) found within subset; rather, it only checks whether at least one such mnemonic exists. If any are found, the application program can process them via a separate call to subroutine readlc() (when reading BUFR data subsets) or subroutine writlc() (when writing BUFR data subsets).
                                                        • +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2009-07-09
                                                        + +

                                                        Definition at line 803 of file readwritesb.F90.

                                                        + +

                                                        References bort(), moda_tables::ibt, moda_tables::isc, nemtba(), status(), moda_tables::typ, and x84().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ msgupd()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        subroutine msgupd (integer, intent(in) lunit,
                                                        integer, intent(in) lun 
                                                        )
                                                        +
                                                        + +

                                                        Write an uncompressed BUFR data subset.

                                                        +

                                                        Pack up the current subset within memory (array ibay in module moda_bitbuf), then try to add it to the uncompressed BUFR message that is currently open within memory for LUNIT (array mbay in module moda_bitbuf). If the subset will not fit into the currently open message, or if the subset byte count exceeds 65530 (sufficiently close to the 16-bit byte counter upper limit of 65535), then that message is flushed to lunit and a new one is created in order to hold the current subset. Any subset with byte count > 65530 will be written into its own one-subset message. if the current subset is larger than the maximum message length, then the subset is discarded and a diagnostic is printed.

                                                        +
                                                        Parameters
                                                        + + + +
                                                        lunit- Fortran logical unit number for BUFR file.
                                                        lun- File ID associated with lunit
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 612 of file readwritesb.F90.

                                                        + +

                                                        References moda_h4wlc::chh4wlc, errwrt(), moda_bitbuf::ibay, moda_bitbuf::ibit, moda_h4wlc::luh4wlc, moda_bitbuf::maxbyt, moda_bitbuf::mbay, moda_bitbuf::mbyt, msgini(), msgwrt(), mvb(), moda_h4wlc::nh4wlc, moda_msgcwd::nsub, pad(), pkb(), moda_h4wlc::sth4wlc, usrtpl(), and writlc().

                                                        + +

                                                        Referenced by writsa(), and writsb().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ nwords()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        integer function nwords (integer, intent(in) n,
                                                        integer, intent(in) lun 
                                                        )
                                                        +
                                                        + +

                                                        Compute the length of a specified delayed replication sequence within a data subset.

                                                        +
                                                        Parameters
                                                        + + + +
                                                        n- Starting index of delayed replication sequence
                                                        lun- File ID
                                                        +
                                                        +
                                                        +
                                                        Returns
                                                        Complete length of delayed replication sequence within data subset
                                                        +
                                                        Author
                                                        Woollen
                                                        +
                                                        Date
                                                        1996-10-09
                                                        + +

                                                        Definition at line 1605 of file readwritesb.F90.

                                                        + +

                                                        References moda_usrint::val.

                                                        + +

                                                        Referenced by invmrg().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ pad()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        subroutine pad (integer, dimension(*), intent(inout) ibay,
                                                        integer, intent(inout) ibit,
                                                        integer, intent(out) ibyt,
                                                        integer, intent(in) ipadb 
                                                        )
                                                        +
                                                        + +

                                                        Pad a BUFR data subset with zeroed-out bits up to the next byte boundary.

                                                        +

                                                        Pack the value for the number of bits being "padded", starting with bit ibit+1 and using eight bits in the packed array ibay (which represents a subset packed into ibit bits). Then, starting with ibit+9, pack zeroes (i.e., "pads") to the specified bit boundary (ipadb).

                                                        +

                                                        Note that it's the number of bits padded here that was packed in bits ibit+1 through ibit+8 - this is actually a delayed replication factor! ipadb must be a multiple of eight and represents the bit boundary on which the packed subset in ibay should end after padding. For example, if ipadb is "8", then the number of bits in ibay actually consumed by packed data (including the padding) will be a multiple of eight. If ipadb is "16", it will be a multiple of sixteen. in either (or any) case, this ensures that the packed subset will always end on a full byte boundary.

                                                        +
                                                        Parameters
                                                        + + + + + +
                                                        ibay- BUFR data subset:
                                                          +
                                                        • on input, contains BUFR data subset to be padded
                                                        • +
                                                        • on output, contains BUFR data subset padded with zeroed-out bits up to ipadb
                                                        • +
                                                        +
                                                        ibit- Bit pointer:
                                                          +
                                                        • on input, contains bit pointer within ibay after which to begin padding
                                                        • +
                                                        • on output, contains bit pointer within ibay to last bit that was padded
                                                        • +
                                                        +
                                                        ibyt- Number of bytes within ibay containing packed data, including padding
                                                        ipadb- Bit boundary to pad to (must be a multiple of 8)
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 749 of file readwritesb.F90.

                                                        + +

                                                        References bort(), and pkb().

                                                        + +

                                                        Referenced by msgupd().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ rcstpl()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        subroutine rcstpl (integer, intent(in) lun,
                                                        integer, intent(out) iret 
                                                        )
                                                        +
                                                        + +

                                                        Initialize a subset template within internal arrays.

                                                        +

                                                        Initialize space in internal subset arrays in modules moda_usrint and moda_usrbit, according to the subset definition from subroutine makestab(). This is in preparation for the actual unpacking of the subset in subroutine rdtree().

                                                        +
                                                        Parameters
                                                        + + + +
                                                        lun- File ID
                                                        iret- Return code:
                                                          +
                                                        • 0 = Normal return
                                                        • +
                                                        • -1 = An error occurred, possibly due to a corrupt subset in the input message
                                                        • +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 1155 of file readwritesb.F90.

                                                        + +

                                                        References bort(), errwrt(), moda_tables::ibt, moda_msgcwd::inode, moda_usrint::inv, moda_tables::iseq, moda_tables::itp, moda_usrtmp::iutmp, moda_tables::jseq, moda_bitbuf::mbay, moda_usrbit::mbit, moda_usrbit::nbit, moda_usrint::nrfelm, moda_usrint::nval, strbtm(), moda_tables::tag, upbb(), moda_usrint::val, moda_tables::vali, and moda_usrtmp::vutmp.

                                                        + +

                                                        Referenced by rdtree().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ rdmgsb()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        recursive subroutine rdmgsb (integer, intent(in) lunit,
                                                        integer, intent(in) imsg,
                                                        integer, intent(in) isub 
                                                        )
                                                        +
                                                        + +

                                                        Read a specified data subset from a BUFR file.

                                                        +

                                                        This subroutine combines the functionality of openbf(), readmg(), and readsb().

                                                        +

                                                        Logical unit lunit should not have already been opened via a previous call to subroutine openbf(). This subroutine will open the file for input.

                                                        +

                                                        Whenever this subroutine returns successfully, this indicates that a new data subset was successfully read into internal arrays within the NCEPLIBS-bufr software, and that subsequent calls can immediately be made to any of the various values-reading subroutines.

                                                        +

                                                        Note that the value specified for imsg should not include any DX BUFR table messages which may be present in the file. In other words, a value of 12 for imsg means to read the 12th message which contains actual report data.

                                                        +
                                                        Parameters
                                                        + + + + +
                                                        lunit- Fortran logical unit number for BUFR file
                                                        imsg- Number of BUFR message to be read from the BUFR file, counting from the beginning of the file, but not counting any DX BUFR table messages which may be present in the file
                                                        isub- Number of data subset to be read from the (imsg)th BUFR message, counting from the beginning of the message
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        2003-11-04
                                                        + +

                                                        Definition at line 535 of file readwritesb.F90.

                                                        + +

                                                        References bort(), openbf(), readmg(), readsb(), status(), and x84().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ rdtree()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        subroutine rdtree (integer, intent(in) lun,
                                                        integer, intent(out) iret 
                                                        )
                                                        +
                                                        + +

                                                        Read the next uncompressed BUFR data subset into internal arrays.

                                                        +

                                                        Unpack the next uncompressed subset from the internal array mbay in module moda_bitbuf, and store the resulting values within the internal array val(*,lun) in module moda_usrint.

                                                        +
                                                        Parameters
                                                        + + + +
                                                        lun- File ID
                                                        iret- Return code:
                                                          +
                                                        • 0 normal return
                                                        • +
                                                        • -1 An error occurred, possibly due to a corrupt subset in the input message
                                                        • +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 974 of file readwritesb.F90.

                                                        + +

                                                        References moda_bitbuf::ibit, moda_tables::ibt, moda_usrint::inv, moda_tables::itp, moda_ival::ival, moda_bitbuf::mbay, moda_usrbit::mbit, moda_usrbit::nbit, moda_usrint::nval, rcstpl(), upb8(), upc(), ups(), and moda_usrint::val.

                                                        + +

                                                        Referenced by readsb().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ readns()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        recursive subroutine readns (integer, intent(in) lunit,
                                                        character*8, intent(out) subset,
                                                        integer, intent(out) jdate,
                                                        integer, intent(out) iret 
                                                        )
                                                        +
                                                        + +

                                                        Read the next data subset from a BUFR file.

                                                        +

                                                        This subroutine provides a handy way to combine the functionality of subroutines readmg() and readsb() within a single subroutine call.

                                                        +

                                                        Logical unit lunit should have already been opened for input operations via a previous call to subroutine openbf(). But once that is done, the application program can immediately call this subroutine to read each new data subset from the associated BUFR file, and the subroutine will automatically open and close each new BUFR message internally as needed, so that subsequent calls can immediately be made to any of the various values-reading subroutines.

                                                        +
                                                        Parameters
                                                        + + + + + +
                                                        lunit- Fortran logical unit number for BUFR file
                                                        subset- Table A mnemonic for type of data subset that was read (see DX BUFR Tables for further information about Table A mnemonics)
                                                        jdate- Date-time stored within Section 1 of BUFR message containing data subset that was read, in format of either YYMMDDHH or YYYYMMDDHH, depending on the most recent call to subroutine datelen()
                                                        iret- return code
                                                          +
                                                        • 0 = new BUFR data subset was successfully read into internal arrays
                                                        • +
                                                        • -1 = there are no more BUFR data subsets in the file connected to logical unit lunit
                                                        • +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 167 of file readwritesb.F90.

                                                        + +

                                                        References bort(), moda_msgcwd::idate, moda_msgcwd::inode, readmg(), readsb(), status(), moda_tables::tag, x48(), and x84().

                                                        + +

                                                        Referenced by ireadns().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ readsb()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        recursive subroutine readsb (integer, intent(in) lunit,
                                                        integer, intent(out) iret 
                                                        )
                                                        +
                                                        + +

                                                        Read the next data subset from a BUFR message.

                                                        +

                                                        Logical unit lunit should have already been opened for input operations via a previous call to subroutine openbf(), and a BUFR message should have already been read into internal arrays via a previous call to one of the message-reading subroutines.

                                                        +

                                                        Whenever this subroutine returns with iret = 0, this indicates that a new BUFR data subset (i.e. report) was successfully read into internal arrays within the NCEPLIBS-bufr software, and from where it can be manipulated or further parsed via calls to any of the values-reading subroutines".

                                                        +

                                                        If the subroutine returns with iret = -1 there are no more data subsets available within the current message; a new call needs to be made to one of the message-reading subroutines in order to read in the next message from logical unit lunit.

                                                        +
                                                        Parameters
                                                        + + + +
                                                        lunit- Fortran logical unit number for BUFR file
                                                        iret- return code:
                                                          +
                                                        • 0 new BUFR data subset was successfully read into internal arrays
                                                        • +
                                                        • -1 there are no more BUFR data subsets in the BUFR message
                                                        • +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 31 of file readwritesb.F90.

                                                        + +

                                                        References bort(), moda_bitbuf::ibit, moda_stcode::iscodes, moda_bitmaps::linbtm, moda_bitmaps::lstnod, moda_bitmaps::lstnodct, moda_bitbuf::mbay, moda_bitbuf::mbyt, moda_unptyp::msgunp, moda_msgcwd::msub, moda_bitmaps::nbtm, moda_msgcwd::nsub, rdcmps(), rdtree(), status(), upb(), x48(), and x84().

                                                        + +

                                                        Referenced by cmpbqm(), copysb(), ireadsb(), rdmems(), rdmgsb(), readns(), rewnbf(), ufbinx(), and ufbpos().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ ufbpos()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        recursive subroutine ufbpos (integer, intent(in) lunit,
                                                        integer, intent(in) irec,
                                                        integer, intent(in) isub,
                                                        character*8, intent(out) subset,
                                                        integer, intent(out) jdate 
                                                        )
                                                        +
                                                        + +

                                                        Jump forwards or backwards to a specified data subset within a BUFR file.

                                                        +

                                                        Reposition the file pointer to the beginning of a specified data subset within a specified message of a BUFR file, then read that data subset into internal arrays so that it can be further processed via subsequent calls to any of the values-reading subroutines.

                                                        +

                                                        The specified data subset may be before or after the current location of the file pointer within the BUFR file.

                                                        +
                                                        Remarks
                                                          +
                                                        • Logical unit lunit should have already been opened for input operations via a previous call to subroutine openbf().
                                                        • +
                                                        • The value specified for irec should not include any messages which contain DX BUFR tables information.
                                                        • +
                                                        +
                                                        +
                                                        Parameters
                                                        + + + + + + +
                                                        lunit- Fortran logical unit number for BUFR file
                                                        irec- Ordinal number of message to be read, counting from the beginning of the BUFR file, but not counting any messages which contain DX BUFR tables information
                                                        isub- Ordinal number of data subset to be read from (irec)th message, counting from the beginning of the message
                                                        subset- Table A mnemonic for type of BUFR message that was read (see DX BUFR Tables for further information about Table A mnemonics)
                                                        jdate- Date-time stored within Section 1 of BUFR message that was read, in format of either YYMMDDHH or YYYYMMDDHH, depending on the most recent call to subroutine datelen()
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1995-11-22
                                                        + +

                                                        Definition at line 879 of file readwritesb.F90.

                                                        + +

                                                        References bort(), moda_msgcwd::nmsg, moda_msgcwd::nsub, readmg(), readsb(), status(), ufbcnt(), x48(), and x84().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ usrtpl()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        subroutine usrtpl (integer, intent(in) lun,
                                                        integer, intent(in) invn,
                                                        integer, intent(in) nbmp 
                                                        )
                                                        +
                                                        + +

                                                        Expand a subset template within internal arrays.

                                                        +

                                                        Update a subset template within the internal subset arrays in module moda_usrint for cases of node expansion, such as when the node is either a Table A mnemonic or a delayed replication factor.

                                                        +
                                                        Parameters
                                                        + + + + +
                                                        lun- File ID
                                                        invn- Starting jump/link table index of the node to be expanded within the subset template
                                                        nbmp- Number of times by which invn is to be expanded (i.e. number of replications of node)
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 1306 of file readwritesb.F90.

                                                        + +

                                                        References bort(), errwrt(), moda_tables::ibt, moda_msgcwd::inode, moda_usrint::inv, moda_stcode::iscodes, moda_tables::iseq, moda_ivttmp::itmp, moda_tables::itp, moda_tables::jmpb, moda_tables::jseq, moda_usrint::nval, moda_tables::tag, moda_tables::typ, moda_usrint::val, moda_tables::vali, and moda_ivttmp::vtmp.

                                                        + +

                                                        Referenced by drfini(), drstpl(), msgupd(), openmb(), openmg(), rdcmps(), trybump(), ufbget(), ufbtab(), ufbtam(), wrcmps(), and writlc().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ writsa()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        recursive subroutine writsa (integer, intent(in) lunxx,
                                                        integer, intent(in) lmsgt,
                                                        integer, dimension(*), intent(out) msgt,
                                                        integer, intent(out) msgl 
                                                        )
                                                        +
                                                        + +

                                                        Write a complete data subset into a BUFR message, and return each completed message within a memory array.

                                                        +

                                                        This subroutine is similar to subroutine writsb(), except that in addition to writing each completed message to a specified Fortran logical unit, it also returns a copy of each completed message to the application program within a memory array.

                                                        +

                                                        This subroutine is called to indicate that all necessary values for a data subset (i.e. report) have been written, and the subset is ready to be encoded and packed into the current message for the BUFR file associated with logical unit abs(lunxx). Logical unit abs(lunxx) should have already been opened for output operations via a previous call to subroutine openbf(), and a BUFR message should already be open for output within internal arrays via a previous call to one of the NCEPLIBS-bufr message-writing subroutines. All of the values for the data subset should have already been written into internal arrays via calls to any of the NCEPLIBS-bufr values-writing subroutines

                                                        +

                                                        This subroutine returns a copy of each completed BUFR message to the application program within a memory array. When using this subroutine, it is important to note that the NCEPLIBS-bufr software is designed to pack as many data subsets as possible into each message for output, and therefore not every call to this subroutine will result in a message being returned in msgt. In such cases, msgl will contain the value 0, indicating that no message was returned.

                                                        +

                                                        Only when msgl contains a value greater than 0 is there an actual BUFR message within msgt; otherwise, the message into which the data subset was packed remains internally within NCEPLIBS-bufr so that future data subsets can be packed into it as well, and the message will eventually be returned during some other future call to this subroutine. For this reason, there is a way to force the subroutine to return any message contained within the internal NCEPLIBS-bufr arrays, such as when there are no more data subsets to be encoded and we're ready to exit the application program. In this case, the application program should make one final call to this subroutine, but with lunxx set to a negative value; specifically, to the additive inverse of the Fortran logical unit number of the BUFR file. This signals to the subroutine that there are no more data subsets to be packed into the current message for logical unit abs(lunxx), and that the existing message should instead be immediately flushed to output and returned in msgt.

                                                        +
                                                        Remarks
                                                          +
                                                        • There is a maximum size for any BUFR message that can be written by the NCEPLIBS-bufr software. This maximum message size is initially set to an internal default value within subroutine bfrini(), but it can be changed to a different value via a separate prior call to subroutine maxout().
                                                        • +
                                                        • As is the case for subroutine writsb(), this subroutine will also check to ensure that the data subset, when encoded and packed, will fit into the current BUFR message that is open within the internal arrays associated with logical unit abs(lunxx). If adding the data subset to the current message would cause the maximum message size to be exceeded, then the subroutine will automatically flush the current message to logical unit abs(lunxx) and to array msgt, then open and initialize a new internal message using the same subset and jdate values that were specified in the most recent call to one of the message-writing subroutines for abs(lunxx), then encode and pack the data subset into that new message.
                                                        • +
                                                        • If the user would prefer that output messages only be returned to the calling program via the msgt memory array and not also written to Fortran logical unit abs(lunxx), then this can be accomplished by setting io = 'NUL' when calling subroutine openbf() for abs(lunxx). In such cases, the logical unit number abs(lunxx) does not even need to be associated with an actual file on the local system.
                                                        • +
                                                        +
                                                        +
                                                        Parameters
                                                        + + + + + +
                                                        lunxx- Absolute value is Fortran logical unit number for BUFR file
                                                        lmsgt- Dimensioned size (in integers) of msgt; used by the subroutine to ensure that it doesn't overflow the msgt array
                                                        msgt- BUFR message
                                                        msgl- Size (in integers) of BUFR message in msgt (0 for no message)
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        +J. Ator
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 422 of file readwritesb.F90.

                                                        + +

                                                        References bort(), moda_msgcmp::ccmf, closmg(), moda_bufrmg::msglen, moda_bufrmg::msgtxt, msgupd(), status(), wrcmps(), wrtree(), x48(), and x84().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ writsb()

                                                        + +
                                                        +
                                                        + + + + + + + + +
                                                        recursive subroutine writsb (integer, intent(in) lunit)
                                                        +
                                                        + +

                                                        Write a complete data subset into a BUFR message, for eventual output to logical unit lunit.

                                                        +

                                                        This subroutine is called when all necessary values for a data subset (i.e. report) have been written, and the subset is ready to be encoded and packed into the current message for the BUFR file associated with logical unit lunit. Logical unit lunit should have already been opened for output operations via a previous call to subroutine openbf(), and a BUFR message should already be open for output within internal arrays via a previous call to one of the NCEPLIBS-bufr message-writing subroutines. All of the values for the data subset should have already been written into internal arrays via calls to any of the NCEPLIBS-bufr values-writing subroutines.

                                                        +

                                                        There is a maximum size for any BUFR message that can be written by the NCEPLIBS-bufr software. This maximum message size is initially set to an internal default value within subroutine bfrini(), but it can be changed to a different value via a separate prior call to subroutine maxout().

                                                        +

                                                        This subroutine will always check to ensure that the data subset, when encoded and packed, will fit into the current BUFR message that is already open within the internal arrays associated with logical unit lunit. If adding the data subset to the current message would cause the maximum message size to be exceeded, then the subroutine will automatically flush the current message to logical unit lunit, then open and initialize a new internal message using the same subset and jdate values that were specified in the most recent call to one of the message-writing subroutines for lunit, then encode and pack the data subset into that new message.

                                                        +
                                                        Parameters
                                                        + + +
                                                        lunit- Fortran logical unit number for BUFR file
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 302 of file readwritesb.F90.

                                                        + +

                                                        References bort(), moda_msgcmp::ccmf, msgupd(), status(), wrcmps(), wrtree(), and x84().

                                                        + +

                                                        Referenced by copysb(), and writcp().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ wrtree()

                                                        + +
                                                        +
                                                        + + + + + + + + +
                                                        subroutine wrtree (integer, intent(in) lun)
                                                        +
                                                        + +

                                                        Pack a BUFR data subset.

                                                        +

                                                        Convert values from the internal array val(*,lun) (in module moda_usrint) into scaled integers, and then pack those scaled integers into the internal array ibay in module moda_bitbuf.

                                                        +
                                                        Parameters
                                                        + + +
                                                        lun- File ID
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 1063 of file readwritesb.F90.

                                                        + +

                                                        References moda_bitbuf::ibay, moda_bitbuf::ibit, moda_tables::ibt, moda_usrint::inv, ipkm(), moda_tables::itp, moda_ival::ival, moda_ufbcpl::luncpy, moda_usrint::nval, pkb8(), pkc(), readlc(), moda_tables::tag, moda_tables::typ, and moda_usrint::val.

                                                        + +

                                                        Referenced by writsa(), and writsb().

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/readwritesb_8F90.js b/previous_versions/v12.1.0/readwritesb_8F90.js new file mode 100644 index 000000000..377da70a7 --- /dev/null +++ b/previous_versions/v12.1.0/readwritesb_8F90.js @@ -0,0 +1,20 @@ +var readwritesb_8F90 = +[ + [ "invmrg", "readwritesb_8F90.html#aa926be9632b9da3990e2591f0386ee94", null ], + [ "ireadns", "readwritesb_8F90.html#a8a621b1996440ed233c796e49c8971f3", null ], + [ "ireadsb", "readwritesb_8F90.html#aae33d6dd74331ba0a2a34ba22e8e56ab", null ], + [ "lcmgdf", "readwritesb_8F90.html#acd820000e0fca0bc8d4ca0abac7b81fd", null ], + [ "msgupd", "readwritesb_8F90.html#a237f33069932c5fae473ac718c2eae9a", null ], + [ "nwords", "readwritesb_8F90.html#a90ab4c66c5564da3a326c66cc42d067f", null ], + [ "pad", "readwritesb_8F90.html#a1ca33013e4c11f3c9d1fe614f9f1d585", null ], + [ "rcstpl", "readwritesb_8F90.html#abb101b31fac13895d22320a918215372", null ], + [ "rdmgsb", "readwritesb_8F90.html#ad3f468fd2fbb1a36ebfff82d32674953", null ], + [ "rdtree", "readwritesb_8F90.html#a1dab1c658cb8511cfd1cc6a360221da8", null ], + [ "readns", "readwritesb_8F90.html#aeb1fdb4af8ca100d3d80c52a221f1de8", null ], + [ "readsb", "readwritesb_8F90.html#ab4b6c52feffa76d2a4d8fab6e3547f3c", null ], + [ "ufbpos", "readwritesb_8F90.html#a178ebc9cfe70d3119632799fc3db25de", null ], + [ "usrtpl", "readwritesb_8F90.html#a470af56bdf10d0b31292b0edac067597", null ], + [ "writsa", "readwritesb_8F90.html#a4b62a40d2c2860279670bf59a68e8204", null ], + [ "writsb", "readwritesb_8F90.html#aa2218d1cd25f8d558448bdc3061b3a04", null ], + [ "wrtree", "readwritesb_8F90.html#a2324e7f253ba3ad6209d7ab0fce5bc0e", null ] +]; \ No newline at end of file diff --git a/previous_versions/v12.1.0/readwritesb_8F90_source.html b/previous_versions/v12.1.0/readwritesb_8F90_source.html new file mode 100644 index 000000000..8b01d21fd --- /dev/null +++ b/previous_versions/v12.1.0/readwritesb_8F90_source.html @@ -0,0 +1,1448 @@ + + + + + + + +NCEPLIBS-bufr: readwritesb.F90 Source File + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        +
                                                        readwritesb.F90
                                                        +
                                                        +
                                                        +Go to the documentation of this file.
                                                        1 
                                                        +
                                                        5 
                                                        +
                                                        31 recursive subroutine readsb(lunit,iret)
                                                        +
                                                        32 
                                                        +
                                                        33  use modv_vars, only: im8b
                                                        +
                                                        34 
                                                        +
                                                        35  use moda_msgcwd
                                                        +
                                                        36  use moda_unptyp
                                                        +
                                                        37  use moda_bitbuf
                                                        +
                                                        38  use moda_bitmaps
                                                        +
                                                        39  use moda_stcode
                                                        +
                                                        40 
                                                        +
                                                        41  implicit none
                                                        +
                                                        42 
                                                        +
                                                        43  integer, intent(in) :: lunit
                                                        +
                                                        44  integer, intent(out) :: iret
                                                        +
                                                        45  integer my_lunit, lun, il, im, ier, nbyt
                                                        +
                                                        46 
                                                        +
                                                        47  ! Check for I8 integers
                                                        +
                                                        48 
                                                        +
                                                        49  if(im8b) then
                                                        +
                                                        50  im8b=.false.
                                                        +
                                                        51 
                                                        +
                                                        52  call x84(lunit,my_lunit,1)
                                                        +
                                                        53  call readsb(my_lunit,iret)
                                                        +
                                                        54  call x48(iret,iret,1)
                                                        +
                                                        55 
                                                        +
                                                        56  im8b=.true.
                                                        +
                                                        57  return
                                                        +
                                                        58  endif
                                                        +
                                                        59 
                                                        +
                                                        60  iret = -1
                                                        +
                                                        61 
                                                        +
                                                        62  ! Check the file status
                                                        +
                                                        63 
                                                        +
                                                        64  call status(lunit,lun,il,im)
                                                        +
                                                        65  if(il==0) call bort('BUFRLIB: READSB - INPUT BUFR FILE IS CLOSED, IT MUST BE OPEN FOR INPUT')
                                                        +
                                                        66  if(il>0) call bort('BUFRLIB: READSB - INPUT BUFR FILE IS OPEN FOR OUTPUT, IT MUST BE OPEN FOR INPUT')
                                                        +
                                                        67  if(im==0) return
                                                        +
                                                        68 
                                                        +
                                                        69  ! See if there is another subset in the message
                                                        +
                                                        70 
                                                        +
                                                        71  if(nsub(lun)==msub(lun)) return
                                                        +
                                                        72  nsub(lun) = nsub(lun) + 1
                                                        +
                                                        73 
                                                        +
                                                        74  ! Read the next subset and reset the pointers
                                                        +
                                                        75 
                                                        +
                                                        76  nbtm = 0
                                                        +
                                                        77  lstnod = 0
                                                        +
                                                        78  lstnodct = 0
                                                        +
                                                        79  iscodes(lun) = 0
                                                        +
                                                        80  linbtm = .false.
                                                        +
                                                        81 
                                                        +
                                                        82  if(msgunp(lun)==0) then
                                                        +
                                                        83  ibit = mbyt(lun)*8
                                                        +
                                                        84  call upb(nbyt,16,mbay(1,lun),ibit)
                                                        +
                                                        85  call rdtree(lun,ier)
                                                        +
                                                        86  if(ier/=0) return
                                                        +
                                                        87  mbyt(lun) = mbyt(lun) + nbyt
                                                        +
                                                        88  elseif(msgunp(lun)==1) then
                                                        +
                                                        89  ! message with "standard" Section 3
                                                        +
                                                        90  ibit = mbyt(lun)
                                                        +
                                                        91  call rdtree(lun,ier)
                                                        +
                                                        92  if(ier/=0) return
                                                        +
                                                        93  mbyt(lun) = ibit
                                                        +
                                                        94  else
                                                        +
                                                        95  ! compressed message
                                                        +
                                                        96  call rdcmps(lun)
                                                        +
                                                        97  if (iscodes(lun) /= 0) return
                                                        +
                                                        98  endif
                                                        +
                                                        99 
                                                        +
                                                        100  iret = 0
                                                        +
                                                        101 
                                                        +
                                                        102  return
                                                        +
                                                        103 end subroutine readsb
                                                        +
                                                        104 
                                                        +
                                                        116 recursive integer function ireadsb(lunit) result(iret)
                                                        +
                                                        117 
                                                        +
                                                        118  use modv_vars, only: im8b
                                                        +
                                                        119 
                                                        +
                                                        120  implicit none
                                                        +
                                                        121 
                                                        +
                                                        122  integer, intent(in) :: lunit
                                                        +
                                                        123  integer my_lunit
                                                        +
                                                        124 
                                                        +
                                                        125  ! Check for I8 integers.
                                                        +
                                                        126 
                                                        +
                                                        127  if(im8b) then
                                                        +
                                                        128  im8b=.false.
                                                        +
                                                        129 
                                                        +
                                                        130  call x84(lunit,my_lunit,1)
                                                        +
                                                        131  iret=ireadsb(my_lunit)
                                                        +
                                                        132 
                                                        +
                                                        133  im8b=.true.
                                                        +
                                                        134  return
                                                        +
                                                        135  endif
                                                        +
                                                        136 
                                                        +
                                                        137  call readsb(lunit,iret)
                                                        +
                                                        138 
                                                        +
                                                        139  return
                                                        +
                                                        140 end function ireadsb
                                                        +
                                                        141 
                                                        +
                                                        167 recursive subroutine readns(lunit,subset,jdate,iret)
                                                        +
                                                        168 
                                                        +
                                                        169  use modv_vars, only: im8b
                                                        +
                                                        170 
                                                        +
                                                        171  use moda_msgcwd
                                                        +
                                                        172  use moda_tables
                                                        +
                                                        173 
                                                        +
                                                        174  implicit none
                                                        +
                                                        175 
                                                        +
                                                        176  integer, intent(in) :: lunit
                                                        +
                                                        177  integer, intent(out) :: jdate, iret
                                                        +
                                                        178  integer my_lunit, lun, il, im
                                                        +
                                                        179 
                                                        +
                                                        180  character*8, intent(out) :: subset
                                                        +
                                                        181 
                                                        +
                                                        182  ! Check for I8 integers
                                                        +
                                                        183 
                                                        +
                                                        184  if(im8b) then
                                                        +
                                                        185  im8b=.false.
                                                        +
                                                        186 
                                                        +
                                                        187  call x84(lunit,my_lunit,1)
                                                        +
                                                        188  call readns(my_lunit,subset,jdate,iret)
                                                        +
                                                        189  call x48(jdate,jdate,1)
                                                        +
                                                        190  call x48(iret,iret,1)
                                                        +
                                                        191 
                                                        +
                                                        192  im8b=.true.
                                                        +
                                                        193  return
                                                        +
                                                        194  endif
                                                        +
                                                        195 
                                                        +
                                                        196  ! Refresh the subset and jdate parameters
                                                        +
                                                        197 
                                                        +
                                                        198  call status(lunit,lun,il,im)
                                                        +
                                                        199  if(il==0) call bort('BUFRLIB: READNS - INPUT BUFR FILE IS CLOSED, IT MUST BE OPEN FOR INPUT')
                                                        +
                                                        200  if(il>0) call bort('BUFRLIB: READNS - INPUT BUFR FILE IS OPEN FOR OUTPUT, IT MUST BE OPEN FOR INPUT')
                                                        +
                                                        201  if(inode(lun)==0) then
                                                        +
                                                        202  subset = ' '
                                                        +
                                                        203  else
                                                        +
                                                        204  subset = tag(inode(lun))(1:8)
                                                        +
                                                        205  endif
                                                        +
                                                        206  jdate = idate(lun)
                                                        +
                                                        207 
                                                        +
                                                        208  ! Read the next subset in the BUFR file
                                                        +
                                                        209 
                                                        +
                                                        210  do while (.true.)
                                                        +
                                                        211  call readsb(lunit,iret)
                                                        +
                                                        212  if (iret==0) exit
                                                        +
                                                        213  call readmg(lunit,subset,jdate,iret)
                                                        +
                                                        214  if (iret/=0) exit
                                                        +
                                                        215  enddo
                                                        +
                                                        216 
                                                        +
                                                        217  return
                                                        +
                                                        218 end subroutine readns
                                                        +
                                                        219 
                                                        +
                                                        238 recursive integer function ireadns(lunit,subset,idate) result(iret)
                                                        +
                                                        239 
                                                        +
                                                        240  use modv_vars, only: im8b
                                                        +
                                                        241 
                                                        +
                                                        242  implicit none
                                                        +
                                                        243 
                                                        +
                                                        244  integer, intent(in) :: lunit
                                                        +
                                                        245  integer, intent(out) :: idate
                                                        +
                                                        246  integer my_lunit
                                                        +
                                                        247 
                                                        +
                                                        248  character*8, intent(out) :: subset
                                                        +
                                                        249 
                                                        +
                                                        250  ! Check for I8 integers.
                                                        +
                                                        251 
                                                        +
                                                        252  if(im8b) then
                                                        +
                                                        253  im8b=.false.
                                                        +
                                                        254 
                                                        +
                                                        255  call x84(lunit,my_lunit,1)
                                                        +
                                                        256  iret=ireadns(my_lunit,subset,idate)
                                                        +
                                                        257  call x48(idate,idate,1)
                                                        +
                                                        258 
                                                        +
                                                        259  im8b=.true.
                                                        +
                                                        260  return
                                                        +
                                                        261  endif
                                                        +
                                                        262 
                                                        +
                                                        263  call readns(lunit,subset,idate,iret)
                                                        +
                                                        264 
                                                        +
                                                        265  return
                                                        +
                                                        266 end function ireadns
                                                        +
                                                        267 
                                                        +
                                                        302 recursive subroutine writsb(lunit)
                                                        +
                                                        303 
                                                        +
                                                        304  use modv_vars, only: im8b
                                                        +
                                                        305 
                                                        +
                                                        306  use moda_msgcmp
                                                        +
                                                        307 
                                                        +
                                                        308  implicit none
                                                        +
                                                        309 
                                                        +
                                                        310  integer, intent(in) :: lunit
                                                        +
                                                        311  integer my_lunit, lun, il, im
                                                        +
                                                        312 
                                                        +
                                                        313  ! Check for I8 integers
                                                        +
                                                        314 
                                                        +
                                                        315  if(im8b) then
                                                        +
                                                        316  im8b=.false.
                                                        +
                                                        317 
                                                        +
                                                        318  call x84 ( lunit, my_lunit, 1 )
                                                        +
                                                        319  call writsb ( my_lunit )
                                                        +
                                                        320 
                                                        +
                                                        321  im8b=.true.
                                                        +
                                                        322  return
                                                        +
                                                        323  endif
                                                        +
                                                        324 
                                                        +
                                                        325  ! Check the file status
                                                        +
                                                        326 
                                                        +
                                                        327  call status(lunit,lun,il,im)
                                                        +
                                                        328  if(il==0) call bort('BUFRLIB: WRITSB - OUTPUT BUFR FILE IS CLOSED, IT MUST BE OPEN FOR OUTPUT')
                                                        +
                                                        329  if(il<0) call bort('BUFRLIB: WRITSB - OUTPUT BUFR FILE IS OPEN FOR INPUT, IT MUST BE OPEN FOR OUTPUT')
                                                        +
                                                        330  if(im==0) call bort('BUFRLIB: WRITSB - A MESSAGE MUST BE OPEN IN OUTPUT BUFR FILE, NONE ARE')
                                                        +
                                                        331 
                                                        +
                                                        332  ! Pack up the subset and put it into the message
                                                        +
                                                        333 
                                                        +
                                                        334  call wrtree(lun)
                                                        +
                                                        335  if( ccmf=='Y' ) then
                                                        +
                                                        336  call wrcmps(lunit)
                                                        +
                                                        337  else
                                                        +
                                                        338  call msgupd(lunit,lun)
                                                        +
                                                        339  endif
                                                        +
                                                        340 
                                                        +
                                                        341  return
                                                        +
                                                        342 end subroutine writsb
                                                        +
                                                        343 
                                                        +
                                                        422 recursive subroutine writsa(lunxx,lmsgt,msgt,msgl)
                                                        +
                                                        423 
                                                        +
                                                        424  use modv_vars, only: im8b
                                                        +
                                                        425 
                                                        +
                                                        426  use moda_bufrmg
                                                        +
                                                        427  use moda_msgcmp
                                                        +
                                                        428 
                                                        +
                                                        429  implicit none
                                                        +
                                                        430 
                                                        +
                                                        431  integer, intent(in) :: lunxx, lmsgt
                                                        +
                                                        432  integer, intent(out) :: msgt(*), msgl
                                                        +
                                                        433  integer my_lunxx, my_lmsgt, lunit, lun, il, im, n
                                                        +
                                                        434 
                                                        +
                                                        435  ! Check for I8 integers
                                                        +
                                                        436 
                                                        +
                                                        437  if(im8b) then
                                                        +
                                                        438  im8b=.false.
                                                        +
                                                        439 
                                                        +
                                                        440  call x84 ( lunxx, my_lunxx, 1 )
                                                        +
                                                        441  call x84 ( lmsgt, my_lmsgt, 1 )
                                                        +
                                                        442  call writsa ( my_lunxx, my_lmsgt*2, msgt, msgl )
                                                        +
                                                        443  msgl = msgl/2
                                                        +
                                                        444  call x48 ( msgl, msgl, 1 )
                                                        +
                                                        445 
                                                        +
                                                        446  im8b=.true.
                                                        +
                                                        447  return
                                                        +
                                                        448  endif
                                                        +
                                                        449 
                                                        +
                                                        450  lunit = abs(lunxx)
                                                        +
                                                        451 
                                                        +
                                                        452  ! Check the file status
                                                        +
                                                        453 
                                                        +
                                                        454  call status(lunit,lun,il,im)
                                                        +
                                                        455  if(il==0) call bort('BUFRLIB: WRITSA - OUTPUT BUFR FILE IS CLOSED, IT MUST BE OPEN FOR OUTPUT')
                                                        +
                                                        456  if(il<0) call bort('BUFRLIB: WRITSA - OUTPUT BUFR FILE IS OPEN FOR INPUT, IT MUST BE OPEN FOR OUTPUT')
                                                        +
                                                        457  if(im==0) call bort('BUFRLIB: WRITSA - A MESSAGE MUST BE OPEN IN OUTPUT BUFR FILE, NONE ARE')
                                                        +
                                                        458 
                                                        +
                                                        459  ! If lunxx < 0, force memory msg to be written (w/o any current subset)
                                                        +
                                                        460 
                                                        +
                                                        461  if(lunxx<0) call closmg(lunit)
                                                        +
                                                        462 
                                                        +
                                                        463  ! Is there a completed BUFR message to be returned?
                                                        +
                                                        464 
                                                        +
                                                        465  if(msglen(lun)>0) then
                                                        +
                                                        466  if(msglen(lun)>lmsgt) call bort('BUFRLIB: WRITSA - OVERFLOW OF OUTPUT BUFR MESSAGE ARRAY; TRY A LARGER '// &
                                                        +
                                                        467  'DIMENSION FOR THIS ARRAY')
                                                        +
                                                        468  msgl = msglen(lun)
                                                        +
                                                        469  do n=1,msgl
                                                        +
                                                        470  msgt(n) = msgtxt(n,lun)
                                                        +
                                                        471  enddo
                                                        +
                                                        472  msglen(lun) = 0
                                                        +
                                                        473  else
                                                        +
                                                        474  msgl = 0
                                                        +
                                                        475  endif
                                                        +
                                                        476 
                                                        +
                                                        477  if(lunxx<0) return
                                                        +
                                                        478 
                                                        +
                                                        479  ! Pack up the subset and put it into the message
                                                        +
                                                        480 
                                                        +
                                                        481  call wrtree(lun)
                                                        +
                                                        482  if( ccmf=='Y' ) then
                                                        +
                                                        483  call wrcmps(lunit)
                                                        +
                                                        484  else
                                                        +
                                                        485  call msgupd(lunit,lun)
                                                        +
                                                        486  endif
                                                        +
                                                        487 
                                                        +
                                                        488  ! If the just-completed call to wrcmps() or msgupd() for this subset caused a message to be flushed to abs(lunxx), then
                                                        +
                                                        489  ! attempt to retrieve and return that message now. Otherwise, we run the risk that the next call to openmb() or openmg()
                                                        +
                                                        490  ! might cause another message to be flushed, and thus overwrite the current message within array msgtxt before we
                                                        +
                                                        491  ! had the chance to retrieve it during the next call to writsa().
                                                        +
                                                        492 
                                                        +
                                                        493  ! Also note that, in rare instances (e.g. if the byte count of the most recent subset is > 65530), we could end up with
                                                        +
                                                        494  ! two BUFR messages available to be returned from this one call to writsa(). If sufficient space is available in the
                                                        +
                                                        495  ! msgt array, then go ahead and return both messages now.
                                                        +
                                                        496 
                                                        +
                                                        497  if( (msglen(lun)>0) .and. (msgl+msglen(lun)<=lmsgt) ) then
                                                        +
                                                        498  do n = 1,msglen(lun)
                                                        +
                                                        499  msgt(msgl+n) = msgtxt(n,lun)
                                                        +
                                                        500  enddo
                                                        +
                                                        501  msgl = msgl+msglen(lun)
                                                        +
                                                        502  msglen(lun) = 0
                                                        +
                                                        503  endif
                                                        +
                                                        504 
                                                        +
                                                        505  return
                                                        +
                                                        506 end subroutine writsa
                                                        +
                                                        507 
                                                        +
                                                        535 recursive subroutine rdmgsb(lunit,imsg,isub)
                                                        +
                                                        536 
                                                        +
                                                        537  use modv_vars, only: im8b
                                                        +
                                                        538 
                                                        +
                                                        539  use moda_msgcwd
                                                        +
                                                        540  use moda_bitbuf
                                                        +
                                                        541 
                                                        +
                                                        542  implicit none
                                                        +
                                                        543 
                                                        +
                                                        544  integer, intent(in) :: lunit, imsg, isub
                                                        +
                                                        545  integer my_lunit, my_imsg, my_isub, lun, il, im, i, jdate, iret
                                                        +
                                                        546 
                                                        +
                                                        547  character*128 bort_str
                                                        +
                                                        548  character*8 subset
                                                        +
                                                        549 
                                                        +
                                                        550  ! Check for I8 integers
                                                        +
                                                        551 
                                                        +
                                                        552  if(im8b) then
                                                        +
                                                        553  im8b=.false.
                                                        +
                                                        554 
                                                        +
                                                        555  call x84(lunit,my_lunit,1)
                                                        +
                                                        556  call x84(imsg,my_imsg,1)
                                                        +
                                                        557  call x84(isub,my_isub,1)
                                                        +
                                                        558  call rdmgsb(my_lunit,my_imsg,my_isub)
                                                        +
                                                        559 
                                                        +
                                                        560  im8b=.true.
                                                        +
                                                        561  return
                                                        +
                                                        562  endif
                                                        +
                                                        563 
                                                        +
                                                        564  ! Open the file and skip to message #imsg
                                                        +
                                                        565 
                                                        +
                                                        566  call openbf(lunit,'IN',lunit)
                                                        +
                                                        567  call status(lunit,lun,il,im)
                                                        +
                                                        568 
                                                        +
                                                        569  ! Note that we need to use subroutine readmg() to actually read in all of the messages (including the
                                                        +
                                                        570  ! first (imsg-1) messages!), just in case there are any embedded dictionary messages in the file.
                                                        +
                                                        571 
                                                        +
                                                        572  do i=1,imsg
                                                        +
                                                        573  call readmg(lunit,subset,jdate,iret)
                                                        +
                                                        574  if(iret<0) then
                                                        +
                                                        575  write(bort_str,'("BUFRLIB: RDMGSB - HIT END OF FILE BEFORE READING REQUESTED MESSAGE NO.",I5," IN '//&
                                                        +
                                                        576  'BUFR FILE CONNECTED TO UNIT",I4)') imsg,lunit
                                                        +
                                                        577  call bort(bort_str)
                                                        +
                                                        578  endif
                                                        +
                                                        579  enddo
                                                        +
                                                        580 
                                                        +
                                                        581  ! Position at subset #isub
                                                        +
                                                        582 
                                                        +
                                                        583  do i=1,isub
                                                        +
                                                        584  call readsb(lunit,iret)
                                                        +
                                                        585  if(iret<0) then
                                                        +
                                                        586  write(bort_str,'("BUFRLIB: RDMGSB - ALL SUBSETS READ BEFORE READING REQ. SUBSET NO.",I3," IN '// &
                                                        +
                                                        587  'REQ. MSG NO.",I5," IN BUFR FILE CONNECTED TO UNIT",I4)') isub,imsg,lunit
                                                        +
                                                        588  call bort(bort_str)
                                                        +
                                                        589  endif
                                                        +
                                                        590  enddo
                                                        +
                                                        591 
                                                        +
                                                        592  return
                                                        +
                                                        593 end subroutine rdmgsb
                                                        +
                                                        594 
                                                        +
                                                        612 subroutine msgupd(lunit,lun)
                                                        +
                                                        613 
                                                        +
                                                        614  use moda_msgcwd
                                                        +
                                                        615  use moda_bitbuf
                                                        +
                                                        616  use moda_h4wlc
                                                        +
                                                        617 
                                                        +
                                                        618  implicit none
                                                        +
                                                        619 
                                                        +
                                                        620  integer, intent(in) :: lunit, lun
                                                        +
                                                        621  integer nby0, nby1, nby2, nby3, nby4, nby5, iprt, ibyt, lbyt, lbit, nbyt, ii, iupb
                                                        +
                                                        622 
                                                        +
                                                        623  logical msgfull
                                                        +
                                                        624 
                                                        +
                                                        625  character*128 errstr
                                                        +
                                                        626 
                                                        +
                                                        627  common /msgptr/ nby0, nby1, nby2, nby3, nby4, nby5
                                                        +
                                                        628  common /quiet/ iprt
                                                        +
                                                        629 
                                                        +
                                                        630  ! Pad the subset buffer
                                                        +
                                                        631 
                                                        +
                                                        632  call pad(ibay,ibit,ibyt,8)
                                                        +
                                                        633 
                                                        +
                                                        634  ! Check whether the new subset should be written into the currently open message
                                                        +
                                                        635 
                                                        +
                                                        636  if(msgfull(mbyt(lun),ibyt,maxbyt) .or. ((ibyt>65530).and.(nsub(lun)>0))) then
                                                        +
                                                        637  ! No it should not, either because it doesn't fit
                                                        +
                                                        638  ! OR
                                                        +
                                                        639  ! It has byte count > 65530 (sufficiently close to the upper limit for the 16 bit byte counter placed at the beginning
                                                        +
                                                        640  ! of each subset), and the current message has at least one subset in it
                                                        +
                                                        641  !
                                                        +
                                                        642  ! In either of these cases, we need to write out the current message and then create a new one to hold the current subset
                                                        +
                                                        643  call msgwrt(lunit,mbay(1,lun),mbyt(lun))
                                                        +
                                                        644  call msgini(lun)
                                                        +
                                                        645  endif
                                                        +
                                                        646 
                                                        +
                                                        647  if(msgfull(mbyt(lun),ibyt,maxbyt)) then
                                                        +
                                                        648  ! This is an overlarge subset that won't fit in any message given the current value of maxbyt, so discard the subset
                                                        +
                                                        649  ! and exit gracefully.
                                                        +
                                                        650  if(iprt>=0) then
                                                        +
                                                        651  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        652  write ( unit=errstr, fmt='(A,A,I7,A)') 'BUFRLIB: MSGUPD - SUBSET LONGER THAN ANY POSSIBLE MESSAGE ', &
                                                        +
                                                        653  '{MAXIMUM MESSAGE LENGTH = ', maxbyt, '}'
                                                        +
                                                        654  call errwrt(errstr)
                                                        +
                                                        655  call errwrt('>>>>>>>OVERLARGE SUBSET DISCARDED FROM FILE<<<<<<<<')
                                                        +
                                                        656  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        657  call errwrt(' ')
                                                        +
                                                        658  endif
                                                        +
                                                        659  call usrtpl(lun,1,1)
                                                        +
                                                        660  return
                                                        +
                                                        661  endif
                                                        +
                                                        662 
                                                        +
                                                        663  ! Set a byte count and transfer the subset buffer into the message
                                                        +
                                                        664 
                                                        +
                                                        665  lbit = 0
                                                        +
                                                        666  call pkb(ibyt,16,ibay,lbit)
                                                        +
                                                        667 
                                                        +
                                                        668  ! Note that we want to append the data for this subset to the end of Section 4, but the value in mbyt(lun) already includes
                                                        +
                                                        669  ! the length of Section 5 (i.e. 4 bytes). Therefore, we need to begin writing at the point 3 bytes prior to the byte
                                                        +
                                                        670  ! currently pointed to by mbyt(lun).
                                                        +
                                                        671 
                                                        +
                                                        672  call mvb(ibay,1,mbay(1,lun),mbyt(lun)-3,ibyt)
                                                        +
                                                        673 
                                                        +
                                                        674  ! Update the subset and byte counters
                                                        +
                                                        675 
                                                        +
                                                        676  mbyt(lun) = mbyt(lun) + ibyt
                                                        +
                                                        677  nsub(lun) = nsub(lun) + 1
                                                        +
                                                        678 
                                                        +
                                                        679  lbit = (nby0+nby1+nby2+4)*8
                                                        +
                                                        680  call pkb(nsub(lun),16,mbay(1,lun),lbit)
                                                        +
                                                        681 
                                                        +
                                                        682  lbyt = nby0+nby1+nby2+nby3
                                                        +
                                                        683  nbyt = iupb(mbay(1,lun),lbyt+1,24)
                                                        +
                                                        684  lbit = lbyt*8
                                                        +
                                                        685  call pkb(nbyt+ibyt,24,mbay(1,lun),lbit)
                                                        +
                                                        686 
                                                        +
                                                        687  ! If any long character strings are being held internally for storage into this subset, store them now
                                                        +
                                                        688 
                                                        +
                                                        689  if(nh4wlc>0) then
                                                        +
                                                        690  do ii = 1, nh4wlc
                                                        +
                                                        691  call writlc(luh4wlc(ii),chh4wlc(ii),sth4wlc(ii))
                                                        +
                                                        692  enddo
                                                        +
                                                        693  nh4wlc = 0
                                                        +
                                                        694  endif
                                                        +
                                                        695 
                                                        +
                                                        696  ! If the subset byte count is > 65530, then give it its own one-subset message (cannot have any other subsets in this
                                                        +
                                                        697  ! message because their beginning would be beyond the upper limit of 65535 in the 16-bit byte counter, meaning they
                                                        +
                                                        698  ! could not be located!)
                                                        +
                                                        699 
                                                        +
                                                        700  if(ibyt>65530) then
                                                        +
                                                        701  if(iprt>=1) then
                                                        +
                                                        702  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        703  write ( unit=errstr, fmt='(A,I7,A,A)') 'BUFRLIB: MSGUPD - SUBSET HAS BYTE COUNT = ',ibyt,' > UPPER LIMIT OF 65535'
                                                        +
                                                        704  call errwrt(errstr)
                                                        +
                                                        705  call errwrt('>>>>>>>WILL BE WRITTEN INTO ITS OWN MESSAGE<<<<<<<<')
                                                        +
                                                        706  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        707  call errwrt(' ')
                                                        +
                                                        708  endif
                                                        +
                                                        709  call msgwrt(lunit,mbay(1,lun),mbyt(lun))
                                                        +
                                                        710  call msgini(lun)
                                                        +
                                                        711  endif
                                                        +
                                                        712 
                                                        +
                                                        713  ! Reset the user arrays
                                                        +
                                                        714 
                                                        +
                                                        715  call usrtpl(lun,1,1)
                                                        +
                                                        716 
                                                        +
                                                        717  return
                                                        +
                                                        718 end subroutine msgupd
                                                        +
                                                        719 
                                                        +
                                                        749 subroutine pad(ibay,ibit,ibyt,ipadb)
                                                        +
                                                        750 
                                                        +
                                                        751  implicit none
                                                        +
                                                        752 
                                                        +
                                                        753  integer, intent(inout) :: ibay(*), ibit
                                                        +
                                                        754  integer, intent(in) :: ipadb
                                                        +
                                                        755  integer, intent(out) :: ibyt
                                                        +
                                                        756  integer ipad
                                                        +
                                                        757 
                                                        +
                                                        758  character*128 bort_str
                                                        +
                                                        759 
                                                        +
                                                        760  ! Pad the subset to an ipadb bit boundary
                                                        +
                                                        761 
                                                        +
                                                        762  ipad = ipadb - mod(ibit+8,ipadb)
                                                        +
                                                        763  ! First pack the # of bits being padded (this is a delayed replication factor)
                                                        +
                                                        764  call pkb(ipad,8,ibay,ibit)
                                                        +
                                                        765  ! Now pad with zeroes to the byte boundary
                                                        +
                                                        766  call pkb(0,ipad,ibay,ibit)
                                                        +
                                                        767  ibyt = ibit/8
                                                        +
                                                        768 
                                                        +
                                                        769  if(mod(ibit,8)/=0) then
                                                        +
                                                        770  write(bort_str,'("BUFRLIB: PAD - THE NUMBER OF BITS IN A PACKED'// &
                                                        +
                                                        771  ' SUBSET AFTER PADDING (",I8,") IS NOT A MULTIPLE OF 8")') ibit
                                                        +
                                                        772  call bort(bort_str)
                                                        +
                                                        773  endif
                                                        +
                                                        774 
                                                        +
                                                        775  return
                                                        +
                                                        776 end subroutine pad
                                                        +
                                                        777 
                                                        +
                                                        803 recursive integer function lcmgdf(lunit,subset) result(iret)
                                                        +
                                                        804 
                                                        +
                                                        805  use modv_vars, only: im8b
                                                        +
                                                        806 
                                                        +
                                                        807  use moda_tables
                                                        +
                                                        808 
                                                        +
                                                        809  implicit none
                                                        +
                                                        810 
                                                        +
                                                        811  integer, intent(in) :: lunit
                                                        +
                                                        812  integer my_lunit, lun, il, im, mtyp, msbt, inod, nte, i
                                                        +
                                                        813 
                                                        +
                                                        814  character*8, intent(in) :: subset
                                                        +
                                                        815 
                                                        +
                                                        816  ! Check for I8 integers.
                                                        +
                                                        817 
                                                        +
                                                        818  if(im8b) then
                                                        +
                                                        819  im8b=.false.
                                                        +
                                                        820 
                                                        +
                                                        821  call x84(lunit,my_lunit,1)
                                                        +
                                                        822  iret=lcmgdf(my_lunit,subset)
                                                        +
                                                        823 
                                                        +
                                                        824  im8b=.true.
                                                        +
                                                        825  return
                                                        +
                                                        826  endif
                                                        +
                                                        827 
                                                        +
                                                        828  iret = 0
                                                        +
                                                        829 
                                                        +
                                                        830  ! Get lun from lunit.
                                                        +
                                                        831 
                                                        +
                                                        832  call status(lunit,lun,il,im)
                                                        +
                                                        833  if (il==0) call bort('BUFRLIB: LCMGDF - INPUT BUFR FILE IS CLOSED, IT MUST BE OPEN')
                                                        +
                                                        834 
                                                        +
                                                        835  ! Confirm that subset is defined for this logical unit.
                                                        +
                                                        836 
                                                        +
                                                        837  call nemtba(lun,subset,mtyp,msbt,inod)
                                                        +
                                                        838 
                                                        +
                                                        839  ! Check if there's a long character string in the definition.
                                                        +
                                                        840 
                                                        +
                                                        841  nte = isc(inod)-inod
                                                        +
                                                        842 
                                                        +
                                                        843  do i = 1, nte
                                                        +
                                                        844  if ( (typ(inod+i)=='CHR') .and. (ibt(inod+i)>64) ) then
                                                        +
                                                        845  iret = 1
                                                        +
                                                        846  return
                                                        +
                                                        847  endif
                                                        +
                                                        848  enddo
                                                        +
                                                        849 
                                                        +
                                                        850  iret = 0
                                                        +
                                                        851 
                                                        +
                                                        852  return
                                                        +
                                                        853 end function lcmgdf
                                                        +
                                                        854 
                                                        +
                                                        879 recursive subroutine ufbpos(lunit,irec,isub,subset,jdate)
                                                        +
                                                        880 
                                                        +
                                                        881  use bufrlib
                                                        +
                                                        882 
                                                        +
                                                        883  use modv_vars, only: im8b
                                                        +
                                                        884 
                                                        +
                                                        885  use moda_msgcwd
                                                        +
                                                        886  use moda_bitbuf
                                                        +
                                                        887 
                                                        +
                                                        888  implicit none
                                                        +
                                                        889 
                                                        +
                                                        890  integer, intent(in) :: lunit, irec, isub
                                                        +
                                                        891  integer, intent(out) :: jdate
                                                        +
                                                        892  integer my_lunit, my_irec, my_isub, lun, il, im, jrec, jsub, iret
                                                        +
                                                        893 
                                                        +
                                                        894  character*128 bort_str
                                                        +
                                                        895  character*8, intent(out) :: subset
                                                        +
                                                        896 
                                                        +
                                                        897  ! Check for I8 integers
                                                        +
                                                        898 
                                                        +
                                                        899  if(im8b) then
                                                        +
                                                        900  im8b=.false.
                                                        +
                                                        901  call x84(lunit,my_lunit,1)
                                                        +
                                                        902  call x84(irec,my_irec,1)
                                                        +
                                                        903  call x84(isub,my_isub,1)
                                                        +
                                                        904  call ufbpos(my_lunit,my_irec,my_isub,subset,jdate)
                                                        +
                                                        905  call x48(jdate,jdate,1)
                                                        +
                                                        906  im8b=.true.
                                                        +
                                                        907  return
                                                        +
                                                        908  endif
                                                        +
                                                        909 
                                                        +
                                                        910  ! Make sure a file is open for input
                                                        +
                                                        911 
                                                        +
                                                        912  call status(lunit,lun,il,im)
                                                        +
                                                        913  if(il==0) call bort('BUFRLIB: UFBPOS - INPUT BUFR FILE IS CLOSED, IT MUST BE OPEN FOR INPUT')
                                                        +
                                                        914  if(il>0) call bort('BUFRLIB: UFBPOS - INPUT BUFR FILE IS OPEN FOR OUTPUT, IT MUST BE OPEN FOR INPUT')
                                                        +
                                                        915 
                                                        +
                                                        916  if(irec<=0) then
                                                        +
                                                        917  write(bort_str,'("BUFRLIB: UFBPOS - REQUESTED MESSAGE NUMBER TO READ IN (",I5,") IS NOT VALID")') irec
                                                        +
                                                        918  call bort(bort_str)
                                                        +
                                                        919  endif
                                                        +
                                                        920  if(isub<=0) then
                                                        +
                                                        921  write(bort_str,'("BUFRLIB: UFBPOS - REQUESTED SUBSET NUMBER TO READ IN (",I5,") IS NOT VALID")') isub
                                                        +
                                                        922  call bort(bort_str)
                                                        +
                                                        923  endif
                                                        +
                                                        924 
                                                        +
                                                        925  ! See where pointers are currently located
                                                        +
                                                        926 
                                                        +
                                                        927  call ufbcnt(lunit,jrec,jsub)
                                                        +
                                                        928 
                                                        +
                                                        929  ! Rewind file if requested pointers are behind current pointers
                                                        +
                                                        930 
                                                        +
                                                        931  if(irec<jrec .or. (irec==jrec.and.isub<jsub)) then
                                                        +
                                                        932  call cewind_c(lun)
                                                        +
                                                        933  nmsg(lun) = 0
                                                        +
                                                        934  nsub(lun) = 0
                                                        +
                                                        935  call ufbcnt(lunit,jrec,jsub)
                                                        +
                                                        936  endif
                                                        +
                                                        937 
                                                        +
                                                        938  ! Read subset #isub from message #irec from file
                                                        +
                                                        939 
                                                        +
                                                        940  do while (irec>jrec)
                                                        +
                                                        941  call readmg(lunit,subset,jdate,iret)
                                                        +
                                                        942  if(iret<0) then
                                                        +
                                                        943  write(bort_str,'("BUFRLIB: UFBPOS - REQUESTED MESSAGE NUMBER '// &
                                                        +
                                                        944  'TO READ IN (",I5,") EXCEEDS THE NUMBER OF MESSAGES IN THE FILE (",I5,")")') irec, jrec
                                                        +
                                                        945  call bort(bort_str)
                                                        +
                                                        946  endif
                                                        +
                                                        947  call ufbcnt(lunit,jrec,jsub)
                                                        +
                                                        948  enddo
                                                        +
                                                        949 
                                                        +
                                                        950  do while (isub>jsub)
                                                        +
                                                        951  call readsb(lunit,iret)
                                                        +
                                                        952  if(iret/=0) then
                                                        +
                                                        953  write(bort_str,'("BUFRLIB: UFBPOS - REQ. SUBSET NUMBER TO READ'// &
                                                        +
                                                        954  ' IN (",I5,") EXCEEDS THE NUMBER OF SUBSETS (",I5,") IN THE REQ. MESSAGE (",I5,")")') isub, jsub, irec
                                                        +
                                                        955  call bort(bort_str)
                                                        +
                                                        956  endif
                                                        +
                                                        957  call ufbcnt(lunit,jrec,jsub)
                                                        +
                                                        958  enddo
                                                        +
                                                        959 
                                                        +
                                                        960  return
                                                        +
                                                        961 end subroutine ufbpos
                                                        +
                                                        962 
                                                        +
                                                        974 subroutine rdtree(lun,iret)
                                                        +
                                                        975 
                                                        +
                                                        976  use modv_vars, only: bmiss
                                                        +
                                                        977 
                                                        +
                                                        978  use moda_usrint
                                                        +
                                                        979  use moda_usrbit
                                                        +
                                                        980  use moda_ival
                                                        +
                                                        981  use moda_bitbuf
                                                        +
                                                        982  use moda_tables
                                                        +
                                                        983 
                                                        +
                                                        984  implicit none
                                                        +
                                                        985 
                                                        +
                                                        986  integer, intent(in) :: lun
                                                        +
                                                        987  integer, intent(out) :: iret
                                                        +
                                                        988  integer ier, n, node, kbit, nbt, icbfms
                                                        +
                                                        989 
                                                        +
                                                        990  character*8 cval
                                                        +
                                                        991 
                                                        +
                                                        992  real*8 rval, ups
                                                        +
                                                        993 
                                                        +
                                                        994  equivalence(cval,rval)
                                                        +
                                                        995 
                                                        +
                                                        996  iret = 0
                                                        +
                                                        997 
                                                        +
                                                        998  ! Cycle through a subset setting up the template
                                                        +
                                                        999 
                                                        +
                                                        1000  mbit(1) = ibit
                                                        +
                                                        1001  nbit(1) = 0
                                                        +
                                                        1002  call rcstpl(lun,ier)
                                                        +
                                                        1003  if(ier/=0) then
                                                        +
                                                        1004  iret = -1
                                                        +
                                                        1005  return
                                                        +
                                                        1006  endif
                                                        +
                                                        1007 
                                                        +
                                                        1008  ! Unpack a subset into the user array ival
                                                        +
                                                        1009 
                                                        +
                                                        1010  do n=1,nval(lun)
                                                        +
                                                        1011  call upb8(ival(n),nbit(n),mbit(n),mbay(1,lun))
                                                        +
                                                        1012  enddo
                                                        +
                                                        1013 
                                                        +
                                                        1014  ! Loop through each element of the subset, converting the unpacked values to the proper types
                                                        +
                                                        1015 
                                                        +
                                                        1016  do n=1,nval(lun)
                                                        +
                                                        1017  node = inv(n,lun)
                                                        +
                                                        1018  if(itp(node)==1) then
                                                        +
                                                        1019 
                                                        +
                                                        1020  ! The unpacked value is a delayed descriptor replication factor.
                                                        +
                                                        1021 
                                                        +
                                                        1022  val(n,lun) = ival(n)
                                                        +
                                                        1023  elseif(itp(node)==2) then
                                                        +
                                                        1024 
                                                        +
                                                        1025  ! The unpacked value is a real.
                                                        +
                                                        1026 
                                                        +
                                                        1027  if (ival(n)<2_8**ibt(node)-1) then
                                                        +
                                                        1028  val(n,lun) = ups(ival(n),node)
                                                        +
                                                        1029  else
                                                        +
                                                        1030  val(n,lun) = bmiss
                                                        +
                                                        1031  endif
                                                        +
                                                        1032  elseif(itp(node)==3) then
                                                        +
                                                        1033 
                                                        +
                                                        1034  ! The value is a character string, so unpack it using an equivalenced real*8 value. Note that a maximum of 8 characters
                                                        +
                                                        1035  ! will be unpacked here, so a separate subsequent call to subroutine readlc() will be needed to fully unpack any string
                                                        +
                                                        1036  ! longer than 8 characters.
                                                        +
                                                        1037 
                                                        +
                                                        1038  cval = ' '
                                                        +
                                                        1039  kbit = mbit(n)
                                                        +
                                                        1040  nbt = min(8,nbit(n)/8)
                                                        +
                                                        1041  call upc(cval,nbt,mbay(1,lun),kbit,.true.)
                                                        +
                                                        1042  if (nbit(n)<=64 .and. icbfms(cval,nbt)/=0) then
                                                        +
                                                        1043  val(n,lun) = bmiss
                                                        +
                                                        1044  else
                                                        +
                                                        1045  val(n,lun) = rval
                                                        +
                                                        1046  endif
                                                        +
                                                        1047  endif
                                                        +
                                                        1048  enddo
                                                        +
                                                        1049 
                                                        +
                                                        1050  ibit = nbit(nval(lun))+mbit(nval(lun))
                                                        +
                                                        1051 
                                                        +
                                                        1052  return
                                                        +
                                                        1053 end subroutine rdtree
                                                        +
                                                        1054 
                                                        +
                                                        1063 subroutine wrtree(lun)
                                                        +
                                                        1064 
                                                        +
                                                        1065  use moda_usrint
                                                        +
                                                        1066  use moda_ival
                                                        +
                                                        1067  use moda_ufbcpl
                                                        +
                                                        1068  use moda_bitbuf
                                                        +
                                                        1069  use moda_tables
                                                        +
                                                        1070 
                                                        +
                                                        1071  implicit none
                                                        +
                                                        1072 
                                                        +
                                                        1073  integer, intent(in) :: lun
                                                        +
                                                        1074  integer*8 ipks
                                                        +
                                                        1075  integer n, node, ncr, numchr, jj, ibfms
                                                        +
                                                        1076 
                                                        +
                                                        1077  character*120 lstr
                                                        +
                                                        1078  character*8 cval
                                                        +
                                                        1079 
                                                        +
                                                        1080  real*8 rval
                                                        +
                                                        1081 
                                                        +
                                                        1082  equivalence(cval,rval)
                                                        +
                                                        1083 
                                                        +
                                                        1084  ! Convert user numbers into scaled integers
                                                        +
                                                        1085 
                                                        +
                                                        1086  do n=1,nval(lun)
                                                        +
                                                        1087  node = inv(n,lun)
                                                        +
                                                        1088  if(itp(node)==1) then
                                                        +
                                                        1089  ival(n) = nint(val(n,lun))
                                                        +
                                                        1090  elseif(typ(node)=='NUM') then
                                                        +
                                                        1091  if( (ibfms(val(n,lun))==1) .or. (val(n,lun)/=val(n,lun)) ) then
                                                        +
                                                        1092  ! The user number is either "missing" or NaN.
                                                        +
                                                        1093  ival(n) = -1
                                                        +
                                                        1094  else
                                                        +
                                                        1095  ival(n) = ipks(val(n,lun),node)
                                                        +
                                                        1096  endif
                                                        +
                                                        1097  endif
                                                        +
                                                        1098  enddo
                                                        +
                                                        1099 
                                                        +
                                                        1100  ! Pack the user array into the subset buffer
                                                        +
                                                        1101 
                                                        +
                                                        1102  ibit = 16
                                                        +
                                                        1103 
                                                        +
                                                        1104  do n=1,nval(lun)
                                                        +
                                                        1105  node = inv(n,lun)
                                                        +
                                                        1106  if(itp(node)<3) then
                                                        +
                                                        1107  ! The value to be packed is numeric.
                                                        +
                                                        1108  call pkb8(ival(n),ibt(node),ibay,ibit)
                                                        +
                                                        1109  else
                                                        +
                                                        1110  ! The value to be packed is a character string.
                                                        +
                                                        1111  ncr=ibt(node)/8
                                                        +
                                                        1112  if ( ncr>8 .and. luncpy(lun)/=0 ) then
                                                        +
                                                        1113  ! The string is longer than 8 characters and there was a preceeding call to ufbcpy() involving this output unit,
                                                        +
                                                        1114  ! so read the long string with readlc() and then write it into the output buffer using pkc().
                                                        +
                                                        1115  call readlc(luncpy(lun),lstr,tag(node))
                                                        +
                                                        1116  call pkc(lstr,ncr,ibay,ibit)
                                                        +
                                                        1117  else
                                                        +
                                                        1118  rval = val(n,lun)
                                                        +
                                                        1119  if(ibfms(rval)/=0) then
                                                        +
                                                        1120  ! The value is "missing", so set all bits to 1 before packing the field as a character string.
                                                        +
                                                        1121  numchr = min(ncr,len(lstr))
                                                        +
                                                        1122  do jj = 1, numchr
                                                        +
                                                        1123  call ipkm(lstr(jj:jj),1,255)
                                                        +
                                                        1124  enddo
                                                        +
                                                        1125  call pkc(lstr,numchr,ibay,ibit)
                                                        +
                                                        1126  else
                                                        +
                                                        1127  ! The value is not "missing", so pack the equivalenced character string. Note that a maximum of 8 characters
                                                        +
                                                        1128  ! will be packed here, so a separate subsequent call to subroutine writlc() will be needed to fully encode any
                                                        +
                                                        1129  ! string longer than 8 characters.
                                                        +
                                                        1130  call pkc(cval,ncr,ibay,ibit)
                                                        +
                                                        1131  endif
                                                        +
                                                        1132  endif
                                                        +
                                                        1133  endif
                                                        +
                                                        1134  enddo
                                                        +
                                                        1135 
                                                        +
                                                        1136  ! Reset ufbcpy() file pointer
                                                        +
                                                        1137 
                                                        +
                                                        1138  luncpy(lun)=0
                                                        +
                                                        1139 
                                                        +
                                                        1140  return
                                                        +
                                                        1141 end subroutine wrtree
                                                        +
                                                        1142 
                                                        +
                                                        1155 subroutine rcstpl(lun,iret)
                                                        +
                                                        1156 
                                                        +
                                                        1157  use modv_vars, only: bmiss, maxjl, maxss, maxrcr
                                                        +
                                                        1158 
                                                        +
                                                        1159  use moda_usrint
                                                        +
                                                        1160  use moda_usrbit
                                                        +
                                                        1161  use moda_msgcwd
                                                        +
                                                        1162  use moda_bitbuf
                                                        +
                                                        1163  use moda_tables
                                                        +
                                                        1164  use moda_usrtmp
                                                        +
                                                        1165 
                                                        +
                                                        1166  implicit none
                                                        +
                                                        1167 
                                                        +
                                                        1168  character*128 bort_str
                                                        +
                                                        1169 
                                                        +
                                                        1170  integer, intent(in) :: lun
                                                        +
                                                        1171  integer, intent(out) :: iret
                                                        +
                                                        1172  integer nbmp(2,maxrcr), newn(2,maxrcr), knx(maxrcr), iprt, nodi, node, mbmp, knvn, nr, i, j, n, nn, n1, n2, new, &
                                                        +
                                                        1173  idpri, igetrfel
                                                        +
                                                        1174 
                                                        +
                                                        1175  common /quiet/ iprt
                                                        +
                                                        1176 
                                                        +
                                                        1177  iret = 0
                                                        +
                                                        1178 
                                                        +
                                                        1179  ! Set the initial values for the template
                                                        +
                                                        1180 
                                                        +
                                                        1181  inv(1,lun) = inode(lun)
                                                        +
                                                        1182  val(1,lun) = 0
                                                        +
                                                        1183  nbmp(1,1) = 1
                                                        +
                                                        1184  nbmp(2,1) = 1
                                                        +
                                                        1185  nodi = inode(lun)
                                                        +
                                                        1186  node = inode(lun)
                                                        +
                                                        1187  mbmp = 1
                                                        +
                                                        1188  knvn = 1
                                                        +
                                                        1189  nr = 0
                                                        +
                                                        1190 
                                                        +
                                                        1191  do i=1,maxrcr
                                                        +
                                                        1192  knx(i) = 0
                                                        +
                                                        1193  enddo
                                                        +
                                                        1194 
                                                        +
                                                        1195  outer: do while (.true.)
                                                        +
                                                        1196 
                                                        +
                                                        1197  ! Set up the parameters for a level of recursion
                                                        +
                                                        1198 
                                                        +
                                                        1199  nr = nr+1
                                                        +
                                                        1200  if(nr>maxrcr) then
                                                        +
                                                        1201  write(bort_str,'("BUFRLIB: RCSTPL - THE NUMBER OF RECURSION LEVELS EXCEEDS THE LIMIT (",I3,")")') maxrcr
                                                        +
                                                        1202  call bort(bort_str)
                                                        +
                                                        1203  endif
                                                        +
                                                        1204  nbmp(1,nr) = 1
                                                        +
                                                        1205  nbmp(2,nr) = mbmp
                                                        +
                                                        1206 
                                                        +
                                                        1207  n1 = iseq(node,1)
                                                        +
                                                        1208  n2 = iseq(node,2)
                                                        +
                                                        1209  if(n1==0) then
                                                        +
                                                        1210  write(bort_str,'("BUFRLIB: RCSTPL - UNSET EXPANSION SEGMENT ",A)') tag(nodi)
                                                        +
                                                        1211  call bort(bort_str)
                                                        +
                                                        1212  endif
                                                        +
                                                        1213  if(n2-n1+1>maxjl) then
                                                        +
                                                        1214  if(iprt>=0) then
                                                        +
                                                        1215  call errwrt('++++++++++++++BUFR ARCHIVE LIBRARY+++++++++++++++++')
                                                        +
                                                        1216  call errwrt('BUFRLIB: RCSTPL - MAXJL OVERFLOW; SUBSET SKIPPED')
                                                        +
                                                        1217  call errwrt('++++++++++++++BUFR ARCHIVE LIBRARY+++++++++++++++++')
                                                        +
                                                        1218  endif
                                                        +
                                                        1219  iret = -1
                                                        +
                                                        1220  return
                                                        +
                                                        1221  endif
                                                        +
                                                        1222  newn(1,nr) = 1
                                                        +
                                                        1223  newn(2,nr) = n2-n1+1
                                                        +
                                                        1224 
                                                        +
                                                        1225  do n=1,newn(2,nr)
                                                        +
                                                        1226  nn = jseq(n+n1-1)
                                                        +
                                                        1227  iutmp(n,nr) = nn
                                                        +
                                                        1228  vutmp(n,nr) = vali(nn)
                                                        +
                                                        1229  enddo
                                                        +
                                                        1230 
                                                        +
                                                        1231  do while (.true.)
                                                        +
                                                        1232 
                                                        +
                                                        1233  ! Store nodes at some recursion level
                                                        +
                                                        1234 
                                                        +
                                                        1235  do i=nbmp(1,nr),nbmp(2,nr)
                                                        +
                                                        1236  if(knx(nr)==0) knx(nr) = knvn
                                                        +
                                                        1237  if(i>nbmp(1,nr)) newn(1,nr) = 1
                                                        +
                                                        1238  do j=newn(1,nr),newn(2,nr)
                                                        +
                                                        1239  if(knvn+1>maxss) then
                                                        +
                                                        1240  if(iprt>=0) then
                                                        +
                                                        1241  call errwrt('++++++++++++++BUFR ARCHIVE LIBRARY+++++++++++++++++')
                                                        +
                                                        1242  call errwrt('BUFRLIB: RCSTPL - MAXSS OVERFLOW; SUBSET SKIPPED')
                                                        +
                                                        1243  call errwrt('++++++++++++++BUFR ARCHIVE LIBRARY+++++++++++++++++')
                                                        +
                                                        1244  endif
                                                        +
                                                        1245  iret = -1
                                                        +
                                                        1246  return
                                                        +
                                                        1247  endif
                                                        +
                                                        1248  knvn = knvn+1
                                                        +
                                                        1249  node = iutmp(j,nr)
                                                        +
                                                        1250  ! inv is positional index in internal jump/link table for packed subset element knvn in mbay
                                                        +
                                                        1251  inv(knvn,lun) = node
                                                        +
                                                        1252  ! mbit is the bit in mbay pointing to where the packed subset element knvn begins
                                                        +
                                                        1253  mbit(knvn) = mbit(knvn-1)+nbit(knvn-1)
                                                        +
                                                        1254  ! nbit is the number of bits in mbay occupied by packed subset element knvn
                                                        +
                                                        1255  nrfelm(knvn,lun) = igetrfel(knvn,lun)
                                                        +
                                                        1256  nbit(knvn) = ibt(node)
                                                        +
                                                        1257  if(tag(node)(1:5)=='DPRI ') then
                                                        +
                                                        1258  ! This is a bitmap entry, so get and store the corresponding value
                                                        +
                                                        1259  call upbb(idpri,nbit(knvn),mbit(knvn),mbay(1,lun))
                                                        +
                                                        1260  if(idpri==0) then
                                                        +
                                                        1261  val(knvn,lun) = 0.0
                                                        +
                                                        1262  else
                                                        +
                                                        1263  val(knvn,lun) = bmiss
                                                        +
                                                        1264  endif
                                                        +
                                                        1265  call strbtm(knvn,lun)
                                                        +
                                                        1266  endif
                                                        +
                                                        1267  ! Actual unpacked subset values are initialized here
                                                        +
                                                        1268  val(knvn,lun) = vutmp(j,nr)
                                                        +
                                                        1269  if(itp(node)==1) then
                                                        +
                                                        1270  call upbb(mbmp,nbit(knvn),mbit(knvn),mbay(1,lun))
                                                        +
                                                        1271  newn(1,nr) = j+1
                                                        +
                                                        1272  nbmp(1,nr) = i
                                                        +
                                                        1273  cycle outer
                                                        +
                                                        1274  endif
                                                        +
                                                        1275  enddo
                                                        +
                                                        1276  new = knvn-knx(nr)
                                                        +
                                                        1277  val(knx(nr)+1,lun) = val(knx(nr)+1,lun) + new
                                                        +
                                                        1278  knx(nr) = 0
                                                        +
                                                        1279  enddo
                                                        +
                                                        1280 
                                                        +
                                                        1281  ! Check if we need to continue one recursion level back
                                                        +
                                                        1282 
                                                        +
                                                        1283  if(nr-1 == 0) exit outer
                                                        +
                                                        1284  nr = nr-1
                                                        +
                                                        1285  enddo
                                                        +
                                                        1286 
                                                        +
                                                        1287  enddo outer
                                                        +
                                                        1288 
                                                        +
                                                        1289  ! Finally store the length of (i.e. the number of elements in) the subset template
                                                        +
                                                        1290 
                                                        +
                                                        1291  nval(lun) = knvn
                                                        +
                                                        1292 
                                                        +
                                                        1293  return
                                                        +
                                                        1294 end subroutine rcstpl
                                                        +
                                                        1295 
                                                        +
                                                        1306 subroutine usrtpl(lun,invn,nbmp)
                                                        +
                                                        1307 
                                                        +
                                                        1308  use modv_vars, only: maxjl, maxss
                                                        +
                                                        1309 
                                                        +
                                                        1310  use moda_usrint
                                                        +
                                                        1311  use moda_msgcwd
                                                        +
                                                        1312  use moda_tables
                                                        +
                                                        1313  use moda_ivttmp
                                                        +
                                                        1314  use moda_stcode
                                                        +
                                                        1315 
                                                        +
                                                        1316  implicit none
                                                        +
                                                        1317 
                                                        +
                                                        1318  integer, intent(in) :: lun, invn, nbmp
                                                        +
                                                        1319  integer iprt, i, j, ival, jval, n, n1, n2, nodi, node, newn, invr, knvn
                                                        +
                                                        1320 
                                                        +
                                                        1321  character*128 bort_str, errstr
                                                        +
                                                        1322 
                                                        +
                                                        1323  logical drp, drs, drb, drx
                                                        +
                                                        1324 
                                                        +
                                                        1325  common /quiet/ iprt
                                                        +
                                                        1326 
                                                        +
                                                        1327  if(iprt>=2) then
                                                        +
                                                        1328  call errwrt('++++++++++++++BUFR ARCHIVE LIBRARY+++++++++++++++++')
                                                        +
                                                        1329  write ( unit=errstr, fmt='(A,I3,A,I7,A,I5,A,A10)' ) &
                                                        +
                                                        1330  'BUFRLIB: USRTPL - LUN:INVN:NBMP:TAG(INODE(LUN)) = ', lun, ':', invn, ':', nbmp, ':', tag(inode(lun))
                                                        +
                                                        1331  call errwrt(errstr)
                                                        +
                                                        1332  call errwrt('++++++++++++++BUFR ARCHIVE LIBRARY+++++++++++++++++')
                                                        +
                                                        1333  call errwrt(' ')
                                                        +
                                                        1334  endif
                                                        +
                                                        1335 
                                                        +
                                                        1336  if(nbmp<=0) then
                                                        +
                                                        1337  if(iprt>=1) then
                                                        +
                                                        1338  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        1339  call errwrt(.LE.'BUFRLIB: USRTPL - NBMP 0 - IMMEDIATE RETURN')
                                                        +
                                                        1340  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        1341  call errwrt(' ')
                                                        +
                                                        1342  endif
                                                        +
                                                        1343  return
                                                        +
                                                        1344  endif
                                                        +
                                                        1345 
                                                        +
                                                        1346  drp = .false.
                                                        +
                                                        1347  drs = .false.
                                                        +
                                                        1348  drx = .false.
                                                        +
                                                        1349 
                                                        +
                                                        1350  ! Set up a node expansion
                                                        +
                                                        1351 
                                                        +
                                                        1352  if(invn==1) then
                                                        +
                                                        1353  ! The node is a Table A mnemonic
                                                        +
                                                        1354  nodi = inode(lun)
                                                        +
                                                        1355  inv(1,lun) = nodi
                                                        +
                                                        1356  nval(lun) = 1
                                                        +
                                                        1357  if(nbmp/=1) then
                                                        +
                                                        1358  write(bort_str,'("BUFRLIB: USRTPL - THIRD ARGUMENT (INPUT) = ",'// &
                                                        +
                                                        1359  'I4,", MUST BE 1 WHEN SECOND ARGUMENT (INPUT) IS 1 (SUBSET NODE) (",A,")")') nbmp, tag(nodi)
                                                        +
                                                        1360  call bort(bort_str)
                                                        +
                                                        1361  endif
                                                        +
                                                        1362  elseif(invn>0 .and. invn<=nval(lun)) then
                                                        +
                                                        1363  ! The node is (hopefully) a delayed replication factor
                                                        +
                                                        1364  nodi = inv(invn,lun)
                                                        +
                                                        1365  drp = typ(nodi) == 'DRP'
                                                        +
                                                        1366  drs = typ(nodi) == 'DRS'
                                                        +
                                                        1367  drb = typ(nodi) == 'DRB'
                                                        +
                                                        1368  drx = drp .or. drs .or. drb
                                                        +
                                                        1369  ival = nint(val(invn,lun))
                                                        +
                                                        1370  jval = 2**ibt(nodi)-1
                                                        +
                                                        1371  val(invn,lun) = ival+nbmp
                                                        +
                                                        1372  if(drb.and.nbmp/=1) then
                                                        +
                                                        1373  write(bort_str,'("BUFRLIB: USRTPL - THIRD ARGUMENT (INPUT) = ",'// &
                                                        +
                                                        1374  'I4,", MUST BE 1 WHEN NODE IS DRB (1-BIT DELAYED REPL. FACTOR) (",A,")")') nbmp, tag(nodi)
                                                        +
                                                        1375  call bort(bort_str)
                                                        +
                                                        1376  endif
                                                        +
                                                        1377  if(.not.drx) then
                                                        +
                                                        1378  write(bort_str,'("BUFRLIB: USRTPL - NODE IS OF TYPE ",A," - IT '// &
                                                        +
                                                        1379  'MUST BE EITHER A SUBSET OR DELAYED REPL. FACTOR (",A,")")') typ(nodi), tag(nodi)
                                                        +
                                                        1380  call bort(bort_str)
                                                        +
                                                        1381  endif
                                                        +
                                                        1382  if(ival<0) then
                                                        +
                                                        1383  write(bort_str,'("BUFRLIB: USRTPL - REPLICATION FACTOR IS NEGATIVE (=",I5,") (",A,")")') ival, tag(nodi)
                                                        +
                                                        1384  call bort(bort_str)
                                                        +
                                                        1385  endif
                                                        +
                                                        1386  if(ival+nbmp>jval) then
                                                        +
                                                        1387  write(bort_str,'("BUFRLIB: USRTPL - REPLICATION FACTOR OVERFLOW (EXCEEDS MAXIMUM OF",I6," (",A,")")') jval, tag(nodi)
                                                        +
                                                        1388  call errwrt(bort_str)
                                                        +
                                                        1389  iscodes(lun) = 1
                                                        +
                                                        1390  return
                                                        +
                                                        1391  endif
                                                        +
                                                        1392  else
                                                        +
                                                        1393  write(bort_str,'("BUFRLIB: USRTPL - INVENTORY INDEX {FIRST '// &
                                                        +
                                                        1394  'ARGUMENT (INPUT)} OUT OF BOUNDS (=",I5,", RANGE IS 1 TO",I6,") ")') invn, nval(lun)
                                                        +
                                                        1395  call bort(bort_str)
                                                        +
                                                        1396  endif
                                                        +
                                                        1397 
                                                        +
                                                        1398  ! Recall a pre-fab node expansion segment
                                                        +
                                                        1399 
                                                        +
                                                        1400  newn = 0
                                                        +
                                                        1401  n1 = iseq(nodi,1)
                                                        +
                                                        1402  n2 = iseq(nodi,2)
                                                        +
                                                        1403 
                                                        +
                                                        1404  if(n1==0) then
                                                        +
                                                        1405  write(bort_str,'("BUFRLIB: USRTPL - UNSET EXPANSION SEGMENT (",A,")")') tag(nodi)
                                                        +
                                                        1406  call bort(bort_str)
                                                        +
                                                        1407  endif
                                                        +
                                                        1408  if(n2-n1+1>maxjl) then
                                                        +
                                                        1409  write(bort_str,'("BUFRLIB: USRTPL - TEMPLATE ARRAY OVERFLOW, EXCEEDS THE LIMIT (",I6,") (",A,")")') maxjl, tag(nodi)
                                                        +
                                                        1410  call bort(bort_str)
                                                        +
                                                        1411  endif
                                                        +
                                                        1412 
                                                        +
                                                        1413  do n=n1,n2
                                                        +
                                                        1414  newn = newn+1
                                                        +
                                                        1415  itmp(newn) = jseq(n)
                                                        +
                                                        1416  vtmp(newn) = vali(jseq(n))
                                                        +
                                                        1417  enddo
                                                        +
                                                        1418 
                                                        +
                                                        1419  ! Move old nodes and store new ones
                                                        +
                                                        1420 
                                                        +
                                                        1421  if(nval(lun)+newn*nbmp>maxss) then
                                                        +
                                                        1422  write(bort_str,'("BUFRLIB: USRTPL - INVENTORY OVERFLOW (",I6,"), EXCEEDS THE LIMIT (",I6,") (",A,")")') &
                                                        +
                                                        1423  nval(lun)+newn*nbmp, maxss, tag(nodi)
                                                        +
                                                        1424  call bort(bort_str)
                                                        +
                                                        1425  endif
                                                        +
                                                        1426 
                                                        +
                                                        1427  do j=nval(lun),invn+1,-1
                                                        +
                                                        1428  inv(j+newn*nbmp,lun) = inv(j,lun)
                                                        +
                                                        1429  val(j+newn*nbmp,lun) = val(j,lun)
                                                        +
                                                        1430  enddo
                                                        +
                                                        1431 
                                                        +
                                                        1432  if(drp.or.drs) vtmp(1) = newn
                                                        +
                                                        1433  knvn = invn
                                                        +
                                                        1434 
                                                        +
                                                        1435  do i=1,nbmp
                                                        +
                                                        1436  do j=1,newn
                                                        +
                                                        1437  knvn = knvn+1
                                                        +
                                                        1438  inv(knvn,lun) = itmp(j)
                                                        +
                                                        1439  val(knvn,lun) = vtmp(j)
                                                        +
                                                        1440  enddo
                                                        +
                                                        1441  enddo
                                                        +
                                                        1442 
                                                        +
                                                        1443  ! Reset pointers and counters
                                                        +
                                                        1444 
                                                        +
                                                        1445  nval(lun) = nval(lun) + newn*nbmp
                                                        +
                                                        1446 
                                                        +
                                                        1447  if(iprt>=2) then
                                                        +
                                                        1448  call errwrt('++++++++++++++BUFR ARCHIVE LIBRARY+++++++++++++++++')
                                                        +
                                                        1449  write ( unit=errstr, fmt='(A,A,A10,2(A,I5),A,I7)' ) 'BUFRLIB: USRTPL - TAG(INV(INVN,LUN)):NEWN:NBMP:', &
                                                        +
                                                        1450  'NVAL(LUN) = ', tag(inv(invn,lun)), ':', newn, ':', nbmp, ':', nval(lun)
                                                        +
                                                        1451  call errwrt(errstr)
                                                        +
                                                        1452  do i=1,newn
                                                        +
                                                        1453  write ( unit=errstr, fmt='(2(A,I5),A,A10)' ) 'For I = ', i, ', ITMP(I) = ', itmp(i), ', TAG(ITMP(I)) = ', tag(itmp(i))
                                                        +
                                                        1454  call errwrt(errstr)
                                                        +
                                                        1455  enddo
                                                        +
                                                        1456  call errwrt('++++++++++++++BUFR ARCHIVE LIBRARY+++++++++++++++++')
                                                        +
                                                        1457  call errwrt(' ')
                                                        +
                                                        1458  endif
                                                        +
                                                        1459 
                                                        +
                                                        1460  if(drx) then
                                                        +
                                                        1461  node = nodi
                                                        +
                                                        1462  invr = invn
                                                        +
                                                        1463  outer: do while (.true.)
                                                        +
                                                        1464  node = jmpb(node)
                                                        +
                                                        1465  if(node<=0) exit
                                                        +
                                                        1466  if(itp(node)==0) then
                                                        +
                                                        1467  do invr=invr-1,1,-1
                                                        +
                                                        1468  if(inv(invr,lun)==node) then
                                                        +
                                                        1469  val(invr,lun) = val(invr,lun)+newn*nbmp
                                                        +
                                                        1470  cycle outer
                                                        +
                                                        1471  endif
                                                        +
                                                        1472  enddo
                                                        +
                                                        1473  write(bort_str,'("BUFRLIB: USRTPL - BAD BACKUP STRATEGY (",A,")")') tag(nodi)
                                                        +
                                                        1474  call bort(bort_str)
                                                        +
                                                        1475  else
                                                        +
                                                        1476  cycle
                                                        +
                                                        1477  endif
                                                        +
                                                        1478  enddo outer
                                                        +
                                                        1479  endif
                                                        +
                                                        1480 
                                                        +
                                                        1481  return
                                                        +
                                                        1482 end subroutine usrtpl
                                                        +
                                                        1483 
                                                        +
                                                        1497 recursive subroutine invmrg(lubfi,lubfj)
                                                        +
                                                        1498 
                                                        +
                                                        1499  use modv_vars, only: im8b
                                                        +
                                                        1500 
                                                        +
                                                        1501  use moda_usrint
                                                        +
                                                        1502  use moda_tables
                                                        +
                                                        1503 
                                                        +
                                                        1504  implicit none
                                                        +
                                                        1505 
                                                        +
                                                        1506  integer, intent(in) :: lubfi, lubfj
                                                        +
                                                        1507  integer nrpl, nmrg, namb, ntot, my_lubfi, my_lubfj, luni, il, im, lunj, jl, jm, is, js, node, nodj, ityp, iwrds, jwrds, &
                                                        +
                                                        1508  n, ioff, nwords, ibfms
                                                        +
                                                        1509 
                                                        +
                                                        1510  character*128 bort_str
                                                        +
                                                        1511 
                                                        +
                                                        1512  logical herei, herej, missi, missj, samei
                                                        +
                                                        1513 
                                                        +
                                                        1514  common /mrgcom/ nrpl, nmrg, namb, ntot
                                                        +
                                                        1515 
                                                        +
                                                        1516  ! Check for I8 integers
                                                        +
                                                        1517 
                                                        +
                                                        1518  if(im8b) then
                                                        +
                                                        1519  im8b=.false.
                                                        +
                                                        1520  call x84(lubfi,my_lubfi,1)
                                                        +
                                                        1521  call x84(lubfj,my_lubfj,1)
                                                        +
                                                        1522  call invmrg(my_lubfi,my_lubfj)
                                                        +
                                                        1523  im8b=.true.
                                                        +
                                                        1524  return
                                                        +
                                                        1525  endif
                                                        +
                                                        1526 
                                                        +
                                                        1527  is = 1
                                                        +
                                                        1528  js = 1
                                                        +
                                                        1529 
                                                        +
                                                        1530  ! Get the unit pointers
                                                        +
                                                        1531 
                                                        +
                                                        1532  call status(lubfi,luni,il,im)
                                                        +
                                                        1533  call status(lubfj,lunj,jl,jm)
                                                        +
                                                        1534 
                                                        +
                                                        1535  ! Step through the buffers comparing the inventory and merging data
                                                        +
                                                        1536 
                                                        +
                                                        1537  do while(is<=nval(luni))
                                                        +
                                                        1538  ! Confirm we're at the same node in each buffer
                                                        +
                                                        1539  node = inv(is,luni)
                                                        +
                                                        1540  nodj = inv(js,lunj)
                                                        +
                                                        1541  if(node/=nodj) then
                                                        +
                                                        1542  write(bort_str,'("BUFRLIB: INVMRG - NODE FROM INPUT BUFR FILE '// &
                                                        +
                                                        1543  '(",I7,") DOES NOT EQUAL NODE FROM OUTPUT BUFR FILE (",I7,"), TABULAR MISMATCH")') node, nodj
                                                        +
                                                        1544  call bort(bort_str)
                                                        +
                                                        1545  endif
                                                        +
                                                        1546 
                                                        +
                                                        1547  ityp = itp(node)
                                                        +
                                                        1548  if(ityp==1) then
                                                        +
                                                        1549  ! Do an entire sequence replacement
                                                        +
                                                        1550  if(typ(node)=='DRB') then
                                                        +
                                                        1551  ioff = 0
                                                        +
                                                        1552  else
                                                        +
                                                        1553  ioff = 1
                                                        +
                                                        1554  endif
                                                        +
                                                        1555  iwrds = nwords(is,luni)+ioff
                                                        +
                                                        1556  jwrds = nwords(js,lunj)+ioff
                                                        +
                                                        1557  if(iwrds>ioff .and. jwrds==ioff) then
                                                        +
                                                        1558  do n=nval(lunj),js+1,-1
                                                        +
                                                        1559  inv(n+iwrds-jwrds,lunj) = inv(n,lunj)
                                                        +
                                                        1560  val(n+iwrds-jwrds,lunj) = val(n,lunj)
                                                        +
                                                        1561  enddo
                                                        +
                                                        1562  do n=0,iwrds
                                                        +
                                                        1563  inv(js+n,lunj) = inv(is+n,luni)
                                                        +
                                                        1564  val(js+n,lunj) = val(is+n,luni)
                                                        +
                                                        1565  enddo
                                                        +
                                                        1566  nval(lunj) = nval(lunj)+iwrds-jwrds
                                                        +
                                                        1567  jwrds = iwrds
                                                        +
                                                        1568  nrpl = nrpl+1
                                                        +
                                                        1569  endif
                                                        +
                                                        1570  is = is+iwrds
                                                        +
                                                        1571  js = js+jwrds
                                                        +
                                                        1572  elseif((ityp==2).or.(ityp==3)) then
                                                        +
                                                        1573  ! Fill missing values
                                                        +
                                                        1574  herei = ibfms(val(is,luni))==0
                                                        +
                                                        1575  herej = ibfms(val(js,lunj))==0
                                                        +
                                                        1576  missi = .not.(herei)
                                                        +
                                                        1577  missj = .not.(herej)
                                                        +
                                                        1578  samei = val(is,luni)==val(js,lunj)
                                                        +
                                                        1579  if(herei.and.missj) then
                                                        +
                                                        1580  val(js,lunj) = val(is,luni)
                                                        +
                                                        1581  nmrg = nmrg+1
                                                        +
                                                        1582  elseif(herei.and.herej.and..not.samei) then
                                                        +
                                                        1583  namb = namb+1
                                                        +
                                                        1584  endif
                                                        +
                                                        1585  endif
                                                        +
                                                        1586 
                                                        +
                                                        1587  ! Bump the counters and go check the next pair
                                                        +
                                                        1588  is = is + 1
                                                        +
                                                        1589  js = js + 1
                                                        +
                                                        1590  enddo
                                                        +
                                                        1591 
                                                        +
                                                        1592  ntot = ntot+1
                                                        +
                                                        1593 
                                                        +
                                                        1594  return
                                                        +
                                                        1595 end subroutine invmrg
                                                        +
                                                        1596 
                                                        +
                                                        1605 integer function nwords(n,lun) result(iret)
                                                        +
                                                        1606 
                                                        +
                                                        1607  use moda_usrint
                                                        +
                                                        1608 
                                                        +
                                                        1609  implicit none
                                                        +
                                                        1610 
                                                        +
                                                        1611  integer, intent(in) :: n, lun
                                                        +
                                                        1612  integer k
                                                        +
                                                        1613 
                                                        +
                                                        1614  iret = 0
                                                        +
                                                        1615 
                                                        +
                                                        1616  do k=1,nint(val(n,lun))
                                                        +
                                                        1617  iret = iret + nint(val(iret+n+1,lun))
                                                        +
                                                        1618  enddo
                                                        +
                                                        1619 
                                                        +
                                                        1620  return
                                                        +
                                                        1621 end function nwords
                                                        +
                                                        subroutine strbtm(n, lun)
                                                        Store internal information in module moda_bitmaps if the input element is part of a bitmap.
                                                        Definition: bitmaps.F90:13
                                                        +
                                                        subroutine bort(str)
                                                        Log an error message, then abort the application program.
                                                        Definition: borts.F90:15
                                                        +
                                                        subroutine upb(nval, nbits, ibay, ibit)
                                                        Decode an integer value from within a specified number of bits of an integer array,...
                                                        Definition: cidecode.F90:202
                                                        +
                                                        subroutine upbb(nval, nbits, ibit, ibay)
                                                        Decode an integer value from within a specified number of bits of an integer array,...
                                                        Definition: cidecode.F90:154
                                                        +
                                                        subroutine upb8(nval, nbits, ibit, ibay)
                                                        Decode an 8-byte integer value from within a specified number of bits of an integer array,...
                                                        Definition: cidecode.F90:80
                                                        +
                                                        real *8 function ups(ival, node)
                                                        Unpack a real*8 value from an integer by applying the proper scale and reference values.
                                                        Definition: cidecode.F90:319
                                                        +
                                                        subroutine upc(chr, nchr, ibay, ibit, cnvnull)
                                                        Decode a character string from within a specified number of bytes of an integer array,...
                                                        Definition: cidecode.F90:26
                                                        +
                                                        subroutine pkc(chr, nchr, ibay, ibit)
                                                        Encode a character string within a specified number of bytes of an integer array, starting at the bit...
                                                        Definition: ciencode.F90:25
                                                        +
                                                        recursive subroutine ipkm(cbay, nbyt, n)
                                                        Encode an integer value within a specified number of bytes of a character string, up to a maximum of ...
                                                        Definition: ciencode.F90:194
                                                        +
                                                        subroutine pkb(nval, nbits, ibay, ibit)
                                                        Encode an integer value within a specified number of bits of an integer array, starting at the bit im...
                                                        Definition: ciencode.F90:140
                                                        +
                                                        subroutine pkb8(nval, nbits, ibay, ibit)
                                                        Encode an 8-byte integer value within a specified number of bits of an integer array,...
                                                        Definition: ciencode.F90:97
                                                        +
                                                        subroutine rdcmps(lun)
                                                        Read the next compressed BUFR data subset into internal arrays.
                                                        Definition: compress.F90:110
                                                        +
                                                        subroutine wrcmps(lunix)
                                                        Write a compressed BUFR data subset.
                                                        Definition: compress.F90:387
                                                        +
                                                        subroutine mvb(ib1, nb1, ib2, nb2, nbm)
                                                        Copy a specified number of bytes from one packed binary array to another.
                                                        Definition: copydata.F90:731
                                                        +
                                                        subroutine nemtba(lun, nemo, mtyp, msbt, inod)
                                                        Get information about a Table A descriptor from the internal DX BUFR tables.
                                                        Definition: dxtable.F90:1247
                                                        +
                                                        subroutine errwrt(str)
                                                        Specify a custom location for the logging of error and diagnostic messages generated by the NCEPLIBS-...
                                                        Definition: errwrt.F90:32
                                                        + +
                                                        integer function ibfms(r8val)
                                                        Check whether a real*8 data value returned from a previous call to any of the NCEPLIBS-bufr values-re...
                                                        Definition: missing.F90:25
                                                        +
                                                        Wrap C NCEPLIBS-bufr functions so they can be called from within the Fortran part of the library.
                                                        Definition: bufrlib.F90:11
                                                        +
                                                        Declare arrays and variables used to store BUFR messages internally for multiple file IDs.
                                                        +
                                                        integer, dimension(:), allocatable ibay
                                                        Current data subset.
                                                        +
                                                        integer ibit
                                                        Bit pointer within ibay.
                                                        +
                                                        integer, dimension(:,:), allocatable mbay
                                                        Current BUFR message for each file ID.
                                                        +
                                                        integer, dimension(:), allocatable mbyt
                                                        Length (in bytes) of current BUFR message for each file ID.
                                                        +
                                                        integer maxbyt
                                                        Maximum length of an output BUFR message.
                                                        +
                                                        Declare arrays and variables used to store bitmaps internally within a data subset definition.
                                                        +
                                                        integer lstnod
                                                        Most recent jump/link table entry that was processed by function igetrfel() and whose corresponding v...
                                                        +
                                                        integer nbtm
                                                        Number of stored bitmaps for the current data subset (up to a maximum of mxbtm).
                                                        +
                                                        integer lstnodct
                                                        Current count of consecutive occurrences of lstnod.
                                                        +
                                                        logical linbtm
                                                        true if a bitmap is in the process of being read for the current data subset; false otherwise.
                                                        +
                                                        Declare arrays used to store, for each output file ID, a copy of the BUFR message that was most recen...
                                                        +
                                                        integer, dimension(:), allocatable msglen
                                                        Length (in integers) of BUFR message most recently written to each output file ID.
                                                        +
                                                        integer, dimension(:,:), allocatable msgtxt
                                                        BUFR message most recently written to each output file ID.
                                                        +
                                                        Declare arrays and variables needed to store long character strings (greater than 8 bytes) via subrou...
                                                        +
                                                        integer nh4wlc
                                                        Number of long character strings being stored.
                                                        +
                                                        character *14, dimension(:), allocatable sth4wlc
                                                        Table B mnemonics associated with long character strings.
                                                        +
                                                        integer, dimension(:), allocatable luh4wlc
                                                        File ID for associated output file.
                                                        +
                                                        character *120, dimension(:), allocatable chh4wlc
                                                        Long character strings.
                                                        +
                                                        Declare an array used to pack or unpack all of the values of a BUFR data subset.
                                                        +
                                                        integer *8, dimension(:), allocatable ival
                                                        BUFR data subset values.
                                                        +
                                                        Declare arrays which provide working space in several subprograms (usrtpl() and ufbcup()) which manip...
                                                        +
                                                        real *8, dimension(:), allocatable vtmp
                                                        val array elements for new sections of a growing subset buffer.
                                                        +
                                                        integer, dimension(:), allocatable itmp
                                                        inv array elements for new sections of a growing subset buffer.
                                                        +
                                                        Declare a variable used to indicate whether output BUFR messages should be compressed.
                                                        +
                                                        character ccmf
                                                        Flag indicating whether BUFR output messages are to be compressed; this variable is initialized to a ...
                                                        +
                                                        Declare arrays used to store information about the current BUFR message that is in the process of bei...
                                                        +
                                                        integer, dimension(:), allocatable inode
                                                        Table A mnemonic for type of BUFR message.
                                                        +
                                                        integer, dimension(:), allocatable idate
                                                        Section 1 date-time of message.
                                                        +
                                                        integer, dimension(:), allocatable nmsg
                                                        Current message pointer within logical unit.
                                                        +
                                                        integer, dimension(:), allocatable msub
                                                        Total number of data subsets in message.
                                                        +
                                                        integer, dimension(:), allocatable nsub
                                                        Current subset pointer within message.
                                                        +
                                                        Declare an array used to store a status code for each file ID if an error or other abnormal result oc...
                                                        +
                                                        integer, dimension(:), allocatable iscodes
                                                        Abnormal status codes.
                                                        +
                                                        Declare arrays and variables used to store the internal jump/link table.
                                                        +
                                                        integer, dimension(:), allocatable jseq
                                                        Temporary storage used in expanding sequences.
                                                        +
                                                        integer, dimension(:,:), allocatable iseq
                                                        Temporary storage used in expanding sequences.
                                                        +
                                                        integer, dimension(:), allocatable isc
                                                        Scale factors corresponding to tag and typ:
                                                        +
                                                        integer, dimension(:), allocatable ibt
                                                        Bit widths corresponding to tag and typ:
                                                        +
                                                        real *8, dimension(:), allocatable vali
                                                        Initialized data values corresponding to typ:
                                                        +
                                                        character *3, dimension(:), allocatable typ
                                                        Type indicators corresponding to tag:
                                                        +
                                                        integer, dimension(:), allocatable jmpb
                                                        Jump backward indices corresponding to tag and typ:
                                                        +
                                                        character *10, dimension(:), allocatable tag
                                                        Mnemonics in the jump/link table.
                                                        +
                                                        integer, dimension(:), allocatable itp
                                                        Integer type values corresponding to typ:
                                                        +
                                                        Declare an array used to store, for each file ID, the logical unit number corresponding to a separate...
                                                        +
                                                        integer, dimension(:), allocatable luncpy
                                                        Logical unit numbers used to copy long character strings between BUFR data subsets.
                                                        +
                                                        Declare an array used to store, for each file ID from which a BUFR message is currently being read as...
                                                        +
                                                        integer, dimension(:), allocatable msgunp
                                                        Flag indicating how to unpack data subsets from BUFR message:
                                                        +
                                                        Declare arrays for internal storage of pointers to BUFR data subset values.
                                                        +
                                                        integer, dimension(:), allocatable nbit
                                                        Length (in bits) of each packed data value in data subset.
                                                        +
                                                        integer, dimension(:), allocatable mbit
                                                        Pointer in data subset to first bit of each packed data value.
                                                        +
                                                        Declare arrays used to store data values and associated metadata for the current BUFR data subset in ...
                                                        +
                                                        integer, dimension(:), allocatable nval
                                                        Number of data values in BUFR data subset.
                                                        +
                                                        real *8, dimension(:,:), allocatable, target val
                                                        Data values.
                                                        +
                                                        integer, dimension(:,:), allocatable, target inv
                                                        Inventory pointer which links each data value to its corresponding node in the internal jump/link tab...
                                                        +
                                                        integer, dimension(:,:), allocatable nrfelm
                                                        Referenced data value, for data values which refer to a previous data value in the BUFR data subset v...
                                                        +
                                                        Declare arrays used in subroutine rcstpl() to store subset segments that are being copied from a subs...
                                                        +
                                                        integer, dimension(:,:), allocatable iutmp
                                                        inv array elements for new sections of a growing subset buffer.
                                                        +
                                                        real *8, dimension(:,:), allocatable vutmp
                                                        val array elements for new sections of a growing subset buffer.
                                                        +
                                                        recursive subroutine openbf(lunit, io, lundx)
                                                        Connect a new file to the NCEPLIBS-bufr software for input or output operations, or initialize the li...
                                                        +
                                                        recursive subroutine ufbcnt(lunit, kmsg, ksub)
                                                        Get the current location of the file pointer within a BUFR file, in terms of a message number countin...
                                                        +
                                                        recursive subroutine status(lunit, lun, il, im)
                                                        Check whether a specified Fortran logical unit number is currently connected to the NCEPLIBS-bufr sof...
                                                        +
                                                        recursive subroutine closmg(lunin)
                                                        Close the BUFR message that is currently open for writing within internal arrays associated with logi...
                                                        +
                                                        recursive subroutine readmg(lunxx, subset, jdate, iret)
                                                        Read the next BUFR message from logical unit abs(lunxx) into internal arrays.
                                                        Definition: readwritemg.F90:44
                                                        +
                                                        subroutine msgini(lun)
                                                        Initialize, within the internal arrays, a new uncompressed BUFR message for output.
                                                        +
                                                        subroutine msgwrt(lunit, mesg, mgbyt)
                                                        Perform final checks and updates on a BUFR message before writing it to a specified Fortran logical u...
                                                        +
                                                        recursive subroutine ufbpos(lunit, irec, isub, subset, jdate)
                                                        Jump forwards or backwards to a specified data subset within a BUFR file.
                                                        +
                                                        subroutine pad(ibay, ibit, ibyt, ipadb)
                                                        Pad a BUFR data subset with zeroed-out bits up to the next byte boundary.
                                                        +
                                                        subroutine rdtree(lun, iret)
                                                        Read the next uncompressed BUFR data subset into internal arrays.
                                                        +
                                                        subroutine wrtree(lun)
                                                        Pack a BUFR data subset.
                                                        +
                                                        subroutine msgupd(lunit, lun)
                                                        Write an uncompressed BUFR data subset.
                                                        +
                                                        subroutine usrtpl(lun, invn, nbmp)
                                                        Expand a subset template within internal arrays.
                                                        +
                                                        recursive subroutine writsa(lunxx, lmsgt, msgt, msgl)
                                                        Write a complete data subset into a BUFR message, and return each completed message within a memory a...
                                                        +
                                                        recursive integer function ireadns(lunit, subset, idate)
                                                        Call subroutine readns() and pass back its return code as the function value.
                                                        +
                                                        integer function nwords(n, lun)
                                                        Compute the length of a specified delayed replication sequence within a data subset.
                                                        +
                                                        recursive subroutine writsb(lunit)
                                                        Write a complete data subset into a BUFR message, for eventual output to logical unit lunit.
                                                        +
                                                        recursive subroutine invmrg(lubfi, lubfj)
                                                        Merge parts of data subsets which have duplicate space and time coordinates but different or unique o...
                                                        +
                                                        recursive integer function ireadsb(lunit)
                                                        Call subroutine readsb() and pass back its return code as the function value.
                                                        +
                                                        recursive subroutine readsb(lunit, iret)
                                                        Read the next data subset from a BUFR message.
                                                        Definition: readwritesb.F90:32
                                                        +
                                                        subroutine rcstpl(lun, iret)
                                                        Initialize a subset template within internal arrays.
                                                        +
                                                        recursive integer function lcmgdf(lunit, subset)
                                                        Check whether the subset definition for a given message type contains any long character strings (gre...
                                                        +
                                                        recursive subroutine rdmgsb(lunit, imsg, isub)
                                                        Read a specified data subset from a BUFR file.
                                                        +
                                                        recursive subroutine readns(lunit, subset, jdate, iret)
                                                        Read the next data subset from a BUFR file.
                                                        +
                                                        recursive subroutine readlc(lunit, chr, str)
                                                        Read a long character string (greater than 8 bytes) from a data subset.
                                                        +
                                                        recursive subroutine writlc(lunit, chr, str)
                                                        Write a long character string (greater than 8 bytes) to a data subset.
                                                        +
                                                        subroutine x48(iin4, iout8, nval)
                                                        Encode one or more 4-byte integer values as 8-byte integer values.
                                                        Definition: x4884.F90:18
                                                        +
                                                        subroutine x84(iin8, iout4, nval)
                                                        Encode one or more 8-byte integer values as 4-byte integer values.
                                                        Definition: x4884.F90:65
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/readwriteval_8F90.html b/previous_versions/v12.1.0/readwriteval_8F90.html new file mode 100644 index 000000000..1fc4b5004 --- /dev/null +++ b/previous_versions/v12.1.0/readwriteval_8F90.html @@ -0,0 +1,1753 @@ + + + + + + + +NCEPLIBS-bufr: readwriteval.F90 File Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        readwriteval.F90 File Reference
                                                        +
                                                        +
                                                        + +

                                                        Read or write data values within a BUFR data subset. +More...

                                                        + +

                                                        Go to the source code of this file.

                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                                                        +Functions/Subroutines

                                                        recursive subroutine drfini (lunit, mdrf, ndrf, drftag)
                                                         Explicitly initialize delayed replication factors and allocate a corresponding amount of space within internal arrays, thereby allowing the subsequent use of subroutine ufbseq() to write data into delayed replication sequences. More...
                                                         
                                                        recursive real *8 function getvalnb (lunit, tagpv, ntagpv, tagnb, ntagnb)
                                                         Read a data value corresponding to a specific occurrence of a mnemonic within a data subset, based on its position relative to a different mnemonic within the subset. More...
                                                         
                                                        recursive subroutine hold4wlc (lunit, chr, str)
                                                         Write a long character string (greater than 8 bytes) to a data subset. More...
                                                         
                                                        integer function nevn (node, lun, inv1, inv2, i1, i2, i3, usr)
                                                         Read one or more data values from a stacked data event within a specified portion of the current data subset. More...
                                                         
                                                        recursive subroutine readlc (lunit, chr, str)
                                                         Read a long character string (greater than 8 bytes) from a data subset. More...
                                                         
                                                        recursive subroutine setvalnb (lunit, tagpv, ntagpv, tagnb, ntagnb, r8val, iret)
                                                         Write a data value corresponding to a specific occurrence of a mnemonic within a data subset, based on its position relative to a different mnemonic within the subset. More...
                                                         
                                                        subroutine trybump (lun, usr, i1, i2, io, iret)
                                                         Try to expand a delayed replication sequence. More...
                                                         
                                                        recursive subroutine ufbevn (lunit, usr, i1, i2, i3, iret, str)
                                                         Read one or more data values from an NCEP prepbufr file. More...
                                                         
                                                        recursive subroutine ufbget (lunit, tab, i1, iret, str)
                                                         Read one or more data values from a data subset without advancing the subset pointer. More...
                                                         
                                                        recursive subroutine ufbin3 (lunit, usr, i1, i2, i3, iret, jret, str)
                                                         Read one or more data values from an NCEP prepfits file. More...
                                                         
                                                        recursive subroutine ufbint (lunin, usr, i1, i2, iret, str)
                                                         Read or write one or more data values from or to a data subset. More...
                                                         
                                                        recursive subroutine ufbinx (lunit, imsg, isub, usr, i1, i2, iret, str)
                                                         Read one or more data values from a specified data subset. More...
                                                         
                                                        recursive subroutine ufbovr (lunit, usr, i1, i2, iret, str)
                                                         Overwrite one or more data values within a data subset. More...
                                                         
                                                        recursive subroutine ufbrep (lunin, usr, i1, i2, iret, str)
                                                         Read or write one or more data values from or to a data subset. More...
                                                         
                                                        subroutine ufbrp (lun, usr, i1, i2, io, iret)
                                                         Write or read specified data values to or from the current BUFR data subset within internal arrays, with the direction of the data transfer determined by the context of io. More...
                                                         
                                                        subroutine ufbrw (lun, usr, i1, i2, io, iret)
                                                         Write or read specified values to or from the current BUFR data subset within internal arrays, with the direction of the data transfer determined by the context of io. More...
                                                         
                                                        recursive subroutine ufbseq (lunin, usr, i1, i2, iret, str)
                                                         Read or write an entire sequence of data values from or to a data subset. More...
                                                         
                                                        subroutine ufbsp (lun, usr, i1, i2, io, iret)
                                                         Write or read specified values to or from the current BUFR data subset within internal arrays, with the direction of the data transfer determined by the context of io. More...
                                                         
                                                        recursive subroutine ufbstp (lunin, usr, i1, i2, iret, str)
                                                         Read or write one or more data values from or to a data subset. More...
                                                         
                                                        recursive subroutine writlc (lunit, chr, str)
                                                         Write a long character string (greater than 8 bytes) to a data subset. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Read or write data values within a BUFR data subset.

                                                        +
                                                        Authors
                                                        J. Woollen, J. Ator
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition in file readwriteval.F90.

                                                        +

                                                        Function/Subroutine Documentation

                                                        + +

                                                        ◆ drfini()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        recursive subroutine drfini (integer, intent(in) lunit,
                                                        integer, dimension(*), intent(in) mdrf,
                                                        integer, intent(in) ndrf,
                                                        character*(*), intent(in) drftag 
                                                        )
                                                        +
                                                        + +

                                                        Explicitly initialize delayed replication factors and allocate a corresponding amount of space within internal arrays, thereby allowing the subsequent use of subroutine ufbseq() to write data into delayed replication sequences.

                                                        +
                                                        Parameters
                                                        + + + + + +
                                                        lunit- Fortran logical unit number for BUFR file
                                                        mdrf- Array of delayed replication factors, in one-to-one correspondence with the number of occurrences of drftag within the overall subset definition, and explicitly defining how much space (i.e. how many replications) to allocate within each successive occurrence
                                                        ndrf- Number of delayed replication factors within mdrf
                                                        drftag- Table D sequence mnemonic, bracketed by appropriate delayed replication notation (e.g. {}, () OR <>)
                                                        +
                                                        +
                                                        +

                                                        Logical unit lunit should have already been opened for output operations (i.e. writing/encoding BUFR) via a previous call to subroutine openbf(), and a message for output should have already been opened via a previous call to one of the [message-writing subroutines].

                                                        +

                                                        The use of this subroutine is only required when writing data into delayed replication sequences using ufbseq(), or for cases where ufbint() or ufbrep() are being used to write data into delayed replication sequences which occur more than once within an overall subset definition. In such cases, the use of this subroutine allows the application code to explicitly specify how many replications of the sequence are to be allocated to each occurrence of the delayed replication sequence within the overall subset definition, prior to storing all of the actual data values themselves via a single subsequent call to ufbint() or ufbrep(). In contrast, the use of this subroutine is not required when ufbint() or ufbrep() are to be called to store data values for a delayed replication sequence which only occurs one time within an overall subset definition, because in that case the same type of initialization and space allocation functionality will be automatically handled internally within subroutine ufbint() or ufbrep().

                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        2002-05-14
                                                        + +

                                                        Definition at line 1587 of file readwriteval.F90.

                                                        + +

                                                        References moda_usrint::inv, moda_tables::itp, moda_usrint::nval, status(), moda_tables::tag, usrtpl(), and x84().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ getvalnb()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        recursive real*8 function getvalnb (integer, intent(in) lunit,
                                                        character*(*), intent(in) tagpv,
                                                        integer, intent(in) ntagpv,
                                                        character*(*), intent(in) tagnb,
                                                        integer, intent(in) ntagnb 
                                                        )
                                                        +
                                                        + +

                                                        Read a data value corresponding to a specific occurrence of a mnemonic within a data subset, based on its position relative to a different mnemonic within the subset.

                                                        +

                                                        The function first searches for a specific occurrence of a pivot mnemonic, counting from the beginning of the subset. From there, it then searches in either a forward or backward direction for a specific occurrence of a nearby mnemonic, and if found returns the data value from the corresponding location within the subset.

                                                        +
                                                        Parameters
                                                        + + + + + + +
                                                        lunit- Fortran logical unit number for BUFR file
                                                        tagpv- Pivot mnemonic; the subroutine will first search for the (ntagpv)th occurrence of this mnemonic, counting from the beginning of the overall subset definition
                                                        ntagpv- Ordinal occurrence of tagpv to search for, counting from the beginning of the overall subset definition
                                                        tagnb- Nearby mnemonic; assuming tagpv is successfully found, the subroutine will then search nearby for the (ntagnb)th occurrence of tagnb and return the corresponding value
                                                        ntagnb- Ordinal occurrence of tagnb to search for, counting from the location of tagpv within the overall subset definition
                                                          +
                                                        • If ntagnb is positive, the subroutine will search in a forward direction from the location of tagpv
                                                        • +
                                                        • If ntagnb is negative, the subroutine will search in a backwards direction from the location of tagpv
                                                        • +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        Returns
                                                        getvalnb - Value corresponding to (ntagnb)th occurrence of tagnb
                                                          +
                                                        • If for any reason this value cannot be located, then the current placeholder value for "missing" data will be returned instead
                                                        • +
                                                        +
                                                        +

                                                        The current placeholder value for "missing" data can be determined via a separate call to function getbmiss().

                                                        +

                                                        Before calling this function, a BUFR data subset should already be open for reading via a previous call to one of the NCEPLIBS-bufr subset-reading subroutines.

                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2012-09-12
                                                        + +

                                                        Definition at line 121 of file readwriteval.F90.

                                                        + +

                                                        References fstag(), moda_msgcwd::inode, moda_usrint::inv, status(), moda_usrint::val, and x84().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ hold4wlc()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        recursive subroutine hold4wlc (integer, intent(in) lunit,
                                                        character*(*), intent(in) chr,
                                                        character*(*), intent(in) str 
                                                        )
                                                        +
                                                        + +

                                                        Write a long character string (greater than 8 bytes) to a data subset.

                                                        +

                                                        Normally, subroutine writlc() is used to write a long character string to a data subset. However, subroutine writlc() can only be called after a call to one of the subset-writing subroutines, so it will not work for cases when one of those subroutines flushes the message containing the data subset in question to logical unit lunit during the same call to that subroutine, such as when the data subset contains more than 65530 bytes. When this happens, there is no longer any way for a subsequent writlc() call to write a long character string into that data subset, because the data subset has already been flushed from internal memory. This subroutine solves that problem, by allowing a long character string to be specified before calling one of the subset-writing subroutines, and the string value will be held and stored automatically (via an internal call to subroutine writlc()) at the proper time during the subsequent call to the subset-writing subroutines.

                                                        +
                                                        Parameters
                                                        + + + + +
                                                        lunit- Fortran logical unit number for BUFR file
                                                        chr- Value corresponding to str
                                                        str- Table B mnemonic of long character string to be written, possibly supplemented with an ordinal occurrence notation
                                                        +
                                                        +
                                                        +

                                                        If there is more than one occurrence of str within the data subset definition, then each occurrence can be written via a separate call to this subroutine, and by appending the ordinal number of the occurrence to str in each case. For example, if there are 5 occurrences of mnemonic LSTID within a given data subset definition, then 5 separate calls should be made to this subroutine, once each with str set to 'LSTID#1', 'LSTID#2', 'LSTID#3', 'LSTID#4' and 'LSTID#5'. However, the first notation is superfluous, because omitting the ordinal number always defaults to the first occurrence of a particular string, so a user could just specify 'LSTID' instead of 'LSTID#1'.

                                                        +
                                                        Remarks
                                                          +
                                                        • Character strings which are 8 bytes or less in length can be written by converting the string into a real*8 value within the application program, and then using the real*8 usr array within a call to one of the NCEPLIBS-bufr values-writing subroutines prior to calling one of the subset-writing subroutines for the data subset.
                                                        • +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2014-02-05
                                                        + +

                                                        Definition at line 1977 of file readwriteval.F90.

                                                        + +

                                                        References moda_h4wlc::chh4wlc, errwrt(), moda_h4wlc::luh4wlc, moda_h4wlc::nh4wlc, moda_h4wlc::sth4wlc, strsuc(), and x84().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ nevn()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        integer function nevn (integer, intent(in) node,
                                                        integer, intent(in) lun,
                                                        integer, intent(in) inv1,
                                                        integer, intent(in) inv2,
                                                        integer, intent(in) i1,
                                                        integer, intent(in) i2,
                                                        integer, intent(in) i3,
                                                        real*8, dimension(i1,i2,i3), intent(out) usr 
                                                        )
                                                        +
                                                        + +

                                                        Read one or more data values from a stacked data event within a specified portion of the current data subset.

                                                        +

                                                        Search for all stacked data events within the portion of the current subset buffer bounded by the indices inv1 and inv2. All such events are accumulated and returned to the calling program within array usr. The value of the function itself is the total number of events found.

                                                        +
                                                        Parameters
                                                        + + + + + + + + + +
                                                        node- Jump/link table index of node for which to return stacked values
                                                        lun- File ID
                                                        inv1- Starting index of the portion of the subset buffer in which to look for stack values
                                                        inv2- Ending index of the portion of the subset buffer in which to look for stack values
                                                        i1- First dimension of usr as allocated within the calling program
                                                        i2- Second dimension of usr as allocated within the calling program
                                                        i3- Third dimension of usr as allocated within the calling program
                                                        usr- Starting address of data values read from data subset; events are returned in the third dimension for a particular data value and level in the first and second dimensions
                                                        +
                                                        +
                                                        +
                                                        Returns
                                                        - Number of events in stack (must be less than or equal to i3)
                                                        +
                                                        Note
                                                        : This routine should only be called by routine ufbin3(), which itself is called only by verification application program gridtobs, where it was previously an in-line subroutine. In general, nevn() does not work properly in other application programs at this time.
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        2003-11-04
                                                        + +

                                                        Definition at line 2888 of file readwriteval.F90.

                                                        + +

                                                        References bort(), moda_usrint::inv, invwin(), lstjpb(), and moda_usrint::val.

                                                        + +

                                                        Referenced by ufbin3().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ readlc()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        recursive subroutine readlc (integer, intent(in) lunit,
                                                        character*(*), intent(out) chr,
                                                        character*(*), intent(in) str 
                                                        )
                                                        +
                                                        + +

                                                        Read a long character string (greater than 8 bytes) from a data subset.

                                                        +

                                                        The data subset should have already been read into internal arrays via a previous call to one of the subset-reading subroutines.

                                                        +

                                                        If there is more than one occurrence of str within the data subset definition, then each occurrence can be retrieved via a separate call to this subroutine, and by appending the ordinal number of the occurrence to str in each case.

                                                        +

                                                        For example, if there are 5 occurrences of mnemonic LSTID within a given data subset definition, then 5 separate calls should be made to this subroutine, once each with str set to 'LSTID#1', 'LSTID#2', 'LSTID#3', 'LSTID#4' and 'LSTID#5'.

                                                        +

                                                        Omitting the ordinal number always defaults to the first occurrence of a particular string, so a user could just specify 'LSTID' instead of 'LSTID#1'.

                                                        +
                                                        Remarks
                                                          +
                                                        • Character strings which are 8 bytes or less in length can be read using the real*8 usr array within a call to one of the NCEPLIBS-bufr values-reading subroutines and then converting the corresponding real*8 value to character format within the application program.
                                                        • +
                                                        • If str is not found within the data subset definition, then chr is returned with all bits set to 1, which is the standard WMO BUFR value for "missing" data. Any chr value returned by this subroutine can be checked for equivalence to this "missing" value via a call to function icbfms().
                                                        • +
                                                        +
                                                        +
                                                        Parameters
                                                        + + + + +
                                                        lunit- Fortran logical unit number for BUFR file
                                                        chr- Value corresponding to STR
                                                        str- Table B mnemonic of long character string to be retrieved, possibly supplemented with an ordinal occurrence notation
                                                        +
                                                        +
                                                        +
                                                        Authors
                                                        J. Woollen J. Ator
                                                        +
                                                        Date
                                                        2003-11-04
                                                        + +

                                                        Definition at line 406 of file readwriteval.F90.

                                                        + +

                                                        References bort(), moda_rlccmn::crtag, errwrt(), moda_usrint::inv, ipkm(), moda_rlccmn::irbit, moda_rlccmn::irnch, moda_tables::itp, moda_bitbuf::mbay, moda_usrbit::mbit, moda_unptyp::msgunp, moda_usrbit::nbit, moda_rlccmn::nrst, moda_usrint::nval, parstr(), parutg(), status(), moda_tables::tag, upc(), and x84().

                                                        + +

                                                        Referenced by bufr_c2f_interface::readlc_c(), ufbdmp(), ufdump(), and wrtree().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ setvalnb()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        recursive subroutine setvalnb (integer, intent(in) lunit,
                                                        character*(*), intent(in) tagpv,
                                                        integer, intent(in) ntagpv,
                                                        character*(*), intent(in) tagnb,
                                                        integer, intent(in) ntagnb,
                                                        real*8, intent(in) r8val,
                                                        integer, intent(out) iret 
                                                        )
                                                        +
                                                        + +

                                                        Write a data value corresponding to a specific occurrence of a mnemonic within a data subset, based on its position relative to a different mnemonic within the subset.

                                                        +

                                                        The subroutine first searches for a specific occurrence of a pivot mnemonic, counting from the beginning of the subset. From there, it then searches in either a forward or backward direction for a specific occurrence of a nearby mnemonic, and if found stores the specified data value in the corresponding location within the subset.

                                                        +

                                                        Before calling this subroutine, a BUFR message should already be opened and initialized for output via a previous call to one of the NCEPLIBS-bufr message-writing subroutines.

                                                        +
                                                        Parameters
                                                        + + + + + + + + +
                                                        lunit- Fortran logical unit number for BUFR file
                                                        tagpv- Pivot mnemonic; the subroutine will first search for the (ntagpv)th occurrence of this mnemonic, counting from the beginning of the overall subset definition
                                                        ntagpv- Ordinal occurrence of tagpv to search for, counting from the beginning of the overall subset definition
                                                        tagnb- Nearby mnemonic; assuming tagpv is successfully found, the subroutine will then search nearby for the (ntagnb)th occurrence of tagnb and store r8val as the corresponding value
                                                        ntagnb- Ordinal occurrence of tagnb to search for, counting from the location of tagpv within the overall subset definition
                                                          +
                                                        • If ntagnb is positive, the subroutine will search in a forward direction from the location of tagpv
                                                        • +
                                                        • If ntagnb is negative, the subroutine will search in a backwards direction from the location of tagpv
                                                        • +
                                                        +
                                                        r8val- Value to be stored corresponding to (ntagnb)th occurrence of tagnb within the subset
                                                        iret- return code:
                                                          +
                                                        • 0 = r8val was successfully stored
                                                        • +
                                                        • -1 = the (ntagnb)th occurence of mnemonic tagnb could not be found, or some other error occurred
                                                        • +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2016-07-29
                                                        + +

                                                        Definition at line 37 of file readwriteval.F90.

                                                        + +

                                                        References fstag(), moda_msgcwd::inode, moda_usrint::inv, status(), moda_usrint::val, x48(), and x84().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ trybump()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        subroutine trybump (integer, intent(in) lun,
                                                        real*8, dimension(i1,i2), intent(inout) usr,
                                                        integer, intent(in) i1,
                                                        integer, intent(in) i2,
                                                        integer, intent(in) io,
                                                        integer, intent(out) iret 
                                                        )
                                                        +
                                                        + +

                                                        Try to expand a delayed replication sequence.

                                                        +

                                                        Check the first node associated with a character string (parsed into arrays in common block /usrstr/) in order to determine if it represents a delayed replication sequence. If so, then the delayed replication sequence is initialized and expanded (i.e. "bumped") to the value of input argument i2. A call is then made to subroutine ufbrw() in order to write user data into the newly expanded replication sequence.

                                                        +

                                                        This subroutine is usually called from ufbint() whenever that routine receives a non-zero return code from ufbrw(). The cause of a bad return from ufbrw() is usually a delayed replication sequence which isn't expanded enough to hold the array of data the user is trying to write. So this subroutine is one last chance to try to resolve that situation.

                                                        +
                                                        Note
                                                        Argument io is always passed in with a value of 1 at the present time. In the future the subroutine may be expanded to allow it to operate on input files.
                                                        +
                                                        Parameters
                                                        + + + + + + + +
                                                        lun- File ID
                                                        usr- Data values
                                                        i1- First dimension of usr as allocated within the calling program
                                                        i2- Number of levels of data values that are to be written to the data subset
                                                        io- Status indicator for BUFR file:
                                                          +
                                                        • 0 = Input file (possible future use)
                                                        • +
                                                        • 1 = Output file
                                                        • +
                                                        +
                                                        iret- Number of ldevels of data values that were written to the data subset
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 2068 of file readwriteval.F90.

                                                        + +

                                                        References moda_usrint::inv, moda_usrint::nval, ufbrw(), usrtpl(), and moda_usrint::val.

                                                        + +

                                                        Referenced by ufbint(), and ufbovr().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ ufbevn()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        recursive subroutine ufbevn (integer, intent(in) lunit,
                                                        real*8, dimension(i1,i2,i3), intent(out) usr,
                                                        integer, intent(in) i1,
                                                        integer, intent(in) i2,
                                                        integer, intent(in) i3,
                                                        integer, intent(out) iret,
                                                        character*(*), intent(in) str 
                                                        )
                                                        +
                                                        + +

                                                        Read one or more data values from an NCEP prepbufr file.

                                                        +

                                                        This subroutine is specifically designed for use with NCEP prepbufr files, which contain a third dimension of data events for every reported data value at every replicated vertical level. It is similar to subroutine ufbin3(), except that ufbin3() is used for NCEP prepfits files and has one extra argument containing the maximum number of data events for any data value, whereas this subroutine is used for NCEP prepbufr files and stores the same information internally within a common block.

                                                        +

                                                        It is the user's responsibility to ensure that usr is dimensioned sufficiently large enough to accommodate the number of data values that are to be read from the data subset. Note also that usr is an array of real*8 values; therefore, any character (i.e. CCITT IA5) value in the data subset will be returned in real*8 format and must be converted back into character format by the application program before it can be used as such.

                                                        +

                                                        "Missing" values in usr are always denoted by a unique placeholder value. This placeholder value is initially set to a default value of 10E10_8, but it can be reset to any substitute value of the user's choice via a separate call to subroutine setbmiss(). In any case, any returned value in usr can be easily checked for equivalence to the current placeholder value via a call to function ibfms(), and a positive result means that the value for the corresponding mnemonic was encoded as "missing" in BUFR (i.e. all bits set to 1) within the original data subset.

                                                        +
                                                        Parameters
                                                        + + + + + + + + +
                                                        lunit- Fortran logical unit number for NCEP prepbufr file
                                                        usr- Data values
                                                        i1- First dimension of usr as allocated within the calling program
                                                        i2- Second dimension of usr as allocated within the calling program
                                                        i3- Third dimension of usr as allocated within the calling program
                                                        iret- Number of replications of str that were read from the data subset, corresponding to the second dimension of usr
                                                        str- String of blank-separated Table B mnemonics in one-to-one correspondence with the number of data values that will be read/written from/to the data subset within the first dimension of usr (see DX BUFR Tables for further information about Table B mnemonics)
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 2267 of file readwriteval.F90.

                                                        + +

                                                        References bort(), conwin(), errwrt(), getwin(), moda_msgcwd::inode, moda_usrint::inv, nvnwin(), nxtwin(), status(), string(), moda_usrint::val, x48(), and x84().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ ufbget()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        recursive subroutine ufbget (integer, intent(in) lunit,
                                                        real*8, dimension(i1), intent(out) tab,
                                                        integer, intent(in) i1,
                                                        integer, intent(out) iret,
                                                        character*(*), intent(in) str 
                                                        )
                                                        +
                                                        + +

                                                        Read one or more data values from a data subset without advancing the subset pointer.

                                                        +

                                                        The data values to be read must be one-dimensional (i.e. non-replicated).

                                                        +
                                                        Parameters
                                                        + + + + + + +
                                                        lunit- Fortran logical unit number for BUFR file
                                                        tab- Data values
                                                        i1- Size of tab as allocated within the calling program
                                                        iret- Return code:
                                                          +
                                                        • 0 = Normal return
                                                        • +
                                                        • -1 = There are no more subsets in the BUFR message
                                                        • +
                                                        +
                                                        str- String of blank-separated Table B mnemonics in one-to-one correspondence with the number of data values that will be read from the data subset into tab
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 2756 of file readwriteval.F90.

                                                        + +

                                                        References bort(), moda_tables::ibt, moda_usrint::inv, invwin(), moda_tables::itp, moda_bitbuf::mbay, moda_usrbit::mbit, moda_bitbuf::mbyt, moda_msgcwd::msub, moda_usrbit::nbit, moda_msgcwd::nsub, moda_usrint::nval, status(), string(), upb8(), upc(), ups(), usrtpl(), x48(), and x84().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ ufbin3()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        recursive subroutine ufbin3 (integer, intent(in) lunit,
                                                        real*8, dimension(i1,i2,i3), intent(out) usr,
                                                        integer, intent(in) i1,
                                                        integer, intent(in) i2,
                                                        integer, intent(in) i3,
                                                        integer, intent(out) iret,
                                                        integer, intent(out) jret,
                                                        character*(*), intent(in) str 
                                                        )
                                                        +
                                                        + +

                                                        Read one or more data values from an NCEP prepfits file.

                                                        +

                                                        This subroutine is specifically designed for use with NCEP prepfits files, which contain a third dimension of data events for every reported data value at every replicated vertical level. It is similar to subroutine ufbevn(), except that ufbevn() is used for NCEP prepbufr files and stores the maximum number of data events for any data value within an internal common block, whereas this subroutine is used for NCEP prepfits files and has one extra argument which returns the same information to the calling program.

                                                        +

                                                        It is the user's responsibility to ensure that usr is dimensioned sufficiently large enough to accommodate the number of data values that are to be read from the data subset. Note also that usr is an array of real*8 values; therefore, any character (i.e. CCITT IA5) value in the data subset will be returned in real*8 format and must be converted back into character format by the application program before it can be used as such.

                                                        +

                                                        "Missing" values in usr are always denoted by a unique placeholder value. This placeholder value is initially set to a default value of 10E10_8, but it can be reset to any substitute value of the user's choice via a separate call to subroutine setbmiss(). In any case, any returned value in usr can be easily checked for equivalence to the current placeholder value via a call to function ibfms(), and a positive result means that the value for the corresponding mnemonic was encoded as "missing" in BUFR (i.e. all bits set to 1) within the original data subset.

                                                        +
                                                        Parameters
                                                        + + + + + + + + + +
                                                        lunit- Fortran logical unit number for NCEP prepfits file
                                                        usr- Data values
                                                        i1- First dimension of usr as allocated within the calling program
                                                        i2- Second dimension of usr as allocated within the calling program
                                                        i3- Third dimension of usr as allocated within the calling program
                                                        iret- Number of replications of str that were read from the data subset, corresponding to the second dimension of usr
                                                        jret- Maximum number of data events for any data value that was read from the data subset at any replicated vertical level, and corresponding to the third dimension of usr
                                                        str- String of blank-separated Table B mnemonics in one-to-one correspondence with the number of data values that will be read/written from/to the data subset within the first dimension of usr (see DX BUFR Tables for further information about Table B mnemonics)
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        2003-11-04
                                                        + +

                                                        Definition at line 2471 of file readwriteval.F90.

                                                        + +

                                                        References bort(), conwin(), errwrt(), getwin(), moda_msgcwd::inode, moda_usrint::inv, nevn(), nxtwin(), status(), string(), x48(), and x84().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ ufbint()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        recursive subroutine ufbint (integer, intent(in) lunin,
                                                        real*8, dimension(i1,i2), intent(inout) usr,
                                                        integer, intent(in) i1,
                                                        integer, intent(in) i2,
                                                        integer, intent(out) iret,
                                                        character*(*), intent(in) str 
                                                        )
                                                        +
                                                        + +

                                                        Read or write one or more data values from or to a data subset.

                                                        +

                                                        The direction of the data transfer is determined by the context of abs(lunin):

                                                          +
                                                        • If abs(lunin) points to a file that was previously opened for input using subroutine openbf(), then data values are read from the current data subset.
                                                        • +
                                                        • If abs(lunin) points to a file that was previously opened for output using subroutine openbf(), then data values are written to the current data subset.
                                                        • +
                                                        +

                                                        This subroutine is specifically designed for use with Table B mnemonics which are part of a delayed-replication sequence, or for which there is no replication at all. See also subroutines ufbrep(), ufbseq() and ufbstp(), which can also be used to read/write one or more data values from/to a data subset but are designed for different use cases. A more detailed discussion of these different use cases, including examples, is available in DX BUFR Tables.

                                                        +

                                                        It is the user's responsibility to ensure that usr is dimensioned sufficiently large enough to accommodate the number of data values that are to be read from or written to the data subset. Note also that usr is an array of real*8 values; therefore, any data that are to be written out as character (i.e. CCITT IA5) values in BUFR must be converted from character into real*8 format within the application program before calling this subroutine. Conversely, when this subroutine is being used to read character values from a data subset, the value that is returned will be in real*8 format and must be converted back into character format by the application program before it can be used as such. Alternatively, there are different subroutines such as readlc() and writlc() which can be used to read/write character data directly from/to a data subset without the need to convert from/to real*8 format as an intermediate step.

                                                        +

                                                        Numeric (i.e. non-character) data values within usr are always in the exact units specified for the corresponding mnemonic within the relevant DX or master BUFR table, without any scale or reference values applied. Specifically, this means that, when writing data values into an output subset, the user only needs to store each respective value into usr using the units specified within the table, and the NCEPLIBS-bufr software will take care of any necessary scaling or referencing of the value before it is actually encoded into BUFR. Conversely, when reading data values from an input subset, the values returned in usr are already de-scaled and de-referenced and, thus, are already in the exact units that were defined for the corresponding mnemonics within the table.

                                                        +

                                                        "Missing" values in usr are always denoted by a unique placeholder value. This placeholder value is initially set to a default value of 10E10_8, but it can be reset to any substitute value of the user's choice via a separate call to subroutine setbmiss(). In any case, and whenever this subroutine is used to read data values from an input subset, any returned value in usr can be easily checked for equivalence to the current placeholder value via a call to function ibfms(), and a positive result means that the value for the corresponding mnemonic was encoded as "missing" in BUFR (i.e. all bits set to 1) within the original data subset. Conversely, whenever this subroutine is used to write data values to an output subset, the current placeholder value can be obtained via a separate call to function getbmiss(), and the resulting value can then be stored into the usr array whereever the user desires a BUFR "missing" value (i.e. all bits set to 1) to be encoded for the corresponding mnemonic within the output subset.

                                                        +
                                                        Remarks
                                                          +
                                                        • If lunin < 0, and if abs(lunin) points to a file that is open for output (writing BUFR), then the subroutine will treat the file pointed to by abs(lunin) as though it was open for input (reading BUFR). This is a special capability for use by some applications that need to read certain values back out from a BUFR file during the same time that it is in the process of being written to.
                                                        • +
                                                        • If abs(lunin) points to a file that is open for input (reading BUFR), str may contain a Table D mnemonic that is replicated using either 8-bit or 16-bit delayed replication (as noted using replication indicators {} or (), respectively, within the assocated DX BUFR table), and the corresponding location in usr will contain the total number of replications of that mnemonic within the data subset. Note that, when using this option, the applicable replication indicators must be included in str along with the mnemonic itself, as shown in an example in the discussion of DX BUFR Tables.
                                                        • +
                                                        +
                                                        +
                                                        Parameters
                                                        + + + + + + + +
                                                        lunin- Absolute value is Fortran logical unit number for BUFR file
                                                        usr- Data values
                                                          +
                                                        • If abs(lunin) was opened for input, then usr is output from this subroutine and contains data values that were read from the current data subset
                                                        • +
                                                        • If abs(lunin) was opened for output, then usr is input to this subroutine and contains data values that are to be written to the current data subset
                                                        • +
                                                        +
                                                        i1- First dimension of usr as allocated within the calling program
                                                        i2- Second dimension of usr
                                                          +
                                                        • If abs(lunin) was opened for input, then i2 must be set equal to the second dimension of usr as allocated within the calling program
                                                        • +
                                                        • If abs(lunin) was opened for output, then i2 must be set equal to the number of replications of str that are to be written to the data subset
                                                        • +
                                                        +
                                                        iret- Number of replications of str that were read/written from/to the data subset
                                                        str- String of blank-separated Table B mnemonics in one-to-one correspondence with the number of data values that will be read/written from/to the data subset within the first dimension of usr (see DX BUFR Tables for further information about Table B mnemonics)
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 645 of file readwriteval.F90.

                                                        + +

                                                        References bort(), bort2(), errwrt(), moda_msgcwd::inode, moda_usrint::inv, status(), string(), trybump(), ufbrw(), x48(), and x84().

                                                        + +

                                                        Referenced by cmpbqm(), readbp(), bufr_c2f_interface::ufbint_c(), ufbinx(), and ufbrms().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ ufbinx()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        recursive subroutine ufbinx (integer, intent(in) lunit,
                                                        integer, intent(in) imsg,
                                                        integer, intent(in) isub,
                                                        real*8, dimension(i1,i2), intent(out) usr,
                                                        integer, intent(in) i1,
                                                        integer, intent(in) i2,
                                                        integer, intent(out) iret,
                                                        character*(*), intent(in) str 
                                                        )
                                                        +
                                                        + +

                                                        Read one or more data values from a specified data subset.

                                                        +

                                                        If logical unit lunit has already been opened for input operations via a previous call to subroutine openbf(), then this subroutine will save the current file position, rewind the file to the beginning, reposition the file to a specified data subset within a specified message, read one or more specified data values from that data subset via an internal call to ufbint(), and then restore the file to its previous position.

                                                        +

                                                        Otherwise, if logical unit lunit has not already been opened for input operations via a previous call to subroutine openbf(), then this subroutine will open it via an internal call to subroutine openbf(), position the file to a specified data subset within a specified message, read one or more specified data values from that data subset via an internal call to ufbint(), and then close the file via an internal call to subroutine closbf().

                                                        +
                                                        Parameters
                                                        + + + + + + + + + +
                                                        lunit- Fortran logical unit number for BUFR file
                                                        imsg- Number of BUFR message to be read from the BUFR file, counting from the beginning of the file, but not counting any DX BUFR table messages which may be present in the file
                                                        isub- Number of data subset to be read from the (imsg)th BUFR message, counting from the beginning of the message
                                                        usr- Data values
                                                        i1- First dimension of usr as allocated within the calling program
                                                        i2- Second dimension of usr as allocated within the calling program
                                                        iret- Number of replications of str that were read from the data subset
                                                        str- String of blank-separated Table B mnemonics in one-to-one correspondence with the number of data values that will be read from the data subset within the first dimension of usr (see DX BUFR Tables for further information about Table B mnemonics)
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        Woollen
                                                        +
                                                        Date
                                                        2003-11-04
                                                        + +

                                                        Definition at line 2662 of file readwriteval.F90.

                                                        + +

                                                        References bort(), closbf(), openbf(), readmg(), readsb(), rewnbf(), status(), ufbint(), x48(), and x84().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ ufbovr()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        recursive subroutine ufbovr (integer, intent(in) lunit,
                                                        real*8, dimension(i1,i2), intent(inout) usr,
                                                        integer, intent(in) i1,
                                                        integer, intent(in) i2,
                                                        integer, intent(out) iret,
                                                        character*(*), intent(in) str 
                                                        )
                                                        +
                                                        + +

                                                        Overwrite one or more data values within a data subset.

                                                        +

                                                        Overwrite specified values which exist in current internal BUFR subset arrays in a file open for output. The data values correspond to mnemonics which are part of a delayed-replication sequence, or for which there is no replication at all. Either subroutine openmg() or openmb() must have been previously called to open and initialize a BUFR message within memory for this lunit. In addition, subroutine writsb() or invmrg() must have previously been called to store the data values that are now intended to be overwritten within the internal output subset arrays.

                                                        +
                                                        Parameters
                                                        + + + + + + + +
                                                        lunit- Fortran logical unit number for BUFR file
                                                        usr- Data values
                                                        i1- First dimension of usr as allocated within the calling program
                                                        i2- Number of replications of str that are to be written to the data subset
                                                        iret- Number of replications of str that were written to the data subset
                                                        str- String of blank-separated Table B mnemonics in one-to-one correspondence with the number of data values that will be written to the data subset within the first dimension of usr (see DX BUFR Tables for further information about Table B mnemonics)
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 2128 of file readwriteval.F90.

                                                        + +

                                                        References bort(), bort2(), errwrt(), moda_msgcwd::inode, moda_usrint::inv, status(), string(), trybump(), x48(), and x84().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ ufbrep()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        recursive subroutine ufbrep (integer, intent(in) lunin,
                                                        real*8, dimension(i1,i2), intent(inout) usr,
                                                        integer, intent(in) i1,
                                                        integer, intent(in) i2,
                                                        integer, intent(out) iret,
                                                        character*(*), intent(in) str 
                                                        )
                                                        +
                                                        + +

                                                        Read or write one or more data values from or to a data subset.

                                                        +

                                                        The direction of the data transfer is determined by the context of abs(lunin):

                                                          +
                                                        • If abs(lunin) points to a file that was previously opened for input using subroutine openbf(), then data values are read from the current data subset.
                                                        • +
                                                        • If abs(lunin) points to a file that was previously opened for output using subroutine openbf(), then data values are written to the current data subset.
                                                        • +
                                                        +

                                                        This subroutine is specifically designed for use with Table B mnemonics which are part of a fixed (i.e. non-delayed) replication sequence, or for mnemonics which are replicated by being directly listed more than once within an overall subset definition. See also subroutines ufbint(), ufbseq() and ufbstp(), which can also be used to read/write one or more data values from/to a data subset but are designed for different use cases. A more detailed discussion of these different use cases, including examples, is available in DX BUFR Tables.

                                                        +

                                                        It is the user's responsibility to ensure that usr is dimensioned sufficiently large enough to accommodate the number of data values that are to be read from or written to the data subset. Note also that usr is an array of real*8 values; therefore, any data that are to be written out as character (i.e. CCITT IA5) values in BUFR must be converted from character into real*8 format within the application program before calling this subroutine. Conversely, when this subroutine is being used to read character values from a data subset, the value that is returned will be in real*8 format and must be converted back into character format by the application program before it can be used as such. Alternatively, there are different subroutines such as readlc() and writlc() which can be used to read/write character data directly from/to a data subset without the need to convert from/to real*8 format as an intermediate step.

                                                        +

                                                        Numeric (i.e. non-character) data values within usr are always in the exact units specified for the corresponding mnemonic within the relevant DX or master BUFR table, without any scale or reference values applied. Specifically, this means that, when writing data values into an output subset, the user only needs to store each respective value into usr using the units specified within the table, and the NCEPLIBS-bufr software will take care of any necessary scaling or referencing of the value before it is actually encoded into BUFR. Conversely, when reading data values from an input subset, the values returned in usr are already de-scaled and de-referenced and, thus, are already in the exact units that were defined for the corresponding mnemonics within the table.

                                                        +

                                                        "Missing" values in usr are always denoted by a unique placeholder value. This placeholder value is initially set to a default value of 10E10_8, but it can be reset to any substitute value of the user's choice via a separate call to subroutine setbmiss(). In any case, and whenever this subroutine is used to read data values from an input subset, any returned value in usr can be easily checked for equivalence to the current placeholder value via a call to function ibfms(), and a positive result means that the value for the corresponding mnemonic was encoded as "missing" in BUFR (i.e. all bits set to 1) within the original data subset. Conversely, whenever this subroutine is used to write data values to an output subset, the current placeholder value can be obtained via a separate call to function getbmiss(), and the resulting value can then be stored into the usr array whereever the user desires a BUFR "missing" value (i.e. all bits set to 1) to be encoded for the corresponding mnemonic within the output subset.

                                                        +
                                                        Remarks
                                                          +
                                                        • If lunin < 0, and if abs(lunin) points to a file that is open for output (writing BUFR), then the subroutine will treat the file pointed to by abs(lunin) as though it was open for input (reading BUFR). This is a special capability for use by some applications that need to read certain values back out from a BUFR file during the same time that it is in the process of being written to.
                                                        • +
                                                        +
                                                        +
                                                        Parameters
                                                        + + + + + + + +
                                                        lunin- Absolute value is Fortran logical unit number for BUFR file
                                                        usr- Data values
                                                          +
                                                        • If abs(lunin) was opened for input, then usr is output from this subroutine and contains data values that were read from the current data subset
                                                        • +
                                                        • If abs(lunin) was opened for output, then usr is input to this subroutine and contains data values that are to be written to the current data subset
                                                        • +
                                                        +
                                                        i1- First dimension of usr as allocated within the calling program
                                                        i2- Second dimension of usr
                                                          +
                                                        • If abs(lunin) was opened for input, then i2 must be set equal to the second dimension of usr as allocated within the calling program
                                                        • +
                                                        • If abs(lunin) was opened for output, then i2 must be set equal to the number of replications of str that are to be written to the data subset
                                                        • +
                                                        +
                                                        iret- Number of replications of str that were read/written from/to the data subset
                                                        str- String of blank-separated Table B mnemonics in one-to-one correspondence with the number of data values that will be read/written from/to the data subset within the first dimension of usr (see DX BUFR Tables for further information about Table B mnemonics)
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 885 of file readwriteval.F90.

                                                        + +

                                                        References bort(), bort2(), errwrt(), moda_msgcwd::inode, moda_usrint::inv, status(), string(), ufbrp(), x48(), and x84().

                                                        + +

                                                        Referenced by bufr_c2f_interface::ufbrep_c().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ ufbrp()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        subroutine ufbrp (integer, intent(in) lun,
                                                        real*8, dimension(i1,i2), intent(inout) usr,
                                                        integer, intent(in) i1,
                                                        integer, intent(in) i2,
                                                        integer, intent(in) io,
                                                        integer, intent(out) iret 
                                                        )
                                                        +
                                                        + +

                                                        Write or read specified data values to or from the current BUFR data subset within internal arrays, with the direction of the data transfer determined by the context of io.

                                                        +

                                                        The data values correspond to internal arrays representing parsed strings of mnemonics which are either part of a fixed (i.e. non-delayed) replication sequence, or for mnememonics which are replicated by being directly listed more than once within an overall subset definition.

                                                        +

                                                        This subroutine should never be directly called by an application program; instead, an application program should directly call ufbrep() which will internally call this subroutine.

                                                        +
                                                        Parameters
                                                        + + + + + + + +
                                                        lun- File ID
                                                        usr- Data values
                                                        i1- Length of first dimension of usr
                                                        i2- Length of second dimension of usr
                                                        io- Status indicator for BUFR file associated with lun:
                                                          +
                                                        • 0 input file
                                                        • +
                                                        • 1 output file
                                                        • +
                                                        +
                                                        iret- Number of "levels" of data values read from or written to data subset
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 1792 of file readwriteval.F90.

                                                        + +

                                                        References moda_usrint::nval, and moda_usrint::val.

                                                        + +

                                                        Referenced by ufbrep().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ ufbrw()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        subroutine ufbrw (integer, intent(in) lun,
                                                        real*8, dimension(i1,i2), intent(inout) usr,
                                                        integer, intent(in) i1,
                                                        integer, intent(in) i2,
                                                        integer, intent(in) io,
                                                        integer, intent(out) iret 
                                                        )
                                                        +
                                                        + +

                                                        Write or read specified values to or from the current BUFR data subset within internal arrays, with the direction of the data transfer determined by the context of io.

                                                        +

                                                        The data values correspond to internal arrays representing parsed strings of mnemonics which are part of a delayed-replication sequence, or for which there is no replication at all.

                                                        +

                                                        This subroutine should never be directly called by an application program; instead, an application program should directly call ufbint() which will internally call this subroutine.

                                                        +
                                                        Parameters
                                                        + + + + + + + +
                                                        lun- File ID
                                                        usr- Data values
                                                        i1- Length of first dimension of usr
                                                        i2- Length of second dimension of usr
                                                        io- Status indicator for BUFR file associated with lun:
                                                          +
                                                        • 0 input file
                                                        • +
                                                        • 1 output file
                                                        • +
                                                        +
                                                        iret- Number of "levels" of data values read from or written to data subset
                                                          +
                                                        • -1 none of the mnemonics in the string passed to ufbint() were found in the data subset template
                                                        • +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 1654 of file readwriteval.F90.

                                                        + +

                                                        References conwin(), drstpl(), errwrt(), getwin(), moda_msgcwd::inode, newwin(), nxtwin(), moda_tables::tag, and moda_usrint::val.

                                                        + +

                                                        Referenced by trybump(), and ufbint().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ ufbseq()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        recursive subroutine ufbseq (integer, intent(in) lunin,
                                                        real*8, dimension(i1,i2), intent(inout) usr,
                                                        integer, intent(in) i1,
                                                        integer, intent(in) i2,
                                                        integer, intent(out) iret,
                                                        character*(*), intent(in) str 
                                                        )
                                                        +
                                                        + +

                                                        Read or write an entire sequence of data values from or to a data subset.

                                                        +

                                                        The direction of the data transfer is determined by the context of abs(lunin):

                                                          +
                                                        • If abs(lunin) points to a file that was previously opened for input using subroutine openbf(), then data values are read from the current data subset.
                                                        • +
                                                        • If abs(lunin) points to a file that was previously opened for output using subroutine openbf(), then data values are written to the current data subset.
                                                        • +
                                                        +

                                                        This subroutine is specifically designed for use with a single Table A or Table D mnemonic. In the latter case, the mnemonic may be replicated within the overall subset definition, and in which case the subroutine will return all data values within all replications of the sequence defined by the mnemonic. But in either case, the mnemonic itself may contain, within its own sequence definition, any number of data values defined by Table B mnemonics and/or subsequences of data values defined by other Table D mnemonics, and any such subsequences may themselves be replicated using any manner of fixed or delayed replication. See DX BUFR Tables for more details including an example use case, and see also subroutines ufbint(), ufbrep() and ufbstp() which are also used to read/write one or more data values from/to a data subset but cannot themselves be directly used with Table A or Table D mnemonics.

                                                        +

                                                        It is the user's responsibility to ensure that usr is dimensioned sufficiently large enough to accommodate the number of data values that are to be read from or written to the data subset. Note also that usr is an array of real*8 values; therefore, any data that are to be written out as character (i.e. CCITT IA5) values in BUFR must be converted from character into real*8 format within the application program before calling this subroutine. Conversely, when this subroutine is being used to read character values from a data subset, the value that is returned will be in real*8 format and must be converted back into character format by the application program before it can be used as such. Alternatively, there are different subroutines such as readlc() and writlc() which can be used to read/write character data directly from/to a data subset without the need to convert from/to real*8 format as an intermediate step.

                                                        +

                                                        Numeric (i.e. non-character) data values within usr are always in the exact units specified for the corresponding mnemonic within the relevant DX or master BUFR table, without any scale or reference values applied. Specifically, this means that, when writing data values into an output subset, the user only needs to store each respective value into usr using the units specified within the table, and the NCEPLIBS-bufr software will take care of any necessary scaling or referencing of the value before it is actually encoded into BUFR. Conversely, when reading data values from an input subset, the values returned in usr are already de-scaled and de-referenced and, thus, are already in the exact units that were defined for the corresponding mnemonics within the table.

                                                        +

                                                        "Missing" values in usr are always denoted by a unique placeholder value. This placeholder value is initially set to a default value of 10E10_8, but it can be reset to any substitute value of the user's choice via a separate call to subroutine setbmiss(). In any case, and whenever this subroutine is used to read data values from an input subset, any returned value in usr can be easily checked for equivalence to the current placeholder value via a call to function ibfms(), and a positive result means that the value for the corresponding mnemonic was encoded as "missing" in BUFR (i.e. all bits set to 1) within the original data subset. Conversely, whenever this subroutine is used to write data values to an output subset, the current placeholder value can be obtained via a separate call to function getbmiss(), and the resulting value can then be stored into the usr array whereever the user desires a BUFR "missing" value (i.e. all bits set to 1) to be encoded for the corresponding mnemonic within the output subset.

                                                        +
                                                        Remarks
                                                          +
                                                        • If lunin < 0, and if abs(lunin) points to a file that is open for output (writing BUFR), then the subroutine will treat the file pointed to by abs(lunin) as though it was open for input (reading BUFR). This is a special capability for use by some applications that need to read certain values back out from a BUFR file during the same time that it is in the process of being written to.
                                                        • +
                                                        • If abs(lunin) points to a file that is open for output (writing BUFR), and if the data values to be written are part of a sequence replicated using delayed replication, then a call to subroutine drfini() must be made prior to calling this subroutine, in order to pre-allocate the necessary internal array space for the number of replications of the sequence.
                                                        • +
                                                        +
                                                        +
                                                        Parameters
                                                        + + + + + + + +
                                                        lunin- Absolute value is Fortran logical unit number for BUFR file
                                                        usr- Data values
                                                          +
                                                        • If abs(lunin) was opened for input, then usr is output from this subroutine and contains data values that were read from the current data subset
                                                        • +
                                                        • If abs(lunin) was opened for output, then usr is input to this subroutine and contains data values that are to be written to the current data subset
                                                        • +
                                                        +
                                                        i1- First dimension of usr as allocated within the calling program
                                                        i2- Second dimension of usr
                                                          +
                                                        • If abs(lunin) was opened for input, then i2 must be set equal to the second dimension of usr as allocated within the calling program
                                                        • +
                                                        • If abs(lunin) was opened for output, then i2 must be set equal to the number of replications of str that are to be written to the data subset
                                                        • +
                                                        +
                                                        iret- Number of replications of str that were read/written from/to the data subset
                                                        str- String consisting of a single Table A or Table D mnemonic whose sequence definition is in one-to-one correspondence with the number of data values that will be read/written from/to the data subset within the first dimension of usr (see DX BUFR Tables for further information about Table A and Table D mnemonics)
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        2000-09-19
                                                        + +

                                                        Definition at line 1319 of file readwriteval.F90.

                                                        + +

                                                        References bort(), errwrt(), moda_msgcwd::inode, moda_usrint::inv, invtag(), invwin(), moda_tables::isc, moda_tables::itp, moda_tables::jmpb, moda_tables::link, moda_usrint::nval, parstr(), status(), moda_tables::tag, moda_tables::typ, moda_usrint::val, x48(), and x84().

                                                        + +

                                                        Referenced by bufr_c2f_interface::ufbseq_c().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ ufbsp()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        subroutine ufbsp (integer, intent(in) lun,
                                                        real*8, dimension(i1,i2), intent(inout) usr,
                                                        integer, intent(in) i1,
                                                        integer, intent(in) i2,
                                                        integer, intent(in) io,
                                                        integer, intent(out) iret 
                                                        )
                                                        +
                                                        + +

                                                        Write or read specified values to or from the current BUFR data subset within internal arrays, with the direction of the data transfer determined by the context of io.

                                                        +

                                                        The data values correspond to internal arrays representing parsed strings of mnemonics which are either part of a fixed (i.e. non-delayed) replication sequence, or for mnememonics which are replicated by being directly listed more than once within an overall subset definition.

                                                        +

                                                        This subroutine should never be directly called by an application program; instead, an application program should directly call ufbstp() which will internally call this subroutine.

                                                        +

                                                        This subroutine is similar to subroutine ufbrp(), but it is designed for different use cases. For a more detailed explanation of how subroutine ufbstp() differs from subroutine ufbrep(), and therefore how this subroutine differs from subroutine ufbrp(), see the discussion in DX BUFR Tables.

                                                        +
                                                        Parameters
                                                        + + + + + + + +
                                                        lun- File ID
                                                        usr- Data values
                                                        i1- Length of first dimension of usr
                                                        i2- Length of second dimension of usr
                                                        io- Status indicator for BUFR file associated with lun:
                                                          +
                                                        • 0 input file
                                                        • +
                                                        • 1 output file
                                                        • +
                                                        +
                                                        iret- Number of "levels" of data values read from or written to data subset
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1999-11-18
                                                        + +

                                                        Definition at line 1876 of file readwriteval.F90.

                                                        + +

                                                        References moda_usrint::nval, and moda_usrint::val.

                                                        + +

                                                        Referenced by ufbstp().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ ufbstp()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        recursive subroutine ufbstp (integer, intent(in) lunin,
                                                        real*8, dimension(i1,i2), intent(inout) usr,
                                                        integer, intent(in) i1,
                                                        integer, intent(in) i2,
                                                        integer, intent(out) iret,
                                                        character*(*), intent(in) str 
                                                        )
                                                        +
                                                        + +

                                                        Read or write one or more data values from or to a data subset.

                                                        +

                                                        The direction of the data transfer is determined by the context of abs(lunin):

                                                          +
                                                        • If abs(lunin) points to a file that was previously opened for input using subroutine openbf(), then data values are read from the current data subset.
                                                        • +
                                                        • If abs(lunin) points to a file that was previously opened for output using subroutine openbf(), then data values are written to the current data subset.
                                                        • +
                                                        +

                                                        This subroutine is specifically designed for use with Table B mnemonics which are part of a fixed (i.e. non-delayed) replication sequence, or for mnemonics which are replicated by being directly listed more than once within an overall subset definition. It is very similar to subroutine ufbrep(), but it differs in how it processes the input mnemonic string str. For more details, see the discussion and example use case in DX BUFR Tables. See also subroutines ufbint() and ufbseq(), which can also be used to read/write one or more data values from/to a data subset but are also designed for different use cases as noted in DX BUFR Tables.

                                                        +

                                                        It is the user's responsibility to ensure that usr is dimensioned sufficiently large enough to accommodate the number of data values that are to be read from or written to the data subset. Note also that usr is an array of real*8 values; therefore, any data that are to be written out as character (i.e. CCITT IA5) values in BUFR must be converted from character into real*8 format within the application program before calling this subroutine. Conversely, when this subroutine is being used to read character values from a data subset, the value that is returned will be in real*8 format and must be converted back into character format by the application program before it can be used as such. Alternatively, there are different subroutines such as readlc() and writlc() which can be used to read/write character data directly from/to a data subset without the need to convert from/to real*8 format as an intermediate step.

                                                        +

                                                        Numeric (i.e. non-character) data values within usr are always in the exact units specified for the corresponding mnemonic within the relevant DX or master BUFR table, without any scale or reference values applied. Specifically, this means that, when writing data values into an output subset, the user only needs to store each respective value into usr using the units specified within the table, and the NCEPLIBS-bufr software will take care of any necessary scaling or referencing of the value before it is actually encoded into BUFR. Conversely, when reading data values from an input subset, the values returned in usr are already de-scaled and de-referenced and, thus, are already in the exact units that were defined for the corresponding mnemonics within the table.

                                                        +

                                                        "Missing" values in usr are always denoted by a unique placeholder value. This placeholder value is initially set to a default value of 10E10_8, but it can be reset to any substitute value of the user's choice via a separate call to subroutine setbmiss(). In any case, and whenever this subroutine is used to read data values from an input subset, any returned value in usr can be easily checked for equivalence to the current placeholder value via a call to function ibfms(), and a positive result means that the value for the corresponding mnemonic was encoded as "missing" in BUFR (i.e. all bits set to 1) within the original data subset. Conversely, whenever this subroutine is used to write data values to an output subset, the current placeholder value can be obtained via a separate call to function getbmiss(), and the resulting value can then be stored into the usr array whereever the user desires a BUFR "missing" value (i.e. all bits set to 1) to be encoded for the corresponding mnemonic within the output subset.

                                                        +
                                                        Remarks
                                                          +
                                                        • If lunin < 0, and if abs(lunin) points to a file that is open for output (writing BUFR), then the subroutine will treat the file pointed to by abs(lunin) as though it was open for input (reading BUFR). This is a special capability for use by some applications that need to read certain values back out from a BUFR file during the same time that it is in the process of being written to.
                                                        • +
                                                        +
                                                        +
                                                        Parameters
                                                        + + + + + + + +
                                                        lunin- Absolute value is Fortran logical unit number for BUFR file
                                                        usr- Data values
                                                          +
                                                        • If abs(lunin) was opened for input, then usr is output from this subroutine and contains data values that were read from the current data subset
                                                        • +
                                                        • If abs(lunin) was opened for output, then usr is input to this subroutine and contains data values that are to be written to the current data subset
                                                        • +
                                                        +
                                                        i1- First dimension of usr as allocated within the calling program
                                                        i2- Second dimension of usr
                                                          +
                                                        • If abs(lunin) was opened for input, then i2 must be set equal to the second dimension of usr as allocated within the calling program
                                                        • +
                                                        • If abs(lunin) was opened for output, then i2 must be set equal to the number of replications of str that are to be written to the data subset
                                                        • +
                                                        +
                                                        iret- Number of replications of str that were read/written from/to the data subset
                                                        str- String of blank-separated Table B mnemonics in one-to-one correspondence with the number of data values that will be read/written from/to the data subset within the first dimension of usr (see DX BUFR Tables for further information about Table B mnemonics)
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 1098 of file readwriteval.F90.

                                                        + +

                                                        References bort(), bort2(), errwrt(), moda_msgcwd::inode, moda_usrint::inv, status(), string(), ufbsp(), x48(), and x84().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ writlc()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        recursive subroutine writlc (integer, intent(in) lunit,
                                                        character*(*), intent(in) chr,
                                                        character*(*), intent(in) str 
                                                        )
                                                        +
                                                        + +

                                                        Write a long character string (greater than 8 bytes) to a data subset.

                                                        +

                                                        The data subset should have already been written into a BUFR message before calling this subroutine to write a long character string into the subset.

                                                        +

                                                        If there is more than one occurrence of str within the data subset definition, then each occurrence can be written via a separate call to this subroutine, and by appending the ordinal number of the occurrence to STR in each case. For example, if there are 5 occurrences of mnemonic LSTID within a given data subset definition, then 5 separate calls should be made to this subroutine, once each with str set to 'LSTID#1', 'LSTID#2', 'LSTID#3', 'LSTID#4' and 'LSTID#5'. However, the first notation is superfluous, because omitting the ordinal number always defaults to the first occurrence of a particular string, so a user could just specify 'LSTID' instead of 'LSTID#1'.

                                                        +

                                                        Character strings which are 8 bytes or less in length can be written by converting the string into a real*8 value within the application program, and then using the real*8 usr array within a call to one of the NCEPLIBS-bufr values-writing subroutines prior to calling one of the subset-writing subroutines for the data subset.

                                                        +
                                                        Parameters
                                                        + + + + +
                                                        lunit- Fortran logical unit number for BUFR file
                                                        chr- Value corresponding to str
                                                        str- Table B mnemonic of long character string to be written, possibly supplemented with an ordinal occurrence notation
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        +J. Ator
                                                        +
                                                        Date
                                                        2003-11-04
                                                        + +

                                                        Definition at line 199 of file readwriteval.F90.

                                                        + +

                                                        References bort(), moda_comprs::catx, errwrt(), getlens(), moda_bitbuf::ibit, moda_tables::ibt, moda_usrint::inv, moda_tables::itp, iupbs3(), moda_comprs::matx, moda_bitbuf::mbay, moda_comprs::ncol, moda_msgcwd::nsub, moda_usrint::nval, parstr(), parutg(), pkc(), status(), moda_tables::tag, moda_tables::typ, upb(), upbb(), usrtpl(), and x84().

                                                        + +

                                                        Referenced by msgupd().

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/readwriteval_8F90.js b/previous_versions/v12.1.0/readwriteval_8F90.js new file mode 100644 index 000000000..1f416a6e8 --- /dev/null +++ b/previous_versions/v12.1.0/readwriteval_8F90.js @@ -0,0 +1,23 @@ +var readwriteval_8F90 = +[ + [ "drfini", "readwriteval_8F90.html#a8a84d615371869d93f16c8617575dee2", null ], + [ "getvalnb", "readwriteval_8F90.html#a10cd831e6dc0a773534c5c2787da56c8", null ], + [ "hold4wlc", "readwriteval_8F90.html#a551fbe590397eacf06bb471b738dd6a5", null ], + [ "nevn", "readwriteval_8F90.html#a2017ce90611078ae96c6bc12da4e8e02", null ], + [ "readlc", "readwriteval_8F90.html#aad0d9cae550b97bc950c739ff44ca6b2", null ], + [ "setvalnb", "readwriteval_8F90.html#ac8bbcb32a65a5acdf50e0f5d835c6ac2", null ], + [ "trybump", "readwriteval_8F90.html#a79d01683a99ab7e6a31359c00c317bd8", null ], + [ "ufbevn", "readwriteval_8F90.html#ad0c9f5c0f8e4dc0e1ebd7c685b9a5ba9", null ], + [ "ufbget", "readwriteval_8F90.html#aee2899967d88055f73e4d5ad954d7b5a", null ], + [ "ufbin3", "readwriteval_8F90.html#a1ac6ef2be222bff2bab58e3f58f5d67e", null ], + [ "ufbint", "readwriteval_8F90.html#a6eb38e7aa610c36787b90e50b290eea7", null ], + [ "ufbinx", "readwriteval_8F90.html#a1d88d30e5ee23d6d86cbfb66537b512f", null ], + [ "ufbovr", "readwriteval_8F90.html#a62aacb5a102aaf1ee01deef68c63cdb8", null ], + [ "ufbrep", "readwriteval_8F90.html#af46dec3ef4cc6f467323b40eb14a4024", null ], + [ "ufbrp", "readwriteval_8F90.html#a3f676e2267d902f8bc913a6d9d1a6aac", null ], + [ "ufbrw", "readwriteval_8F90.html#a543d19ccf3a36ded022cbbe8db66ee85", null ], + [ "ufbseq", "readwriteval_8F90.html#a4895b24addb0b3e23f5bd92fd891656e", null ], + [ "ufbsp", "readwriteval_8F90.html#a7281bf7fbd6efa3a9be946f7d63cffad", null ], + [ "ufbstp", "readwriteval_8F90.html#a921e4820b81e9f33e28a0d0452785a14", null ], + [ "writlc", "readwriteval_8F90.html#aecfa08f631e1af46b472c007b93b2955", null ] +]; \ No newline at end of file diff --git a/previous_versions/v12.1.0/readwriteval_8F90_source.html b/previous_versions/v12.1.0/readwriteval_8F90_source.html new file mode 100644 index 000000000..5f423a96a --- /dev/null +++ b/previous_versions/v12.1.0/readwriteval_8F90_source.html @@ -0,0 +1,2226 @@ + + + + + + + +NCEPLIBS-bufr: readwriteval.F90 Source File + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        +
                                                        readwriteval.F90
                                                        +
                                                        +
                                                        +Go to the documentation of this file.
                                                        1 
                                                        +
                                                        5 
                                                        +
                                                        37 recursive subroutine setvalnb ( lunit, tagpv, ntagpv, tagnb, ntagnb, r8val, iret )
                                                        +
                                                        38 
                                                        +
                                                        39  use modv_vars, only: im8b
                                                        +
                                                        40 
                                                        +
                                                        41  use moda_usrint
                                                        +
                                                        42  use moda_msgcwd
                                                        +
                                                        43  use moda_tables
                                                        +
                                                        44 
                                                        +
                                                        45  implicit none
                                                        +
                                                        46 
                                                        +
                                                        47  integer, intent(in) :: lunit, ntagpv, ntagnb
                                                        +
                                                        48  integer, intent(out) :: iret
                                                        +
                                                        49  integer my_lunit, my_ntagpv, my_ntagnb, lun, il, im, npv, nnb, ierft
                                                        +
                                                        50 
                                                        +
                                                        51  character*(*), intent(in) :: tagpv, tagnb
                                                        +
                                                        52 
                                                        +
                                                        53  real*8, intent(in) :: r8val
                                                        +
                                                        54 
                                                        +
                                                        55  ! Check for I8 integers.
                                                        +
                                                        56  if(im8b) then
                                                        +
                                                        57  im8b=.false.
                                                        +
                                                        58  call x84 ( lunit, my_lunit, 1 )
                                                        +
                                                        59  call x84 ( ntagpv, my_ntagpv, 1 )
                                                        +
                                                        60  call x84 ( ntagnb, my_ntagnb, 1 )
                                                        +
                                                        61  call setvalnb ( my_lunit, tagpv, my_ntagpv, tagnb, my_ntagnb, r8val, iret )
                                                        +
                                                        62  call x48 ( iret, iret, 1 )
                                                        +
                                                        63  im8b=.true.
                                                        +
                                                        64  return
                                                        +
                                                        65  endif
                                                        +
                                                        66 
                                                        +
                                                        67  iret = -1
                                                        +
                                                        68 
                                                        +
                                                        69  ! Get lun from lunit.
                                                        +
                                                        70  call status (lunit, lun, il, im )
                                                        +
                                                        71  if ( il <= 0 ) return
                                                        +
                                                        72  if ( inode(lun) /= inv(1,lun) ) return
                                                        +
                                                        73 
                                                        +
                                                        74  ! Starting from the beginning of the subset, locate the (ntagpv)th occurrence of tagpv.
                                                        +
                                                        75  call fstag( lun, tagpv, ntagpv, 1, npv, ierft )
                                                        +
                                                        76  if ( ierft /= 0 ) return
                                                        +
                                                        77 
                                                        +
                                                        78  ! Now, starting from the (ntagpv)th occurrence of tagpv, search forward or backward for the (ntagnb)th occurrence of tagnb.
                                                        +
                                                        79  call fstag( lun, tagnb, ntagnb, npv, nnb, ierft )
                                                        +
                                                        80  if ( ierft /= 0 ) return
                                                        +
                                                        81 
                                                        +
                                                        82  iret = 0
                                                        +
                                                        83  val(nnb,lun) = r8val
                                                        +
                                                        84 
                                                        +
                                                        85  return
                                                        +
                                                        86 end subroutine setvalnb
                                                        +
                                                        87 
                                                        +
                                                        121 recursive real*8 function getvalnb ( lunit, tagpv, ntagpv, tagnb, ntagnb ) result ( r8val )
                                                        +
                                                        122 
                                                        +
                                                        123  use modv_vars, only: im8b, bmiss
                                                        +
                                                        124 
                                                        +
                                                        125  use moda_usrint
                                                        +
                                                        126  use moda_msgcwd
                                                        +
                                                        127  use moda_tables
                                                        +
                                                        128 
                                                        +
                                                        129  implicit none
                                                        +
                                                        130 
                                                        +
                                                        131  integer, intent(in) :: lunit, ntagpv, ntagnb
                                                        +
                                                        132  integer my_lunit, my_ntagpv, my_ntagnb, lun, il, im, npv, nnb, ierft
                                                        +
                                                        133 
                                                        +
                                                        134  character*(*), intent(in) :: tagpv, tagnb
                                                        +
                                                        135 
                                                        +
                                                        136  ! Check for I8 integers.
                                                        +
                                                        137  if(im8b) then
                                                        +
                                                        138  im8b=.false.
                                                        +
                                                        139  call x84(lunit,my_lunit,1)
                                                        +
                                                        140  call x84(ntagpv,my_ntagpv,1)
                                                        +
                                                        141  call x84(ntagnb,my_ntagnb,1)
                                                        +
                                                        142  r8val=getvalnb(my_lunit,tagpv,my_ntagpv,tagnb,my_ntagnb)
                                                        +
                                                        143  im8b=.true.
                                                        +
                                                        144  return
                                                        +
                                                        145  endif
                                                        +
                                                        146 
                                                        +
                                                        147  r8val = bmiss
                                                        +
                                                        148 
                                                        +
                                                        149  ! Get lun from lunit.
                                                        +
                                                        150  call status (lunit, lun, il, im )
                                                        +
                                                        151  if ( il >= 0 ) return
                                                        +
                                                        152  if ( inode(lun) /= inv(1,lun) ) return
                                                        +
                                                        153 
                                                        +
                                                        154  ! Starting from the beginning of the subset, locate the (ntagpv)th occurrence of tagpv.
                                                        +
                                                        155  call fstag( lun, tagpv, ntagpv, 1, npv, ierft )
                                                        +
                                                        156  if ( ierft /= 0 ) return
                                                        +
                                                        157 
                                                        +
                                                        158  ! Now, starting from the (ntagpv)th occurrence of tagpv, search forward or backward for the (ntagnb)th occurrence of tagnb.
                                                        +
                                                        159  call fstag( lun, tagnb, ntagnb, npv, nnb, ierft )
                                                        +
                                                        160  if ( ierft /= 0 ) return
                                                        +
                                                        161 
                                                        +
                                                        162  r8val = val(nnb,lun)
                                                        +
                                                        163 
                                                        +
                                                        164  return
                                                        +
                                                        165 end function getvalnb
                                                        +
                                                        166 
                                                        +
                                                        199 recursive subroutine writlc(lunit,chr,str)
                                                        +
                                                        200 
                                                        +
                                                        201  use modv_vars, only: im8b, mxlcc
                                                        +
                                                        202 
                                                        +
                                                        203  use moda_usrint
                                                        +
                                                        204  use moda_msgcwd
                                                        +
                                                        205  use moda_bitbuf
                                                        +
                                                        206  use moda_tables
                                                        +
                                                        207  use moda_comprs
                                                        +
                                                        208 
                                                        +
                                                        209  implicit none
                                                        +
                                                        210 
                                                        +
                                                        211  integer, intent(in) :: lunit
                                                        +
                                                        212  integer my_lunit, maxtg, iprt, lun, il, im, ntg, nnod, kon, ii, n, node, ioid, ival, mbit, nbit, nbmp, nchr, nbyt, nsubs, &
                                                        +
                                                        213  itagct, len0, len1, len2, len3, l4, l5, mbyte, iupbs3
                                                        +
                                                        214 
                                                        +
                                                        215  character*(*), intent(in) :: chr, str
                                                        +
                                                        216  character*128 bort_str, errstr
                                                        +
                                                        217  character*10 ctag
                                                        +
                                                        218  character*14 tgs(10)
                                                        +
                                                        219 
                                                        +
                                                        220  real roid
                                                        +
                                                        221 
                                                        +
                                                        222  common /quiet/ iprt
                                                        +
                                                        223 
                                                        +
                                                        224  data maxtg /10/
                                                        +
                                                        225 
                                                        +
                                                        226  ! Check for I8 integers
                                                        +
                                                        227  if(im8b) then
                                                        +
                                                        228  im8b=.false.
                                                        +
                                                        229  call x84(lunit,my_lunit,1)
                                                        +
                                                        230  call writlc(my_lunit,chr,str)
                                                        +
                                                        231  im8b=.true.
                                                        +
                                                        232  return
                                                        +
                                                        233  endiF
                                                        +
                                                        234 
                                                        +
                                                        235  ! Check the file status.
                                                        +
                                                        236  call status(lunit,lun,il,im)
                                                        +
                                                        237  if(il==0) call bort('BUFRLIB: WRITLC - OUTPUT BUFR FILE IS CLOSED, IT MUST BE OPEN FOR OUTPUT')
                                                        +
                                                        238  if(il<0) call bort('BUFRLIB: WRITLC - OUTPUT BUFR FILE IS OPEN FOR INPUT, IT MUST BE OPEN FOR OUTPUT')
                                                        +
                                                        239  if(im==0) call bort('BUFRLIB: WRITLC - A MESSAGE MUST BE OPEN IN OUTPUT BUFR FILE, NONE ARE')
                                                        +
                                                        240 
                                                        +
                                                        241  ! Check for tags (mnemonics) in input string (there can only be one)
                                                        +
                                                        242  call parstr(str,tgs,maxtg,ntg,' ',.true.)
                                                        +
                                                        243  if(ntg>1) then
                                                        +
                                                        244  write(bort_str,'("BUFRLIB: WRITLC - THERE CANNOT BE MORE THAN '// &
                                                        +
                                                        245  ' ONE MNEMONIC IN THE INPUT STRING (",A,") (HERE THERE ARE",I4,")")') str,ntg
                                                        +
                                                        246  call bort(bort_str)
                                                        +
                                                        247  endif
                                                        +
                                                        248 
                                                        +
                                                        249  ! Check if a specific occurrence of the input string was requested; if not, then the default is to write the first occurrence
                                                        +
                                                        250  call parutg(lun,1,tgs(1),nnod,kon,roid)
                                                        +
                                                        251  if(kon==6) then
                                                        +
                                                        252  ioid=nint(roid)
                                                        +
                                                        253  if(ioid<=0) ioid = 1
                                                        +
                                                        254  ctag = ' '
                                                        +
                                                        255  ii = 1
                                                        +
                                                        256  do while((ii<=10).and.(tgs(1)(ii:ii)/='#'))
                                                        +
                                                        257  ctag(ii:ii)=tgs(1)(ii:ii)
                                                        +
                                                        258  ii = ii + 1
                                                        +
                                                        259  enddo
                                                        +
                                                        260  else
                                                        +
                                                        261  ioid = 1
                                                        +
                                                        262  ctag = tgs(1)(1:10)
                                                        +
                                                        263  endif
                                                        +
                                                        264 
                                                        +
                                                        265  if(iupbs3(mbay(1,lun),'ICMP')>0) then
                                                        +
                                                        266  ! The message is compressed
                                                        +
                                                        267  n = 1
                                                        +
                                                        268  itagct = 0
                                                        +
                                                        269  call usrtpl(lun,n,n)
                                                        +
                                                        270  do while (n+1<=nval(lun))
                                                        +
                                                        271  n = n+1
                                                        +
                                                        272  node = inv(n,lun)
                                                        +
                                                        273  if(itp(node)==1) then
                                                        +
                                                        274  nbmp=int(matx(n,ncol))
                                                        +
                                                        275  call usrtpl(lun,n,nbmp)
                                                        +
                                                        276  elseif(ctag==tag(node)) then
                                                        +
                                                        277  itagct = itagct + 1
                                                        +
                                                        278  if(itagct==ioid) then
                                                        +
                                                        279  if(itp(node)/=3) then
                                                        +
                                                        280  write(bort_str,'("BUFRLIB: WRITLC - MNEMONIC ",A," DOES NOT REPRESENT A CHARACTER ELEMENT (TYP=",A,")")') &
                                                        +
                                                        281  ctag,typ(node)
                                                        +
                                                        282  call bort(bort_str)
                                                        +
                                                        283  endif
                                                        +
                                                        284  catx(n,ncol)=' '
                                                        +
                                                        285  ! The following statement enforces a limit of mxlcc characters per long character string when writing
                                                        +
                                                        286  ! compressed messages. This limit keeps the array catx to a reasonable dimensioned size.
                                                        +
                                                        287  nchr=min(mxlcc,ibt(node)/8)
                                                        +
                                                        288  catx(n,ncol)=chr(1:nchr)
                                                        +
                                                        289  call usrtpl(lun,1,1)
                                                        +
                                                        290  return
                                                        +
                                                        291  endif
                                                        +
                                                        292  endif
                                                        +
                                                        293  enddo
                                                        +
                                                        294  else
                                                        +
                                                        295  ! The message is not compressed. Locate the beginning of the data (Section 4) in the message.
                                                        +
                                                        296  call getlens(mbay(1,lun),3,len0,len1,len2,len3,l4,l5)
                                                        +
                                                        297  mbyte = len0 + len1 + len2 + len3 + 4
                                                        +
                                                        298  nsubs = 1
                                                        +
                                                        299  ! Find the most recently written subset in the message.
                                                        +
                                                        300  do while(nsubs<nsub(lun))
                                                        +
                                                        301  ibit = mbyte*8
                                                        +
                                                        302  call upb(nbyt,16,mbay(1,lun),ibit)
                                                        +
                                                        303  mbyte = mbyte + nbyt
                                                        +
                                                        304  nsubs = nsubs + 1
                                                        +
                                                        305  enddo
                                                        +
                                                        306  if(nsubs/=nsub(lun)) then
                                                        +
                                                        307  if(iprt>=0) then
                                                        +
                                                        308  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        309  errstr = 'BUFRLIB: WRITLC - COULDN''T WRITE VALUE FOR ' // ctag // &
                                                        +
                                                        310  ' INTO SUBSET, BECAUSE NO SUBSET WAS OPEN FOR WRITING'
                                                        +
                                                        311  call errwrt(errstr)
                                                        +
                                                        312  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        313  call errwrt(' ')
                                                        +
                                                        314  endif
                                                        +
                                                        315  return
                                                        +
                                                        316  endif
                                                        +
                                                        317  ! Locate and write the long character string within this subset.
                                                        +
                                                        318  itagct = 0
                                                        +
                                                        319  mbit = mbyte*8 + 16
                                                        +
                                                        320  nbit = 0
                                                        +
                                                        321  n = 1
                                                        +
                                                        322  call usrtpl(lun,n,n)
                                                        +
                                                        323  do while (n+1<=nval(lun))
                                                        +
                                                        324  n = n+1
                                                        +
                                                        325  node = inv(n,lun)
                                                        +
                                                        326  mbit = mbit+nbit
                                                        +
                                                        327  nbit = ibt(node)
                                                        +
                                                        328  if(itp(node)==1) then
                                                        +
                                                        329  call upbb(ival,nbit,mbit,mbay(1,lun))
                                                        +
                                                        330  call usrtpl(lun,n,ival)
                                                        +
                                                        331  elseif(ctag==tag(node)) then
                                                        +
                                                        332  itagct = itagct + 1
                                                        +
                                                        333  if(itagct==ioid) then
                                                        +
                                                        334  if(itp(node)/=3) then
                                                        +
                                                        335  write(bort_str,'("BUFRLIB: WRITLC - MNEMONIC ",A," DOES NOT REPRESENT A CHARACTER ELEMENT (TYP=",A,")")') &
                                                        +
                                                        336  ctag,typ(node)
                                                        +
                                                        337  call bort(bort_str)
                                                        +
                                                        338  endif
                                                        +
                                                        339  nchr = nbit/8
                                                        +
                                                        340  ibit = mbit
                                                        +
                                                        341  do ii=1,nchr
                                                        +
                                                        342  call pkc(' ',1,mbay(1,lun),ibit)
                                                        +
                                                        343  enddo
                                                        +
                                                        344  call pkc(chr,nchr,mbay(1,lun),mbit)
                                                        +
                                                        345  call usrtpl(lun,1,1)
                                                        +
                                                        346  return
                                                        +
                                                        347  endif
                                                        +
                                                        348  endif
                                                        +
                                                        349  enddo
                                                        +
                                                        350  endif
                                                        +
                                                        351 
                                                        +
                                                        352  ! If we made it here, then we couldn't find the requested string.
                                                        +
                                                        353  if(iprt>=0) then
                                                        +
                                                        354  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        355  errstr = 'BUFRLIB: WRITLC - COULDN''T WRITE VALUE FOR ' // ctag // ' INTO SUBSET, BECAUSE IT WASN''T FOUND IN THE ' // &
                                                        +
                                                        356  'SUBSET DEFINITION'
                                                        +
                                                        357  call errwrt(errstr)
                                                        +
                                                        358  errstr = '(' // ctag // ' MAY NOT BE IN THE BUFR TABLE(?))'
                                                        +
                                                        359  call errwrt(errstr)
                                                        +
                                                        360  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        361  call errwrt(' ')
                                                        +
                                                        362  endif
                                                        +
                                                        363 
                                                        +
                                                        364  return
                                                        +
                                                        365 end subroutine writlc
                                                        +
                                                        366 
                                                        +
                                                        406 recursive subroutine readlc(lunit,chr,str)
                                                        +
                                                        407 
                                                        +
                                                        408  use modv_vars, only: im8b
                                                        +
                                                        409 
                                                        +
                                                        410  use moda_usrint
                                                        +
                                                        411  use moda_usrbit
                                                        +
                                                        412  use moda_unptyp
                                                        +
                                                        413  use moda_bitbuf
                                                        +
                                                        414  use moda_tables
                                                        +
                                                        415  use moda_rlccmn
                                                        +
                                                        416 
                                                        +
                                                        417  implicit none
                                                        +
                                                        418 
                                                        +
                                                        419  integer, intent(in) :: lunit
                                                        +
                                                        420  integer my_lunit, maxtg, iprt, lchr, lun, il, im, ntg, nnod, kon, ii, n, nod, ioid, itagct, nchr, kbit
                                                        +
                                                        421 
                                                        +
                                                        422  character*(*), intent(in) :: str
                                                        +
                                                        423  character*(*), intent(out) :: chr
                                                        +
                                                        424 
                                                        +
                                                        425  character*128 bort_str, errstr
                                                        +
                                                        426  character*10 ctag
                                                        +
                                                        427  character*14 tgs(10)
                                                        +
                                                        428 
                                                        +
                                                        429  real roid
                                                        +
                                                        430 
                                                        +
                                                        431  common /quiet/ iprt
                                                        +
                                                        432 
                                                        +
                                                        433  data maxtg /10/
                                                        +
                                                        434 
                                                        +
                                                        435  ! Check for I8 integers
                                                        +
                                                        436  if(im8b) then
                                                        +
                                                        437  im8b=.false.
                                                        +
                                                        438  call x84(lunit,my_lunit,1)
                                                        +
                                                        439  call readlc(my_lunit,chr,str)
                                                        +
                                                        440  im8b=.true.
                                                        +
                                                        441  return
                                                        +
                                                        442  endif
                                                        +
                                                        443 
                                                        +
                                                        444  chr = ' '
                                                        +
                                                        445  lchr=len(chr)
                                                        +
                                                        446 
                                                        +
                                                        447  ! Check the file status
                                                        +
                                                        448  call status(lunit,lun,il,im)
                                                        +
                                                        449  if(il==0) call bort('BUFRLIB: READLC - INPUT BUFR FILE IS CLOSED, IT MUST BE OPEN FOR INPUT')
                                                        +
                                                        450  if(il>0) call bort('BUFRLIB: READLC - INPUT BUFR FILE IS OPEN FOR OUTPUT, IT MUST BE OPEN FOR INPUT')
                                                        +
                                                        451  if(im==0) call bort('BUFRLIB: READLC - A MESSAGE MUST BE OPEN IN INPUT BUFR FILE, NONE ARE')
                                                        +
                                                        452 
                                                        +
                                                        453  ! Check for tags (mnemonics) in input string (there can only be one)
                                                        +
                                                        454  call parstr(str,tgs,maxtg,ntg,' ',.true.)
                                                        +
                                                        455  if(ntg>1) then
                                                        +
                                                        456  write(bort_str,'("BUFRLIB: READLC - THERE CANNOT BE MORE THAN '// &
                                                        +
                                                        457  'ONE MNEMONIC IN THE INPUT STRING (",A,") (HERE THERE ARE ",I3,")")') str,ntg
                                                        +
                                                        458  call bort(bort_str)
                                                        +
                                                        459  endif
                                                        +
                                                        460 
                                                        +
                                                        461  ! Check if a specific occurrence of the input string was requested; if not, then the default is to return the
                                                        +
                                                        462  ! first occurrence.
                                                        +
                                                        463  call parutg(lun,0,tgs(1),nnod,kon,roid)
                                                        +
                                                        464  if(kon==6) then
                                                        +
                                                        465  ioid=nint(roid)
                                                        +
                                                        466  if(ioid<=0) ioid = 1
                                                        +
                                                        467  ctag = ' '
                                                        +
                                                        468  ii = 1
                                                        +
                                                        469  do while((ii<=10).and.(tgs(1)(ii:ii)/='#'))
                                                        +
                                                        470  ctag(ii:ii)=tgs(1)(ii:ii)
                                                        +
                                                        471  ii = ii + 1
                                                        +
                                                        472  enddo
                                                        +
                                                        473  else
                                                        +
                                                        474  ioid = 1
                                                        +
                                                        475  ctag = tgs(1)(1:10)
                                                        +
                                                        476  endif
                                                        +
                                                        477 
                                                        +
                                                        478  ! Locate and decode the long character string
                                                        +
                                                        479  if(msgunp(lun)==0.or.msgunp(lun)==1) then
                                                        +
                                                        480  ! The message is not compressed
                                                        +
                                                        481  itagct = 0
                                                        +
                                                        482  do n=1,nval(lun)
                                                        +
                                                        483  nod = inv(n,lun)
                                                        +
                                                        484  if(ctag==tag(nod)) then
                                                        +
                                                        485  itagct = itagct + 1
                                                        +
                                                        486  if(itagct==ioid) then
                                                        +
                                                        487  if(itp(nod)/=3) then
                                                        +
                                                        488  write(bort_str,'("BUFRLIB: READLC - MNEMONIC ",A," DOES NOT '// &
                                                        +
                                                        489  'REPRESENT A CHARACTER ELEMENT (ITP=",I2,")")') tgs(1),itp(nod)
                                                        +
                                                        490  call bort(bort_str)
                                                        +
                                                        491  endif
                                                        +
                                                        492  nchr = nbit(n)/8
                                                        +
                                                        493  if(nchr>lchr) then
                                                        +
                                                        494  write(bort_str,'("BUFRLIB: READLC - MNEMONIC ",A," IS A '// &
                                                        +
                                                        495  'CHARACTER STRING OF LENGTH",I4," BUT SPACE WAS PROVIDED FOR ONLY",I4, " CHARACTERS")') tgs(1),nchr,lchr
                                                        +
                                                        496  call bort(bort_str)
                                                        +
                                                        497  endif
                                                        +
                                                        498  kbit = mbit(n)
                                                        +
                                                        499  call upc(chr,nchr,mbay(1,lun),kbit,.true.)
                                                        +
                                                        500  return
                                                        +
                                                        501  endif
                                                        +
                                                        502  endif
                                                        +
                                                        503  enddo
                                                        +
                                                        504  else
                                                        +
                                                        505  ! The message is compressed
                                                        +
                                                        506  if(nrst>0) then
                                                        +
                                                        507  itagct = 0
                                                        +
                                                        508  do ii=1,nrst
                                                        +
                                                        509  if(ctag==crtag(ii)) then
                                                        +
                                                        510  itagct = itagct + 1
                                                        +
                                                        511  if(itagct==ioid) then
                                                        +
                                                        512  nchr = irnch(ii)
                                                        +
                                                        513  if(nchr>lchr) then
                                                        +
                                                        514  write(bort_str,'("BUFRLIB: READLC - MNEMONIC ",A," IS A '// &
                                                        +
                                                        515  'CHARACTER STRING OF LENGTH",I4," BUT SPACE WAS PROVIDED FOR ONLY",I4, " CHARACTERS")') tgs(1),nchr,lchr
                                                        +
                                                        516  call bort(bort_str)
                                                        +
                                                        517  endif
                                                        +
                                                        518  kbit = irbit(ii)
                                                        +
                                                        519  call upc(chr,nchr,mbay(1,lun),kbit,.true.)
                                                        +
                                                        520  return
                                                        +
                                                        521  endif
                                                        +
                                                        522  endif
                                                        +
                                                        523  enddo
                                                        +
                                                        524  endif
                                                        +
                                                        525  endif
                                                        +
                                                        526 
                                                        +
                                                        527  ! If we made it here, then we couldn't find the requested string.
                                                        +
                                                        528  if(iprt>=0) then
                                                        +
                                                        529  call errwrt('++++++++++++++BUFR ARCHIVE LIBRARY+++++++++++++++++')
                                                        +
                                                        530  errstr = 'BUFRLIB: READLC - MNEMONIC ' // tgs(1) // &
                                                        +
                                                        531  ' NOT LOCATED IN REPORT SUBSET - RETURN WITH MISSING STRING FOR CHARACTER DATA ELEMENT'
                                                        +
                                                        532  call errwrt(errstr)
                                                        +
                                                        533  call errwrt('++++++++++++++BUFR ARCHIVE LIBRARY+++++++++++++++++')
                                                        +
                                                        534  call errwrt(' ')
                                                        +
                                                        535  endif
                                                        +
                                                        536  do ii=1,lchr
                                                        +
                                                        537  call ipkm(chr(ii:ii),1,255)
                                                        +
                                                        538  enddo
                                                        +
                                                        539 
                                                        +
                                                        540  return
                                                        +
                                                        541 end subroutine readlc
                                                        +
                                                        542 
                                                        +
                                                        645 recursive subroutine ufbint(lunin,usr,i1,i2,iret,str)
                                                        +
                                                        646 
                                                        +
                                                        647  use modv_vars, only: im8b, bmiss
                                                        +
                                                        648 
                                                        +
                                                        649  use moda_usrint
                                                        +
                                                        650  use moda_msgcwd
                                                        +
                                                        651 
                                                        +
                                                        652  implicit none
                                                        +
                                                        653 
                                                        +
                                                        654  character*(*), intent(in) :: str
                                                        +
                                                        655  character*128 bort_str1, bort_str2, errstr
                                                        +
                                                        656 
                                                        +
                                                        657  real*8, intent(inout) :: usr(i1,i2)
                                                        +
                                                        658 
                                                        +
                                                        659  integer, intent(in) :: lunin, i1, i2
                                                        +
                                                        660  integer, intent(out) :: iret
                                                        +
                                                        661  integer iprt, nnod, ncon, nods, nodc, ivls, kons, ifirst1, ifirst2, my_lunin, my_i1, my_i2, lunit, lun, il, im, io, i, j
                                                        +
                                                        662 
                                                        +
                                                        663  common /usrstr/ nnod, ncon, nods(20), nodc(10), ivls(10), kons(10)
                                                        +
                                                        664  common /quiet/ iprt
                                                        +
                                                        665 
                                                        +
                                                        666  data ifirst1 /0/, ifirst2 /0/
                                                        +
                                                        667 
                                                        +
                                                        668  save ifirst1, ifirst2
                                                        +
                                                        669 
                                                        +
                                                        670  ! Check for I8 integers
                                                        +
                                                        671  if(im8b) then
                                                        +
                                                        672  im8b=.false.
                                                        +
                                                        673  call x84(lunin,my_lunin,1)
                                                        +
                                                        674  call x84(i1,my_i1,1)
                                                        +
                                                        675  call x84(i2,my_i2,1)
                                                        +
                                                        676  call ufbint(my_lunin,usr,my_i1,my_i2,iret,str)
                                                        +
                                                        677  call x48(iret,iret,1)
                                                        +
                                                        678  im8b=.true.
                                                        +
                                                        679  return
                                                        +
                                                        680  endif
                                                        +
                                                        681 
                                                        +
                                                        682  iret = 0
                                                        +
                                                        683 
                                                        +
                                                        684  ! Check the file status and inode
                                                        +
                                                        685  lunit = abs(lunin)
                                                        +
                                                        686  call status(lunit,lun,il,im)
                                                        +
                                                        687  if(il==0) call bort('BUFRLIB: UFBINT - BUFR FILE IS CLOSED, IT MUST BE OPEN')
                                                        +
                                                        688  if(im==0) call bort('BUFRLIB: UFBINT - A MESSAGE MUST BE OPEN IN BUFR FILE, NONE ARE')
                                                        +
                                                        689  if(inode(lun)/=inv(1,lun)) call bort('BUFRLIB: UFBINT - LOCATION OF INTERNAL TABLE FOR BUFR FILE DOES NOT AGREE ' // &
                                                        +
                                                        690  'WITH EXPECTED LOCATION IN INTERNAL SUBSET ARRAY')
                                                        +
                                                        691 
                                                        +
                                                        692  io = min(max(0,il),1)
                                                        +
                                                        693  if(lunit/=lunin) io = 0
                                                        +
                                                        694 
                                                        +
                                                        695  if(i1<=0) then
                                                        +
                                                        696  if(iprt>=0) then
                                                        +
                                                        697  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        698  errstr = .LE.'BUFRLIB: UFBINT - 3rd ARG. (INPUT) IS 0, SO RETURN WITH 5th ARG. (IRET) = 0; 6th ARG. (STR) ='
                                                        +
                                                        699  call errwrt(errstr)
                                                        +
                                                        700  call errwrt(str)
                                                        +
                                                        701  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        702  call errwrt(' ')
                                                        +
                                                        703  endif
                                                        +
                                                        704  return
                                                        +
                                                        705  elseif(i2<=0) then
                                                        +
                                                        706  if(iprt==-1) ifirst1 = 1
                                                        +
                                                        707  if(io==0 .or. ifirst1==0 .or. iprt>=1) then
                                                        +
                                                        708  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        709  errstr = .LE.'BUFRLIB: UFBINT - 4th ARG. (INPUT) IS 0, SO RETURN WITH 5th ARG. (IRET) = 0; 6th ARG. (STR) ='
                                                        +
                                                        710  call errwrt(errstr)
                                                        +
                                                        711  call errwrt(str)
                                                        +
                                                        712  if(iprt==0 .and. io==1) then
                                                        +
                                                        713  errstr = 'Note: Only the first occurrence of this WARNING message is printed, there may be more. To output ' // &
                                                        +
                                                        714  'all such messages,'
                                                        +
                                                        715  call errwrt(errstr)
                                                        +
                                                        716  errstr = 'modify your application program to add "CALL OPENBF(0,''QUIET'',1)" prior to the first call to a ' // &
                                                        +
                                                        717  'BUFRLIB routine.'
                                                        +
                                                        718  call errwrt(errstr)
                                                        +
                                                        719  endif
                                                        +
                                                        720  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        721  call errwrt(' ')
                                                        +
                                                        722  ifirst1 = 1
                                                        +
                                                        723  endif
                                                        +
                                                        724  return
                                                        +
                                                        725  endif
                                                        +
                                                        726 
                                                        +
                                                        727  ! Parse or recall the input string
                                                        +
                                                        728  call string(str,lun,i1,io)
                                                        +
                                                        729 
                                                        +
                                                        730  ! Initialize usr array preceeding an input operation
                                                        +
                                                        731  if(io==0) then
                                                        +
                                                        732  do j=1,i2
                                                        +
                                                        733  do i=1,i1
                                                        +
                                                        734  usr(i,j) = bmiss
                                                        +
                                                        735  enddo
                                                        +
                                                        736  enddo
                                                        +
                                                        737  endif
                                                        +
                                                        738 
                                                        +
                                                        739  ! Call the mnemonic reader/writer
                                                        +
                                                        740  call ufbrw(lun,usr,i1,i2,io,iret)
                                                        +
                                                        741 
                                                        +
                                                        742  ! If incomplete write try to initialize replication sequence or return
                                                        +
                                                        743  if(io==1 .and. iret/=i2 .and. iret>=0) then
                                                        +
                                                        744  call trybump(lun,usr,i1,i2,io,iret)
                                                        +
                                                        745  if(iret/=i2) then
                                                        +
                                                        746  write(bort_str1,'("BUFRLIB: UFBINT - MNEMONIC STRING READ IN IS: ",A)') str
                                                        +
                                                        747  write(bort_str2,'(18X,"THE NUMBER OF ''LEVELS'' ACTUALLY '// &
                                                        +
                                                        748  'WRITTEN (",I3,") DOES NOT EQUAL THE NUMBER REQUESTED (",I3,") - INCOMPLETE WRITE")') iret,i2
                                                        +
                                                        749  call bort2(bort_str1,bort_str2)
                                                        +
                                                        750  endif
                                                        +
                                                        751  elseif(iret==-1) then
                                                        +
                                                        752  iret = 0
                                                        +
                                                        753  endif
                                                        +
                                                        754 
                                                        +
                                                        755  if(iret==0) then
                                                        +
                                                        756  if(io==0) then
                                                        +
                                                        757  if(iprt>=1) then
                                                        +
                                                        758  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        759  errstr = 'BUFRLIB: UFBINT - NO SPECIFIED VALUES READ IN, SO RETURN WITH 5th ARG. (IRET) = 0; 6th ARG. (STR) ='
                                                        +
                                                        760  call errwrt(errstr)
                                                        +
                                                        761  call errwrt(str)
                                                        +
                                                        762  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        763  call errwrt(' ')
                                                        +
                                                        764  endif
                                                        +
                                                        765  else
                                                        +
                                                        766  if(iprt==-1) ifirst2 = 1
                                                        +
                                                        767  if(ifirst2==0 .or. iprt>=1) then
                                                        +
                                                        768  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        769  errstr = 'BUFRLIB: UFBINT - NO SPECIFIED VALUES WRITTEN OUT, SO RETURN WITH 5th ARG. (IRET) = 0; 6th ARG. (STR) ='
                                                        +
                                                        770  call errwrt(errstr)
                                                        +
                                                        771  call errwrt(str)
                                                        +
                                                        772  call errwrt('MAY NOT BE IN THE BUFR TABLE(?)')
                                                        +
                                                        773  if(iprt==0) then
                                                        +
                                                        774  errstr = 'Note: Only the first occurrence of this WARNING message is printed, there may be more. To output ' // &
                                                        +
                                                        775  'all such messages,'
                                                        +
                                                        776  call errwrt(errstr)
                                                        +
                                                        777  errstr = 'modify your application program to add "CALL OPENBF(0,''QUIET'',1)" prior to the first call ' // &
                                                        +
                                                        778  'to a BUFRLIB routine.'
                                                        +
                                                        779  call errwrt(errstr)
                                                        +
                                                        780  endif
                                                        +
                                                        781  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        782  call errwrt(' ')
                                                        +
                                                        783  ifirst2 = 1
                                                        +
                                                        784  endif
                                                        +
                                                        785  endif
                                                        +
                                                        786  endif
                                                        +
                                                        787 
                                                        +
                                                        788  return
                                                        +
                                                        789 end subroutine ufbint
                                                        +
                                                        790 
                                                        +
                                                        885 recursive subroutine ufbrep(lunin,usr,i1,i2,iret,str)
                                                        +
                                                        886 
                                                        +
                                                        887  use modv_vars, only: im8b, bmiss, iac
                                                        +
                                                        888 
                                                        +
                                                        889  use moda_usrint
                                                        +
                                                        890  use moda_msgcwd
                                                        +
                                                        891 
                                                        +
                                                        892  implicit none
                                                        +
                                                        893 
                                                        +
                                                        894  character*(*), intent(in) :: str
                                                        +
                                                        895  character*128 bort_str1, bort_str2, errstr
                                                        +
                                                        896 
                                                        +
                                                        897  real*8, intent(inout) :: usr(i1,i2)
                                                        +
                                                        898 
                                                        +
                                                        899  integer, intent(in) :: lunin, i1, i2
                                                        +
                                                        900  integer, intent(out) :: iret
                                                        +
                                                        901  integer iprt, ifirst1, my_lunin, my_i1, my_i2, lunit, lun, il, im, io, iac_prev, i, j
                                                        +
                                                        902 
                                                        +
                                                        903  common /quiet/ iprt
                                                        +
                                                        904 
                                                        +
                                                        905  data ifirst1 /0/
                                                        +
                                                        906 
                                                        +
                                                        907  save ifirst1
                                                        +
                                                        908 
                                                        +
                                                        909  ! Check for I8 integers
                                                        +
                                                        910  if(im8b) then
                                                        +
                                                        911  im8b=.false.
                                                        +
                                                        912  call x84(lunin,my_lunin,1)
                                                        +
                                                        913  call x84(i1,my_i1,1)
                                                        +
                                                        914  call x84(i2,my_i2,1)
                                                        +
                                                        915  call ufbrep(my_lunin,usr,my_i1,my_i2,iret,str)
                                                        +
                                                        916  call x48(iret,iret,1)
                                                        +
                                                        917  im8b=.true.
                                                        +
                                                        918  return
                                                        +
                                                        919  endif
                                                        +
                                                        920 
                                                        +
                                                        921  iret = 0
                                                        +
                                                        922 
                                                        +
                                                        923  ! Check the file status and inode
                                                        +
                                                        924  lunit = abs(lunin)
                                                        +
                                                        925  call status(lunit,lun,il,im)
                                                        +
                                                        926  if(il==0) call bort('BUFRLIB: UFBREP - BUFR FILE IS CLOSED, IT MUST BE OPEN')
                                                        +
                                                        927  if(im==0) call bort('BUFRLIB: UFBREP - A MESSAGE MUST BE OPEN IN BUFR FILE, NONE ARE')
                                                        +
                                                        928  if(inode(lun)/=inv(1,lun)) call bort('BUFRLIB: UFBREP - LOCATION OF INTERNAL TABLE FOR BUFR FILE DOES NOT AGREE ' // &
                                                        +
                                                        929  'WITH EXPECTED LOCATION IN INTERNAL SUBSET ARRAY')
                                                        +
                                                        930 
                                                        +
                                                        931  io = min(max(0,il),1)
                                                        +
                                                        932  if(lunit/=lunin) io = 0
                                                        +
                                                        933 
                                                        +
                                                        934  if(i1<=0) then
                                                        +
                                                        935  if(iprt>=0) then
                                                        +
                                                        936  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        937  errstr = .LE.'BUFRLIB: UFBREP - 3rd ARG. (INPUT) IS 0, SO RETURN WITH 5th ARG. (IRET) = 0; 6th ARG. (STR) ='
                                                        +
                                                        938  call errwrt(errstr)
                                                        +
                                                        939  call errwrt(str)
                                                        +
                                                        940  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        941  call errwrt(' ')
                                                        +
                                                        942  endif
                                                        +
                                                        943  return
                                                        +
                                                        944  elseif(i2<=0) then
                                                        +
                                                        945  if(iprt==-1) ifirst1 = 1
                                                        +
                                                        946  if(io==0 .or. ifirst1==0 .or. iprt>=1) then
                                                        +
                                                        947  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        948  errstr = .LE.'BUFRLIB: UFBREP - 4th ARG. (INPUT) IS 0, SO RETURN WITH 5th ARG. (IRET) = 0; 6th ARG. (STR) ='
                                                        +
                                                        949  call errwrt(errstr)
                                                        +
                                                        950  call errwrt(str)
                                                        +
                                                        951  if(iprt==0 .and. io==1) then
                                                        +
                                                        952  errstr = 'Note: Only the first occurrence of this WARNING message is printed, there may be more. To output ' // &
                                                        +
                                                        953  'all such messages,'
                                                        +
                                                        954  call errwrt(errstr)
                                                        +
                                                        955  errstr = 'modify your application program to add "CALL OPENBF(0,''QUIET'',1)" prior to the first call to a ' // &
                                                        +
                                                        956  'BUFRLIB routine.'
                                                        +
                                                        957  call errwrt(errstr)
                                                        +
                                                        958  endif
                                                        +
                                                        959  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        960  call errwrt(' ')
                                                        +
                                                        961  ifirst1 = 1
                                                        +
                                                        962  endif
                                                        +
                                                        963  return
                                                        +
                                                        964  endif
                                                        +
                                                        965 
                                                        +
                                                        966  ! Initialize usr array preceeding an input operation
                                                        +
                                                        967  if(io==0) then
                                                        +
                                                        968  do j=1,i2
                                                        +
                                                        969  do i=1,i1
                                                        +
                                                        970  usr(i,j) = bmiss
                                                        +
                                                        971  enddo
                                                        +
                                                        972  enddo
                                                        +
                                                        973  endif
                                                        +
                                                        974 
                                                        +
                                                        975  ! Parse or recall the input string
                                                        +
                                                        976  iac_prev = iac
                                                        +
                                                        977  iac = 1
                                                        +
                                                        978  call string(str,lun,i1,io)
                                                        +
                                                        979  iac = iac_prev
                                                        +
                                                        980 
                                                        +
                                                        981  ! Call the mnemonic reader/writer
                                                        +
                                                        982  call ufbrp(lun,usr,i1,i2,io,iret)
                                                        +
                                                        983 
                                                        +
                                                        984  if(io==1 .and. iret<i2) then
                                                        +
                                                        985  write(bort_str1,'("BUFRLIB: UFBREP - MNEMONIC STRING READ IN IS: ",A)') str
                                                        +
                                                        986  write(bort_str2,'(18X,"THE NUMBER OF ''LEVELS'' ACTUALLY '// &
                                                        +
                                                        987  'WRITTEN (",I3,") LESS THAN THE NUMBER REQUESTED (",I3,") - INCOMPLETE WRITE")') iret,i2
                                                        +
                                                        988  call bort2(bort_str1,bort_str2)
                                                        +
                                                        989  endif
                                                        +
                                                        990 
                                                        +
                                                        991  if(iret==0 .and. io==0 .and. iprt>=1) then
                                                        +
                                                        992  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        993  errstr = 'BUFRLIB: UFBREP - NO SPECIFIED VALUES READ IN, SO RETURN WITH 5th ARG. (IRET) = 0; 6th ARG. (STR) ='
                                                        +
                                                        994  call errwrt(errstr)
                                                        +
                                                        995  call errwrt(str)
                                                        +
                                                        996  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        997  call errwrt(' ')
                                                        +
                                                        998  endif
                                                        +
                                                        999 
                                                        +
                                                        1000  return
                                                        +
                                                        1001 end subroutine ufbrep
                                                        +
                                                        1002 
                                                        +
                                                        1098 recursive subroutine ufbstp(lunin,usr,i1,i2,iret,str)
                                                        +
                                                        1099 
                                                        +
                                                        1100  use modv_vars, only: im8b, bmiss
                                                        +
                                                        1101 
                                                        +
                                                        1102  use moda_usrint
                                                        +
                                                        1103  use moda_msgcwd
                                                        +
                                                        1104 
                                                        +
                                                        1105  implicit none
                                                        +
                                                        1106 
                                                        +
                                                        1107  character*(*), intent(in) :: str
                                                        +
                                                        1108  character*128 bort_str1, bort_str2, errstr
                                                        +
                                                        1109 
                                                        +
                                                        1110  real*8, intent(inout) :: usr(i1,i2)
                                                        +
                                                        1111 
                                                        +
                                                        1112  integer, intent(in) :: lunin, i1, i2
                                                        +
                                                        1113  integer, intent(out) :: iret
                                                        +
                                                        1114  integer iprt, ifirst1, my_lunin, my_i1, my_i2, lunit, lun, il, im, io, i, j
                                                        +
                                                        1115 
                                                        +
                                                        1116  common /quiet/ iprt
                                                        +
                                                        1117 
                                                        +
                                                        1118  data ifirst1 /0/
                                                        +
                                                        1119 
                                                        +
                                                        1120  save ifirst1
                                                        +
                                                        1121 
                                                        +
                                                        1122  ! Check for I8 integers
                                                        +
                                                        1123  if(im8b) then
                                                        +
                                                        1124  im8b=.false.
                                                        +
                                                        1125  call x84(lunin,my_lunin,1)
                                                        +
                                                        1126  call x84(i1,my_i1,1)
                                                        +
                                                        1127  call x84(i2,my_i2,1)
                                                        +
                                                        1128  call ufbstp(my_lunin,usr,my_i1,my_i2,iret,str)
                                                        +
                                                        1129  call x48(iret,iret,1)
                                                        +
                                                        1130  im8b=.true.
                                                        +
                                                        1131  return
                                                        +
                                                        1132  endif
                                                        +
                                                        1133 
                                                        +
                                                        1134  iret = 0
                                                        +
                                                        1135 
                                                        +
                                                        1136  ! Check the file status and inode
                                                        +
                                                        1137  lunit = abs(lunin)
                                                        +
                                                        1138  call status(lunit,lun,il,im)
                                                        +
                                                        1139  if(il==0) call bort('BUFRLIB: UFBSTP - BUFR FILE IS CLOSED, IT MUST BE OPEN')
                                                        +
                                                        1140  if(im==0) call bort('BUFRLIB: UFBSTP - A MESSAGE MUST BE OPEN IN BUFR FILE, NONE ARE')
                                                        +
                                                        1141  if(inode(lun)/=inv(1,lun)) call bort('BUFRLIB: UFBSTP - LOCATION OF INTERNAL TABLE FOR BUFR FILE DOES NOT AGREE ' // &
                                                        +
                                                        1142  'WITH EXPECTED LOCATION IN INTERNAL SUBSET ARRAY')
                                                        +
                                                        1143 
                                                        +
                                                        1144  io = min(max(0,il),1)
                                                        +
                                                        1145  if(lunit/=lunin) io = 0
                                                        +
                                                        1146 
                                                        +
                                                        1147  if(i1<=0) then
                                                        +
                                                        1148  if(iprt>=0) then
                                                        +
                                                        1149  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        1150  errstr = .LE.'BUFRLIB: UFBSTP - 3rd ARG. (INPUT) IS 0, SO RETURN WITH 5th ARG. (IRET) = 0; 6th ARG. (STR) ='
                                                        +
                                                        1151  call errwrt(errstr)
                                                        +
                                                        1152  call errwrt(str)
                                                        +
                                                        1153  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        1154  call errwrt(' ')
                                                        +
                                                        1155  endif
                                                        +
                                                        1156  return
                                                        +
                                                        1157  elseif(i2<=0) then
                                                        +
                                                        1158  if(iprt==-1) ifirst1 = 1
                                                        +
                                                        1159  if(io==0 .or. ifirst1==0 .or. iprt>=1) then
                                                        +
                                                        1160  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        1161  errstr = .LE.'BUFRLIB: UFBSTP - 4th ARG. (INPUT) IS 0, SO RETURN WITH 5th ARG. (IRET) = 0; 6th ARG. (STR) ='
                                                        +
                                                        1162  call errwrt(errstr)
                                                        +
                                                        1163  call errwrt(str)
                                                        +
                                                        1164  if(iprt==0 .and. io==1) then
                                                        +
                                                        1165  errstr = 'Note: Only the first occurrence of this WARNING message is printed, there may be more. To output ' // &
                                                        +
                                                        1166  'all such messages,'
                                                        +
                                                        1167  call errwrt(errstr)
                                                        +
                                                        1168  errstr = 'modify your application program to add "CALL OPENBF(0,''QUIET'',1)" prior to the first call to a ' // &
                                                        +
                                                        1169  'BUFRLIB routine.'
                                                        +
                                                        1170  call errwrt(errstr)
                                                        +
                                                        1171  endif
                                                        +
                                                        1172  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        1173  call errwrt(' ')
                                                        +
                                                        1174  ifirst1 = 1
                                                        +
                                                        1175  endif
                                                        +
                                                        1176  return
                                                        +
                                                        1177  endif
                                                        +
                                                        1178 
                                                        +
                                                        1179  ! Initialize usr array preceeding an input operation
                                                        +
                                                        1180  if(io==0) then
                                                        +
                                                        1181  do j=1,i2
                                                        +
                                                        1182  do i=1,i1
                                                        +
                                                        1183  usr(i,j) = bmiss
                                                        +
                                                        1184  enddo
                                                        +
                                                        1185  enddo
                                                        +
                                                        1186  endif
                                                        +
                                                        1187 
                                                        +
                                                        1188  ! Parse or recall the input string
                                                        +
                                                        1189  call string(str,lun,i1,io)
                                                        +
                                                        1190 
                                                        +
                                                        1191  ! Call the mnemonic reader/writer
                                                        +
                                                        1192  call ufbsp(lun,usr,i1,i2,io,iret)
                                                        +
                                                        1193 
                                                        +
                                                        1194  if(io==1 .and. iret/=i2) then
                                                        +
                                                        1195  write(bort_str1,'("BUFRLIB: UFBSTP - MNEMONIC STRING READ IN IS: ",A)') str
                                                        +
                                                        1196  write(bort_str2,'(18X,"THE NUMBER OF ''LEVELS'' ACTUALLY '// &
                                                        +
                                                        1197  'WRITTEN (",I3,") DOES NOT EQUAL THE NUMBER REQUESTED (",I3,") - INCOMPLETE WRITE")') iret,i2
                                                        +
                                                        1198  call bort2(bort_str1,bort_str2)
                                                        +
                                                        1199  endif
                                                        +
                                                        1200 
                                                        +
                                                        1201  if(iret==0 .and. io==0 .and. iprt>=1) then
                                                        +
                                                        1202  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        1203  errstr = 'BUFRLIB: UFBSTP - NO SPECIFIED VALUES READ IN, SO RETURN WITH 5th ARG. (IRET) = 0; 6th ARG. (STR) ='
                                                        +
                                                        1204  call errwrt(errstr)
                                                        +
                                                        1205  call errwrt(str)
                                                        +
                                                        1206  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        1207  call errwrt(' ')
                                                        +
                                                        1208  endif
                                                        +
                                                        1209 
                                                        +
                                                        1210  return
                                                        +
                                                        1211 end subroutine ufbstp
                                                        +
                                                        1212 
                                                        +
                                                        1319 recursive subroutine ufbseq(lunin,usr,i1,i2,iret,str)
                                                        +
                                                        1320 
                                                        +
                                                        1321  use modv_vars, only: im8b, bmiss
                                                        +
                                                        1322 
                                                        +
                                                        1323  use moda_usrint
                                                        +
                                                        1324  use moda_msgcwd
                                                        +
                                                        1325  use moda_tables
                                                        +
                                                        1326 
                                                        +
                                                        1327  implicit none
                                                        +
                                                        1328 
                                                        +
                                                        1329  integer, intent(in) :: lunin, i1, i2
                                                        +
                                                        1330  integer, intent(out) :: iret
                                                        +
                                                        1331  integer, parameter :: mtag = 10
                                                        +
                                                        1332  integer iprt, ifirst1, ifirst2, my_lunin, my_i1, my_i2, lunit, lun, il, im, io, i, j, ntag, node, nods, ins1, ins2, insx, &
                                                        +
                                                        1333  nseq, isq, ityp, invwin, invtag
                                                        +
                                                        1334 
                                                        +
                                                        1335  real*8, intent(inout) :: usr(i1,i2)
                                                        +
                                                        1336 
                                                        +
                                                        1337  character*(*), intent(in) :: str
                                                        +
                                                        1338  character*156 bort_str
                                                        +
                                                        1339  character*128 errstr
                                                        +
                                                        1340  character*10 tags(mtag)
                                                        +
                                                        1341 
                                                        +
                                                        1342  common /quiet/ iprt
                                                        +
                                                        1343 
                                                        +
                                                        1344  data ifirst1 /0/, ifirst2 /0/
                                                        +
                                                        1345 
                                                        +
                                                        1346  save ifirst1, ifirst2
                                                        +
                                                        1347 
                                                        +
                                                        1348  ! Check for I8 integers
                                                        +
                                                        1349  if(im8b) then
                                                        +
                                                        1350  im8b=.false.
                                                        +
                                                        1351  call x84(lunin,my_lunin,1)
                                                        +
                                                        1352  call x84(i1,my_i1,1)
                                                        +
                                                        1353  call x84(i2,my_i2,1)
                                                        +
                                                        1354  call ufbseq(my_lunin,usr,my_i1,my_i2,iret,str)
                                                        +
                                                        1355  call x48(iret,iret,1)
                                                        +
                                                        1356  im8b=.true.
                                                        +
                                                        1357  return
                                                        +
                                                        1358  endif
                                                        +
                                                        1359 
                                                        +
                                                        1360  iret = 0
                                                        +
                                                        1361 
                                                        +
                                                        1362  ! Check the file status and inode
                                                        +
                                                        1363  lunit = abs(lunin)
                                                        +
                                                        1364  call status(lunit,lun,il,im)
                                                        +
                                                        1365  if(il==0) call bort('BUFRLIB: UFBSEQ - BUFR FILE IS CLOSED, IT MUST BE OPEN')
                                                        +
                                                        1366  if(im==0) call bort('BUFRLIB: UFBSEQ - A MESSAGE MUST BE OPEN IN BUFR FILE, NONE ARE')
                                                        +
                                                        1367 
                                                        +
                                                        1368  io = min(max(0,il),1)
                                                        +
                                                        1369  if(lunit/=lunin) io = 0
                                                        +
                                                        1370 
                                                        +
                                                        1371  if(i1<=0) then
                                                        +
                                                        1372  if(iprt>=0) then
                                                        +
                                                        1373  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        1374  errstr = .LE.'BUFRLIB: UFBSEQ - 3rd ARG. (INPUT) IS 0, SO RETURN WITH 5th ARG. (IRET) = 0; 6th ARG. (STR) ='
                                                        +
                                                        1375  call errwrt(errstr)
                                                        +
                                                        1376  call errwrt(str)
                                                        +
                                                        1377  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        1378  call errwrt(' ')
                                                        +
                                                        1379  endif
                                                        +
                                                        1380  return
                                                        +
                                                        1381  elseif(i2<=0) then
                                                        +
                                                        1382  if(iprt==-1) ifirst1 = 1
                                                        +
                                                        1383  if(io==0 .or. ifirst1==0 .or. iprt>=1) then
                                                        +
                                                        1384  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        1385  errstr = .LE.'BUFRLIB: UFBSEQ - 4th ARG. (INPUT) IS 0, SO RETURN WITH 5th ARG. (IRET) = 0; 6th ARG. (STR) ='
                                                        +
                                                        1386  call errwrt(errstr)
                                                        +
                                                        1387  call errwrt(str)
                                                        +
                                                        1388  if(iprt==0 .and. io==1) then
                                                        +
                                                        1389  errstr = 'Note: Only the first occurrence of this WARNING message is printed, there may be more. To output ' // &
                                                        +
                                                        1390  'all such messages,'
                                                        +
                                                        1391  call errwrt(errstr)
                                                        +
                                                        1392  errstr = 'modify your application program to add "CALL OPENBF(0,''QUIET'',1)" prior to the first call to a ' // &
                                                        +
                                                        1393  'BUFRLIB routine.'
                                                        +
                                                        1394  call errwrt(errstr)
                                                        +
                                                        1395  endif
                                                        +
                                                        1396  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        1397  call errwrt(' ')
                                                        +
                                                        1398  ifirst1 = 1
                                                        +
                                                        1399  endif
                                                        +
                                                        1400  return
                                                        +
                                                        1401  endif
                                                        +
                                                        1402 
                                                        +
                                                        1403  ! Check for valid sequence and sequence length arguments
                                                        +
                                                        1404  call parstr(str,tags,mtag,ntag,' ',.true.)
                                                        +
                                                        1405  if(ntag<1) then
                                                        +
                                                        1406  write(bort_str,'("BUFRLIB: UFBSEQ - THE INPUT STRING (",A,") DOES NOT CONTAIN ANY MNEMONICS!!")') str
                                                        +
                                                        1407  call bort(bort_str)
                                                        +
                                                        1408  endif
                                                        +
                                                        1409  if(ntag>1) then
                                                        +
                                                        1410  write(bort_str,'("BUFRLIB: UFBSEQ - THERE CANNOT BE MORE THAN '// &
                                                        +
                                                        1411  'ONE MNEMONIC IN THE INPUT STRING (",A,") (HERE THERE ARE ",I3,")")') str,ntag
                                                        +
                                                        1412  call bort(bort_str)
                                                        +
                                                        1413  endif
                                                        +
                                                        1414  if(inode(lun)/=inv(1,lun)) call bort('BUFRLIB: UFBSEQ - LOCATION OF INTERNAL TABLE FOR '// &
                                                        +
                                                        1415  'BUFR FILE DOES NOT AGREE WITH EXPECTED LOCATION IN INTERNAL SUBSET ARRAY')
                                                        +
                                                        1416 
                                                        +
                                                        1417  ! Initialize usr array preceeding an input operation
                                                        +
                                                        1418  if(io==0) then
                                                        +
                                                        1419  do j=1,i2
                                                        +
                                                        1420  do i=1,i1
                                                        +
                                                        1421  usr(i,j) = bmiss
                                                        +
                                                        1422  enddo
                                                        +
                                                        1423  enddo
                                                        +
                                                        1424  endif
                                                        +
                                                        1425 
                                                        +
                                                        1426  ! Find the parameters of the specified sequence
                                                        +
                                                        1427  outer: do node=inode(lun),isc(inode(lun))
                                                        +
                                                        1428  if(str==tag(node)) then
                                                        +
                                                        1429  if(typ(node)=='SEQ' .or. typ(node)=='RPC') then
                                                        +
                                                        1430  ins1 = 1
                                                        +
                                                        1431  do while (.true.)
                                                        +
                                                        1432  ins1 = invtag(node,lun,ins1,nval(lun))
                                                        +
                                                        1433  if(ins1==0) exit outer
                                                        +
                                                        1434  if(typ(node)/='RPC' .or. val(ins1,lun)/=0.) exit
                                                        +
                                                        1435  ins1 = ins1+1
                                                        +
                                                        1436  enddo
                                                        +
                                                        1437  ins2 = invtag(node,lun,ins1+1,nval(lun))
                                                        +
                                                        1438  if(ins2==0) ins2 = 10e5
                                                        +
                                                        1439  nods = node
                                                        +
                                                        1440  do while(link(nods)==0 .and. jmpb(nods)>0)
                                                        +
                                                        1441  nods = jmpb(nods)
                                                        +
                                                        1442  enddo
                                                        +
                                                        1443  if(link(nods)==0) then
                                                        +
                                                        1444  insx = nval(lun)
                                                        +
                                                        1445  elseif(link(nods)>0) then
                                                        +
                                                        1446  insx = invwin(link(nods),lun,ins1+1,nval(lun))-1
                                                        +
                                                        1447  endif
                                                        +
                                                        1448  ins2 = min(ins2,insx)
                                                        +
                                                        1449  elseif(typ(node)=='SUB') then
                                                        +
                                                        1450  ins1 = 1
                                                        +
                                                        1451  ins2 = nval(lun)
                                                        +
                                                        1452  else
                                                        +
                                                        1453  write(bort_str,'("BUFRLIB: UFBSEQ - INPUT MNEMONIC ",A," MUST '// &
                                                        +
                                                        1454  'BE A SEQUENCE (HERE IT IS TYPE """,A,""")")') tags(1),typ(node)
                                                        +
                                                        1455  call bort(bort_str)
                                                        +
                                                        1456  endif
                                                        +
                                                        1457  nseq = 0
                                                        +
                                                        1458  do isq=ins1,ins2
                                                        +
                                                        1459  ityp = itp(inv(isq,lun))
                                                        +
                                                        1460  if(ityp>1) nseq = nseq+1
                                                        +
                                                        1461  enddo
                                                        +
                                                        1462  if(nseq>i1) then
                                                        +
                                                        1463  write(bort_str,.GT.'("BUFRLIB: UFBSEQ - INPUT SEQ. MNEM. ",A," CONSISTS OF",I4," TABLE B MNEM., THE MAX. '// &
                                                        +
                                                        1464  'SPECIFIED IN (INPUT) ARGUMENT 3 (",I3,")")') tags(1),nseq,i1
                                                        +
                                                        1465  call bort(bort_str)
                                                        +
                                                        1466  endif
                                                        +
                                                        1467  ! Frame a section of the buffer - return when no frame
                                                        +
                                                        1468  inner: do while (.true.)
                                                        +
                                                        1469  ins1 = invtag(node,lun,ins1,nval(lun))
                                                        +
                                                        1470  if(ins1>nval(lun)) exit outer
                                                        +
                                                        1471  if(ins1>0) then
                                                        +
                                                        1472  if(typ(node)=='RPC' .and. val(ins1,lun)==0.) then
                                                        +
                                                        1473  ins1 = ins1+1
                                                        +
                                                        1474  cycle
                                                        +
                                                        1475  elseif(io==0 .and. iret+1>i2) then
                                                        +
                                                        1476  if(iprt>=0) then
                                                        +
                                                        1477  call errwrt('++++++++++++BUFR ARCHIVE LIBRARY+++++++++++++++')
                                                        +
                                                        1478  write ( unit=errstr, fmt='(A,I5,A,A,A)' ) 'BUFRLIB: UFBSEQ - INCOMPLETE READ; ONLY THE FIRST ', i2, &
                                                        +
                                                        1479  ' (=4TH INPUT ARG.) ''LEVELS'' OF INPUT MNEMONIC ', tags(1), ' WERE READ'
                                                        +
                                                        1480  call errwrt(errstr)
                                                        +
                                                        1481  call errwrt('++++++++++++BUFR ARCHIVE LIBRARY+++++++++++++++')
                                                        +
                                                        1482  call errwrt(' ')
                                                        +
                                                        1483  endif
                                                        +
                                                        1484  exit outer
                                                        +
                                                        1485  endif
                                                        +
                                                        1486  elseif(ins1==0) then
                                                        +
                                                        1487  if(io==1 .and. iret<i2) then
                                                        +
                                                        1488  write(bort_str,'("BUFRLIB: UFBSEQ - NO. OF ''LEVELS'.LT.' WRITTEN (",I5,") NO. REQUESTED (",I5,") - '// &
                                                        +
                                                        1489  'INCOMPLETE WRITE (INPUT MNEMONIC IS ",A,")")') iret,i2,tags(1)
                                                        +
                                                        1490  call bort(bort_str)
                                                        +
                                                        1491  endif
                                                        +
                                                        1492  else
                                                        +
                                                        1493  write(bort_str,.GE.'("BUFRLIB: UFBSEQ - VARIABLE INS1 MUST BE ZERO, HERE IT IS",I4," - INPUT MNEMONIC '// &
                                                        +
                                                        1494  'IS ",A)') ins1,tags(1)
                                                        +
                                                        1495  call bort(bort_str)
                                                        +
                                                        1496  endif
                                                        +
                                                        1497  if(ins1==0 .or. iret==i2) exit outer
                                                        +
                                                        1498  iret = iret+1
                                                        +
                                                        1499  ins1 = ins1+1
                                                        +
                                                        1500  ! Read/write user values
                                                        +
                                                        1501  j = ins1
                                                        +
                                                        1502  do i=1,nseq
                                                        +
                                                        1503  do while(itp(inv(j,lun))<2)
                                                        +
                                                        1504  j = j+1
                                                        +
                                                        1505  enddo
                                                        +
                                                        1506  if(io==0) usr(i,iret) = val(j,lun)
                                                        +
                                                        1507  if(io==1) val(j,lun) = usr(i,iret)
                                                        +
                                                        1508  j = j+1
                                                        +
                                                        1509  enddo
                                                        +
                                                        1510  enddo inner
                                                        +
                                                        1511  endif
                                                        +
                                                        1512  enddo outer
                                                        +
                                                        1513 
                                                        +
                                                        1514  if(iret==0) then
                                                        +
                                                        1515  if(io==0) then
                                                        +
                                                        1516  if(iprt>=1) then
                                                        +
                                                        1517  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        1518  errstr = 'BUFRLIB: UFBSEQ - NO SPECIFIED VALUES READ IN, SO RETURN WITH 5th ARG. (IRET) = 0; 6th ARG. (STR) ='
                                                        +
                                                        1519  call errwrt(errstr)
                                                        +
                                                        1520  call errwrt(str)
                                                        +
                                                        1521  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        1522  call errwrt(' ')
                                                        +
                                                        1523  endif
                                                        +
                                                        1524  else
                                                        +
                                                        1525  if(iprt==-1) ifirst2 = 1
                                                        +
                                                        1526  if(ifirst2==0 .or. iprt>=1) then
                                                        +
                                                        1527  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        1528  errstr = 'BUFRLIB: UFBSEQ - NO SPECIFIED VALUES WRITTEN OUT, SO RETURN WITH 5th ARG. (IRET) = 0; 6th ARG. (STR) ='
                                                        +
                                                        1529  call errwrt(errstr)
                                                        +
                                                        1530  call errwrt(str)
                                                        +
                                                        1531  call errwrt('MAY NOT BE IN THE BUFR TABLE(?)')
                                                        +
                                                        1532  if(iprt==0) then
                                                        +
                                                        1533  errstr = 'Note: Only the first occurrence of this WARNING message is printed, there may be more. To output ' // &
                                                        +
                                                        1534  'all such messages,'
                                                        +
                                                        1535  call errwrt(errstr)
                                                        +
                                                        1536  errstr = 'modify your application program to add "CALL OPENBF(0,''QUIET'',1)" prior to the first call to a ' // &
                                                        +
                                                        1537  'BUFRLIB routine.'
                                                        +
                                                        1538  call errwrt(errstr)
                                                        +
                                                        1539  endif
                                                        +
                                                        1540  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        1541  call errwrt(' ')
                                                        +
                                                        1542  ifirst2 = 1
                                                        +
                                                        1543  endif
                                                        +
                                                        1544  endif
                                                        +
                                                        1545  endif
                                                        +
                                                        1546 
                                                        +
                                                        1547  return
                                                        +
                                                        1548 end subroutine ufbseq
                                                        +
                                                        1549 
                                                        +
                                                        1587 recursive subroutine drfini(lunit,mdrf,ndrf,drftag)
                                                        +
                                                        1588 
                                                        +
                                                        1589  use modv_vars, only: im8b
                                                        +
                                                        1590 
                                                        +
                                                        1591  use moda_usrint
                                                        +
                                                        1592  use moda_tables
                                                        +
                                                        1593 
                                                        +
                                                        1594  implicit none
                                                        +
                                                        1595 
                                                        +
                                                        1596  character*(*), intent(in) :: drftag
                                                        +
                                                        1597 
                                                        +
                                                        1598  integer, intent(in) :: mdrf(*), lunit, ndrf
                                                        +
                                                        1599  integer, parameter :: mxdrf = 2000
                                                        +
                                                        1600  integer my_mdrf(mxdrf), my_lunit, my_ndrf, mdrf4, ii, lun, il, im, m, n, node
                                                        +
                                                        1601 
                                                        +
                                                        1602  ! Check for I8 integers
                                                        +
                                                        1603  if(im8b) then
                                                        +
                                                        1604  im8b=.false.
                                                        +
                                                        1605  call x84(lunit,my_lunit,1)
                                                        +
                                                        1606  do ii = 1, ndrf
                                                        +
                                                        1607  call x84(mdrf(ii),mdrf4,1)
                                                        +
                                                        1608  my_mdrf(ii) = mdrf4
                                                        +
                                                        1609  enddo
                                                        +
                                                        1610  call x84(ndrf,my_ndrf,1)
                                                        +
                                                        1611  call drfini(my_lunit,my_mdrf,my_ndrf,drftag)
                                                        +
                                                        1612  im8b=.true.
                                                        +
                                                        1613  return
                                                        +
                                                        1614  endif
                                                        +
                                                        1615 
                                                        +
                                                        1616  call status(lunit,lun,il,im)
                                                        +
                                                        1617  ! Conform the template to the delayed replication factors
                                                        +
                                                        1618  m = 0
                                                        +
                                                        1619  n = 0
                                                        +
                                                        1620  do n = n+1, nval(lun)
                                                        +
                                                        1621  node = inv(n,lun)
                                                        +
                                                        1622  if(itp(node)==1 .and. tag(node)==drftag) then
                                                        +
                                                        1623  m = m+1
                                                        +
                                                        1624  call usrtpl(lun,n,mdrf(m))
                                                        +
                                                        1625  endif
                                                        +
                                                        1626  enddo
                                                        +
                                                        1627 
                                                        +
                                                        1628  return
                                                        +
                                                        1629 end subroutine drfini
                                                        +
                                                        1630 
                                                        +
                                                        1654 subroutine ufbrw(lun,usr,i1,i2,io,iret)
                                                        +
                                                        1655 
                                                        +
                                                        1656  use modv_vars, only: bmiss
                                                        +
                                                        1657 
                                                        +
                                                        1658  use moda_usrint
                                                        +
                                                        1659  use moda_tables
                                                        +
                                                        1660  use moda_msgcwd
                                                        +
                                                        1661 
                                                        +
                                                        1662  implicit none
                                                        +
                                                        1663 
                                                        +
                                                        1664  integer, intent(in) :: lun, i1, i2, io
                                                        +
                                                        1665  integer, intent(out) :: iret
                                                        +
                                                        1666  integer iprt, nnod, ncon, nods, nodc, ivls, kons, inc1, inc2, ins1, ins2, invn, i, j, invwin, ibfms, lstjpb
                                                        +
                                                        1667 
                                                        +
                                                        1668  real*8, intent(inout) :: usr(i1,i2)
                                                        +
                                                        1669 
                                                        +
                                                        1670  character*128 errstr
                                                        +
                                                        1671  character*10 tagstr, subset
                                                        +
                                                        1672 
                                                        +
                                                        1673  common /usrstr/ nnod, ncon, nods(20), nodc(10), ivls(10), kons(10)
                                                        +
                                                        1674  common /quiet/ iprt
                                                        +
                                                        1675 
                                                        +
                                                        1676  subset=tag(inode(lun))
                                                        +
                                                        1677  iret = 0
                                                        +
                                                        1678 
                                                        +
                                                        1679  ! Loop over condition windows
                                                        +
                                                        1680  inc1 = 1
                                                        +
                                                        1681  inc2 = 1
                                                        +
                                                        1682  outer: do while (.true.)
                                                        +
                                                        1683  call conwin(lun,inc1,inc2)
                                                        +
                                                        1684  if(nnod==0) then
                                                        +
                                                        1685  iret = i2
                                                        +
                                                        1686  return
                                                        +
                                                        1687  elseif(inc1==0) then
                                                        +
                                                        1688  return
                                                        +
                                                        1689  else
                                                        +
                                                        1690  do j=1,nnod
                                                        +
                                                        1691  if(nods(j)>0) then
                                                        +
                                                        1692  ins2 = inc1
                                                        +
                                                        1693  call getwin(nods(j),lun,ins1,ins2)
                                                        +
                                                        1694  if(ins1==0) return
                                                        +
                                                        1695  do while (.true.)
                                                        +
                                                        1696  ! Loop over store nodes
                                                        +
                                                        1697  iret = iret+1
                                                        +
                                                        1698  if(iprt>=2) then
                                                        +
                                                        1699  call errwrt('++++++++++++++BUFR ARCHIVE LIBRARY+++++++++++++++++')
                                                        +
                                                        1700  call errwrt('UFBRW LEV TAG IO INS1 INVN INS2 '//subset)
                                                        +
                                                        1701  call errwrt('++++++++++++++BUFR ARCHIVE LIBRARY+++++++++++++++++')
                                                        +
                                                        1702  do i=1,nnod
                                                        +
                                                        1703  if(io==0) tagstr=tag(nods(i))(1:8)//' R'
                                                        +
                                                        1704  if(io==1) tagstr=tag(nods(i))(1:8)//' W'
                                                        +
                                                        1705  invn = invwin(nods(i),lun,ins1,ins2)
                                                        +
                                                        1706  if(invn==0.and.io==1) call drstpl(nods(i),lun,ins1,ins2,invn)
                                                        +
                                                        1707  write(errstr,'("LEV=",I5,1X,A,3I7)') iret,tagstr,ins1,invn,ins2
                                                        +
                                                        1708  call errwrt(errstr)
                                                        +
                                                        1709  enddo
                                                        +
                                                        1710  endif
                                                        +
                                                        1711  ! Write user values
                                                        +
                                                        1712  if(io==1 .and. iret<=i2) then
                                                        +
                                                        1713  do i=1,nnod
                                                        +
                                                        1714  if(nods(i)>0) then
                                                        +
                                                        1715  if(ibfms(usr(i,iret))==0) then
                                                        +
                                                        1716  invn = invwin(nods(i),lun,ins1,ins2)
                                                        +
                                                        1717  if(invn==0) then
                                                        +
                                                        1718  call drstpl(nods(i),lun,ins1,ins2,invn)
                                                        +
                                                        1719  if(invn==0) then
                                                        +
                                                        1720  iret = 0
                                                        +
                                                        1721  return
                                                        +
                                                        1722  endif
                                                        +
                                                        1723  call newwin(lun,inc1,inc2)
                                                        +
                                                        1724  val(invn,lun) = usr(i,iret)
                                                        +
                                                        1725  elseif(lstjpb(nods(i),lun,'RPS')==0) then
                                                        +
                                                        1726  val(invn,lun) = usr(i,iret)
                                                        +
                                                        1727  elseif(ibfms(val(invn,lun))/=0) then
                                                        +
                                                        1728  val(invn,lun) = usr(i,iret)
                                                        +
                                                        1729  else
                                                        +
                                                        1730  call drstpl(nods(i),lun,ins1,ins2,invn)
                                                        +
                                                        1731  if(invn==0) then
                                                        +
                                                        1732  iret = 0
                                                        +
                                                        1733  return
                                                        +
                                                        1734  endif
                                                        +
                                                        1735  call newwin(lun,inc1,inc2)
                                                        +
                                                        1736  val(invn,lun) = usr(i,iret)
                                                        +
                                                        1737  endif
                                                        +
                                                        1738  endif
                                                        +
                                                        1739  endif
                                                        +
                                                        1740  enddo
                                                        +
                                                        1741  endif
                                                        +
                                                        1742  ! Read user values
                                                        +
                                                        1743  if(io==0 .and. iret<=i2) then
                                                        +
                                                        1744  do i=1,nnod
                                                        +
                                                        1745  usr(i,iret) = bmiss
                                                        +
                                                        1746  if(nods(i)>0) then
                                                        +
                                                        1747  invn = invwin(nods(i),lun,ins1,ins2)
                                                        +
                                                        1748  if(invn>0) usr(i,iret) = val(invn,lun)
                                                        +
                                                        1749  endif
                                                        +
                                                        1750  enddo
                                                        +
                                                        1751  endif
                                                        +
                                                        1752  ! Decide what to do next
                                                        +
                                                        1753  if(io==1.and.iret==i2) return
                                                        +
                                                        1754  call nxtwin(lun,ins1,ins2)
                                                        +
                                                        1755  if(ins1>0 .and. ins1<inc2) cycle
                                                        +
                                                        1756  if(ncon>0) cycle outer
                                                        +
                                                        1757  return
                                                        +
                                                        1758  enddo
                                                        +
                                                        1759  endif
                                                        +
                                                        1760  enddo
                                                        +
                                                        1761  iret = -1
                                                        +
                                                        1762  return
                                                        +
                                                        1763  endif
                                                        +
                                                        1764  enddo outer
                                                        +
                                                        1765 
                                                        +
                                                        1766  return
                                                        +
                                                        1767 end subroutine ufbrw
                                                        +
                                                        1768 
                                                        +
                                                        1792 subroutine ufbrp(lun,usr,i1,i2,io,iret)
                                                        +
                                                        1793 
                                                        +
                                                        1794  use moda_usrint
                                                        +
                                                        1795 
                                                        +
                                                        1796  implicit none
                                                        +
                                                        1797 
                                                        +
                                                        1798  integer, intent(in) :: lun, i1, i2, io
                                                        +
                                                        1799  integer, intent(out) :: iret
                                                        +
                                                        1800  integer nnod, ncon, nods, nodc, ivls, kons, ins1, ins2, invn, i, nz, invtag
                                                        +
                                                        1801 
                                                        +
                                                        1802  real*8, intent(inout) :: usr(i1,i2)
                                                        +
                                                        1803 
                                                        +
                                                        1804  common /usrstr/ nnod, ncon, nods(20), nodc(10), ivls(10), kons(10)
                                                        +
                                                        1805 
                                                        +
                                                        1806  iret = 0
                                                        +
                                                        1807  ins1 = 0
                                                        +
                                                        1808  ins2 = 0
                                                        +
                                                        1809 
                                                        +
                                                        1810  ! Find first non-zero node in string
                                                        +
                                                        1811  do nz=1,nnod
                                                        +
                                                        1812  if(nods(nz)>0) then
                                                        +
                                                        1813  do while (.true.)
                                                        +
                                                        1814  ! Frame a section of the buffer - return when no frame
                                                        +
                                                        1815  if(ins1+1>nval(lun)) return
                                                        +
                                                        1816  if(io==1 .and. iret==i2) return
                                                        +
                                                        1817  ins1 = invtag(nods(nz),lun,ins1+1,nval(lun))
                                                        +
                                                        1818  if(ins1==0) return
                                                        +
                                                        1819  ins2 = invtag(nods(nz),lun,ins1+1,nval(lun))
                                                        +
                                                        1820  if(ins2==0) ins2 = nval(lun)
                                                        +
                                                        1821  iret = iret+1
                                                        +
                                                        1822  ! Read user values
                                                        +
                                                        1823  if(io==0 .and. iret<=i2) then
                                                        +
                                                        1824  do i=1,nnod
                                                        +
                                                        1825  if(nods(i)>0) then
                                                        +
                                                        1826  invn = invtag(nods(i),lun,ins1,ins2)
                                                        +
                                                        1827  if(invn>0) usr(i,iret) = val(invn,lun)
                                                        +
                                                        1828  endif
                                                        +
                                                        1829  enddo
                                                        +
                                                        1830  endif
                                                        +
                                                        1831  ! Write user values
                                                        +
                                                        1832  if(io==1 .and. iret<=i2) then
                                                        +
                                                        1833  do i=1,nnod
                                                        +
                                                        1834  if(nods(i)>0) then
                                                        +
                                                        1835  invn = invtag(nods(i),lun,ins1,ins2)
                                                        +
                                                        1836  if(invn>0) val(invn,lun) = usr(i,iret)
                                                        +
                                                        1837  endif
                                                        +
                                                        1838  enddo
                                                        +
                                                        1839  endif
                                                        +
                                                        1840  enddo
                                                        +
                                                        1841  endif
                                                        +
                                                        1842  enddo
                                                        +
                                                        1843 
                                                        +
                                                        1844  return
                                                        +
                                                        1845 end subroutine ufbrp
                                                        +
                                                        1846 
                                                        +
                                                        1876 subroutine ufbsp(lun,usr,i1,i2,io,iret)
                                                        +
                                                        1877 
                                                        +
                                                        1878  use moda_usrint
                                                        +
                                                        1879 
                                                        +
                                                        1880  implicit none
                                                        +
                                                        1881 
                                                        +
                                                        1882  integer, intent(in) :: lun, i1, i2, io
                                                        +
                                                        1883  integer, intent(out) :: iret
                                                        +
                                                        1884  integer nnod, ncon, nods, nodc, ivls, kons, ins1, ins2, invn, invm, i, invtag
                                                        +
                                                        1885 
                                                        +
                                                        1886  real*8, intent(inout) :: usr(i1,i2)
                                                        +
                                                        1887 
                                                        +
                                                        1888  common /usrstr/ nnod, ncon, nods(20), nodc(10), ivls(10), kons(10)
                                                        +
                                                        1889 
                                                        +
                                                        1890  iret = 0
                                                        +
                                                        1891  ins1 = 0
                                                        +
                                                        1892  ins2 = 0
                                                        +
                                                        1893 
                                                        +
                                                        1894  do while (.true.)
                                                        +
                                                        1895  ! Frame a section of the buffer - return when no frame
                                                        +
                                                        1896  if(ins1+1>nval(lun)) return
                                                        +
                                                        1897  ins1 = invtag(nods(1),lun,ins1+1,nval(lun))
                                                        +
                                                        1898  if(ins1==0) return
                                                        +
                                                        1899  ins2 = invtag(nods(1),lun,ins1+1,nval(lun))
                                                        +
                                                        1900  if(ins2==0) ins2 = nval(lun)
                                                        +
                                                        1901  iret = iret+1
                                                        +
                                                        1902  ! Read user values
                                                        +
                                                        1903  if(io==0 .and. iret<=i2) then
                                                        +
                                                        1904  invm = ins1
                                                        +
                                                        1905  do i=1,nnod
                                                        +
                                                        1906  if(nods(i)>0) then
                                                        +
                                                        1907  invn = invtag(nods(i),lun,invm,ins2)
                                                        +
                                                        1908  if(invn>0) usr(i,iret) = val(invn,lun)
                                                        +
                                                        1909  invm = max(invn,invm)
                                                        +
                                                        1910  endif
                                                        +
                                                        1911  enddo
                                                        +
                                                        1912  endif
                                                        +
                                                        1913  ! Write user values
                                                        +
                                                        1914  if(io==1 .and. iret<=i2) then
                                                        +
                                                        1915  invm = ins1
                                                        +
                                                        1916  do i=1,nnod
                                                        +
                                                        1917  if(nods(i)>0) then
                                                        +
                                                        1918  invn = invtag(nods(i),lun,invm,ins2)
                                                        +
                                                        1919  if(invn>0) val(invn,lun) = usr(i,iret)
                                                        +
                                                        1920  invm = max(invn,invm)
                                                        +
                                                        1921  endif
                                                        +
                                                        1922  enddo
                                                        +
                                                        1923  endif
                                                        +
                                                        1924  enddo
                                                        +
                                                        1925 
                                                        +
                                                        1926  return
                                                        +
                                                        1927 end subroutine ufbsp
                                                        +
                                                        1928 
                                                        +
                                                        1977 recursive subroutine hold4wlc(lunit,chr,str)
                                                        +
                                                        1978 
                                                        +
                                                        1979  use modv_vars, only: im8b, mxh4wlc
                                                        +
                                                        1980 
                                                        +
                                                        1981  use moda_h4wlc
                                                        +
                                                        1982 
                                                        +
                                                        1983  implicit none
                                                        +
                                                        1984 
                                                        +
                                                        1985  integer, intent(in) :: lunit
                                                        +
                                                        1986  integer my_lunit, iprt, lens, lenc, i
                                                        +
                                                        1987 
                                                        +
                                                        1988  character*(*), intent(in) :: chr, str
                                                        +
                                                        1989 
                                                        +
                                                        1990  character*128 errstr
                                                        +
                                                        1991  character*14 mystr
                                                        +
                                                        1992 
                                                        +
                                                        1993  common /quiet/ iprt
                                                        +
                                                        1994 
                                                        +
                                                        1995  ! Check for I8 integers
                                                        +
                                                        1996  if(im8b) then
                                                        +
                                                        1997  im8b=.false.
                                                        +
                                                        1998  call x84(lunit,my_lunit,1)
                                                        +
                                                        1999  call hold4wlc(my_lunit,chr,str)
                                                        +
                                                        2000  im8b=.true.
                                                        +
                                                        2001  return
                                                        +
                                                        2002  endif
                                                        +
                                                        2003 
                                                        +
                                                        2004  call strsuc( str, mystr, lens )
                                                        +
                                                        2005  if ( lens == -1 ) return
                                                        +
                                                        2006 
                                                        +
                                                        2007  lenc = min( len( chr ), 120 )
                                                        +
                                                        2008 
                                                        +
                                                        2009  ! If this subroutine has already been called with this mnemonic for this particular subset, then overwrite the
                                                        +
                                                        2010  ! corresponding entry in the internal holding area
                                                        +
                                                        2011  if ( nh4wlc > 0 ) then
                                                        +
                                                        2012  do i = 1, nh4wlc
                                                        +
                                                        2013  if ( ( lunit == luh4wlc(i) ) .and. ( mystr(1:lens) == sth4wlc(i)(1:lens) ) ) then
                                                        +
                                                        2014  chh4wlc(i) = ''
                                                        +
                                                        2015  chh4wlc(i)(1:lenc) = chr(1:lenc)
                                                        +
                                                        2016  return
                                                        +
                                                        2017  endif
                                                        +
                                                        2018  enddo
                                                        +
                                                        2019  endif
                                                        +
                                                        2020 
                                                        +
                                                        2021  ! Otherwise, use the next available unused entry in the holding area
                                                        +
                                                        2022  if ( nh4wlc >= mxh4wlc ) then
                                                        +
                                                        2023  if(iprt>=0) then
                                                        +
                                                        2024  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        2025  write ( unit=errstr, fmt='(A,A,I3)' ) 'BUFRLIB: HOLD4WLC - THE MAXIMUM NUMBER OF LONG CHARACTER ', &
                                                        +
                                                        2026  'STRINGS THAT CAN BE HELD INTERNALLY IS ', mxh4wlc
                                                        +
                                                        2027  call errwrt(errstr)
                                                        +
                                                        2028  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        2029  endif
                                                        +
                                                        2030  else
                                                        +
                                                        2031  nh4wlc = nh4wlc + 1
                                                        +
                                                        2032  luh4wlc(nh4wlc) = lunit
                                                        +
                                                        2033  sth4wlc(nh4wlc) = ''
                                                        +
                                                        2034  sth4wlc(nh4wlc)(1:lens) = mystr(1:lens)
                                                        +
                                                        2035  chh4wlc(nh4wlc) = ''
                                                        +
                                                        2036  chh4wlc(nh4wlc)(1:lenc) = chr(1:lenc)
                                                        +
                                                        2037  endif
                                                        +
                                                        2038 
                                                        +
                                                        2039  return
                                                        +
                                                        2040 end subroutine hold4wlc
                                                        +
                                                        2041 
                                                        +
                                                        2068 subroutine trybump(lun,usr,i1,i2,io,iret)
                                                        +
                                                        2069 
                                                        +
                                                        2070  use moda_usrint
                                                        +
                                                        2071 
                                                        +
                                                        2072  implicit none
                                                        +
                                                        2073 
                                                        +
                                                        2074  integer, intent(in) :: lun, i1, i2, io
                                                        +
                                                        2075  integer, intent(out) :: iret
                                                        +
                                                        2076  integer nnod, ncon, nods, nodc, ivls, kons, ndrp, invn, jnvn, knvn, invwin, lstjpb
                                                        +
                                                        2077 
                                                        +
                                                        2078  real*8, intent(inout) :: usr(i1,i2)
                                                        +
                                                        2079 
                                                        +
                                                        2080  common /usrstr/ nnod, ncon, nods(20), nodc(10), ivls(10), kons(10)
                                                        +
                                                        2081 
                                                        +
                                                        2082  ! See if there's a delayed replication group involved
                                                        +
                                                        2083 
                                                        +
                                                        2084  ndrp = lstjpb(nods(1),lun,'DRP')
                                                        +
                                                        2085  if(ndrp<=0) return
                                                        +
                                                        2086 
                                                        +
                                                        2087  ! If so, clean it out and bump it to i2
                                                        +
                                                        2088 
                                                        +
                                                        2089  invn = invwin(ndrp,lun,1,nval(lun))
                                                        +
                                                        2090  val(invn,lun) = 0
                                                        +
                                                        2091  jnvn = invn+1
                                                        +
                                                        2092  do while(nint(val(jnvn,lun))>0)
                                                        +
                                                        2093  jnvn = jnvn+nint(val(jnvn,lun))
                                                        +
                                                        2094  enddo
                                                        +
                                                        2095  do knvn=1,nval(lun)-jnvn+1
                                                        +
                                                        2096  inv(invn+knvn,lun) = inv(jnvn+knvn-1,lun)
                                                        +
                                                        2097  val(invn+knvn,lun) = val(jnvn+knvn-1,lun)
                                                        +
                                                        2098  enddo
                                                        +
                                                        2099  nval(lun) = nval(lun)-(jnvn-invn-1)
                                                        +
                                                        2100  call usrtpl(lun,invn,i2)
                                                        +
                                                        2101 
                                                        +
                                                        2102  ! Call the mnemonic writer
                                                        +
                                                        2103 
                                                        +
                                                        2104  call ufbrw(lun,usr,i1,i2,io,iret)
                                                        +
                                                        2105 
                                                        +
                                                        2106  return
                                                        +
                                                        2107 end subroutine trybump
                                                        +
                                                        2108 
                                                        +
                                                        2128 recursive subroutine ufbovr(lunit,usr,i1,i2,iret,str)
                                                        +
                                                        2129 
                                                        +
                                                        2130  use modv_vars, only: im8b
                                                        +
                                                        2131 
                                                        +
                                                        2132  use moda_usrint
                                                        +
                                                        2133  use moda_msgcwd
                                                        +
                                                        2134 
                                                        +
                                                        2135  implicit none
                                                        +
                                                        2136 
                                                        +
                                                        2137  integer, intent(in) :: lunit, i1, i2
                                                        +
                                                        2138  integer, intent(out) :: iret
                                                        +
                                                        2139  integer iprt, ifirst1, my_lunit, my_i1, my_i2, lun, il, im, io
                                                        +
                                                        2140 
                                                        +
                                                        2141  character*(*), intent(in) :: str
                                                        +
                                                        2142  character*128 bort_str1, bort_str2, errstr
                                                        +
                                                        2143 
                                                        +
                                                        2144  real*8, intent(inout) :: usr(i1,i2)
                                                        +
                                                        2145 
                                                        +
                                                        2146  common /quiet/ iprt
                                                        +
                                                        2147 
                                                        +
                                                        2148  data ifirst1 /0/
                                                        +
                                                        2149 
                                                        +
                                                        2150  save ifirst1
                                                        +
                                                        2151 
                                                        +
                                                        2152  ! Check for I8 integers
                                                        +
                                                        2153 
                                                        +
                                                        2154  if(im8b) then
                                                        +
                                                        2155  im8b=.false.
                                                        +
                                                        2156  call x84(lunit,my_lunit,1)
                                                        +
                                                        2157  call x84(i1,my_i1,1)
                                                        +
                                                        2158  call x84(i2,my_i2,1)
                                                        +
                                                        2159  call ufbovr(my_lunit,usr,my_i1,my_i2,iret,str)
                                                        +
                                                        2160  call x48(iret,iret,1)
                                                        +
                                                        2161  im8b=.true.
                                                        +
                                                        2162  return
                                                        +
                                                        2163  endif
                                                        +
                                                        2164 
                                                        +
                                                        2165  iret = 0
                                                        +
                                                        2166 
                                                        +
                                                        2167  ! Check the file status and inode
                                                        +
                                                        2168 
                                                        +
                                                        2169  call status(lunit,lun,il,im)
                                                        +
                                                        2170  if(il==0) call bort('BUFRLIB: UFBOVR - OUTPUT BUFR FILE IS CLOSED, IT MUST BE OPEN FOR OUTPUT')
                                                        +
                                                        2171  if(il<0) call bort('BUFRLIB: UFBOVR - OUTPUT BUFR FILE IS OPEN FOR INPUT, IT MUST BE OPEN FOR OUTPUT')
                                                        +
                                                        2172  if(im==0) call bort('BUFRLIB: UFBOVR - A MESSAGE MUST BE OPEN IN OUTPUT BUFR FILE, NONE ARE')
                                                        +
                                                        2173  if(inode(lun)/=inv(1,lun)) call bort('BUFRLIB: UFBOVR - LOCATION OF INTERNAL TABLE FOR '// &
                                                        +
                                                        2174  'OUTPUT BUFR FILE DOES NOT AGREE WITH EXPECTED LOCATION IN INTERNAL SUBSET ARRAY')
                                                        +
                                                        2175 
                                                        +
                                                        2176  io = min(max(0,il),1)
                                                        +
                                                        2177 
                                                        +
                                                        2178  if(i1<=0) then
                                                        +
                                                        2179  if(iprt>=0) then
                                                        +
                                                        2180  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        2181  errstr = .LE.'BUFRLIB: UFBOVR - 3rd ARG. (INPUT) IS 0, SO RETURN WITH 5th ARG. (IRET) = 0; 6th ARG. (STR) ='
                                                        +
                                                        2182  call errwrt(errstr)
                                                        +
                                                        2183  call errwrt(str)
                                                        +
                                                        2184  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        2185  call errwrt(' ')
                                                        +
                                                        2186  endif
                                                        +
                                                        2187  return
                                                        +
                                                        2188  elseif(i2<=0) then
                                                        +
                                                        2189  if(iprt==-1) ifirst1 = 1
                                                        +
                                                        2190  if(io==0 .or. ifirst1==0 .or. iprt>=1) then
                                                        +
                                                        2191  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        2192  errstr = .LE.'BUFRLIB: UFBOVR - 4th ARG. (INPUT) IS 0, SO RETURN WITH 5th ARG. (IRET) = 0; 6th ARG. (STR) ='
                                                        +
                                                        2193  call errwrt(errstr)
                                                        +
                                                        2194  call errwrt(str)
                                                        +
                                                        2195  if(iprt==0 .and. io==1) then
                                                        +
                                                        2196  errstr = 'Note: Only the first occurrence of this WARNING ' // &
                                                        +
                                                        2197  'message is printed, there may be more. To output all such messages,'
                                                        +
                                                        2198  call errwrt(errstr)
                                                        +
                                                        2199  errstr = 'modify your application program to add ' // &
                                                        +
                                                        2200  '"CALL OPENBF(0,''QUIET'',1)" prior to the first call to a BUFRLIB routine.'
                                                        +
                                                        2201  call errwrt(errstr)
                                                        +
                                                        2202  endif
                                                        +
                                                        2203  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        2204  call errwrt(' ')
                                                        +
                                                        2205  ifirst1 = 1
                                                        +
                                                        2206  endif
                                                        +
                                                        2207  return
                                                        +
                                                        2208  endif
                                                        +
                                                        2209 
                                                        +
                                                        2210  ! Parse or recall the input string - write values
                                                        +
                                                        2211 
                                                        +
                                                        2212  call string(str,lun,i1,io)
                                                        +
                                                        2213  call trybump(lun,usr,i1,i2,io,iret)
                                                        +
                                                        2214 
                                                        +
                                                        2215  if(io==1 .and. iret/=i2) then
                                                        +
                                                        2216  write(bort_str1,'("BUFRLIB: UFBOVR - MNEMONIC STRING READ IN IS: ",A)') str
                                                        +
                                                        2217  write(bort_str2,'(18X,"THE NUMBER OF ''LEVELS'' ACTUALLY '// &
                                                        +
                                                        2218  'WRITTEN (",I3,") DOES NOT EQUAL THE NUMBER REQUESTED (",I3,") - INCOMPLETE WRITE")') iret, i2
                                                        +
                                                        2219  call bort2(bort_str1,bort_str2)
                                                        +
                                                        2220  endif
                                                        +
                                                        2221 
                                                        +
                                                        2222  return
                                                        +
                                                        2223 end subroutine ufbovr
                                                        +
                                                        2224 
                                                        +
                                                        2267 recursive subroutine ufbevn(lunit,usr,i1,i2,i3,iret,str)
                                                        +
                                                        2268 
                                                        +
                                                        2269  use modv_vars, only: im8b, bmiss
                                                        +
                                                        2270 
                                                        +
                                                        2271  use moda_usrint
                                                        +
                                                        2272  use moda_msgcwd
                                                        +
                                                        2273 
                                                        +
                                                        2274  implicit none
                                                        +
                                                        2275 
                                                        +
                                                        2276  character*(*), intent(in) :: str
                                                        +
                                                        2277  character*128 errstr
                                                        +
                                                        2278 
                                                        +
                                                        2279  integer, intent(in) :: lunit, i1, i2, i3
                                                        +
                                                        2280  integer, intent(out) :: iret
                                                        +
                                                        2281  integer invn(255), nnod, ncon, nods, nodc, ivls, kons, maxevn, iprt, my_lunit, my_i1, my_i2, my_i3, i, j, k, lun, il, im, &
                                                        +
                                                        2282  ins1, ins2, inc1, inc2, nnvn, nvnwin
                                                        +
                                                        2283 
                                                        +
                                                        2284  real*8, intent(out) :: usr(i1,i2,i3)
                                                        +
                                                        2285 
                                                        +
                                                        2286  logical nodgt0
                                                        +
                                                        2287 
                                                        +
                                                        2288  common /usrstr/ nnod, ncon, nods(20), nodc(10), ivls(10), kons(10)
                                                        +
                                                        2289  common /ufbn3c/ maxevn
                                                        +
                                                        2290  common /quiet/ iprt
                                                        +
                                                        2291 
                                                        +
                                                        2292  ! Check for I8 integers
                                                        +
                                                        2293 
                                                        +
                                                        2294  if(im8b) then
                                                        +
                                                        2295  im8b=.false.
                                                        +
                                                        2296  call x84(lunit,my_lunit,1)
                                                        +
                                                        2297  call x84(i1,my_i1,1)
                                                        +
                                                        2298  call x84(i2,my_i2,1)
                                                        +
                                                        2299  call x84(i3,my_i3,1)
                                                        +
                                                        2300  call ufbevn(my_lunit,usr,my_i1,my_i2,my_i3,iret,str)
                                                        +
                                                        2301  call x48(iret,iret,1)
                                                        +
                                                        2302  im8b=.true.
                                                        +
                                                        2303  return
                                                        +
                                                        2304  endif
                                                        +
                                                        2305 
                                                        +
                                                        2306  maxevn = 0
                                                        +
                                                        2307  iret = 0
                                                        +
                                                        2308 
                                                        +
                                                        2309  ! Check the file status and inode
                                                        +
                                                        2310 
                                                        +
                                                        2311  call status(lunit,lun,il,im)
                                                        +
                                                        2312  if(il==0) call bort('BUFRLIB: UFBEVN - INPUT BUFR FILE IS CLOSED, IT MUST BE OPEN FOR INPUT')
                                                        +
                                                        2313  if(il>0) call bort('BUFRLIB: UFBEVN - INPUT BUFR FILE IS OPEN FOR OUTPUT, IT MUST BE OPEN FOR INPUT')
                                                        +
                                                        2314  if(im==0) call bort('BUFRLIB: UFBEVN - A MESSAGE MUST BE OPEN IN INPUT BUFR FILE, NONE ARE')
                                                        +
                                                        2315  if(inode(lun)/=inv(1,lun)) call bort('BUFRLIB: UFBEVN - LOCATION OF INTERNAL TABLE FOR '// &
                                                        +
                                                        2316  'INPUT BUFR FILE DOES NOT AGREE WITH EXPECTED LOCATION IN INTERNAL SUBSET ARRAY')
                                                        +
                                                        2317 
                                                        +
                                                        2318  if(i1<=0) then
                                                        +
                                                        2319  if(iprt>=0) then
                                                        +
                                                        2320  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        2321  errstr = .LE.'BUFRLIB: UFBEVN - 3rd ARG. (INPUT) IS 0, SO RETURN WITH 6th ARG. (IRET) = 0; 7th ARG. (STR) ='
                                                        +
                                                        2322  call errwrt(errstr)
                                                        +
                                                        2323  call errwrt(str)
                                                        +
                                                        2324  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        2325  call errwrt(' ')
                                                        +
                                                        2326  endif
                                                        +
                                                        2327  return
                                                        +
                                                        2328  elseif(i2<=0) then
                                                        +
                                                        2329  if(iprt>=0) then
                                                        +
                                                        2330  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        2331  errstr = .LE.'BUFRLIB: UFBEVN - 4th ARG. (INPUT) IS 0, SO RETURN WITH 6th ARG. (IRET) = 0; 7th ARG. (STR) ='
                                                        +
                                                        2332  call errwrt(errstr)
                                                        +
                                                        2333  call errwrt(str)
                                                        +
                                                        2334  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        2335  call errwrt(' ')
                                                        +
                                                        2336  endif
                                                        +
                                                        2337  return
                                                        +
                                                        2338  elseif(i3<=0) then
                                                        +
                                                        2339  if(iprt>=0) then
                                                        +
                                                        2340  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        2341  errstr = .LE.'BUFRLIB: UFBEVN - 5th ARG. (INPUT) IS 0, SO RETURN WITH 6th ARG. (IRET) = 0; 7th ARG. (STR) ='
                                                        +
                                                        2342  call errwrt(errstr)
                                                        +
                                                        2343  call errwrt(str)
                                                        +
                                                        2344  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        2345  call errwrt(' ')
                                                        +
                                                        2346  endif
                                                        +
                                                        2347  return
                                                        +
                                                        2348  endif
                                                        +
                                                        2349 
                                                        +
                                                        2350  ! Parse or recall the input string
                                                        +
                                                        2351 
                                                        +
                                                        2352  call string(str,lun,i1,0)
                                                        +
                                                        2353 
                                                        +
                                                        2354  ! Initialize usr array
                                                        +
                                                        2355 
                                                        +
                                                        2356  do k=1,i3
                                                        +
                                                        2357  do j=1,i2
                                                        +
                                                        2358  do i=1,i1
                                                        +
                                                        2359  usr(i,j,k) = bmiss
                                                        +
                                                        2360  enddo
                                                        +
                                                        2361  enddo
                                                        +
                                                        2362  enddo
                                                        +
                                                        2363 
                                                        +
                                                        2364  ! Loop over condition windows
                                                        +
                                                        2365 
                                                        +
                                                        2366  inc1 = 1
                                                        +
                                                        2367  inc2 = 1
                                                        +
                                                        2368  outer: do while (.true.)
                                                        +
                                                        2369  call conwin(lun,inc1,inc2)
                                                        +
                                                        2370  if(nnod==0) then
                                                        +
                                                        2371  iret = i2
                                                        +
                                                        2372  return
                                                        +
                                                        2373  elseif(inc1==0) then
                                                        +
                                                        2374  return
                                                        +
                                                        2375  else
                                                        +
                                                        2376  nodgt0 = .false.
                                                        +
                                                        2377  do i=1,nnod
                                                        +
                                                        2378  if(nods(i)>0) then
                                                        +
                                                        2379  ins2 = inc1
                                                        +
                                                        2380  call getwin(nods(i),lun,ins1,ins2)
                                                        +
                                                        2381  if(ins1==0) return
                                                        +
                                                        2382  nodgt0 = .true.
                                                        +
                                                        2383  exit
                                                        +
                                                        2384  endif
                                                        +
                                                        2385  enddo
                                                        +
                                                        2386  if(.not.nodgt0) then
                                                        +
                                                        2387  ins1 = inc1
                                                        +
                                                        2388  ins2 = inc2
                                                        +
                                                        2389  endif
                                                        +
                                                        2390  ! Read push down stack data into 3D arrays
                                                        +
                                                        2391  inner: do while (.true.)
                                                        +
                                                        2392  iret = iret+1
                                                        +
                                                        2393  if(iret<=i2) then
                                                        +
                                                        2394  do j=1,nnod
                                                        +
                                                        2395  if(nods(j)>0) then
                                                        +
                                                        2396  nnvn = nvnwin(nods(j),lun,ins1,ins2,invn,i3)
                                                        +
                                                        2397  maxevn = max(nnvn,maxevn)
                                                        +
                                                        2398  do k=1,nnvn
                                                        +
                                                        2399  usr(j,iret,k) = val(invn(k),lun)
                                                        +
                                                        2400  enddo
                                                        +
                                                        2401  endif
                                                        +
                                                        2402  enddo
                                                        +
                                                        2403  endif
                                                        +
                                                        2404  ! Decide what to do next
                                                        +
                                                        2405  call nxtwin(lun,ins1,ins2)
                                                        +
                                                        2406  if(ins1<=0 .or. ins1>=inc2) exit inner
                                                        +
                                                        2407  enddo inner
                                                        +
                                                        2408  if(ncon<=0) exit outer
                                                        +
                                                        2409  endif
                                                        +
                                                        2410  enddo outer
                                                        +
                                                        2411 
                                                        +
                                                        2412  if(iret==0) then
                                                        +
                                                        2413  if(iprt>=1) then
                                                        +
                                                        2414  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        2415  errstr = 'BUFRLIB: UFBEVN - NO SPECIFIED VALUES READ IN, SO RETURN WITH 6th ARG. (IRET) = 0; 7th ARG. (STR) ='
                                                        +
                                                        2416  call errwrt(errstr)
                                                        +
                                                        2417  call errwrt(str)
                                                        +
                                                        2418  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        2419  call errwrt(' ')
                                                        +
                                                        2420  endif
                                                        +
                                                        2421  endif
                                                        +
                                                        2422 
                                                        +
                                                        2423  return
                                                        +
                                                        2424 end subroutine ufbevn
                                                        +
                                                        2425 
                                                        +
                                                        2471 recursive subroutine ufbin3(lunit,usr,i1,i2,i3,iret,jret,str)
                                                        +
                                                        2472 
                                                        +
                                                        2473  use modv_vars, only: im8b, bmiss
                                                        +
                                                        2474 
                                                        +
                                                        2475  use moda_usrint
                                                        +
                                                        2476  use moda_msgcwd
                                                        +
                                                        2477 
                                                        +
                                                        2478  implicit none
                                                        +
                                                        2479 
                                                        +
                                                        2480  character*(*), intent(in) :: str
                                                        +
                                                        2481  character*128 errstr
                                                        +
                                                        2482 
                                                        +
                                                        2483  integer, intent(in) :: lunit, i1, i2, i3
                                                        +
                                                        2484  integer, intent(out) :: iret, jret
                                                        +
                                                        2485  integer nnod, ncon, nods, nodc, ivls, kons, iprt, my_lunit, my_i1, my_i2, my_i3, i, j, k, lun, il, im, &
                                                        +
                                                        2486  ins1, ins2, inc1, inc2, nnvn, nevn
                                                        +
                                                        2487 
                                                        +
                                                        2488  real*8, intent(out) :: usr(i1,i2,i3)
                                                        +
                                                        2489 
                                                        +
                                                        2490  logical nodgt0
                                                        +
                                                        2491 
                                                        +
                                                        2492  common /usrstr/ nnod, ncon, nods(20), nodc(10), ivls(10), kons(10)
                                                        +
                                                        2493  common /quiet/ iprt
                                                        +
                                                        2494 
                                                        +
                                                        2495  ! Check for I8 integers
                                                        +
                                                        2496 
                                                        +
                                                        2497  if(im8b) then
                                                        +
                                                        2498  im8b=.false.
                                                        +
                                                        2499  call x84(lunit,my_lunit,1)
                                                        +
                                                        2500  call x84(i1,my_i1,1)
                                                        +
                                                        2501  call x84(i2,my_i2,1)
                                                        +
                                                        2502  call x84(i3,my_i3,1)
                                                        +
                                                        2503  call ufbin3(my_lunit,usr,my_i1,my_i2,my_i3,iret,jret,str)
                                                        +
                                                        2504  call x48(iret,iret,1)
                                                        +
                                                        2505  call x48(jret,jret,1)
                                                        +
                                                        2506  im8b=.true.
                                                        +
                                                        2507  return
                                                        +
                                                        2508  endif
                                                        +
                                                        2509 
                                                        +
                                                        2510  iret = 0
                                                        +
                                                        2511  jret = 0
                                                        +
                                                        2512 
                                                        +
                                                        2513  ! Check the file status and inode
                                                        +
                                                        2514 
                                                        +
                                                        2515  call status(lunit,lun,il,im)
                                                        +
                                                        2516  if(il==0) call bort('BUFRLIB: UFBIN3 - INPUT BUFR FILE IS CLOSED, IT MUST BE OPEN FOR INPUT')
                                                        +
                                                        2517  if(il>0) call bort('BUFRLIB: UFBIN3 - INPUT BUFR FILE IS OPEN FOR OUTPUT, IT MUST BE OPEN FOR INPUT')
                                                        +
                                                        2518  if(im==0) call bort('BUFRLIB: UFBIN3 - A MESSAGE MUST BE OPEN IN INPUT BUFR FILE, NONE ARE')
                                                        +
                                                        2519  if(inode(lun)/=inv(1,lun)) call bort('BUFRLIB: UFBIN3 - LOCATION OF INTERNAL TABLE FOR '// &
                                                        +
                                                        2520  'INPUT BUFR FILE DOES NOT AGREE WITH EXPECTED LOCATION IN INTERNAL SUBSET ARRAY')
                                                        +
                                                        2521 
                                                        +
                                                        2522  if(i1<=0) then
                                                        +
                                                        2523  if(iprt>=0) then
                                                        +
                                                        2524  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        2525  errstr = .LE.'BUFRLIB: UFBIN3 - 3rd ARG. (INPUT) IS 0, ' // &
                                                        +
                                                        2526  'SO RETURN WITH 6th AND 7th ARGS. (IRET, JRET) = 0; 8th ARG. (STR) ='
                                                        +
                                                        2527  call errwrt(errstr)
                                                        +
                                                        2528  call errwrt(str)
                                                        +
                                                        2529  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        2530  call errwrt(' ')
                                                        +
                                                        2531  endif
                                                        +
                                                        2532  return
                                                        +
                                                        2533  elseif(i2<=0) then
                                                        +
                                                        2534  if(iprt>=0) then
                                                        +
                                                        2535  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        2536  errstr = .LE.'BUFRLIB: UFBIN3 - 4th ARG. (INPUT) IS 0, ' // &
                                                        +
                                                        2537  'SO RETURN WITH 6th AND 7th ARGS. (IRET, JRET) = 0; 8th ARG. (STR) ='
                                                        +
                                                        2538  call errwrt(errstr)
                                                        +
                                                        2539  call errwrt(str)
                                                        +
                                                        2540  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        2541  call errwrt(' ')
                                                        +
                                                        2542  endif
                                                        +
                                                        2543  return
                                                        +
                                                        2544  elseif(i3<=0) then
                                                        +
                                                        2545  if(iprt>=0) then
                                                        +
                                                        2546  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        2547  errstr = .LE.'BUFRLIB: UFBIN3 - 5th ARG. (INPUT) IS 0, ' // &
                                                        +
                                                        2548  'SO RETURN WITH 6th AND 7th ARGS. (IRET, JRET) = 0; 8th ARG. (STR) ='
                                                        +
                                                        2549  call errwrt(errstr)
                                                        +
                                                        2550  call errwrt(str)
                                                        +
                                                        2551  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        2552  call errwrt(' ')
                                                        +
                                                        2553  endif
                                                        +
                                                        2554  return
                                                        +
                                                        2555  endif
                                                        +
                                                        2556 
                                                        +
                                                        2557  ! Parse or recall the input string
                                                        +
                                                        2558 
                                                        +
                                                        2559  call string(str,lun,i1,0)
                                                        +
                                                        2560 
                                                        +
                                                        2561  ! Initialize usr array
                                                        +
                                                        2562 
                                                        +
                                                        2563  do k=1,i3
                                                        +
                                                        2564  do j=1,i2
                                                        +
                                                        2565  do i=1,i1
                                                        +
                                                        2566  usr(i,j,k) = bmiss
                                                        +
                                                        2567  enddo
                                                        +
                                                        2568  enddo
                                                        +
                                                        2569  enddo
                                                        +
                                                        2570 
                                                        +
                                                        2571  ! Loop over condition windows
                                                        +
                                                        2572 
                                                        +
                                                        2573  inc1 = 1
                                                        +
                                                        2574  inc2 = 1
                                                        +
                                                        2575  outer: do while (.true.)
                                                        +
                                                        2576  call conwin(lun,inc1,inc2)
                                                        +
                                                        2577  if(nnod==0) then
                                                        +
                                                        2578  iret = i2
                                                        +
                                                        2579  return
                                                        +
                                                        2580  elseif(inc1==0) then
                                                        +
                                                        2581  return
                                                        +
                                                        2582  else
                                                        +
                                                        2583  nodgt0 = .false.
                                                        +
                                                        2584  do i=1,nnod
                                                        +
                                                        2585  if(nods(i)>0) then
                                                        +
                                                        2586  ins2 = inc1
                                                        +
                                                        2587  call getwin(nods(i),lun,ins1,ins2)
                                                        +
                                                        2588  if(ins1==0) return
                                                        +
                                                        2589  nodgt0 = .true.
                                                        +
                                                        2590  exit
                                                        +
                                                        2591  endif
                                                        +
                                                        2592  enddo
                                                        +
                                                        2593  if(.not.nodgt0) then
                                                        +
                                                        2594  ins1 = inc1
                                                        +
                                                        2595  ins2 = inc2
                                                        +
                                                        2596  endif
                                                        +
                                                        2597  ! Read push down stack data into 3D arrays
                                                        +
                                                        2598  inner: do while (.true.)
                                                        +
                                                        2599  iret = iret+1
                                                        +
                                                        2600  if(iret<=i2) then
                                                        +
                                                        2601  do j=1,nnod
                                                        +
                                                        2602  nnvn = nevn(nods(j),lun,ins1,ins2,i1,i2,i3,usr(j,iret,1))
                                                        +
                                                        2603  jret = max(jret,nnvn)
                                                        +
                                                        2604  enddo
                                                        +
                                                        2605  endif
                                                        +
                                                        2606  ! Decide what to do next
                                                        +
                                                        2607  call nxtwin(lun,ins1,ins2)
                                                        +
                                                        2608  if(ins1<=0 .or. ins1>=inc2) exit inner
                                                        +
                                                        2609  enddo inner
                                                        +
                                                        2610  if(ncon<=0) exit outer
                                                        +
                                                        2611  endif
                                                        +
                                                        2612  enddo outer
                                                        +
                                                        2613 
                                                        +
                                                        2614  if(iret==0 .or. jret==0) then
                                                        +
                                                        2615  if(iprt>=1) then
                                                        +
                                                        2616  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        2617  errstr = 'BUFRLIB: UFBIN3 - NO SPECIFIED VALUES READ IN, ' // &
                                                        +
                                                        2618  'SO RETURN WITH 6th AND/OR 7th ARGS. (IRET, JRET) = 0; 8th ARG. (STR) ='
                                                        +
                                                        2619  call errwrt(errstr)
                                                        +
                                                        2620  call errwrt(str)
                                                        +
                                                        2621  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        2622  call errwrt(' ')
                                                        +
                                                        2623  endif
                                                        +
                                                        2624  endif
                                                        +
                                                        2625 
                                                        +
                                                        2626  return
                                                        +
                                                        2627 end subroutine ufbin3
                                                        +
                                                        2628 
                                                        +
                                                        2662 recursive subroutine ufbinx(lunit,imsg,isub,usr,i1,i2,iret,str)
                                                        +
                                                        2663 
                                                        +
                                                        2664  use modv_vars, only: im8b
                                                        +
                                                        2665 
                                                        +
                                                        2666  use moda_msgcwd
                                                        +
                                                        2667  use moda_bitbuf
                                                        +
                                                        2668 
                                                        +
                                                        2669  implicit none
                                                        +
                                                        2670 
                                                        +
                                                        2671  integer, intent(in) :: lunit, imsg, isub, i1, i2
                                                        +
                                                        2672  integer, intent(out) :: iret
                                                        +
                                                        2673  integer my_lunit, my_imsg, my_isub, my_i1, my_i2, lun, il, im, jdate, jret, i
                                                        +
                                                        2674 
                                                        +
                                                        2675  character*(*), intent(in) :: str
                                                        +
                                                        2676  character*128 bort_str
                                                        +
                                                        2677  character*8 subset
                                                        +
                                                        2678 
                                                        +
                                                        2679  real*8, intent(out) :: usr(i1,i2)
                                                        +
                                                        2680 
                                                        +
                                                        2681  logical openit
                                                        +
                                                        2682 
                                                        +
                                                        2683  ! Check for I8 integers
                                                        +
                                                        2684  if(im8b) then
                                                        +
                                                        2685  im8b=.false.
                                                        +
                                                        2686  call x84(lunit,my_lunit,1)
                                                        +
                                                        2687  call x84(imsg,my_imsg,1)
                                                        +
                                                        2688  call x84(isub,my_isub,1)
                                                        +
                                                        2689  call x84(i1,my_i1,1)
                                                        +
                                                        2690  call x84(i2,my_i2,1)
                                                        +
                                                        2691  call ufbinx(my_lunit,my_imsg,my_isub,usr,my_i1,my_i2,iret,str)
                                                        +
                                                        2692  call x48(iret,iret,1)
                                                        +
                                                        2693  im8b=.true.
                                                        +
                                                        2694  return
                                                        +
                                                        2695  endif
                                                        +
                                                        2696 
                                                        +
                                                        2697  call status(lunit,lun,il,im)
                                                        +
                                                        2698  openit = il==0
                                                        +
                                                        2699 
                                                        +
                                                        2700  if(openit) then
                                                        +
                                                        2701  ! Open BUFR file connected to unit lunit if it isn't already open
                                                        +
                                                        2702  call openbf(lunit,'INX',lunit)
                                                        +
                                                        2703  else
                                                        +
                                                        2704  ! If BUFR file already opened, save position and rewind to first data message
                                                        +
                                                        2705  call rewnbf(lunit,0)
                                                        +
                                                        2706  endif
                                                        +
                                                        2707 
                                                        +
                                                        2708  ! Skip to the requested message
                                                        +
                                                        2709  do i=1,imsg
                                                        +
                                                        2710  call readmg(lunit,subset,jdate,jret)
                                                        +
                                                        2711  if(jret<0) then
                                                        +
                                                        2712  write(bort_str,'("BUFRLIB: UFBINX - HIT END OF FILE BEFORE '// &
                                                        +
                                                        2713  'READING REQUESTED MESSAGE NO.",I5," IN BUFR FILE CONNECTED TO UNIT",I4)') imsg, lunit
                                                        +
                                                        2714  call bort(bort_str)
                                                        +
                                                        2715  endif
                                                        +
                                                        2716  enddo
                                                        +
                                                        2717 
                                                        +
                                                        2718  ! Position at the requested subset
                                                        +
                                                        2719  do i=1,isub
                                                        +
                                                        2720  call readsb(lunit,jret)
                                                        +
                                                        2721  if(jret/=0) then
                                                        +
                                                        2722  write(bort_str,'("BUFRLIB: UFBINX - ALL SUBSETS READ BEFORE '// &
                                                        +
                                                        2723  'READING REQ. SUBSET NO.",I3," IN REQ. MSG NO.",I5," IN BUFR FILE CONNECTED TO UNIT",I4)') isub, imsg, lunit
                                                        +
                                                        2724  call bort(bort_str)
                                                        +
                                                        2725  endif
                                                        +
                                                        2726  enddo
                                                        +
                                                        2727 
                                                        +
                                                        2728  ! Read the requested data values
                                                        +
                                                        2729  call ufbint(lunit,usr,i1,i2,iret,str)
                                                        +
                                                        2730 
                                                        +
                                                        2731  if(openit) then
                                                        +
                                                        2732  ! Close BUFR file if it was opened here
                                                        +
                                                        2733  call closbf(lunit)
                                                        +
                                                        2734  else
                                                        +
                                                        2735  ! Restore BUFR file to its previous status and position
                                                        +
                                                        2736  call rewnbf(lunit,1)
                                                        +
                                                        2737  endif
                                                        +
                                                        2738 
                                                        +
                                                        2739  return
                                                        +
                                                        2740 end subroutine ufbinx
                                                        +
                                                        2741 
                                                        +
                                                        2756 recursive subroutine ufbget(lunit,tab,i1,iret,str)
                                                        +
                                                        2757 
                                                        +
                                                        2758  use modv_vars, only: im8b, bmiss
                                                        +
                                                        2759 
                                                        +
                                                        2760  use moda_usrint
                                                        +
                                                        2761  use moda_usrbit
                                                        +
                                                        2762  use moda_msgcwd
                                                        +
                                                        2763  use moda_bitbuf
                                                        +
                                                        2764  use moda_tables
                                                        +
                                                        2765 
                                                        +
                                                        2766  implicit none
                                                        +
                                                        2767 
                                                        +
                                                        2768  integer*8 ival
                                                        +
                                                        2769  integer, intent(in) :: lunit, i1
                                                        +
                                                        2770  integer, intent(out) :: iret
                                                        +
                                                        2771  integer nnod, ncon, nods, nodc, ivls, kons, my_lunit, my_i1, lun, il, im, i, n, node, nbmp, kbit, invn, invwin
                                                        +
                                                        2772 
                                                        +
                                                        2773  character*(*), intent(in) :: str
                                                        +
                                                        2774  character*8 cval
                                                        +
                                                        2775 
                                                        +
                                                        2776  real*8, intent(out) :: tab(i1)
                                                        +
                                                        2777  real*8 rval, ups
                                                        +
                                                        2778 
                                                        +
                                                        2779  common /usrstr/ nnod, ncon, nods(20), nodc(10), ivls(10), kons(10)
                                                        +
                                                        2780 
                                                        +
                                                        2781  equivalence(cval,rval)
                                                        +
                                                        2782 
                                                        +
                                                        2783  ! Check for I8 integers
                                                        +
                                                        2784 
                                                        +
                                                        2785  if(im8b) then
                                                        +
                                                        2786  im8b=.false.
                                                        +
                                                        2787  call x84(lunit,my_lunit,1)
                                                        +
                                                        2788  call x84(i1,my_i1,1)
                                                        +
                                                        2789  call ufbget(my_lunit,tab,my_i1,iret,str)
                                                        +
                                                        2790  call x48(iret,iret,1)
                                                        +
                                                        2791  im8b=.true.
                                                        +
                                                        2792  return
                                                        +
                                                        2793  endif
                                                        +
                                                        2794 
                                                        +
                                                        2795  iret = 0
                                                        +
                                                        2796 
                                                        +
                                                        2797  do i=1,i1
                                                        +
                                                        2798  tab(i) = bmiss
                                                        +
                                                        2799  enddo
                                                        +
                                                        2800 
                                                        +
                                                        2801  ! Make sure a file/message is open for input
                                                        +
                                                        2802 
                                                        +
                                                        2803  call status(lunit,lun,il,im)
                                                        +
                                                        2804  if(il==0) call bort('BUFRLIB: UFBGET - INPUT BUFR FILE IS CLOSED, IT MUST BE OPEN FOR INPUT')
                                                        +
                                                        2805  if(il>0) call bort('BUFRLIB: UFBGET - INPUT BUFR FILE IS OPEN FOR OUTPUT, IT MUST BE OPEN FOR INPUT')
                                                        +
                                                        2806  if(im==0) call bort('BUFRLIB: UFBGET - A MESSAGE MUST BE OPEN IN INPUT BUFR FILE, NONE ARE')
                                                        +
                                                        2807 
                                                        +
                                                        2808  ! See if there's another subset in the message
                                                        +
                                                        2809 
                                                        +
                                                        2810  if(nsub(lun)==msub(lun)) then
                                                        +
                                                        2811  iret = -1
                                                        +
                                                        2812  return
                                                        +
                                                        2813  endif
                                                        +
                                                        2814 
                                                        +
                                                        2815  ! Parse the string
                                                        +
                                                        2816 
                                                        +
                                                        2817  call string(str,lun,i1,0)
                                                        +
                                                        2818 
                                                        +
                                                        2819  ! Expand the template for this subset as little as possible
                                                        +
                                                        2820 
                                                        +
                                                        2821  n = 1
                                                        +
                                                        2822  nbit(n) = 0
                                                        +
                                                        2823  mbit(n) = mbyt(lun)*8 + 16
                                                        +
                                                        2824  call usrtpl(lun,n,n)
                                                        +
                                                        2825  do n=n+1,nval(lun)
                                                        +
                                                        2826  node = inv(n,lun)
                                                        +
                                                        2827  nbit(n) = ibt(node)
                                                        +
                                                        2828  mbit(n) = mbit(n-1)+nbit(n-1)
                                                        +
                                                        2829  if(node==nods(nnod)) then
                                                        +
                                                        2830  nval(lun) = n
                                                        +
                                                        2831  exit
                                                        +
                                                        2832  elseif(itp(node)==1) then
                                                        +
                                                        2833  call upb8(ival,nbit(n),mbit(n),mbay(1,lun))
                                                        +
                                                        2834  nbmp=int(ival)
                                                        +
                                                        2835  call usrtpl(lun,n,nbmp)
                                                        +
                                                        2836  endif
                                                        +
                                                        2837  enddo
                                                        +
                                                        2838 
                                                        +
                                                        2839  ! Unpack only the nodes found in the string
                                                        +
                                                        2840 
                                                        +
                                                        2841  do i=1,nnod
                                                        +
                                                        2842  node = nods(i)
                                                        +
                                                        2843  invn = invwin(node,lun,1,nval(lun))
                                                        +
                                                        2844  if(invn>0) then
                                                        +
                                                        2845  call upb8(ival,nbit(invn),mbit(invn),mbay(1,lun))
                                                        +
                                                        2846  if(itp(node)==1) then
                                                        +
                                                        2847  tab(i) = ival
                                                        +
                                                        2848  elseif(itp(node)==2) then
                                                        +
                                                        2849  if(ival<2_8**(ibt(node))-1) tab(i) = ups(ival,node)
                                                        +
                                                        2850  elseif(itp(node)==3) then
                                                        +
                                                        2851  cval = ' '
                                                        +
                                                        2852  kbit = mbit(invn)
                                                        +
                                                        2853  call upc(cval,nbit(invn)/8,mbay(1,lun),kbit,.true.)
                                                        +
                                                        2854  tab(i) = rval
                                                        +
                                                        2855  endif
                                                        +
                                                        2856  else
                                                        +
                                                        2857  tab(i) = bmiss
                                                        +
                                                        2858  endif
                                                        +
                                                        2859  enddo
                                                        +
                                                        2860 
                                                        +
                                                        2861  return
                                                        +
                                                        2862 end subroutine ufbget
                                                        +
                                                        2863 
                                                        +
                                                        2888 integer function nevn(node,lun,inv1,inv2,i1,i2,i3,usr) result(iret)
                                                        +
                                                        2889 
                                                        +
                                                        2890  use moda_usrint
                                                        +
                                                        2891 
                                                        +
                                                        2892  implicit none
                                                        +
                                                        2893 
                                                        +
                                                        2894  integer, intent(in) :: node, lun, inv1, inv2, i1, i2, i3
                                                        +
                                                        2895  integer ndrs, invn, n1, n2, l, n, invwin, lstjpb
                                                        +
                                                        2896 
                                                        +
                                                        2897  character*128 bort_str
                                                        +
                                                        2898 
                                                        +
                                                        2899  real*8, intent(out) :: usr(i1,i2,i3)
                                                        +
                                                        2900 
                                                        +
                                                        2901  iret = 0
                                                        +
                                                        2902 
                                                        +
                                                        2903  ! Find the enclosing event stack descriptor
                                                        +
                                                        2904 
                                                        +
                                                        2905  ndrs = lstjpb(node,lun,'DRS')
                                                        +
                                                        2906  if(ndrs<=0) return
                                                        +
                                                        2907 
                                                        +
                                                        2908  invn = invwin(ndrs,lun,inv1,inv2)
                                                        +
                                                        2909  if(invn==0) call bort('BUFRLIB: iret - CAN''T FIND THE EVENT STACK!!!!!!')
                                                        +
                                                        2910 
                                                        +
                                                        2911  iret = nint(val(invn,lun))
                                                        +
                                                        2912  if(iret>i3) then
                                                        +
                                                        2913  write(bort_str,'("BUFRLIB: NEVN - THE NO. OF EVENTS FOR THE '// &
                                                        +
                                                        2914  'REQUESTED STACK (",I3,") EXCEEDS THE VALUE OF THE 3RD DIM. OF THE USR ARRAY (",I3,")")') iret, i3
                                                        +
                                                        2915  call bort(bort_str)
                                                        +
                                                        2916  endif
                                                        +
                                                        2917 
                                                        +
                                                        2918  ! Search each stack level for the requested node and copy the value
                                                        +
                                                        2919 
                                                        +
                                                        2920  n2 = invn + 1
                                                        +
                                                        2921 
                                                        +
                                                        2922  do l=1,iret
                                                        +
                                                        2923  n1 = n2
                                                        +
                                                        2924  n2 = n2 + nint(val(n1,lun))
                                                        +
                                                        2925  do n=n1,n2
                                                        +
                                                        2926  if(inv(n,lun)==node) usr(1,1,l) = val(n,lun)
                                                        +
                                                        2927  enddo
                                                        +
                                                        2928  enddo
                                                        +
                                                        2929 
                                                        +
                                                        2930  return
                                                        +
                                                        2931 end function nevn
                                                        +
                                                        subroutine bort(str)
                                                        Log an error message, then abort the application program.
                                                        Definition: borts.F90:15
                                                        +
                                                        subroutine bort2(str1, str2)
                                                        Log two error messages, then abort the application program.
                                                        Definition: borts.F90:39
                                                        +
                                                        subroutine upb(nval, nbits, ibay, ibit)
                                                        Decode an integer value from within a specified number of bits of an integer array,...
                                                        Definition: cidecode.F90:202
                                                        +
                                                        subroutine upbb(nval, nbits, ibit, ibay)
                                                        Decode an integer value from within a specified number of bits of an integer array,...
                                                        Definition: cidecode.F90:154
                                                        +
                                                        subroutine upb8(nval, nbits, ibit, ibay)
                                                        Decode an 8-byte integer value from within a specified number of bits of an integer array,...
                                                        Definition: cidecode.F90:80
                                                        +
                                                        real *8 function ups(ival, node)
                                                        Unpack a real*8 value from an integer by applying the proper scale and reference values.
                                                        Definition: cidecode.F90:319
                                                        +
                                                        subroutine upc(chr, nchr, ibay, ibit, cnvnull)
                                                        Decode a character string from within a specified number of bytes of an integer array,...
                                                        Definition: cidecode.F90:26
                                                        +
                                                        subroutine pkc(chr, nchr, ibay, ibit)
                                                        Encode a character string within a specified number of bytes of an integer array, starting at the bit...
                                                        Definition: ciencode.F90:25
                                                        +
                                                        recursive subroutine ipkm(cbay, nbyt, n)
                                                        Encode an integer value within a specified number of bytes of a character string, up to a maximum of ...
                                                        Definition: ciencode.F90:194
                                                        +
                                                        subroutine errwrt(str)
                                                        Specify a custom location for the logging of error and diagnostic messages generated by the NCEPLIBS-...
                                                        Definition: errwrt.F90:32
                                                        + + + + + + + + + + +
                                                        subroutine strsuc(str1, str2, lens)
                                                        Remove leading and trailing blanks from a character string.
                                                        Definition: misc.F90:220
                                                        +
                                                        Declare arrays and variables used to store BUFR messages internally for multiple file IDs.
                                                        +
                                                        integer ibit
                                                        Bit pointer within ibay.
                                                        +
                                                        integer, dimension(:,:), allocatable mbay
                                                        Current BUFR message for each file ID.
                                                        +
                                                        integer, dimension(:), allocatable mbyt
                                                        Length (in bytes) of current BUFR message for each file ID.
                                                        +
                                                        Declare arrays and variables needed for the storage of data values needed when writing compressed dat...
                                                        +
                                                        integer ncol
                                                        Number of data subsets in message.
                                                        +
                                                        character *(:), dimension(:,:), allocatable catx
                                                        Character data values for all data subsets in message.
                                                        +
                                                        integer *8, dimension(:,:), allocatable matx
                                                        Non-character data values for all data subsets in message.
                                                        +
                                                        Declare arrays and variables needed to store long character strings (greater than 8 bytes) via subrou...
                                                        +
                                                        integer nh4wlc
                                                        Number of long character strings being stored.
                                                        +
                                                        character *14, dimension(:), allocatable sth4wlc
                                                        Table B mnemonics associated with long character strings.
                                                        +
                                                        integer, dimension(:), allocatable luh4wlc
                                                        File ID for associated output file.
                                                        +
                                                        character *120, dimension(:), allocatable chh4wlc
                                                        Long character strings.
                                                        +
                                                        Declare arrays used to store information about the current BUFR message that is in the process of bei...
                                                        +
                                                        integer, dimension(:), allocatable inode
                                                        Table A mnemonic for type of BUFR message.
                                                        +
                                                        integer, dimension(:), allocatable msub
                                                        Total number of data subsets in message.
                                                        +
                                                        integer, dimension(:), allocatable nsub
                                                        Current subset pointer within message.
                                                        +
                                                        Declare arrays and variables needed to store information about long character strings (greater than 8...
                                                        +
                                                        integer nrst
                                                        Number of long character strings in data subset.
                                                        +
                                                        integer, dimension(:), allocatable irnch
                                                        Lengths (in bytes) of long character strings.
                                                        +
                                                        integer, dimension(:), allocatable irbit
                                                        Pointers in data subset to first bits of long character strings.
                                                        +
                                                        character *10, dimension(:), allocatable crtag
                                                        Table B mnemonics associated with long character strings.
                                                        +
                                                        Declare arrays and variables used to store the internal jump/link table.
                                                        +
                                                        integer, dimension(:), allocatable isc
                                                        Scale factors corresponding to tag and typ:
                                                        +
                                                        integer, dimension(:), allocatable ibt
                                                        Bit widths corresponding to tag and typ:
                                                        +
                                                        character *3, dimension(:), allocatable typ
                                                        Type indicators corresponding to tag:
                                                        +
                                                        integer, dimension(:), allocatable jmpb
                                                        Jump backward indices corresponding to tag and typ:
                                                        +
                                                        character *10, dimension(:), allocatable tag
                                                        Mnemonics in the jump/link table.
                                                        +
                                                        integer, dimension(:), allocatable itp
                                                        Integer type values corresponding to typ:
                                                        +
                                                        integer, dimension(:), allocatable link
                                                        Link indices corresponding to tag, typ and jmpb:
                                                        +
                                                        Declare an array used to store, for each file ID from which a BUFR message is currently being read as...
                                                        +
                                                        integer, dimension(:), allocatable msgunp
                                                        Flag indicating how to unpack data subsets from BUFR message:
                                                        +
                                                        Declare arrays for internal storage of pointers to BUFR data subset values.
                                                        +
                                                        integer, dimension(:), allocatable nbit
                                                        Length (in bits) of each packed data value in data subset.
                                                        +
                                                        integer, dimension(:), allocatable mbit
                                                        Pointer in data subset to first bit of each packed data value.
                                                        +
                                                        Declare arrays used to store data values and associated metadata for the current BUFR data subset in ...
                                                        +
                                                        integer, dimension(:), allocatable nval
                                                        Number of data values in BUFR data subset.
                                                        +
                                                        real *8, dimension(:,:), allocatable, target val
                                                        Data values.
                                                        +
                                                        integer, dimension(:,:), allocatable, target inv
                                                        Inventory pointer which links each data value to its corresponding node in the internal jump/link tab...
                                                        +
                                                        recursive subroutine closbf(lunit)
                                                        Close the connection between logical unit lunit and the NCEPLIBS-bufr software.
                                                        +
                                                        subroutine rewnbf(lunit, isr)
                                                        Store or restore parameters associated with a BUFR file.
                                                        +
                                                        recursive subroutine openbf(lunit, io, lundx)
                                                        Connect a new file to the NCEPLIBS-bufr software for input or output operations, or initialize the li...
                                                        +
                                                        recursive subroutine status(lunit, lun, il, im)
                                                        Check whether a specified Fortran logical unit number is currently connected to the NCEPLIBS-bufr sof...
                                                        +
                                                        recursive subroutine readmg(lunxx, subset, jdate, iret)
                                                        Read the next BUFR message from logical unit abs(lunxx) into internal arrays.
                                                        Definition: readwritemg.F90:44
                                                        +
                                                        recursive subroutine getlens(mbay, ll, len0, len1, len2, len3, len4, len5)
                                                        Read the section lengths of a BUFR message, up to a specified point in the message.
                                                        +
                                                        subroutine usrtpl(lun, invn, nbmp)
                                                        Expand a subset template within internal arrays.
                                                        +
                                                        recursive subroutine readsb(lunit, iret)
                                                        Read the next data subset from a BUFR message.
                                                        Definition: readwritesb.F90:32
                                                        +
                                                        recursive real *8 function getvalnb(lunit, tagpv, ntagpv, tagnb, ntagnb)
                                                        Read a data value corresponding to a specific occurrence of a mnemonic within a data subset,...
                                                        +
                                                        recursive subroutine ufbin3(lunit, usr, i1, i2, i3, iret, jret, str)
                                                        Read one or more data values from an NCEP prepfits file.
                                                        +
                                                        recursive subroutine ufbinx(lunit, imsg, isub, usr, i1, i2, iret, str)
                                                        Read one or more data values from a specified data subset.
                                                        +
                                                        integer function nevn(node, lun, inv1, inv2, i1, i2, i3, usr)
                                                        Read one or more data values from a stacked data event within a specified portion of the current data...
                                                        +
                                                        subroutine ufbrp(lun, usr, i1, i2, io, iret)
                                                        Write or read specified data values to or from the current BUFR data subset within internal arrays,...
                                                        +
                                                        recursive subroutine ufbseq(lunin, usr, i1, i2, iret, str)
                                                        Read or write an entire sequence of data values from or to a data subset.
                                                        +
                                                        subroutine ufbrw(lun, usr, i1, i2, io, iret)
                                                        Write or read specified values to or from the current BUFR data subset within internal arrays,...
                                                        +
                                                        recursive subroutine hold4wlc(lunit, chr, str)
                                                        Write a long character string (greater than 8 bytes) to a data subset.
                                                        +
                                                        recursive subroutine ufbovr(lunit, usr, i1, i2, iret, str)
                                                        Overwrite one or more data values within a data subset.
                                                        +
                                                        recursive subroutine ufbint(lunin, usr, i1, i2, iret, str)
                                                        Read or write one or more data values from or to a data subset.
                                                        +
                                                        subroutine ufbsp(lun, usr, i1, i2, io, iret)
                                                        Write or read specified values to or from the current BUFR data subset within internal arrays,...
                                                        +
                                                        subroutine trybump(lun, usr, i1, i2, io, iret)
                                                        Try to expand a delayed replication sequence.
                                                        +
                                                        recursive subroutine drfini(lunit, mdrf, ndrf, drftag)
                                                        Explicitly initialize delayed replication factors and allocate a corresponding amount of space within...
                                                        +
                                                        recursive subroutine ufbstp(lunin, usr, i1, i2, iret, str)
                                                        Read or write one or more data values from or to a data subset.
                                                        +
                                                        recursive subroutine readlc(lunit, chr, str)
                                                        Read a long character string (greater than 8 bytes) from a data subset.
                                                        +
                                                        recursive subroutine setvalnb(lunit, tagpv, ntagpv, tagnb, ntagnb, r8val, iret)
                                                        Write a data value corresponding to a specific occurrence of a mnemonic within a data subset,...
                                                        +
                                                        recursive subroutine ufbevn(lunit, usr, i1, i2, i3, iret, str)
                                                        Read one or more data values from an NCEP prepbufr file.
                                                        +
                                                        recursive subroutine writlc(lunit, chr, str)
                                                        Write a long character string (greater than 8 bytes) to a data subset.
                                                        +
                                                        recursive subroutine ufbget(lunit, tab, i1, iret, str)
                                                        Read one or more data values from a data subset without advancing the subset pointer.
                                                        +
                                                        recursive subroutine ufbrep(lunin, usr, i1, i2, iret, str)
                                                        Read or write one or more data values from or to a data subset.
                                                        +
                                                        recursive integer function iupbs3(mbay, s3mnem)
                                                        Read a specified value from within Section 3 of a BUFR message.
                                                        Definition: s013vals.F90:349
                                                        +
                                                        subroutine parstr(str, tags, mtag, ntag, sep, limit80)
                                                        Parse a string containing one or more substrings into an array of substrings.
                                                        Definition: strings.F90:473
                                                        +
                                                        subroutine parutg(lun, io, utg, nod, kon, val)
                                                        Parse a mnemonic from a character string.
                                                        Definition: strings.F90:349
                                                        +
                                                        subroutine string(str, lun, i1, io)
                                                        Check whether a string is in the internal mnemonic string cache.
                                                        Definition: strings.F90:25
                                                        +
                                                        subroutine x48(iin4, iout8, nval)
                                                        Encode one or more 4-byte integer values as 8-byte integer values.
                                                        Definition: x4884.F90:18
                                                        +
                                                        subroutine x84(iin8, iout4, nval)
                                                        Encode one or more 8-byte integer values as 4-byte integer values.
                                                        Definition: x4884.F90:65
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/resize.js b/previous_versions/v12.1.0/resize.js new file mode 100644 index 000000000..e1ad0fe3b --- /dev/null +++ b/previous_versions/v12.1.0/resize.js @@ -0,0 +1,140 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function initResizable() +{ + var cookie_namespace = 'doxygen'; + var sidenav,navtree,content,header,collapsed,collapsedWidth=0,barWidth=6,desktop_vp=768,titleHeight; + + function readCookie(cookie) + { + var myCookie = cookie_namespace+"_"+cookie+"="; + if (document.cookie) { + var index = document.cookie.indexOf(myCookie); + if (index != -1) { + var valStart = index + myCookie.length; + var valEnd = document.cookie.indexOf(";", valStart); + if (valEnd == -1) { + valEnd = document.cookie.length; + } + var val = document.cookie.substring(valStart, valEnd); + return val; + } + } + return 0; + } + + function writeCookie(cookie, val, expiration) + { + if (val==undefined) return; + if (expiration == null) { + var date = new Date(); + date.setTime(date.getTime()+(10*365*24*60*60*1000)); // default expiration is one week + expiration = date.toGMTString(); + } + document.cookie = cookie_namespace + "_" + cookie + "=" + val + "; expires=" + expiration+"; path=/"; + } + + function resizeWidth() + { + var windowWidth = $(window).width() + "px"; + var sidenavWidth = $(sidenav).outerWidth(); + content.css({marginLeft:parseInt(sidenavWidth)+"px"}); + writeCookie('width',sidenavWidth-barWidth, null); + } + + function restoreWidth(navWidth) + { + var windowWidth = $(window).width() + "px"; + content.css({marginLeft:parseInt(navWidth)+barWidth+"px"}); + sidenav.css({width:navWidth + "px"}); + } + + function resizeHeight() + { + var headerHeight = header.outerHeight(); + var footerHeight = footer.outerHeight(); + var windowHeight = $(window).height() - headerHeight - footerHeight; + content.css({height:windowHeight + "px"}); + navtree.css({height:windowHeight + "px"}); + sidenav.css({height:windowHeight + "px"}); + var width=$(window).width(); + if (width!=collapsedWidth) { + if (width=desktop_vp) { + if (!collapsed) { + collapseExpand(); + } + } else if (width>desktop_vp && collapsedWidth0) { + restoreWidth(0); + collapsed=true; + } + else { + var width = readCookie('width'); + if (width>200 && width<$(window).width()) { restoreWidth(width); } else { restoreWidth(200); } + collapsed=false; + } + } + + header = $("#top"); + sidenav = $("#side-nav"); + content = $("#doc-content"); + navtree = $("#nav-tree"); + footer = $("#nav-path"); + $(".side-nav-resizable").resizable({resize: function(e, ui) { resizeWidth(); } }); + $(sidenav).resizable({ minWidth: 0 }); + $(window).resize(function() { resizeHeight(); }); + var device = navigator.userAgent.toLowerCase(); + var touch_device = device.match(/(iphone|ipod|ipad|android)/); + if (touch_device) { /* wider split bar for touch only devices */ + $(sidenav).css({ paddingRight:'20px' }); + $('.ui-resizable-e').css({ width:'20px' }); + $('#nav-sync').css({ right:'34px' }); + barWidth=20; + } + var width = readCookie('width'); + if (width) { restoreWidth(width); } else { resizeWidth(); } + resizeHeight(); + var url = location.href; + var i=url.indexOf("#"); + if (i>=0) window.location.hash=url.substr(i); + var _preventDefault = function(evt) { evt.preventDefault(); }; + $("#splitbar").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault); + $(".ui-resizable-handle").dblclick(collapseExpand); + $(window).on('load',resizeHeight); +} +/* @license-end */ diff --git a/previous_versions/v12.1.0/restd_8c.html b/previous_versions/v12.1.0/restd_8c.html new file mode 100644 index 000000000..7a1625c5a --- /dev/null +++ b/previous_versions/v12.1.0/restd_8c.html @@ -0,0 +1,246 @@ + + + + + + + +NCEPLIBS-bufr: restd.c File Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        restd.c File Reference
                                                        +
                                                        +
                                                        + +

                                                        Standardize a local Table D descriptor. +More...

                                                        +
                                                        #include "bufrlib.h"
                                                        +
                                                        +

                                                        Go to the source code of this file.

                                                        + + + + + + + + +

                                                        +Functions

                                                        void restd (int lun, int tddesc, int *nctddesc, int *ctddesc)
                                                         Standardize a local Table D descriptor. More...
                                                         
                                                        void wrdesc (int desc, int *descary, int *ndescary, int mxdescary)
                                                         Maintain an array of descriptors. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Standardize a local Table D descriptor.

                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2004-08-18
                                                        + +

                                                        Definition in file restd.c.

                                                        +

                                                        Function Documentation

                                                        + +

                                                        ◆ restd()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        void restd (int lun,
                                                        int tddesc,
                                                        int * nctddesc,
                                                        int * ctddesc 
                                                        )
                                                        +
                                                        + +

                                                        Standardize a local Table D descriptor.

                                                        +

                                                        Given the bit-wise (integer) representation of a local (not WMO-standard) Table D descriptor, this subroutine returns an equivalent array of WMO-standard child descriptors.

                                                        +

                                                        Any child descriptors which are themselves local Table D descriptors are automatically resolved via a recursive call to this same subroutine. This recursive process continues until all child descriptors are either WMO-standard descriptors (from Table B, Table C, Table D, or replication descriptors) or else are local Table B descriptors, in which case they are preceded with an appropriate 2-06-YYY Table C operator in the output array. The output array is then useable by any standard BUFR decoder program in order to interpret the same data values as were represented by the input local Table D descriptor.

                                                        +
                                                        Parameters
                                                        + + + + + +
                                                        lun- File ID
                                                        tddesc- WMO bit-wise representation of FXY value for local Table D descriptor
                                                        nctddesc- Number of WMO-standard child descriptors returned in ctddesc
                                                        ctddesc- Array of WMO-standard child descriptors equivalent to tddesc
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2004-08-18
                                                        + +

                                                        Definition at line 73 of file restd.c.

                                                        + +

                                                        References bort_f(), cadn30_f(), FXY_STR_LEN, moda_bitbuf::ibit, ifxy_f(), igetprm_f(), istdesc_f(), MIN_FXY_REPL, NEMO_STR_LEN, nemtbb_f(), numtbd_f(), restd(), UNIT_STR_LEN, uptdd_f(), and wrdesc().

                                                        + +

                                                        Referenced by restd().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ wrdesc()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        void wrdesc (int desc,
                                                        int * descary,
                                                        int * ndescary,
                                                        int mxdescary 
                                                        )
                                                        +
                                                        + +

                                                        Maintain an array of descriptors.

                                                        +

                                                        Given the WMO bit-wise representation of a descriptor, this routine adds it to an ongoing array of descriptors, after first making sure that there is enough room in the array.

                                                        +

                                                        If an array overflow occurs, then an appropriate error message will be written via bort().

                                                        +
                                                        Parameters
                                                        + + + + + +
                                                        desc- WMO bit-wise representation of descriptor to be written into descary
                                                        descary- Array of descriptors
                                                        ndescary- Number of descriptors written so far into descary
                                                        mxdescary- Maximum number of descriptors that can be written into descary
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2004-08-18
                                                        + +

                                                        Definition at line 27 of file restd.c.

                                                        + +

                                                        References bort_f().

                                                        + +

                                                        Referenced by restd().

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/restd_8c.js b/previous_versions/v12.1.0/restd_8c.js new file mode 100644 index 000000000..d3b81a69d --- /dev/null +++ b/previous_versions/v12.1.0/restd_8c.js @@ -0,0 +1,5 @@ +var restd_8c = +[ + [ "restd", "restd_8c.html#ad5e16b436141e02ca2b1a8def406a1d3", null ], + [ "wrdesc", "restd_8c.html#ab9426972c9b597e6b7382b00416dd572", null ] +]; \ No newline at end of file diff --git a/previous_versions/v12.1.0/restd_8c_source.html b/previous_versions/v12.1.0/restd_8c_source.html new file mode 100644 index 000000000..b45f641bb --- /dev/null +++ b/previous_versions/v12.1.0/restd_8c_source.html @@ -0,0 +1,233 @@ + + + + + + + +NCEPLIBS-bufr: restd.c Source File + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        +
                                                        restd.c
                                                        +
                                                        +
                                                        +Go to the documentation of this file.
                                                        1 
                                                        +
                                                        7 #include "bufrlib.h"
                                                        +
                                                        8 
                                                        +
                                                        26 void
                                                        +
                                                        27 wrdesc(int desc, int *descary, int *ndescary, int mxdescary)
                                                        +
                                                        28 {
                                                        +
                                                        29  char errstr[129];
                                                        +
                                                        30 
                                                        +
                                                        31 /*
                                                        +
                                                        32 ** Is there room in descary for desc?
                                                        +
                                                        33 */
                                                        +
                                                        34  if ( ( *ndescary + 1 ) < mxdescary ) {
                                                        +
                                                        35  descary[(*ndescary)++] = desc;
                                                        +
                                                        36  }
                                                        +
                                                        37  else {
                                                        +
                                                        38  sprintf(errstr, "BUFRLIB: WRDESC - EXPANDED SECTION 3 CONTAINS"
                                                        +
                                                        39  " MORE THAN %d DESCRIPTORS", mxdescary);
                                                        +
                                                        40  bort_f(errstr);
                                                        +
                                                        41  }
                                                        +
                                                        42 
                                                        +
                                                        43  return;
                                                        +
                                                        44 }
                                                        +
                                                        45 
                                                        +
                                                        72 void
                                                        +
                                                        73 restd(int lun, int tddesc, int *nctddesc, int *ctddesc)
                                                        +
                                                        74 {
                                                        +
                                                        75  int maxnc, desc, ncdesc, *cdesc;
                                                        +
                                                        76  int i, j, inum, itbd, ictbd;
                                                        +
                                                        77  int iscl, iref, ibit;
                                                        +
                                                        78 
                                                        +
                                                        79  char tab, nemo[NEMO_STR_LEN+1], adn[FXY_STR_LEN+1], cunit[UNIT_STR_LEN+1], cwork[31];
                                                        +
                                                        80 /*
                                                        +
                                                        81 ** How many child descriptors does tddesc have?
                                                        +
                                                        82 */
                                                        +
                                                        83  numtbd_f(lun, tddesc, nemo, NEMO_STR_LEN+1, &tab, &itbd);
                                                        +
                                                        84  uptdd_f(itbd, lun, 0, &inum);
                                                        +
                                                        85 
                                                        +
                                                        86  maxnc = igetprm_f("MAXNC");
                                                        +
                                                        87 
                                                        +
                                                        88  *nctddesc = 0;
                                                        +
                                                        89 /*
                                                        +
                                                        90 ** Examine each child descriptor one at a time.
                                                        +
                                                        91 */
                                                        +
                                                        92  for ( i = 1; i <= inum; i++ ) {
                                                        +
                                                        93  uptdd_f(itbd, lun, i, &desc);
                                                        +
                                                        94  if (! istdesc_f(desc)) {
                                                        +
                                                        95 /*
                                                        +
                                                        96 ** desc is a local descriptor.
                                                        +
                                                        97 */
                                                        +
                                                        98  numtbd_f(lun, desc, nemo, NEMO_STR_LEN+1, &tab, &ictbd);
                                                        +
                                                        99  if ( tab == 'D' ) {
                                                        +
                                                        100 /*
                                                        +
                                                        101 ** desc is itself a local Table D descriptor, so resolve
                                                        +
                                                        102 ** it now via a recursive call to this same routine.
                                                        +
                                                        103 */
                                                        +
                                                        104  if (!(cdesc = malloc(maxnc * sizeof(int)))) bort_f("RESTD FAILED ALLOCATING");
                                                        +
                                                        105 
                                                        +
                                                        106  restd(lun, desc, &ncdesc, cdesc);
                                                        +
                                                        107 
                                                        +
                                                        108  if ( ( *nctddesc > 0 ) &&
                                                        +
                                                        109  ( ctddesc[(*nctddesc)-1] > ifxy_f(MIN_FXY_REPL) ) &&
                                                        +
                                                        110  ( ctddesc[(*nctddesc)-1] <= ifxy_f("101255") ) ) {
                                                        +
                                                        111 /*
                                                        +
                                                        112 ** desc is replicated using fixed replication, so write
                                                        +
                                                        113 ** the number of child descriptors into the X value of
                                                        +
                                                        114 ** the replication descriptor ctddesc[(*nctddesc)-1]
                                                        +
                                                        115 */
                                                        +
                                                        116  cadn30_f(ctddesc[(*nctddesc)-1], adn, FXY_STR_LEN+1);
                                                        +
                                                        117  sprintf(cwork, "%c%02d%c%c%c",
                                                        +
                                                        118  adn[0], ncdesc, adn[3], adn[4], adn[5]);
                                                        +
                                                        119  strncpy(adn, cwork, 6); adn[6] = '\0';
                                                        +
                                                        120  ctddesc[(*nctddesc)-1] = ifxy_f(adn);
                                                        +
                                                        121  }
                                                        +
                                                        122  else if ( ( *nctddesc > 1 ) &&
                                                        +
                                                        123  ( ctddesc[(*nctddesc)-2] == ifxy_f(MIN_FXY_REPL) ) ) {
                                                        +
                                                        124 /*
                                                        +
                                                        125 ** desc is replicated using delayed replication, so write
                                                        +
                                                        126 ** the number of child descriptors into the X value of
                                                        +
                                                        127 ** the replication descriptor ctddesc[(*nctddesc)-2]
                                                        +
                                                        128 */
                                                        +
                                                        129  cadn30_f(ctddesc[(*nctddesc)-2], adn, FXY_STR_LEN+1);
                                                        +
                                                        130  sprintf(cwork, "%c%02d%c%c%c",
                                                        +
                                                        131  adn[0], ncdesc, adn[3], adn[4], adn[5]);
                                                        +
                                                        132  strncpy(adn, cwork, 6); adn[6] = '\0';
                                                        +
                                                        133  ctddesc[(*nctddesc)-2] = ifxy_f(adn);
                                                        +
                                                        134  }
                                                        +
                                                        135 /*
                                                        +
                                                        136 ** Add the child descriptors to the output list.
                                                        +
                                                        137 */
                                                        +
                                                        138  for ( j = 0; j < ncdesc; j++ ) {
                                                        +
                                                        139  wrdesc(cdesc[j], ctddesc, nctddesc, maxnc);
                                                        +
                                                        140  }
                                                        +
                                                        141 
                                                        +
                                                        142  free(cdesc);
                                                        +
                                                        143  }
                                                        +
                                                        144  else {
                                                        +
                                                        145 /*
                                                        +
                                                        146 ** desc is a local Table B descriptor, so precede it with
                                                        +
                                                        147 ** a 206YYY operator in the output list.
                                                        +
                                                        148 */
                                                        +
                                                        149  nemtbb_f(lun, ictbd, cunit, UNIT_STR_LEN+1, &iscl, &iref, &ibit);
                                                        +
                                                        150  sprintf(cwork, "%c%c%c%03d", '2', '0', '6', ibit);
                                                        +
                                                        151  strncpy(adn, cwork, 6); adn[6] = '\0';
                                                        +
                                                        152  wrdesc(ifxy_f(adn), ctddesc, nctddesc, maxnc);
                                                        +
                                                        153  wrdesc(desc, ctddesc, nctddesc, maxnc);
                                                        +
                                                        154  }
                                                        +
                                                        155  }
                                                        +
                                                        156  else {
                                                        +
                                                        157 /*
                                                        +
                                                        158 ** desc is a standard Table B, Table D, operator or replicator
                                                        +
                                                        159 ** descriptor, so append it "as is" to the output list.
                                                        +
                                                        160 */
                                                        +
                                                        161  wrdesc(desc, ctddesc, nctddesc, maxnc);
                                                        +
                                                        162  }
                                                        +
                                                        163  }
                                                        +
                                                        164 
                                                        +
                                                        165  return;
                                                        +
                                                        166 }
                                                        +
                                                        int igetprm_f(char *cprmnm)
                                                        Get the current value of a parameter.
                                                        +
                                                        void nemtbb_f(int lun, int table_idx, char *unit_str, int unit_str_len, int *scale, int *reference, int *bits)
                                                        Get information about a Table B descriptor.
                                                        +
                                                        Enable a number of NCEPLIBS-bufr subprograms to be called from within the C part of the library.
                                                        +
                                                        void cadn30_f(int idn, char *adn, int adn_str_len)
                                                        Convert an FXY value from its WMO bit-wise representation to its six-character representation.
                                                        +
                                                        #define FXY_STR_LEN
                                                        Size of a character string needed to store an FXY value.
                                                        Definition: bufrlib.h:34
                                                        +
                                                        void numtbd_f(int lun, int idn, char *nemo, int nemo_str_len, char *tab, int *iret)
                                                        Search for a Table B or Table D descriptor within the internal DX BUFR tables.
                                                        +
                                                        void bort_f(char *errstr)
                                                        Log one error message and abort application program.
                                                        +
                                                        #define MIN_FXY_REPL
                                                        Character string containing minimum FXY value for a replication descriptor.
                                                        Definition: bufrlib.h:37
                                                        +
                                                        #define UNIT_STR_LEN
                                                        Size of a character string needed to store the units of a Table B descriptor.
                                                        Definition: bufrlib.h:49
                                                        +
                                                        int ifxy_f(char *cfxy)
                                                        Convert an FXY value from its 6 character representation to its WMO bit-wise representation.
                                                        +
                                                        #define NEMO_STR_LEN
                                                        Size of a character string needed to store a mnemonic.
                                                        Definition: bufrlib.h:46
                                                        +
                                                        void uptdd_f(int id, int lun, int ient, int *iret)
                                                        Get the WMO bit-wise representation of the FXY value corresponding to a child mnemonic of a Table D s...
                                                        +
                                                        int istdesc_f(int idn)
                                                        Check whether a descriptor is WMO-standard.
                                                        +
                                                        integer ibit
                                                        Bit pointer within ibay.
                                                        +
                                                        void wrdesc(int desc, int *descary, int *ndescary, int mxdescary)
                                                        Maintain an array of descriptors.
                                                        Definition: restd.c:27
                                                        +
                                                        void restd(int lun, int tddesc, int *nctddesc, int *ctddesc)
                                                        Standardize a local Table D descriptor.
                                                        Definition: restd.c:73
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/s013vals_8F90.html b/previous_versions/v12.1.0/s013vals_8F90.html new file mode 100644 index 000000000..c11036979 --- /dev/null +++ b/previous_versions/v12.1.0/s013vals_8F90.html @@ -0,0 +1,1268 @@ + + + + + + + +NCEPLIBS-bufr: s013vals.F90 File Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        s013vals.F90 File Reference
                                                        +
                                                        +
                                                        + +

                                                        Read and write data values within Sections 0, 1, and 3 of BUFR messages. +More...

                                                        + +

                                                        Go to the source code of this file.

                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                                                        +Functions/Subroutines

                                                        subroutine cktaba (lun, subset, jdate, iret)
                                                         Get the Table A mnemonic from Sections 1 and 3 of a BUFR message. More...
                                                         
                                                        recursive subroutine datebf (lunit, mear, mmon, mday, mour, idate)
                                                         Get the Section 1 date-time from the first data message of a BUFR file, bypassing any messages at the beginning of the file which may contain embedded DX BUFR table information. More...
                                                         
                                                        recursive subroutine datelen (len)
                                                         Specify the format of Section 1 date-time values that will be output by future calls to any of the NCEPLIBS-bufr message-reading subroutines. More...
                                                         
                                                        recursive subroutine dumpbf (lunit, jdate, jdump)
                                                         Read the Section 1 date-time from the first two "dummy" messages of an NCEP dump file. More...
                                                         
                                                        recursive subroutine gets1loc (s1mnem, iben, isbyt, iwid, iret)
                                                         Get the location of a specified value within Section 1 of a BUFR message. More...
                                                         
                                                        recursive integer function i4dy (idate)
                                                         Convert a date-time with a 2-digit year (YYMMDDHH) to a date-time with a 4-digit year (YYYYMMDDHH) using a windowing technique. More...
                                                         
                                                        recursive integer function igetdate (mbay, iyr, imo, idy, ihr)
                                                         Get the date-time from within Section 1 of a BUFR message. More...
                                                         
                                                        recursive integer function iupbs01 (mbay, s01mnem)
                                                         Read a specified value from within Section 0 or Section 1 of a BUFR message. More...
                                                         
                                                        recursive integer function iupbs3 (mbay, s3mnem)
                                                         Read a specified value from within Section 3 of a BUFR message. More...
                                                         
                                                        recursive integer function iupvs01 (lunit, s01mnem)
                                                         Read a specified value from within Section 0 or 1 of a BUFR message. More...
                                                         
                                                        recursive subroutine mesgbc (lunin, mesgtyp, icomp)
                                                         Return the message type (from Section 1) and message compression indicator (from Section 3) of a BUFR message. More...
                                                         
                                                        recursive subroutine mesgbf (lunit, mesgtyp)
                                                         Read through a BUFR file (starting from the beginning of the file) and return the message type (from Section 1) of the first message encountered which does not contain DX BUFR table information. More...
                                                         
                                                        recursive subroutine minimg (lunit, mini)
                                                         Write a minutes value into Section 1 of the BUFR message that was most recently opened for writing via a call to one of the message-writing subroutines for a specified Fortran logical unit. More...
                                                         
                                                        recursive subroutine pkbs1 (ival, mbay, s1mnem)
                                                         Write a specified value into a specified location within Section 1 of a BUFR message, overwriting the value previously stored in that location. More...
                                                         
                                                        recursive subroutine pkvs01 (s01mnem, ival)
                                                         Specify a value to be written into a specified location within Section 0 or Section 1 of all BUFR messages output by future calls to other message-writing subroutines and subset-writing subroutines. More...
                                                         
                                                        subroutine reads3 (lun)
                                                         Read the Section 3 descriptors from the BUFR message in mbay(1,lun), then use the BUFR master tables to generate the necessary information for those descriptors within the internal BUFR table arrays. More...
                                                         
                                                        recursive subroutine upds3 (mbay, lcds3, cds3, nds3)
                                                         Read the sequence of data descriptors contained within Section 3 of a BUFR message. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Read and write data values within Sections 0, 1, and 3 of BUFR messages.

                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2005-11-29
                                                        + +

                                                        Definition in file s013vals.F90.

                                                        +

                                                        Function/Subroutine Documentation

                                                        + +

                                                        ◆ cktaba()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        subroutine cktaba (integer, intent(in) lun,
                                                        character*8, intent(out) subset,
                                                        integer, intent(out) jdate,
                                                        integer, intent(out) iret 
                                                        )
                                                        +
                                                        + +

                                                        Get the Table A mnemonic from Sections 1 and 3 of a BUFR message.

                                                        +

                                                        The BUFR message must have been previously read from lun using one of the message-reading subroutines.

                                                        +
                                                        Parameters
                                                        + + + + + +
                                                        lun- File ID
                                                        subset- Table A mnemonic
                                                          +
                                                        • Returned as a string of all blank characters if iret is equal to 11 (see below) and if Section 3 isn't being used for decoding
                                                        • +
                                                        +
                                                        jdate- Date-time stored within Section 1 of BUFR, in format of either YYMMDDHH or YYYYMMDDHH depending on datelen() value
                                                        iret- Return code:
                                                          +
                                                        • 0 = Normal return
                                                        • +
                                                        • -1 = Unrecognized Table A (message type) value
                                                        • +
                                                        • 11 = This is a BUFR table (dictionary) message
                                                        • +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        Woollen
                                                        +
                                                        Date
                                                        2000-09-19
                                                        + +

                                                        Definition at line 1271 of file s013vals.F90.

                                                        + +

                                                        References bort(), errwrt(), getlens(), moda_msgcwd::idate, moda_msgcwd::inode, moda_sc3bfr::isc3, moda_bitbuf::mbay, moda_bitbuf::mbyt, moda_unptyp::msgunp, moda_msgcwd::msub, nemtbax(), moda_msgcwd::nmsg, moda_msgcwd::nsub, numtab(), openbt(), rdusdx(), and moda_sc3bfr::tamnem.

                                                        + +

                                                        Referenced by rdmemm(), readerme(), and readmg().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ datebf()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        recursive subroutine datebf (integer, intent(in) lunit,
                                                        integer, intent(out) mear,
                                                        integer, intent(out) mmon,
                                                        integer, intent(out) mday,
                                                        integer, intent(out) mour,
                                                        integer, intent(out) idate 
                                                        )
                                                        +
                                                        + +

                                                        Get the Section 1 date-time from the first data message of a BUFR file, bypassing any messages at the beginning of the file which may contain embedded DX BUFR table information.

                                                        +
                                                        Parameters
                                                        + + + + + + + +
                                                        lunit- Fortran logical unit number for BUFR file
                                                        mear- Year stored within Section 1 of first data message, in format of either YY or YYYY, depending on the most recent call to subroutine datelen()
                                                        mmon- Month stored within Section 1 of first data message
                                                        mday- Day stored within Section 1 of first data message
                                                        mour- Hour stored within Section 1 of first data message
                                                        idate- Date-time stored within Section 1 of first data message, in format of either YYMMDDHH or YYYYMMDDHH, depending on the most recent call to subroutine datelen() -1 = First data message could not be found in BUFR file
                                                        +
                                                        +
                                                        +

                                                        Logical unit lunit must already be associated with a filename on the local system, typically via a Fortran "OPEN" statement.

                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 936 of file s013vals.F90.

                                                        + +

                                                        References bort(), closbf(), errwrt(), idxmsg(), igetdate(), moda_mgwa::mgwa, openbf(), rdmsgw(), status(), x48(), and x84().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ datelen()

                                                        + +
                                                        +
                                                        + + + + + + + + +
                                                        recursive subroutine datelen (integer, intent(in) len)
                                                        +
                                                        + +

                                                        Specify the format of Section 1 date-time values that will be output by future calls to any of the NCEPLIBS-bufr message-reading subroutines.

                                                        +

                                                        This subroutine can be called at any time from within the application program, and the specified value for len will remain in effect for all future calls to any of the NCEPLIBS-bufr subroutines which read BUFR messages, unless a subsequent call is made to this subroutine to reset the value of len again. If this subroutine is never called, a default value of 8 is used for len, as set within subroutine bfrini().

                                                        +
                                                        Parameters
                                                        + + +
                                                        len- Length of Section 1 date-time values to be output by all future calls to message-reading subroutines:
                                                          +
                                                        • 8 = YYMMDDHH format with 2-digit year (the default)
                                                        • +
                                                        • 10 = YYYYMMDDHH format with 4-digit year
                                                        • +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1998-07-08
                                                        + +

                                                        Definition at line 888 of file s013vals.F90.

                                                        + +

                                                        References bort(), and x84().

                                                        + +

                                                        Referenced by fdebufr_c(), and readbp().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ dumpbf()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        recursive subroutine dumpbf (integer, intent(in) lunit,
                                                        integer, dimension(*), intent(out) jdate,
                                                        integer, dimension(*), intent(out) jdump 
                                                        )
                                                        +
                                                        + +

                                                        Read the Section 1 date-time from the first two "dummy" messages of an NCEP dump file.

                                                        +

                                                        This bypasses any messages at the beginning of the file which may contain embedded DX BUFR table information. Normally, the first of these two "dummy" messages contains the dump center date-time in Section 1, while the second message contains the dump initiation date-time in Section 1. Neither of these two "dummy" messages should contain any data subsets in Section 4.

                                                        +

                                                        Logical unit lunit must already be associated with a filename on the local system, typically via a Fortran "OPEN" statement.

                                                        +

                                                        If the subroutine fails to locate either of the two "dummy" messages within the file pointed to by lunit, then the corresponding jdate or jdump array will be filled with all values set to (-1).

                                                        +
                                                        Parameters
                                                        + + + + +
                                                        lunit- Fortran logical unit number for BUFR dump file
                                                        jdate- Dump center date-time stored within Section 1 of first "dummy" message:
                                                          +
                                                        • Index 1 contains the year, in format of either YY or YYYY, depending on the most recent call to subroutine datelen()
                                                        • +
                                                        • Index 2 contains the month
                                                        • +
                                                        • Index 3 contains the day
                                                        • +
                                                        • Index 4 contains the hour
                                                        • +
                                                        • Index 5 contains the minute
                                                        • +
                                                        +
                                                        jdump- Dump initiation date-time stored within Section 1 of second "dummy" message:
                                                          +
                                                        • Index 1 contains the year, in format of either YY or YYYY, depending on the most recent call to subroutine datelen()
                                                        • +
                                                        • Index 2 contains the month
                                                        • +
                                                        • Index 3 contains the day
                                                        • +
                                                        • Index 4 contains the hour
                                                        • +
                                                        • Index 5 contains the minute
                                                        • +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1996-12-11
                                                        + +

                                                        Definition at line 1135 of file s013vals.F90.

                                                        + +

                                                        References bort(), closbf(), errwrt(), idxmsg(), igetdate(), iupbs01(), iupbs3(), moda_mgwa::mgwa, openbf(), rdmsgw(), status(), x48(), and x84().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ gets1loc()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        recursive subroutine gets1loc (character*(*), intent(in) s1mnem,
                                                        integer, intent(in) iben,
                                                        integer, intent(out) isbyt,
                                                        integer, intent(out) iwid,
                                                        integer, intent(out) iret 
                                                        )
                                                        +
                                                        + +

                                                        Get the location of a specified value within Section 1 of a BUFR message.

                                                        +

                                                        The location and availability of any particular value within Section 1 of a BUFR message can vary depending on the edition number used to encode the message. This subroutine will work for BUFR edition 2, 3, or 4.

                                                        +
                                                        Parameters
                                                        + + + + + + +
                                                        s1mnem- Value whose location within Section 1 is to be determined:
                                                          +
                                                        • 'LEN1' = Length (in bytes) of Section 1
                                                        • +
                                                        • 'BMT' = BUFR master table
                                                        • +
                                                        • 'OGCE' = Originating center
                                                        • +
                                                        • 'GSES' = Originating subcenter
                                                        • +
                                                        • 'USN' = Update sequence number
                                                        • +
                                                        • 'ISC2' = Flag indicating absence/presence of (optional) Section 2 in BUFR message:
                                                            +
                                                          • 0 = Section 2 absent
                                                          • +
                                                          • 1 = Section 2 present
                                                          • +
                                                          +
                                                        • +
                                                        • 'MTYP' = Data category
                                                        • +
                                                        • 'MSBTI' = Data subcategory (international)
                                                        • +
                                                        • 'MSBT' = Data subcategory (local)
                                                        • +
                                                        • 'MTV' = Version number of master table
                                                        • +
                                                        • 'MTVL' = Version number of local tables
                                                        • +
                                                        • 'YCEN' = Year of century (1-100)
                                                        • +
                                                        • 'CENT' = Century (e.g., 20 for years 1901-2000, 21 for years 2001-2100)
                                                        • +
                                                        • 'YEAR' = Year (4-digit)
                                                        • +
                                                        • 'MNTH' = Month
                                                        • +
                                                        • 'DAYS' = Day
                                                        • +
                                                        • 'HOUR' = Hour
                                                        • +
                                                        • 'MINU' = Minute
                                                        • +
                                                        • 'SECO' = Second
                                                        • +
                                                        +
                                                        iben- BUFR edition number
                                                        isbyt- Number of starting byte within Section 1 which contains value corresponding to s1mnem
                                                        iwid- Width (in bits) of value corresponding to s1mnem, counting from the first bit of the byte pointed to by isbyt
                                                        iret- Return code:
                                                          +
                                                        • 0 = normal return
                                                        • +
                                                        • -1 = s1mnem is invalid for BUFR edition iben
                                                        • +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        Remarks
                                                          +
                                                        • s1mnem = 'GSES' is only valid for iben = 3 or 4
                                                        • +
                                                        • s1mnem = 'YCEN' or 'CENT' is only valid for iben = 2 or 3
                                                        • +
                                                        • s1mnem = 'YEAR', 'SECO', or 'MSBTI' is only valid for iben = 4
                                                        • +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2005-11-29
                                                        + +

                                                        Definition at line 47 of file s013vals.F90.

                                                        + +

                                                        References x48(), and x84().

                                                        + +

                                                        Referenced by iupbs01(), and pkbs1().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ i4dy()

                                                        + +
                                                        +
                                                        + + + + + + + + +
                                                        recursive integer function i4dy (integer, intent(in) idate)
                                                        +
                                                        + +

                                                        Convert a date-time with a 2-digit year (YYMMDDHH) to a date-time with a 4-digit year (YYYYMMDDHH) using a windowing technique.

                                                        +

                                                        All 2-digit years greater than 40 are assumed to have a 4-digit year beginning with 19 (i.e. 1941-1999), and all 2-digit years less than or equal to 40 are assumed to have a 4-digit year beginning with 20 (i.e. 2000-2040). If the input date-time already contains a 4-digit year, then the function simply returns that value.

                                                        +
                                                        Parameters
                                                        + + +
                                                        idate- Date-time in format of either YYMMDDHH (2-digit year) or YYYYMMDDHH (4-digit year)
                                                        +
                                                        +
                                                        +
                                                        Returns
                                                        i4dy - Date-time in format of YYYYMMDDHH (4-digit year)
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1998-07-08
                                                        + +

                                                        Definition at line 1069 of file s013vals.F90.

                                                        + +

                                                        References x84().

                                                        + +

                                                        Referenced by iupbs01(), openmb(), openmg(), and readmp().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ igetdate()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        recursive integer function igetdate (integer, dimension(*), intent(in) mbay,
                                                        integer, intent(out) iyr,
                                                        integer, intent(out) imo,
                                                        integer, intent(out) idy,
                                                        integer, intent(out) ihr 
                                                        )
                                                        +
                                                        + +

                                                        Get the date-time from within Section 1 of a BUFR message.

                                                        +

                                                        The function will work on any BUFR message encoded using BUFR edition 2, 3, or 4.

                                                        +
                                                        Parameters
                                                        + + + + + + +
                                                        mbay- BUFR message
                                                        iyr- Year stored within Section 1 of mbay, in format of either YY or YYYY, depending on the most recent call to subroutine datelen()
                                                        imo- Month stored within Section 1 of mbay
                                                        idy- Day stored within Section 1 of mbay
                                                        ihr- Hour stored within Section 1 of mbay
                                                        +
                                                        +
                                                        +
                                                        Returns
                                                        igetdate - Date-time stored within Section 1 of mbay, in format of either YYMMDDHH or YYYYMMDDHH, depending on the most recent call to subroutine datelen()
                                                        +
                                                        Remarks
                                                          +
                                                        • The start of the BUFR message (i.e. the string 'BUFR') must be aligned on the first 4 bytes of mbay
                                                        • +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2005-11-29
                                                        + +

                                                        Definition at line 1021 of file s013vals.F90.

                                                        + +

                                                        References iupbs01(), and x48().

                                                        + +

                                                        Referenced by datebf(), and dumpbf().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ iupbs01()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        recursive integer function iupbs01 (integer, dimension(*), intent(in) mbay,
                                                        character*(*), intent(in) s01mnem 
                                                        )
                                                        +
                                                        + +

                                                        Read a specified value from within Section 0 or Section 1 of a BUFR message.

                                                        +

                                                        This function will work on any BUFR message encoded using BUFR edition 2, 3, or 4. It is similar to function iupvs01(), except that it operates on a BUFR message passed in via a memory array, whereas iupvs01() operates on the BUFR message that was read into internal arrays via the most recent call to any of the other message-reading subroutines for a specified Fortran logical unit.

                                                        +
                                                        Remarks
                                                          +
                                                        • The start of the BUFR message (i.e. the string 'BUFR') must be aligned on the first 4 bytes of mbay
                                                        • +
                                                        • Values corresponding to s01mnem = 'GSES' can only be read from BUFR messages encoded using BUFR edition 3 or 4
                                                        • +
                                                        • Values corresponding to s01mnem = 'YCEN' or 'CENT' can only be read from BUFR messages encoded using BUFR edition 2 or 3
                                                        • +
                                                        • When reading from BUFR messages encoded using BUFR edition 2 or 3, values corresponding to s01mnem = 'YEAR' will be calculated internally using the values for 'YCEN' and 'CENT', or inferred using a windowing technique
                                                        • +
                                                        • Values corresponding to s01mnem = 'SECO' or 'MSBTI' can only be read from BUFR messages encoded using BUFR edition 4
                                                        • +
                                                        +
                                                        +
                                                        Parameters
                                                        + + + +
                                                        mbay- BUFR message
                                                        s01mnem- Value to be read from Section 0 or Section 1 of mbay
                                                          +
                                                        • 'LENM' = Length (in bytes) of BUFR message
                                                        • +
                                                        • 'LEN0' = Length (in bytes) of Section 0
                                                        • +
                                                        • 'LEN1' = Length (in bytes) of Section 1
                                                        • +
                                                        • 'BEN' = BUFR edition number
                                                        • +
                                                        • 'BMT' = BUFR master table
                                                        • +
                                                        • 'OGCE' = Originating center
                                                        • +
                                                        • 'GSES' = Originating subcenter
                                                        • +
                                                        • 'USN' = Update sequence number
                                                        • +
                                                        • 'ISC2' = Flag indicating absence/presence of (optional) Section 2 in BUFR message:
                                                            +
                                                          • 0 = Section 2 absent
                                                          • +
                                                          • 1 = Section 2 present
                                                          • +
                                                          +
                                                        • +
                                                        • 'MTYP' = Data category
                                                        • +
                                                        • 'MSBTI' = Data subcategory (international)
                                                        • +
                                                        • 'MSBT' = Data subcategory (local)
                                                        • +
                                                        • 'MTV' = Version number of master table
                                                        • +
                                                        • 'MTVL' = Version number of local tables
                                                        • +
                                                        • 'YCEN' = Year of century (1-100)
                                                        • +
                                                        • 'CENT' = Century (e.g., 20 for years 1901-2000, 21 for years 2001-2100)
                                                        • +
                                                        • 'YEAR' = Year (4-digit)
                                                        • +
                                                        • 'MNTH' = Month
                                                        • +
                                                        • 'DAYS' = Day
                                                        • +
                                                        • 'HOUR' = Hour
                                                        • +
                                                        • 'MINU' = Minute
                                                        • +
                                                        • 'SECO' = Second
                                                        • +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        Returns
                                                        iupbs01 - Value corresponding to s01mnem:
                                                          +
                                                        • -1 = s01mnem was invalid for the edition of BUFR message in mbay, or some other error occurred
                                                        • +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2005-11-29
                                                        + +

                                                        Definition at line 246 of file s013vals.F90.

                                                        + +

                                                        References gets1loc(), i4dy(), and iupb().

                                                        + +

                                                        Referenced by atrcpt(), cnved4(), copybf(), copymg(), cpymem(), dumpbf(), getlens(), idxmsg(), igetdate(), ireadmt(), bufr_c2f_interface::iupbs01_c(), iupvs01(), mesgbc(), mesgbf(), nmwrd(), pkbs1(), rtrcptb(), stndrd(), and ufbmex().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ iupbs3()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        recursive integer function iupbs3 (integer, dimension(*), intent(in) mbay,
                                                        character*(*), intent(in) s3mnem 
                                                        )
                                                        +
                                                        + +

                                                        Read a specified value from within Section 3 of a BUFR message.

                                                        +
                                                        Remarks
                                                          +
                                                        • The start of the BUFR message (i.e. the string 'BUFR') must be aligned on the first 4 bytes of mbay
                                                        • +
                                                        +
                                                        +
                                                        Parameters
                                                        + + + +
                                                        mbay- BUFR message
                                                        s3mnem- Value to be read from Section 3 of mbay
                                                          +
                                                        • 'NSUB' = Number of data subsets
                                                        • +
                                                        • 'IOBS' = Flag indicating whether the message contains observed data:
                                                            +
                                                          • 0 = No
                                                          • +
                                                          • 1 = Yes
                                                          • +
                                                          +
                                                        • +
                                                        • 'ICMP' = Flag indicating whether the message contains compressed data:
                                                            +
                                                          • 0 = No
                                                          • +
                                                          • 1 = Yes
                                                          • +
                                                          +
                                                        • +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        Returns
                                                        iupbs3 - Value corresponding to s3mnem
                                                          +
                                                        • -1 = s3mnem was invalid
                                                        • +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2009-03-23
                                                        + +

                                                        Definition at line 348 of file s013vals.F90.

                                                        + +

                                                        References getlens(), and iupb().

                                                        + +

                                                        Referenced by dumpbf(), mesgbc(), readerme(), stndrd(), and writlc().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ iupvs01()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        recursive integer function iupvs01 (integer, intent(in) lunit,
                                                        character*(*), intent(in) s01mnem 
                                                        )
                                                        +
                                                        + +

                                                        Read a specified value from within Section 0 or 1 of a BUFR message.

                                                        +

                                                        This function will work on any BUFR message encoded using BUFR edition 2, 3, or 4. It is similar to function iupbs01(), except that iupbs01() operates on a BUFR message passed in via a memory array, whereas this function operates on the BUFR message that was read into internal arrays via the most recent call to any of the other message-reading subroutines for a specified Fortran logical unit.

                                                        +
                                                        Remarks
                                                          +
                                                        • Values corresponding to s01mnem = 'GSES' can only be read from BUFR messages encoded using BUFR edition 3 or 4
                                                        • +
                                                        • Values corresponding to s01mnem = 'YCEN' or 'CENT' can only be read from BUFR messages encoded using BUFR edition 2 or 3
                                                        • +
                                                        • When reading from BUFR messages encoded using BUFR edition 2 or 3, values corresponding to s01mnem = 'YEAR' will be calculated internally using the values for 'YCEN' and 'CENT', or inferred using a windowing technique
                                                        • +
                                                        • Values corresponding to s01mnem = 'SECO' or 'MSBTI' can only be read from BUFR messages encoded using BUFR edition 4
                                                        • +
                                                        +
                                                        +
                                                        Parameters
                                                        + + + +
                                                        lunit- Fortran logical unit number for BUFR file
                                                        s01mnem- Value to be read from Section 0 or Section 1 of BUFR message in internal arrays for lunit:
                                                          +
                                                        • 'LENM' = Length (in bytes) of BUFR message
                                                        • +
                                                        • 'LEN0' = Length (in bytes) of Section 0
                                                        • +
                                                        • 'LEN1' = Length (in bytes) of Section 1
                                                        • +
                                                        • 'BEN' = BUFR edition number
                                                        • +
                                                        • 'BMT' = BUFR master table
                                                        • +
                                                        • 'OGCE' = Originating center
                                                        • +
                                                        • 'GSES' = Originating subcenter
                                                        • +
                                                        • 'USN' = Update sequence number
                                                        • +
                                                        • 'ISC2' = Flag indicating absence/presence of (optional) Section 2 in BUFR message:
                                                            +
                                                          • 0 = Section 2 absent
                                                          • +
                                                          • 1 = Section 2 present
                                                          • +
                                                          +
                                                        • +
                                                        • 'MTYP' = Data category
                                                        • +
                                                        • 'MSBTI' = Data subcategory (international)
                                                        • +
                                                        • 'MSBT' = Data subcategory (local)
                                                        • +
                                                        • 'MTV' = Version number of master table
                                                        • +
                                                        • 'MTVL' = Version number of local tables
                                                        • +
                                                        • 'YCEN' = Year of century (1-100)
                                                        • +
                                                        • 'CENT' = Century (e.g., 20 for years 1901-2000, 21 for years 2001-2100)
                                                        • +
                                                        • 'YEAR' = Year (4-digit)
                                                        • +
                                                        • 'MNTH' = Month
                                                        • +
                                                        • 'DAYS' = Day
                                                        • +
                                                        • 'HOUR' = Hour
                                                        • +
                                                        • 'MINU' = Minute
                                                        • +
                                                        • 'SECO' = Second
                                                        • +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        Returns
                                                        - Value corresponding to s01mnem:
                                                          +
                                                        • -1 = s01mnem was invalid for the edition of BUFR message in internal arrays for lunit, or some other error occurred
                                                        • +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2005-11-29
                                                        + +

                                                        Definition at line 442 of file s013vals.F90.

                                                        + +

                                                        References bort(), iupbs01(), moda_bitbuf::mbay, status(), and x84().

                                                        + +

                                                        Referenced by binv(), and split_by_subset().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ mesgbc()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        recursive subroutine mesgbc (integer, intent(in) lunin,
                                                        integer, intent(out) mesgtyp,
                                                        integer, intent(out) icomp 
                                                        )
                                                        +
                                                        + +

                                                        Return the message type (from Section 1) and message compression indicator (from Section 3) of a BUFR message.

                                                        +
                                                        Author
                                                        D. Keyser
                                                        +
                                                        Date
                                                        2003-11-04
                                                        +

                                                        The message to be examined is obtained in one of two different ways, depending on the sign of lunin:

                                                          +
                                                        • If lunin > 0, the subroutine reads and examines Section 1 of each message in a BUFR file starting from the beginning of the file, and continuing until it reaches the first message which actually contains report data. This means it will skip any messages containing DX BUFR table information, as well as any "dummy" messages containing the dump center time or dump initiation time within NCEP dump files. It then returns the message type and compression indicator from the first message containing report data. When used this way, the BUFR file in question should not have already been opened via a call to subroutine openbf(), though it should already be associated with Fortran logical unit number lunin. In this situation, the subroutine is similar to subroutine mesgbf(), except that mesgbf() doesn't skip past any "dummy" messages within NCEP dump files, nor does it return a compression indicator.
                                                        • +
                                                        • If lunin < 0, the subroutine simply returns the message type and compression indicator for the BUFR message currently stored in the internal arrays via the most recent call to one of the message-reading subroutines for Fortran logical unit number abs(lunin).
                                                        • +
                                                        +
                                                        Parameters
                                                        + + + + +
                                                        lunin- Absolute value is Fortran logical unit number for BUFR file
                                                        mesgtyp- Message type
                                                          +
                                                        • When lunin > 0, a mesgtyp value of -256 means that there was an error reading the BUFR file, or that no messages were read from the file. Otherwise, any other mesgtyp value < 0 means that none of the messages in the BUFR file contained any report data.
                                                        • +
                                                        +
                                                        icomp- Message compression indicator
                                                          +
                                                        • -3 = BUFR file does not exist
                                                        • +
                                                        • -2 = none of the messages in the BUFR file contained any report data
                                                        • +
                                                        • 0 = message is not compressed
                                                        • +
                                                        • 1 = message is compressed
                                                        • +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        D. Keyser
                                                        +
                                                        Date
                                                        2003-11-04
                                                        + +

                                                        Definition at line 1481 of file s013vals.F90.

                                                        + +

                                                        References closbf(), idxmsg(), iupbs01(), iupbs3(), moda_bitbuf::mbay, moda_mgwa::mgwa, openbf(), rdmsgw(), status(), x48(), and x84().

                                                        + +

                                                        Referenced by copysb().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ mesgbf()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        recursive subroutine mesgbf (integer, intent(in) lunit,
                                                        integer, intent(out) mesgtyp 
                                                        )
                                                        +
                                                        + +

                                                        Read through a BUFR file (starting from the beginning of the file) and return the message type (from Section 1) of the first message encountered which does not contain DX BUFR table information.

                                                        +

                                                        The BUFR file should not have already been opened via a call to subroutine openbf(); however, it should already be associated with Fortran logical unit number lunit.

                                                        +

                                                        This subroutine is similar to subroutine mesgbc(), except that this subroutine will only skip past DX BUFR table messages at the beginning of a file, whereas mesgbc() will also skip past any "dummy" messages containing the dump center time or dump initiation time within NCEP dump files. Furthermore, mesgbc() also returns a message compression indicator, and it also has an option to operate on a BUFR message that has already been read into the internal arrays.

                                                        +
                                                        Parameters
                                                        + + + +
                                                        lunit- Fortran logical unit number for BUFR file
                                                        mesgtyp- Message type
                                                          +
                                                        • -1 = error reading the BUFR file, or no messages were read from the file
                                                        • +
                                                        • 11 = BUFR file only contained DX BUFR table messages
                                                        • +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 1570 of file s013vals.F90.

                                                        + +

                                                        References closbf(), idxmsg(), iupbs01(), moda_mgwa::mgwa, openbf(), rdmsgw(), x48(), and x84().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ minimg()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        recursive subroutine minimg (integer, intent(in) lunit,
                                                        integer, intent(in) mini 
                                                        )
                                                        +
                                                        + +

                                                        Write a minutes value into Section 1 of the BUFR message that was most recently opened for writing via a call to one of the message-writing subroutines for a specified Fortran logical unit.

                                                        +
                                                        Parameters
                                                        + + + +
                                                        lunit- Fortran logical unit number for BUFR file
                                                        mini- Minutes value
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 1223 of file s013vals.F90.

                                                        + +

                                                        References bort(), moda_bitbuf::mbay, pkbs1(), status(), and x84().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ pkbs1()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        recursive subroutine pkbs1 (integer, intent(in) ival,
                                                        integer, dimension(*), intent(inout) mbay,
                                                        character*(*), intent(in) s1mnem 
                                                        )
                                                        +
                                                        + +

                                                        Write a specified value into a specified location within Section 1 of a BUFR message, overwriting the value previously stored in that location.

                                                        +

                                                        This subroutine will work on any BUFR message encoded using BUFR edition 2, 3, or 4. It is similar to subroutine pkvs01(), except that it operates on a BUFR message passed in via a memory array, whereas pkvs01() operates on BUFR messages stored internally within the software.

                                                        +
                                                        Parameters
                                                        + + + + +
                                                        ival- Value to be stored
                                                        mbay- BUFR message
                                                        s1mnem- Location in Section 1 of mbay within which to store ival:
                                                          +
                                                        • 'BMT' = BUFR master table
                                                        • +
                                                        • 'OGCE' = Originating center
                                                        • +
                                                        • 'GSES' = Originating subcenter
                                                        • +
                                                        • 'USN' = Update sequence number
                                                        • +
                                                        • 'MTYP' = Data category
                                                        • +
                                                        • 'MSBTI' = Data subcategory (international)
                                                        • +
                                                        • 'MSBT' = Data subcategory (local)
                                                        • +
                                                        • 'MTV' = Version number of master table
                                                        • +
                                                        • 'MTVL' = Version number of local tables
                                                        • +
                                                        • 'YCEN' = Year of century (1-100)
                                                        • +
                                                        • 'CENT' = Century (e.g., 20 for years 1901-2000, 21 for years 2001-2100)
                                                        • +
                                                        • 'YEAR' = Year (4-digit)
                                                        • +
                                                        • 'MNTH' = Month
                                                        • +
                                                        • 'DAYS' = Day
                                                        • +
                                                        • 'HOUR' = Hour
                                                        • +
                                                        • 'MINU' = Minute
                                                        • +
                                                        • 'SECO' = Second
                                                        • +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        Remarks
                                                          +
                                                        • The start of the BUFR message (i.e. the string 'BUFR') must be aligned on the first 4 bytes of mbay
                                                        • +
                                                        • Values corresponding to s1mnem = 'GSES' can only be stored within BUFR messages encoded using BUFR edition 3 or 4
                                                        • +
                                                        • Values corresponding to s1mnem = 'YCEN' or 'CENT' can only be stored within BUFR messages encoded using BUFR edition 2 or 3.
                                                        • +
                                                        • Values corresponding to s1mnem = 'YEAR', 'SECO' or 'MSBTI' can only be stored within BUFR messages encoded using BUFR edition 4
                                                        • +
                                                        +
                                                        +
                                                        Authors
                                                        J. Ator, D. Keyser
                                                        +
                                                        Date
                                                        2005-11-29
                                                        + +

                                                        Definition at line 520 of file s013vals.F90.

                                                        + +

                                                        References bort(), gets1loc(), iupbs01(), pkb(), and x84().

                                                        + +

                                                        Referenced by minimg(), and msgwrt().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ pkvs01()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        recursive subroutine pkvs01 (character*(*), intent(in) s01mnem,
                                                        integer, intent(in) ival 
                                                        )
                                                        +
                                                        + +

                                                        Specify a value to be written into a specified location within Section 0 or Section 1 of all BUFR messages output by future calls to other message-writing subroutines and subset-writing subroutines.

                                                        +

                                                        This subroutine is similar to subroutine pkbs1(), except that pkbs1() operates on a single BUFR message passed in via a memory array. Alternatively, whenever this subroutine is called, the specified IVAL will be written into all BUFR messages output by all future calls to other message-writing subroutines and subset-writing subroutines, for all Fortran logical units that are open for output within the application program, unless a subsequent call is made to this subroutine with the same value of s01mnem in order to reset the corresponding IVAL again. Otherwise, if this subroutine is never called for a particular value of s01mnem, then a default value is used for the corresponding ival, as set within subroutine msgini(), cmsgini() or dxmini().

                                                        +
                                                        Parameters
                                                        + + + +
                                                        ival- Value to be stored
                                                        s01mnem- Location where ival is to be stored within Section 0 or Section 1 of all future output BUFR messages:
                                                          +
                                                        • 'BEN' = BUFR edition number
                                                        • +
                                                        • 'BMT' = BUFR master table
                                                        • +
                                                        • 'OGCE' = Originating center
                                                        • +
                                                        • 'GSES' = Originating subcenter
                                                        • +
                                                        • 'USN' = Update sequence number
                                                        • +
                                                        • 'MTYP' = Data category
                                                        • +
                                                        • 'MSBTI' = Data subcategory (international)
                                                        • +
                                                        • 'MSBT' = Data subcategory (local)
                                                        • +
                                                        • 'MTV' = Version number of master table
                                                        • +
                                                        • 'MTVL' = Version number of local tables
                                                        • +
                                                        • 'YCEN' = Year of century (1-100)
                                                        • +
                                                        • 'CENT' = Century (e.g., 20 for years 1901-2000, 21 for years 2001-2100)
                                                        • +
                                                        • 'YEAR' = Year (4-digit)
                                                        • +
                                                        • 'MNTH' = Month
                                                        • +
                                                        • 'DAYS' = Day
                                                        • +
                                                        • 'HOUR' = Hour
                                                        • +
                                                        • 'MINU' = Minute
                                                        • +
                                                        • 'SECO' = Second
                                                        • +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        Remarks
                                                          +
                                                        • A separate call to this subroutine must be made for each value of s01mnem that is to be set within Section 0 or Section 1 of all future output BUFR messages.
                                                        • +
                                                        • A call to this subroutine with s01mnem = 'BEN' and ival = 4 will force all future output BUFR messages to be encoded using BUFR edition 4; otherwise, messages will be encoded using BUFR edition 3 by default.
                                                        • +
                                                        • Values corresponding to s01mnem = 'YCEN' or 'CENT' can only be stored within BUFR messages encoded using BUFR edition 3.
                                                        • +
                                                        • Values corresponding to s01mnem = 'YEAR', 'SECO' or 'MSBTI' can only be stored within BUFR messages encoded using BUFR edition 4.
                                                        • +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2005-11-29
                                                        + +

                                                        Definition at line 618 of file s013vals.F90.

                                                        + +

                                                        References bort(), moda_s01cm::cmnem, moda_s01cm::ivmnem, moda_s01cm::ns01v, openbf(), and x84().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ reads3()

                                                        + +
                                                        +
                                                        + + + + + + + + +
                                                        subroutine reads3 (integer, intent(in) lun)
                                                        +
                                                        + +

                                                        Read the Section 3 descriptors from the BUFR message in mbay(1,lun), then use the BUFR master tables to generate the necessary information for those descriptors within the internal BUFR table arrays.

                                                        +
                                                        Parameters
                                                        + + +
                                                        lun- File ID
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2009-03-23
                                                        + +

                                                        Definition at line 685 of file s013vals.F90.

                                                        + +

                                                        References bort(), moda_s3list::cds3, moda_dscach::cnem, dxinit(), errwrt(), moda_dscach::idcach, moda_s3list::ids3, makestab(), moda_bitbuf::mbay, moda_dscach::ncnem, moda_dscach::ndc, stntbia(), moda_sc3bfr::tamnem, and upds3().

                                                        + +

                                                        Referenced by readerme(), and readmg().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ upds3()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        recursive subroutine upds3 (integer, dimension(*), intent(in) mbay,
                                                        integer, intent(in) lcds3,
                                                        character*6, dimension(*), intent(out) cds3,
                                                        integer, intent(out) nds3 
                                                        )
                                                        +
                                                        + +

                                                        Read the sequence of data descriptors contained within Section 3 of a BUFR message.

                                                        +
                                                        Remarks
                                                          +
                                                        • The start of the BUFR message (i.e. the string 'BUFR') must be aligned on the first 4 bytes of mbay
                                                        • +
                                                        • This subroutine does not recursively resolve any Table D descriptors from within Section 3; rather, what is returned in CDS3 is the exact list of data descriptors as it appears within Section 3 of mbay
                                                        • +
                                                        +
                                                        +
                                                        Parameters
                                                        + + + + + +
                                                        mbay- BUFR message
                                                        lcds3- Dimensioned size (in integers) of cds3 in the calling program; used by the subroutine to ensure that it doesn't overflow the cds3 array
                                                        cds3- Data descriptor sequence within Section 3 of mbay
                                                        nds3- Number of data descriptors in cds3
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2003-11-04
                                                        + +

                                                        Definition at line 828 of file s013vals.F90.

                                                        + +

                                                        References adn30(), bort(), getlens(), iupb(), x48(), and x84().

                                                        + +

                                                        Referenced by fdebufr_c(), ireadmt(), and reads3().

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/s013vals_8F90.js b/previous_versions/v12.1.0/s013vals_8F90.js new file mode 100644 index 000000000..fca9b1ef6 --- /dev/null +++ b/previous_versions/v12.1.0/s013vals_8F90.js @@ -0,0 +1,20 @@ +var s013vals_8F90 = +[ + [ "cktaba", "s013vals_8F90.html#a1f8f8b7d0f3b0eb6042e170c0c84c18f", null ], + [ "datebf", "s013vals_8F90.html#a311f8836440703db774ee651425337b4", null ], + [ "datelen", "s013vals_8F90.html#aadd84c217cf5fab0d94564da3f377ebe", null ], + [ "dumpbf", "s013vals_8F90.html#ac2e40c9d462d2855dd693d9498f55342", null ], + [ "gets1loc", "s013vals_8F90.html#a867795708832230010199b5a31f687a8", null ], + [ "i4dy", "s013vals_8F90.html#ada4930358eb16c05c65c2df068db90c1", null ], + [ "igetdate", "s013vals_8F90.html#aedbe120baa1a1058174325c5e2d0e487", null ], + [ "iupbs01", "s013vals_8F90.html#a28944a4d73587a3943964a95619cb8a2", null ], + [ "iupbs3", "s013vals_8F90.html#a6060b7b617646ee396097f20317e2f4d", null ], + [ "iupvs01", "s013vals_8F90.html#a3b1a6e580f306826c680ff0a71d883f8", null ], + [ "mesgbc", "s013vals_8F90.html#ac3a5070d2415122d7a93471e5f019247", null ], + [ "mesgbf", "s013vals_8F90.html#a837bd14b4718718edb57b5f53c7bbcbe", null ], + [ "minimg", "s013vals_8F90.html#a70447e085c4523fa53796c5317f63ae8", null ], + [ "pkbs1", "s013vals_8F90.html#a5522b3ec85470f1def91880bbc5df5e6", null ], + [ "pkvs01", "s013vals_8F90.html#ac8fa984389323f08dd1cbd3aa6b57da9", null ], + [ "reads3", "s013vals_8F90.html#ac96e5200de4ecc84f79caa98177e60f6", null ], + [ "upds3", "s013vals_8F90.html#a7bf4d22f9bb27412a9d041f7a5d7bca6", null ] +]; \ No newline at end of file diff --git a/previous_versions/v12.1.0/s013vals_8F90_source.html b/previous_versions/v12.1.0/s013vals_8F90_source.html new file mode 100644 index 000000000..abbe79360 --- /dev/null +++ b/previous_versions/v12.1.0/s013vals_8F90_source.html @@ -0,0 +1,1329 @@ + + + + + + + +NCEPLIBS-bufr: s013vals.F90 Source File + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        +
                                                        s013vals.F90
                                                        +
                                                        +
                                                        +Go to the documentation of this file.
                                                        1 
                                                        +
                                                        5 
                                                        +
                                                        47 recursive subroutine gets1loc(s1mnem,iben,isbyt,iwid,iret)
                                                        +
                                                        48 
                                                        +
                                                        49  use modv_vars, only: im8b
                                                        +
                                                        50 
                                                        +
                                                        51  implicit none
                                                        +
                                                        52 
                                                        +
                                                        53  character*(*), intent(in) :: s1mnem
                                                        +
                                                        54 
                                                        +
                                                        55  integer, intent(in) :: iben
                                                        +
                                                        56  integer, intent(out) :: isbyt, iwid, iret
                                                        +
                                                        57  integer my_iben
                                                        +
                                                        58 
                                                        +
                                                        59  ! Check for I8 integers.
                                                        +
                                                        60 
                                                        +
                                                        61  if(im8b) then
                                                        +
                                                        62  im8b=.false.
                                                        +
                                                        63 
                                                        +
                                                        64  call x84(iben,my_iben,1)
                                                        +
                                                        65  call gets1loc(s1mnem,my_iben,isbyt,iwid,iret)
                                                        +
                                                        66  call x48(isbyt,isbyt,1)
                                                        +
                                                        67  call x48(iwid,iwid,1)
                                                        +
                                                        68  call x48(iret,iret,1)
                                                        +
                                                        69 
                                                        +
                                                        70  im8b=.true.
                                                        +
                                                        71  return
                                                        +
                                                        72  endif
                                                        +
                                                        73 
                                                        +
                                                        74  iret = 0
                                                        +
                                                        75  iwid = 8
                                                        +
                                                        76 
                                                        +
                                                        77  if(s1mnem=='LEN1') then
                                                        +
                                                        78  isbyt = 1
                                                        +
                                                        79  iwid = 24
                                                        +
                                                        80  else if(s1mnem=='BMT') then
                                                        +
                                                        81  isbyt = 4
                                                        +
                                                        82  else if(s1mnem=='OGCE') then
                                                        +
                                                        83  if(iben==3) then
                                                        +
                                                        84  isbyt = 6
                                                        +
                                                        85  else
                                                        +
                                                        86  ! Note that this location is actually the same for both edition 2 and edition 4 of BUFR
                                                        +
                                                        87  isbyt = 5
                                                        +
                                                        88  iwid = 16
                                                        +
                                                        89  endif
                                                        +
                                                        90  else if(s1mnem=='GSES') then
                                                        +
                                                        91  if(iben==3) then
                                                        +
                                                        92  isbyt = 5
                                                        +
                                                        93  else if(iben==4) then
                                                        +
                                                        94  isbyt = 7
                                                        +
                                                        95  iwid = 16
                                                        +
                                                        96  else
                                                        +
                                                        97  iret = -1
                                                        +
                                                        98  endif
                                                        +
                                                        99  else if(s1mnem=='USN') then
                                                        +
                                                        100  if(iben==4) then
                                                        +
                                                        101  isbyt = 9
                                                        +
                                                        102  else
                                                        +
                                                        103  isbyt = 7
                                                        +
                                                        104  endif
                                                        +
                                                        105  else if(s1mnem=='ISC2') then
                                                        +
                                                        106  iwid = 1
                                                        +
                                                        107  if(iben==4) then
                                                        +
                                                        108  isbyt = 10
                                                        +
                                                        109  else
                                                        +
                                                        110  isbyt = 8
                                                        +
                                                        111  endif
                                                        +
                                                        112  else if(s1mnem=='MTYP') then
                                                        +
                                                        113  if(iben==4) then
                                                        +
                                                        114  isbyt = 11
                                                        +
                                                        115  else
                                                        +
                                                        116  isbyt = 9
                                                        +
                                                        117  endif
                                                        +
                                                        118  else if(s1mnem=='MSBTI') then
                                                        +
                                                        119  if(iben==4) then
                                                        +
                                                        120  isbyt = 12
                                                        +
                                                        121  else
                                                        +
                                                        122  iret = -1
                                                        +
                                                        123  endif
                                                        +
                                                        124  else if(s1mnem=='MSBT') then
                                                        +
                                                        125  if(iben==4) then
                                                        +
                                                        126  isbyt = 13
                                                        +
                                                        127  else
                                                        +
                                                        128  isbyt = 10
                                                        +
                                                        129  endif
                                                        +
                                                        130  else if(s1mnem=='MTV') then
                                                        +
                                                        131  if(iben==4) then
                                                        +
                                                        132  isbyt = 14
                                                        +
                                                        133  else
                                                        +
                                                        134  isbyt = 11
                                                        +
                                                        135  endif
                                                        +
                                                        136  else if(s1mnem=='MTVL') then
                                                        +
                                                        137  if(iben==4) then
                                                        +
                                                        138  isbyt = 15
                                                        +
                                                        139  else
                                                        +
                                                        140  isbyt = 12
                                                        +
                                                        141  endif
                                                        +
                                                        142  else if(s1mnem=='YEAR') then
                                                        +
                                                        143  if(iben==4) then
                                                        +
                                                        144  isbyt = 16
                                                        +
                                                        145  iwid = 16
                                                        +
                                                        146  else
                                                        +
                                                        147  iret = -1
                                                        +
                                                        148  endif
                                                        +
                                                        149  else if(s1mnem=='YCEN') then
                                                        +
                                                        150  if(iben<4) then
                                                        +
                                                        151  isbyt = 13
                                                        +
                                                        152  else
                                                        +
                                                        153  iret = -1
                                                        +
                                                        154  endif
                                                        +
                                                        155  else if(s1mnem=='CENT') then
                                                        +
                                                        156  if(iben<4) then
                                                        +
                                                        157  isbyt = 18
                                                        +
                                                        158  else
                                                        +
                                                        159  iret = -1
                                                        +
                                                        160  endif
                                                        +
                                                        161  else if(s1mnem=='MNTH') then
                                                        +
                                                        162  if(iben==4) then
                                                        +
                                                        163  isbyt = 18
                                                        +
                                                        164  else
                                                        +
                                                        165  isbyt = 14
                                                        +
                                                        166  endif
                                                        +
                                                        167  else if(s1mnem=='DAYS') then
                                                        +
                                                        168  if(iben==4) then
                                                        +
                                                        169  isbyt = 19
                                                        +
                                                        170  else
                                                        +
                                                        171  isbyt = 15
                                                        +
                                                        172  endif
                                                        +
                                                        173  else if(s1mnem=='HOUR') then
                                                        +
                                                        174  if(iben==4) then
                                                        +
                                                        175  isbyt = 20
                                                        +
                                                        176  else
                                                        +
                                                        177  isbyt = 16
                                                        +
                                                        178  endif
                                                        +
                                                        179  else if(s1mnem=='MINU') then
                                                        +
                                                        180  if(iben==4) then
                                                        +
                                                        181  isbyt = 21
                                                        +
                                                        182  else
                                                        +
                                                        183  isbyt = 17
                                                        +
                                                        184  endif
                                                        +
                                                        185  else if(s1mnem=='SECO') then
                                                        +
                                                        186  if(iben==4) then
                                                        +
                                                        187  isbyt = 22
                                                        +
                                                        188  else
                                                        +
                                                        189  iret = -1
                                                        +
                                                        190  endif
                                                        +
                                                        191  else
                                                        +
                                                        192  iret = -1
                                                        +
                                                        193  endif
                                                        +
                                                        194 
                                                        +
                                                        195  return
                                                        +
                                                        196 end subroutine gets1loc
                                                        +
                                                        197 
                                                        +
                                                        246 recursive integer function iupbs01(mbay,s01mnem) result(iret)
                                                        +
                                                        247 
                                                        +
                                                        248  use modv_vars, only: im8b
                                                        +
                                                        249 
                                                        +
                                                        250  implicit none
                                                        +
                                                        251 
                                                        +
                                                        252  character*(*), intent(in) :: s01mnem
                                                        +
                                                        253 
                                                        +
                                                        254  integer, intent(in) :: mbay(*)
                                                        +
                                                        255  integer ival, iupb, i4dy, len0, iben, isbyt, iwid, iretgs, iyoc, icen
                                                        +
                                                        256 
                                                        +
                                                        257  logical ok4cent
                                                        +
                                                        258 
                                                        +
                                                        259  ! This statement function checks whether its input value contains a valid century value.
                                                        +
                                                        260  ok4cent(ival) = ((ival>=19).and.(ival<=21))
                                                        +
                                                        261 
                                                        +
                                                        262  ! Check for I8 integers.
                                                        +
                                                        263 
                                                        +
                                                        264  if(im8b) then
                                                        +
                                                        265  im8b=.false.
                                                        +
                                                        266 
                                                        +
                                                        267  iret = iupbs01(mbay,s01mnem)
                                                        +
                                                        268 
                                                        +
                                                        269  im8b=.true.
                                                        +
                                                        270  return
                                                        +
                                                        271  endif
                                                        +
                                                        272 
                                                        +
                                                        273  ! Handle some simple requests that do not depend on the BUFR edition number.
                                                        +
                                                        274 
                                                        +
                                                        275  if(s01mnem=='LENM') then
                                                        +
                                                        276  iret = iupb(mbay,5,24)
                                                        +
                                                        277  return
                                                        +
                                                        278  endif
                                                        +
                                                        279 
                                                        +
                                                        280  len0 = 8
                                                        +
                                                        281  if(s01mnem=='LEN0') then
                                                        +
                                                        282  iret = len0
                                                        +
                                                        283  return
                                                        +
                                                        284  endif
                                                        +
                                                        285 
                                                        +
                                                        286  ! Get the BUFR edition number.
                                                        +
                                                        287 
                                                        +
                                                        288  iben = iupb(mbay,8,8)
                                                        +
                                                        289  if(s01mnem=='BEN') then
                                                        +
                                                        290  iret = iben
                                                        +
                                                        291  return
                                                        +
                                                        292  endif
                                                        +
                                                        293 
                                                        +
                                                        294  ! Use the BUFR edition number to handle any other requests.
                                                        +
                                                        295 
                                                        +
                                                        296  call gets1loc(s01mnem,iben,isbyt,iwid,iretgs)
                                                        +
                                                        297  if(iretgs==0) then
                                                        +
                                                        298  iret = iupb(mbay,len0+isbyt,iwid)
                                                        +
                                                        299  if(s01mnem=='CENT') then
                                                        +
                                                        300 
                                                        +
                                                        301  ! Test whether the returned value was a valid century value.
                                                        +
                                                        302 
                                                        +
                                                        303  if(.not.ok4cent(iret)) iret = -1
                                                        +
                                                        304  endif
                                                        +
                                                        305  else if( (s01mnem=='YEAR') .and. (iben<4) ) then
                                                        +
                                                        306 
                                                        +
                                                        307  ! Calculate the 4-digit year.
                                                        +
                                                        308 
                                                        +
                                                        309  iyoc = iupb(mbay,21,8)
                                                        +
                                                        310  icen = iupb(mbay,26,8)
                                                        +
                                                        311 
                                                        +
                                                        312  ! Does icen contain a valid century value?
                                                        +
                                                        313 
                                                        +
                                                        314  if(ok4cent(icen)) then
                                                        +
                                                        315  ! YES, so use it to calculate the 4-digit year. Note that, by international convention, the year 2000 was the 100th
                                                        +
                                                        316  ! year of the 20th century, and the year 2001 was the 1st year of the 21st century
                                                        +
                                                        317  iret = (icen-1)*100 + iyoc
                                                        +
                                                        318  else
                                                        +
                                                        319  ! NO, so use a windowing technique to determine the 4-digit year from the year of the century.
                                                        +
                                                        320  iret = i4dy(mod(iyoc,100)*1000000)/10**6
                                                        +
                                                        321  endif
                                                        +
                                                        322  else
                                                        +
                                                        323  iret = -1
                                                        +
                                                        324  endif
                                                        +
                                                        325 
                                                        +
                                                        326  return
                                                        +
                                                        327 end function iupbs01
                                                        +
                                                        328 
                                                        +
                                                        348 recursive integer function iupbs3(mbay,s3mnem) result(iret)
                                                        +
                                                        349 
                                                        +
                                                        350  use modv_vars, only: im8b
                                                        +
                                                        351 
                                                        +
                                                        352  implicit none
                                                        +
                                                        353 
                                                        +
                                                        354  character*(*), intent(in) :: s3mnem
                                                        +
                                                        355 
                                                        +
                                                        356  integer, intent(in) :: mbay(*)
                                                        +
                                                        357  integer len0, len1, len2, len3, l4, l5, ipt, ival, imask, iupb
                                                        +
                                                        358 
                                                        +
                                                        359  ! Check for I8 integers.
                                                        +
                                                        360 
                                                        +
                                                        361  if(im8b) then
                                                        +
                                                        362  im8b=.false.
                                                        +
                                                        363 
                                                        +
                                                        364  iret = iupbs3(mbay,s3mnem)
                                                        +
                                                        365 
                                                        +
                                                        366  im8b=.true.
                                                        +
                                                        367  return
                                                        +
                                                        368  endif
                                                        +
                                                        369 
                                                        +
                                                        370  ! Skip to the beginning of Section 3.
                                                        +
                                                        371 
                                                        +
                                                        372  call getlens(mbay,3,len0,len1,len2,len3,l4,l5)
                                                        +
                                                        373  ipt = len0 + len1 + len2
                                                        +
                                                        374 
                                                        +
                                                        375  ! Unpack the requested value.
                                                        +
                                                        376 
                                                        +
                                                        377  if(s3mnem=='NSUB') then
                                                        +
                                                        378  iret = iupb(mbay,ipt+5,16)
                                                        +
                                                        379  else if( (s3mnem=='IOBS') .or. (s3mnem=='ICMP') ) then
                                                        +
                                                        380  ival = iupb(mbay,ipt+7,8)
                                                        +
                                                        381  if(s3mnem=='IOBS') then
                                                        +
                                                        382  imask = 128
                                                        +
                                                        383  else
                                                        +
                                                        384  imask = 64
                                                        +
                                                        385  endif
                                                        +
                                                        386  iret = min(1,iand(ival,imask))
                                                        +
                                                        387  else
                                                        +
                                                        388  iret = -1
                                                        +
                                                        389  endif
                                                        +
                                                        390 
                                                        +
                                                        391  return
                                                        +
                                                        392 end function iupbs3
                                                        +
                                                        393 
                                                        +
                                                        442 recursive integer function iupvs01(lunit,s01mnem) result(iret)
                                                        +
                                                        443 
                                                        +
                                                        444  use modv_vars, only: im8b
                                                        +
                                                        445 
                                                        +
                                                        446  use moda_bitbuf
                                                        +
                                                        447 
                                                        +
                                                        448  implicit none
                                                        +
                                                        449 
                                                        +
                                                        450  character*(*), intent(in) :: s01mnem
                                                        +
                                                        451 
                                                        +
                                                        452  integer, intent(in) :: lunit
                                                        +
                                                        453  integer my_lunit, lun, ilst, imst, iupbs01
                                                        +
                                                        454 
                                                        +
                                                        455  ! Check for I8 integers
                                                        +
                                                        456 
                                                        +
                                                        457  if(im8b) then
                                                        +
                                                        458  im8b=.false.
                                                        +
                                                        459 
                                                        +
                                                        460  call x84(lunit,my_lunit,1)
                                                        +
                                                        461  iret=iupvs01(my_lunit,s01mnem)
                                                        +
                                                        462 
                                                        +
                                                        463  im8b=.true.
                                                        +
                                                        464  return
                                                        +
                                                        465  endif
                                                        +
                                                        466 
                                                        +
                                                        467  iret = -1
                                                        +
                                                        468 
                                                        +
                                                        469  ! Check the file status
                                                        +
                                                        470 
                                                        +
                                                        471  call status(lunit,lun,ilst,imst)
                                                        +
                                                        472  if(ilst==0) call bort('BUFRLIB: IUPVS01 - INPUT BUFR FILE IS CLOSED, IT MUST BE OPEN FOR INPUT')
                                                        +
                                                        473  if(ilst>0) call bort('BUFRLIB: IUPVS01 - INPUT BUFR FILE IS OPEN FOR OUTPUT, IT MUST BE OPEN FOR INPUT')
                                                        +
                                                        474  if(imst==0) call bort('BUFRLIB: IUPVS01 - A MESSAGE MUST BE OPEN IN INPUT BUFR FILE, NONE ARE')
                                                        +
                                                        475 
                                                        +
                                                        476  ! Unpack the requested value
                                                        +
                                                        477 
                                                        +
                                                        478  iret = iupbs01(mbay(1,lun),s01mnem)
                                                        +
                                                        479 
                                                        +
                                                        480  return
                                                        +
                                                        481 end function iupvs01
                                                        +
                                                        482 
                                                        +
                                                        520 recursive subroutine pkbs1(ival,mbay,s1mnem)
                                                        +
                                                        521 
                                                        +
                                                        522  use modv_vars, only: im8b
                                                        +
                                                        523 
                                                        +
                                                        524  implicit none
                                                        +
                                                        525 
                                                        +
                                                        526  character*(*), intent(in) :: s1mnem
                                                        +
                                                        527 
                                                        +
                                                        528  integer, intent(in) :: ival
                                                        +
                                                        529  integer, intent(inout) :: mbay(*)
                                                        +
                                                        530  integer my_ival, iben, isbyt, iwid, iret, iupbs01, ibit
                                                        +
                                                        531 
                                                        +
                                                        532  character*128 bort_str
                                                        +
                                                        533 
                                                        +
                                                        534  ! Check for I8 integers.
                                                        +
                                                        535 
                                                        +
                                                        536  if (im8b) then
                                                        +
                                                        537  im8b = .false.
                                                        +
                                                        538 
                                                        +
                                                        539  call x84(ival,my_ival,1)
                                                        +
                                                        540  call pkbs1(my_ival,mbay,s1mnem)
                                                        +
                                                        541 
                                                        +
                                                        542  im8b = .true.
                                                        +
                                                        543  return
                                                        +
                                                        544  end if
                                                        +
                                                        545 
                                                        +
                                                        546  iben = iupbs01(mbay,'BEN')
                                                        +
                                                        547 
                                                        +
                                                        548  ! Determine where to store the value.
                                                        +
                                                        549 
                                                        +
                                                        550  call gets1loc(s1mnem,iben,isbyt,iwid,iret)
                                                        +
                                                        551  if ( (iret==0) .and. &
                                                        +
                                                        552  ( (s1mnem=='USN') .or. (s1mnem=='BMT') .or. (s1mnem=='OGCE') .or. (s1mnem=='GSES') .or. (s1mnem=='MTYP') .or. &
                                                        +
                                                        553  (s1mnem=='MSBTI') .or. (s1mnem=='MSBT') .or. (s1mnem=='MTV') .or. (s1mnem=='MTVL') .or. (s1mnem=='YCEN') .or.&
                                                        +
                                                        554  (s1mnem=='CENT') .or. (s1mnem=='YEAR') .or. (s1mnem=='MNTH') .or. (s1mnem=='DAYS') .or. (s1mnem=='HOUR') .or.&
                                                        +
                                                        555  (s1mnem=='MINU') .or. (s1mnem=='SECO') ) ) then
                                                        +
                                                        556  ! Store the value.
                                                        +
                                                        557  ibit = (iupbs01(mbay,'LEN0')+isbyt-1)*8
                                                        +
                                                        558  call pkb(ival,iwid,mbay,ibit)
                                                        +
                                                        559  else
                                                        +
                                                        560  write(bort_str,'("BUFRLIB: PKBS1 - CANNOT OVERWRITE LOCATION CORRESPONDING TO MNEMONIC (",A,") WITHIN BUFR EDITION '// &
                                                        +
                                                        561  '(",I1,")")') s1mnem, iben
                                                        +
                                                        562  call bort(bort_str)
                                                        +
                                                        563  endif
                                                        +
                                                        564 
                                                        +
                                                        565  return
                                                        +
                                                        566 end subroutine pkbs1
                                                        +
                                                        567 
                                                        +
                                                        618 recursive subroutine pkvs01(s01mnem,ival)
                                                        +
                                                        619 
                                                        +
                                                        620  use modv_vars, only: im8b, mxs01v
                                                        +
                                                        621 
                                                        +
                                                        622  use moda_s01cm
                                                        +
                                                        623 
                                                        +
                                                        624  implicit none
                                                        +
                                                        625 
                                                        +
                                                        626  character*(*), intent(in) :: s01mnem
                                                        +
                                                        627 
                                                        +
                                                        628  integer, intent(in) :: ival
                                                        +
                                                        629  integer my_ival, i
                                                        +
                                                        630 
                                                        +
                                                        631  character*128 bort_str
                                                        +
                                                        632 
                                                        +
                                                        633  ! check for i8 integers
                                                        +
                                                        634 
                                                        +
                                                        635  if(im8b) then
                                                        +
                                                        636  im8b=.false.
                                                        +
                                                        637 
                                                        +
                                                        638  call x84(ival,my_ival,1)
                                                        +
                                                        639  call pkvs01(s01mnem,my_ival)
                                                        +
                                                        640 
                                                        +
                                                        641  im8b=.true.
                                                        +
                                                        642  return
                                                        +
                                                        643  endif
                                                        +
                                                        644 
                                                        +
                                                        645  ! Confirm that the arrays needed by this subroutine have already been allocated (and if not, go ahead and allocate them now),
                                                        +
                                                        646  ! since it's possible for this subroutine to be called before the first call to subroutine openbf().
                                                        +
                                                        647 
                                                        +
                                                        648  if ( ( .not. allocated(cmnem) ) .or. ( .not. allocated(ivmnem) ) ) then
                                                        +
                                                        649  call openbf(0,'FIRST',0)
                                                        +
                                                        650  endif
                                                        +
                                                        651 
                                                        +
                                                        652  ! If an ival has already been assigned for this particular s01mnem, then overwrite that entry in module @ref moda_s01cm
                                                        +
                                                        653  ! using the new ival.
                                                        +
                                                        654 
                                                        +
                                                        655  if(ns01v>0) then
                                                        +
                                                        656  do i=1,ns01v
                                                        +
                                                        657  if(s01mnem==cmnem(i)) then
                                                        +
                                                        658  ivmnem(i) = ival
                                                        +
                                                        659  return
                                                        +
                                                        660  endif
                                                        +
                                                        661  enddo
                                                        +
                                                        662  endif
                                                        +
                                                        663 
                                                        +
                                                        664  ! Otherwise, use the next available unused entry in module @ref moda_s01cm.
                                                        +
                                                        665 
                                                        +
                                                        666  if(ns01v>=mxs01v) then
                                                        +
                                                        667  write(bort_str,'("BUFRLIB: PKVS01 - CANNOT OVERWRITE MORE THAN ",I2," DIFFERENT LOCATIONS WITHIN SECTION 0 '// &
                                                        +
                                                        668  'OR SECTION 1")') mxs01v
                                                        +
                                                        669  call bort(bort_str)
                                                        +
                                                        670  endif
                                                        +
                                                        671 
                                                        +
                                                        672  ns01v = ns01v + 1
                                                        +
                                                        673  cmnem(ns01v) = s01mnem
                                                        +
                                                        674  ivmnem(ns01v) = ival
                                                        +
                                                        675 
                                                        +
                                                        676  return
                                                        +
                                                        677 end subroutine pkvs01
                                                        +
                                                        678 
                                                        +
                                                        685 subroutine reads3 ( lun )
                                                        +
                                                        686 
                                                        +
                                                        687  use bufrlib
                                                        +
                                                        688 
                                                        +
                                                        689  use modv_vars, only: maxnc, mxcnem
                                                        +
                                                        690 
                                                        +
                                                        691  use moda_sc3bfr
                                                        +
                                                        692  use moda_bitbuf
                                                        +
                                                        693  use moda_dscach
                                                        +
                                                        694  use moda_s3list
                                                        +
                                                        695 
                                                        +
                                                        696  implicit none
                                                        +
                                                        697 
                                                        +
                                                        698  integer, intent(in) :: lun
                                                        +
                                                        699  integer iprt, irepct, ireadmt, igettdi, itmp, ncds3, ii, jj, ifxy, igetntbi, n, idn
                                                        +
                                                        700 
                                                        +
                                                        701  character*6 numb, adn30
                                                        +
                                                        702  character*55 cseq
                                                        +
                                                        703  character*128 errstr
                                                        +
                                                        704 
                                                        +
                                                        705  logical incach
                                                        +
                                                        706 
                                                        +
                                                        707  common /quiet/ iprt
                                                        +
                                                        708 
                                                        +
                                                        709  save irepct
                                                        +
                                                        710 
                                                        +
                                                        711  ! Check whether the appropriate BUFR master table information has already been read into internal memory for this message.
                                                        +
                                                        712 
                                                        +
                                                        713  if ( ireadmt( lun ) == 1 ) then
                                                        +
                                                        714  ! NO (i.e. we just had to read in new master table information for this message), so reset some corresponding values in
                                                        +
                                                        715  ! other parts of the library.
                                                        +
                                                        716  call dxinit ( lun, 0 )
                                                        +
                                                        717  itmp = igettdi( 0 )
                                                        +
                                                        718  irepct = 0
                                                        +
                                                        719  ncnem = 0
                                                        +
                                                        720  endif
                                                        +
                                                        721 
                                                        +
                                                        722  ! Unpack the list of Section 3 descriptors from the message.
                                                        +
                                                        723 
                                                        +
                                                        724  call upds3 ( mbay(1,lun), maxnc, cds3, ncds3 )
                                                        +
                                                        725  do ii = 1, ncds3
                                                        +
                                                        726  ids3(ii) = ifxy( cds3(ii) )
                                                        +
                                                        727  enddo
                                                        +
                                                        728 
                                                        +
                                                        729  ! Is the list of Section 3 descriptors already in the cache?
                                                        +
                                                        730 
                                                        +
                                                        731  ! The cache is a performance-enhancing device which saves time when the same descriptor sequences are encountered over and
                                                        +
                                                        732  ! over within the calling program. Time is saved because the below calls to subroutines stseq_c() and makestab() are
                                                        +
                                                        733  ! bypassed whenever a list is already in the cache.
                                                        +
                                                        734 
                                                        +
                                                        735  incach = .false.
                                                        +
                                                        736  if ( ncnem > 0 ) then
                                                        +
                                                        737  ii = 1
                                                        +
                                                        738  do while ( (.not.incach) .and. (ii<=ncnem) )
                                                        +
                                                        739  if ( ncds3 == ndc(ii) ) then
                                                        +
                                                        740  jj = 1
                                                        +
                                                        741  incach = .true.
                                                        +
                                                        742  do while ( (incach) .and. (jj<=ncds3) )
                                                        +
                                                        743  if ( ids3(jj) == idcach(ii,jj) ) then
                                                        +
                                                        744  jj = jj + 1
                                                        +
                                                        745  else
                                                        +
                                                        746  incach = .false.
                                                        +
                                                        747  endif
                                                        +
                                                        748  enddo
                                                        +
                                                        749  if (incach) then
                                                        +
                                                        750 
                                                        +
                                                        751  ! The list is already in the cache, so store the corresponding Table A mnemonic into module @ref moda_sc3bfr and return.
                                                        +
                                                        752 
                                                        +
                                                        753  if ( iprt >= 2 ) then
                                                        +
                                                        754  call errwrt('+++++++++++++++++++++++++++++++++++++++++++++++++')
                                                        +
                                                        755  errstr = 'BUFRLIB: READS3 - RE-USED CACHE LIST FOR ' // cnem(ii)
                                                        +
                                                        756  call errwrt(errstr)
                                                        +
                                                        757  call errwrt('+++++++++++++++++++++++++++++++++++++++++++++++++')
                                                        +
                                                        758  call errwrt(' ')
                                                        +
                                                        759  endif
                                                        +
                                                        760  tamnem(lun) = cnem(ii)
                                                        +
                                                        761  return
                                                        +
                                                        762  endif
                                                        +
                                                        763  endif
                                                        +
                                                        764  ii = ii + 1
                                                        +
                                                        765  enddo
                                                        +
                                                        766  endif
                                                        +
                                                        767 
                                                        +
                                                        768  ! Get the next available index within the internal Table A.
                                                        +
                                                        769 
                                                        +
                                                        770  n = igetntbi( lun, 'A' )
                                                        +
                                                        771 
                                                        +
                                                        772  ! Generate a Table A mnemonic and sequence description.
                                                        +
                                                        773 
                                                        +
                                                        774  write ( tamnem(lun), '(A5,I3.3)') 'MSTTB', n
                                                        +
                                                        775  cseq = 'TABLE A MNEMONIC ' // tamnem(lun)
                                                        +
                                                        776 
                                                        +
                                                        777  ! Store the Table A mnemonic and sequence into the cache.
                                                        +
                                                        778 
                                                        +
                                                        779  ncnem = ncnem + 1
                                                        +
                                                        780  if ( ncnem > mxcnem ) call bort('BUFRLIB: READS3 - MXCNEM OVERFLOW')
                                                        +
                                                        781  cnem(ncnem) = tamnem(lun)
                                                        +
                                                        782  ndc(ncnem) = ncds3
                                                        +
                                                        783  do jj = 1, ncds3
                                                        +
                                                        784  idcach(ncnem,jj) = ids3(jj)
                                                        +
                                                        785  enddo
                                                        +
                                                        786  if ( iprt >= 2 ) then
                                                        +
                                                        787  call errwrt('+++++++++++++++++++++++++++++++++++++++++++++++++')
                                                        +
                                                        788  errstr = 'BUFRLIB: READS3 - STORED CACHE LIST FOR ' // cnem(ncnem)
                                                        +
                                                        789  call errwrt(errstr)
                                                        +
                                                        790  call errwrt('+++++++++++++++++++++++++++++++++++++++++++++++++')
                                                        +
                                                        791  call errwrt(' ')
                                                        +
                                                        792  endif
                                                        +
                                                        793 
                                                        +
                                                        794  ! Get an FXY value to use with this Table A mnemonic.
                                                        +
                                                        795 
                                                        +
                                                        796  idn = igettdi( lun )
                                                        +
                                                        797  numb = adn30( idn, 6 )
                                                        +
                                                        798 
                                                        +
                                                        799  ! Store all of the information for this mnemonic within the internal Table A.
                                                        +
                                                        800 
                                                        +
                                                        801  call stntbia ( n, lun, numb, tamnem(lun), cseq )
                                                        +
                                                        802 
                                                        +
                                                        803  ! Store all of the information for this sequence within the internal Tables B and D.
                                                        +
                                                        804 
                                                        +
                                                        805  call stseq_c ( lun, irepct, idn, tamnem(lun), cseq, ids3, ncds3 )
                                                        +
                                                        806 
                                                        +
                                                        807  ! Update the jump/link table.
                                                        +
                                                        808 
                                                        +
                                                        809  call makestab
                                                        +
                                                        810 
                                                        +
                                                        811  return
                                                        +
                                                        812 end subroutine reads3
                                                        +
                                                        813 
                                                        +
                                                        828 recursive subroutine upds3(mbay,lcds3,cds3,nds3)
                                                        +
                                                        829 
                                                        +
                                                        830  use modv_vars, only: im8b
                                                        +
                                                        831 
                                                        +
                                                        832  implicit none
                                                        +
                                                        833 
                                                        +
                                                        834  integer, intent(in) :: mbay(*), lcds3
                                                        +
                                                        835  integer, intent(out) :: nds3
                                                        +
                                                        836  integer my_lcds3, len0, len1, len2, len3, l4, l5, ipt, jj, iupb
                                                        +
                                                        837 
                                                        +
                                                        838  character*6, intent(out) :: cds3(*)
                                                        +
                                                        839  character*6 adn30
                                                        +
                                                        840 
                                                        +
                                                        841  ! Check for I8 integers.
                                                        +
                                                        842 
                                                        +
                                                        843  if(im8b) then
                                                        +
                                                        844  im8b=.false.
                                                        +
                                                        845 
                                                        +
                                                        846  call x84(lcds3,my_lcds3,1)
                                                        +
                                                        847  call upds3(mbay,my_lcds3,cds3,nds3)
                                                        +
                                                        848  call x48(nds3,nds3,1)
                                                        +
                                                        849 
                                                        +
                                                        850  im8b=.true.
                                                        +
                                                        851  return
                                                        +
                                                        852  endif
                                                        +
                                                        853 
                                                        +
                                                        854  ! Skip to the beginning of Section 3.
                                                        +
                                                        855 
                                                        +
                                                        856  call getlens(mbay,3,len0,len1,len2,len3,l4,l5)
                                                        +
                                                        857  ipt = len0 + len1 + len2
                                                        +
                                                        858 
                                                        +
                                                        859  ! Unpack the Section 3 descriptors.
                                                        +
                                                        860 
                                                        +
                                                        861  nds3 = 0
                                                        +
                                                        862  do jj = 8,(len3-1),2
                                                        +
                                                        863  nds3 = nds3 + 1
                                                        +
                                                        864  if(nds3>lcds3) call bort('BUFRLIB: UPDS3 - OVERFLOW OF OUTPUT DESCRIPTOR ARRAY; TRY A LARGER DIMENSION FOR THIS ARRAY')
                                                        +
                                                        865  cds3(nds3) = adn30(iupb(mbay,ipt+jj,16),6)
                                                        +
                                                        866  enddo
                                                        +
                                                        867 
                                                        +
                                                        868  return
                                                        +
                                                        869 end subroutine upds3
                                                        +
                                                        870 
                                                        +
                                                        888 recursive subroutine datelen(len)
                                                        +
                                                        889 
                                                        +
                                                        890  use modv_vars, only: im8b, lendat
                                                        +
                                                        891 
                                                        +
                                                        892  implicit none
                                                        +
                                                        893 
                                                        +
                                                        894  integer, intent(in) :: len
                                                        +
                                                        895  integer my_len
                                                        +
                                                        896 
                                                        +
                                                        897  character*128 bort_str
                                                        +
                                                        898 
                                                        +
                                                        899  ! Check for I8 integers
                                                        +
                                                        900 
                                                        +
                                                        901  if(im8b) then
                                                        +
                                                        902  im8b=.false.
                                                        +
                                                        903 
                                                        +
                                                        904  call x84(len,my_len,1)
                                                        +
                                                        905  call datelen(my_len)
                                                        +
                                                        906 
                                                        +
                                                        907  im8b=.true.
                                                        +
                                                        908  return
                                                        +
                                                        909  endif
                                                        +
                                                        910 
                                                        +
                                                        911  if(len/=8 .and. len/=10) then
                                                        +
                                                        912  write(bort_str,'("BUFRLIB: DATELEN - INPUT ARGUMENT IS",I4," - IT MUST BE EITHER 8 OR 10")') len
                                                        +
                                                        913  call bort(bort_str)
                                                        +
                                                        914  endif
                                                        +
                                                        915  lendat = len
                                                        +
                                                        916 
                                                        +
                                                        917  return
                                                        +
                                                        918 end subroutine datelen
                                                        +
                                                        919 
                                                        +
                                                        936 recursive subroutine datebf(lunit,mear,mmon,mday,mour,idate)
                                                        +
                                                        937 
                                                        +
                                                        938  use modv_vars, only: im8b
                                                        +
                                                        939 
                                                        +
                                                        940  use moda_mgwa
                                                        +
                                                        941 
                                                        +
                                                        942  implicit none
                                                        +
                                                        943 
                                                        +
                                                        944  integer, intent(in) :: lunit
                                                        +
                                                        945  integer, intent(out) :: mear, mmon, mday, mour, idate
                                                        +
                                                        946  integer my_lunit, iprt, lun, jl, jm, ier, idx, idxmsg, igetdate
                                                        +
                                                        947 
                                                        +
                                                        948  character*128 errstr
                                                        +
                                                        949 
                                                        +
                                                        950  common /quiet/ iprt
                                                        +
                                                        951 
                                                        +
                                                        952  ! Check for I8 integers
                                                        +
                                                        953 
                                                        +
                                                        954  if(im8b) then
                                                        +
                                                        955  im8b=.false.
                                                        +
                                                        956 
                                                        +
                                                        957  call x84(lunit,my_lunit,1)
                                                        +
                                                        958  call datebf(my_lunit,mear,mmon,mday,mour,idate)
                                                        +
                                                        959  call x48(mear,mear,1)
                                                        +
                                                        960  call x48(mmon,mmon,1)
                                                        +
                                                        961  call x48(mday,mday,1)
                                                        +
                                                        962  call x48(mour,mour,1)
                                                        +
                                                        963  call x48(idate,idate,1)
                                                        +
                                                        964 
                                                        +
                                                        965  im8b=.true.
                                                        +
                                                        966  return
                                                        +
                                                        967  endif
                                                        +
                                                        968 
                                                        +
                                                        969  ! Initialization, in case openbf() hasn't been called yet.
                                                        +
                                                        970 
                                                        +
                                                        971  if ( .not. allocated(mgwa) ) call openbf(lunit,'FIRST',lunit)
                                                        +
                                                        972 
                                                        +
                                                        973  ! See if the file is already open to the library (a no-no!).
                                                        +
                                                        974 
                                                        +
                                                        975  call status(lunit,lun,jl,jm)
                                                        +
                                                        976  if(jl/=0) call bort ('BUFRLIB: DATEBF - INPUT BUFR FILE IS OPEN, IT MUST BE CLOSED')
                                                        +
                                                        977 
                                                        +
                                                        978  ! Read to the first data message and pick out the date.
                                                        +
                                                        979 
                                                        +
                                                        980  call openbf(lunit,'INX',lunit)
                                                        +
                                                        981  idx = 1
                                                        +
                                                        982  do while (idx==1)
                                                        +
                                                        983  call rdmsgw(lunit,mgwa,ier)
                                                        +
                                                        984  if(ier<0) then
                                                        +
                                                        985  if (iprt>=1) then
                                                        +
                                                        986  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        987  errstr = 'BUFRLIB: DATEBF - SECTION 1 DATE COULD NOT BE LOCATED - RETURN WITH IDATE = -1'
                                                        +
                                                        988  call errwrt(errstr)
                                                        +
                                                        989  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        990  call errwrt(' ')
                                                        +
                                                        991  endif
                                                        +
                                                        992  idate = -1
                                                        +
                                                        993  call closbf(lunit)
                                                        +
                                                        994  return
                                                        +
                                                        995  endif
                                                        +
                                                        996  idx = idxmsg(mgwa)
                                                        +
                                                        997  end do
                                                        +
                                                        998  idate = igetdate(mgwa,mear,mmon,mday,mour)
                                                        +
                                                        999  call closbf(lunit)
                                                        +
                                                        1000 
                                                        +
                                                        1001  return
                                                        +
                                                        1002 end subroutine datebf
                                                        +
                                                        1003 
                                                        +
                                                        1021 recursive integer function igetdate(mbay,iyr,imo,idy,ihr) result(iret)
                                                        +
                                                        1022 
                                                        +
                                                        1023  use modv_vars, only: im8b, lendat
                                                        +
                                                        1024 
                                                        +
                                                        1025  implicit none
                                                        +
                                                        1026 
                                                        +
                                                        1027  integer, intent(in) :: mbay(*)
                                                        +
                                                        1028  integer, intent(out) :: iyr, imo, idy, ihr
                                                        +
                                                        1029  integer iupbs01
                                                        +
                                                        1030 
                                                        +
                                                        1031  ! Check for I8 integers.
                                                        +
                                                        1032 
                                                        +
                                                        1033  if(im8b) then
                                                        +
                                                        1034  im8b=.false.
                                                        +
                                                        1035 
                                                        +
                                                        1036  iret=igetdate(mbay,iyr,imo,idy,ihr)
                                                        +
                                                        1037  call x48(iyr,iyr,1)
                                                        +
                                                        1038  call x48(imo,imo,1)
                                                        +
                                                        1039  call x48(idy,idy,1)
                                                        +
                                                        1040  call x48(ihr,ihr,1)
                                                        +
                                                        1041 
                                                        +
                                                        1042  im8b=.true.
                                                        +
                                                        1043  return
                                                        +
                                                        1044  endif
                                                        +
                                                        1045 
                                                        +
                                                        1046  iyr = iupbs01(mbay,'YEAR')
                                                        +
                                                        1047  imo = iupbs01(mbay,'MNTH')
                                                        +
                                                        1048  idy = iupbs01(mbay,'DAYS')
                                                        +
                                                        1049  ihr = iupbs01(mbay,'HOUR')
                                                        +
                                                        1050  if(lendat/=10) iyr = mod(iyr,100)
                                                        +
                                                        1051  iret = (iyr*1000000) + (imo*10000) + (idy*100) + ihr
                                                        +
                                                        1052 
                                                        +
                                                        1053  return
                                                        +
                                                        1054 end function igetdate
                                                        +
                                                        1055 
                                                        +
                                                        1069 recursive integer function i4dy(idate) result(iret)
                                                        +
                                                        1070 
                                                        +
                                                        1071  use modv_vars, only: im8b
                                                        +
                                                        1072 
                                                        +
                                                        1073  implicit none
                                                        +
                                                        1074 
                                                        +
                                                        1075  integer, intent(in) :: idate
                                                        +
                                                        1076  integer my_idate, iy
                                                        +
                                                        1077 
                                                        +
                                                        1078  ! Check for I8 integers.
                                                        +
                                                        1079 
                                                        +
                                                        1080  if(im8b) then
                                                        +
                                                        1081  im8b=.false.
                                                        +
                                                        1082 
                                                        +
                                                        1083  call x84(idate,my_idate,1)
                                                        +
                                                        1084  iret=i4dy(my_idate)
                                                        +
                                                        1085 
                                                        +
                                                        1086  im8b=.true.
                                                        +
                                                        1087  return
                                                        +
                                                        1088  endif
                                                        +
                                                        1089 
                                                        +
                                                        1090  if(idate<10**8) then
                                                        +
                                                        1091  iy = idate/10**6
                                                        +
                                                        1092  if(iy>40) then
                                                        +
                                                        1093  iret = idate + 19*100000000
                                                        +
                                                        1094  else
                                                        +
                                                        1095  iret = idate + 20*100000000
                                                        +
                                                        1096  endif
                                                        +
                                                        1097  else
                                                        +
                                                        1098  iret = idate
                                                        +
                                                        1099  endif
                                                        +
                                                        1100 
                                                        +
                                                        1101  return
                                                        +
                                                        1102 end function i4dy
                                                        +
                                                        1103 
                                                        +
                                                        1135 recursive subroutine dumpbf(lunit,jdate,jdump)
                                                        +
                                                        1136 
                                                        +
                                                        1137  use modv_vars, only: im8b
                                                        +
                                                        1138 
                                                        +
                                                        1139  use moda_mgwa
                                                        +
                                                        1140 
                                                        +
                                                        1141  implicit none
                                                        +
                                                        1142 
                                                        +
                                                        1143  integer, intent(in) :: lunit
                                                        +
                                                        1144  integer, intent(out) :: jdate(*), jdump(*)
                                                        +
                                                        1145  integer my_lunit, lun, jl, jm, iprt, ier, ii, igetdate, idxmsg, iupbs3, iupbs01
                                                        +
                                                        1146 
                                                        +
                                                        1147  character*128 errstr
                                                        +
                                                        1148 
                                                        +
                                                        1149  common /quiet/ iprt
                                                        +
                                                        1150 
                                                        +
                                                        1151  ! Check for I8 integers
                                                        +
                                                        1152 
                                                        +
                                                        1153  if(im8b) then
                                                        +
                                                        1154  im8b=.false.
                                                        +
                                                        1155 
                                                        +
                                                        1156  call x84(lunit,my_lunit,1)
                                                        +
                                                        1157  call dumpbf(my_lunit,jdate,jdump)
                                                        +
                                                        1158  call x48(jdate(1),jdate(1),5)
                                                        +
                                                        1159  call x48(jdump(1),jdump(1),5)
                                                        +
                                                        1160 
                                                        +
                                                        1161  im8b=.true.
                                                        +
                                                        1162  return
                                                        +
                                                        1163  endif
                                                        +
                                                        1164 
                                                        +
                                                        1165  do ii=1,5
                                                        +
                                                        1166  jdate(ii) = -1
                                                        +
                                                        1167  jdump(ii) = -1
                                                        +
                                                        1168  enddo
                                                        +
                                                        1169 
                                                        +
                                                        1170  ! See if the file is already open to the library (a no-no!).
                                                        +
                                                        1171 
                                                        +
                                                        1172  call status(lunit,lun,jl,jm)
                                                        +
                                                        1173  if(jl/=0) call bort('BUFRLIB: DUMPBF - INPUT BUFR FILE IS OPEN, IT MUST BE CLOSED')
                                                        +
                                                        1174  call openbf(lunit,'INX',lunit)
                                                        +
                                                        1175 
                                                        +
                                                        1176  do while (.true.)
                                                        +
                                                        1177  call rdmsgw(lunit,mgwa,ier)
                                                        +
                                                        1178  if(ier/=0) exit
                                                        +
                                                        1179  if(idxmsg(mgwa)==1) cycle ! Skip past any dictionary messages
                                                        +
                                                        1180 
                                                        +
                                                        1181  ! The dump center YY,MM,DD,HH,MM should be in this message, which is the first message containing zero subsets
                                                        +
                                                        1182  if(iupbs3(mgwa,'NSUB')/=0) exit
                                                        +
                                                        1183  ii = igetdate(mgwa,jdate(1),jdate(2),jdate(3),jdate(4))
                                                        +
                                                        1184  jdate(5) = iupbs01(mgwa,'MINU')
                                                        +
                                                        1185 
                                                        +
                                                        1186  ! The dump clock YY,MM,DD,HH,MM should be in the next message, which is the second message containing zero subsets
                                                        +
                                                        1187  call rdmsgw(lunit,mgwa,ier)
                                                        +
                                                        1188  if(ier/=0) exit
                                                        +
                                                        1189  if(iupbs3(mgwa,'NSUB')/=0) exit
                                                        +
                                                        1190  ii = igetdate(mgwa,jdump(1),jdump(2),jdump(3),jdump(4))
                                                        +
                                                        1191  jdump(5) = iupbs01(mgwa,'MINU')
                                                        +
                                                        1192 
                                                        +
                                                        1193  call closbf(lunit)
                                                        +
                                                        1194  return
                                                        +
                                                        1195  enddo
                                                        +
                                                        1196 
                                                        +
                                                        1197  if (iprt>=1 .and. (jdate(1)==-1.or.jdump(1)==-1)) then
                                                        +
                                                        1198  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        1199  if(jdate(1)==-1) then
                                                        +
                                                        1200  errstr = 'BUFRLIB: DUMPBF - FIRST EMPTY BUFR MESSAGE SECTION 1 DATE COULD NOT BE LOCATED - RETURN WITH JDATE = 5*-1'
                                                        +
                                                        1201  call errwrt(errstr)
                                                        +
                                                        1202  endif
                                                        +
                                                        1203  if(jdump(1)==-1) then
                                                        +
                                                        1204  errstr = 'BUFRLIB: DUMPBF - SECOND EMPTY BUFR MESSAGE SECTION 1 DATE COULD NOT BE LOCATED - RETURN WITH JDUMP = 5*-1'
                                                        +
                                                        1205  call errwrt(errstr)
                                                        +
                                                        1206  endif
                                                        +
                                                        1207  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        1208  call errwrt(' ')
                                                        +
                                                        1209  endif
                                                        +
                                                        1210 
                                                        +
                                                        1211  return
                                                        +
                                                        1212 end subroutine dumpbf
                                                        +
                                                        1213 
                                                        +
                                                        1223 recursive subroutine minimg(lunit,mini)
                                                        +
                                                        1224 
                                                        +
                                                        1225  use modv_vars, only: im8b
                                                        +
                                                        1226 
                                                        +
                                                        1227  use moda_bitbuf
                                                        +
                                                        1228 
                                                        +
                                                        1229  implicit none
                                                        +
                                                        1230 
                                                        +
                                                        1231  integer, intent(in) :: lunit, mini
                                                        +
                                                        1232  integer my_lunit, my_mini, lun, il, im
                                                        +
                                                        1233 
                                                        +
                                                        1234  ! Check for I8 integers.
                                                        +
                                                        1235 
                                                        +
                                                        1236  if(im8b) then
                                                        +
                                                        1237  im8b=.false.
                                                        +
                                                        1238 
                                                        +
                                                        1239  call x84(lunit,my_lunit,1)
                                                        +
                                                        1240  call x84(mini,my_mini,1)
                                                        +
                                                        1241  call minimg(my_lunit,my_mini)
                                                        +
                                                        1242 
                                                        +
                                                        1243  im8b=.true.
                                                        +
                                                        1244  return
                                                        +
                                                        1245  endif
                                                        +
                                                        1246 
                                                        +
                                                        1247  call status(lunit,lun,il,im)
                                                        +
                                                        1248  if(il==0) call bort('BUFRLIB: MINIMG - OUTPUT BUFR FILE IS CLOSED, IT MUST BE OPEN FOR OUTPUT')
                                                        +
                                                        1249  if(il<0) call bort('BUFRLIB: MINIMG - OUTPUT BUFR FILE IS OPEN FOR INPUT, IT MUST BE OPEN FOR OUTPUT')
                                                        +
                                                        1250  if(im==0) call bort('BUFRLIB: MINIMG - A MESSAGE MUST BE OPEN IN OUTPUT BUFR FILE, NONE ARE')
                                                        +
                                                        1251 
                                                        +
                                                        1252  call pkbs1(mini,mbay(1,lun),'MINU')
                                                        +
                                                        1253 
                                                        +
                                                        1254  return
                                                        +
                                                        1255 end subroutine minimg
                                                        +
                                                        1256 
                                                        +
                                                        1271 subroutine cktaba(lun,subset,jdate,iret)
                                                        +
                                                        1272 
                                                        +
                                                        1273  use moda_msgcwd
                                                        +
                                                        1274  use moda_sc3bfr
                                                        +
                                                        1275  use moda_unptyp
                                                        +
                                                        1276  use moda_bitbuf
                                                        +
                                                        1277 
                                                        +
                                                        1278  implicit none
                                                        +
                                                        1279 
                                                        +
                                                        1280  integer, intent(in) :: lun
                                                        +
                                                        1281  integer, intent(out) :: jdate, iret
                                                        +
                                                        1282  integer, parameter :: ncpfx = 3
                                                        +
                                                        1283  integer ibct, ipd1, ipd2, ipd3, ipd4, iprt, mtyp, msbt, mty1, msb1, isub, ksub, len0, len1, len2, len3, l4, l5, lundx, ii, &
                                                        +
                                                        1284  itab, inod, iad3, iad4, iyr, imo, idy, ihr, iupb, iupbs01, iupbs3, i4dy, igetdate
                                                        +
                                                        1285 
                                                        +
                                                        1286  character*128 bort_str, errstr
                                                        +
                                                        1287  character*8, intent(out) :: subset
                                                        +
                                                        1288  character*2, parameter :: cpfx(ncpfx) = (/'NC','FR','FN'/)
                                                        +
                                                        1289  character tab
                                                        +
                                                        1290 
                                                        +
                                                        1291  logical trybt
                                                        +
                                                        1292 
                                                        +
                                                        1293  common /padesc/ ibct, ipd1, ipd2, ipd3, ipd4
                                                        +
                                                        1294  common /quiet/ iprt
                                                        +
                                                        1295 
                                                        +
                                                        1296  iret = 0
                                                        +
                                                        1297 
                                                        +
                                                        1298  trybt = .true.
                                                        +
                                                        1299 
                                                        +
                                                        1300  ! Get the message type, subtype, and date from Section 1
                                                        +
                                                        1301 
                                                        +
                                                        1302  mtyp = iupbs01(mbay(1,lun),'MTYP')
                                                        +
                                                        1303  msbt = iupbs01(mbay(1,lun),'MSBT')
                                                        +
                                                        1304  jdate = igetdate(mbay(1,lun),iyr,imo,idy,ihr)
                                                        +
                                                        1305 
                                                        +
                                                        1306  if(mtyp==11) then
                                                        +
                                                        1307  ! This is a BUFR table (dictionary) message
                                                        +
                                                        1308  iret = 11
                                                        +
                                                        1309  ! There's no need to proceed any further unless Section 3 is being used for decoding
                                                        +
                                                        1310  if(isc3(lun)==0) then
                                                        +
                                                        1311  subset = " "
                                                        +
                                                        1312  return
                                                        +
                                                        1313  endif
                                                        +
                                                        1314  endif
                                                        +
                                                        1315 
                                                        +
                                                        1316  ! Get the first and second descriptors from Section 3
                                                        +
                                                        1317 
                                                        +
                                                        1318  call getlens(mbay(1,lun),3,len0,len1,len2,len3,l4,l5)
                                                        +
                                                        1319  iad3 = len0+len1+len2
                                                        +
                                                        1320  ksub = iupb(mbay(1,lun),iad3+8,16)
                                                        +
                                                        1321  isub = iupb(mbay(1,lun),iad3+10,16)
                                                        +
                                                        1322 
                                                        +
                                                        1323  ! Locate Section 4
                                                        +
                                                        1324 
                                                        +
                                                        1325  iad4 = iad3+len3
                                                        +
                                                        1326 
                                                        +
                                                        1327  ! Now, try to get the Table A mnemonic
                                                        +
                                                        1328 
                                                        +
                                                        1329  outer: do while (.true.)
                                                        +
                                                        1330 
                                                        +
                                                        1331  if(isc3(lun)/=0) then
                                                        +
                                                        1332  ! Section 3 is being used for decoding
                                                        +
                                                        1333  subset = tamnem(lun)
                                                        +
                                                        1334  call nemtbax(lun,subset,mty1,msb1,inod)
                                                        +
                                                        1335  if(inod>0) then
                                                        +
                                                        1336  mbyt(lun) = 8*(iad4+4)
                                                        +
                                                        1337  msgunp(lun) = 1
                                                        +
                                                        1338  exit outer
                                                        +
                                                        1339  endif
                                                        +
                                                        1340  endif
                                                        +
                                                        1341 
                                                        +
                                                        1342  inner: do while (.true.)
                                                        +
                                                        1343 
                                                        +
                                                        1344  call numtab(lun,isub,subset,tab,itab)
                                                        +
                                                        1345  call nemtbax(lun,subset,mty1,msb1,inod)
                                                        +
                                                        1346  if(inod>0) then
                                                        +
                                                        1347  ! The second descriptor in Section 3 corresponds to the Table A mnemonic, so the message contains non-standard
                                                        +
                                                        1348  ! NCEP extensions
                                                        +
                                                        1349  mbyt(lun) = (iad4+4)
                                                        +
                                                        1350  msgunp(lun) = 0
                                                        +
                                                        1351  exit outer
                                                        +
                                                        1352  endif
                                                        +
                                                        1353 
                                                        +
                                                        1354  call numtab(lun,ksub,subset,tab,itab)
                                                        +
                                                        1355  call nemtbax(lun,subset,mty1,msb1,inod)
                                                        +
                                                        1356  if(inod>0) then
                                                        +
                                                        1357  ! The first descriptor in Section 3 corresponds to the Table A mnemonic, so the message is WMO-standard
                                                        +
                                                        1358  mbyt(lun) = 8*(iad4+4)
                                                        +
                                                        1359  msgunp(lun) = 1
                                                        +
                                                        1360  exit outer
                                                        +
                                                        1361  endif
                                                        +
                                                        1362 
                                                        +
                                                        1363  ! OK, still no luck, so try "NCtttsss" (where ttt=mtyp and sss=msbt) as the Table A mnemonic, and if that doesn't work
                                                        +
                                                        1364  ! then also try "FRtttsss" AND "FNtttsss"
                                                        +
                                                        1365  ii=1
                                                        +
                                                        1366  do while(ii<=ncpfx)
                                                        +
                                                        1367  write(subset,'(A2,2I3.3)') cpfx(ii),mtyp,msbt
                                                        +
                                                        1368  call nemtbax(lun,subset,mty1,msb1,inod)
                                                        +
                                                        1369  if(inod>0) then
                                                        +
                                                        1370  if(ksub==ibct) then
                                                        +
                                                        1371  mbyt(lun) = (iad4+4)
                                                        +
                                                        1372  msgunp(lun) = 0
                                                        +
                                                        1373  else
                                                        +
                                                        1374  mbyt(lun) = 8*(iad4+4)
                                                        +
                                                        1375  msgunp(lun) = 1
                                                        +
                                                        1376  endif
                                                        +
                                                        1377  exit outer
                                                        +
                                                        1378  endif
                                                        +
                                                        1379  ii=ii+1
                                                        +
                                                        1380  enddo
                                                        +
                                                        1381 
                                                        +
                                                        1382  if(trybt) then
                                                        +
                                                        1383  ! Make one last desperate attempt by checking whether the application program contains an in-line version of
                                                        +
                                                        1384  ! subroutine openbt() to override the default version in the library
                                                        +
                                                        1385  trybt = .false.
                                                        +
                                                        1386  if(iprt>=1) then
                                                        +
                                                        1387  call errwrt('++++++++++++++BUFR ARCHIVE LIBRARY+++++++++++++++++')
                                                        +
                                                        1388  errstr = 'BUFRLIB: CKTABA - LAST RESORT, CHECK FOR EXTERNAL BUFR TABLE VIA CALL TO IN-LINE OPENBT'
                                                        +
                                                        1389  call errwrt(errstr)
                                                        +
                                                        1390  call errwrt('++++++++++++++BUFR ARCHIVE LIBRARY+++++++++++++++++')
                                                        +
                                                        1391  call errwrt(' ')
                                                        +
                                                        1392  endif
                                                        +
                                                        1393  call openbt(lundx,mtyp)
                                                        +
                                                        1394  if(lundx>0) then
                                                        +
                                                        1395  ! There was an in-line replacement for the default library version of openbt(), so read DX table information from
                                                        +
                                                        1396  ! the specified logical unit and look for the Table A mnemonic there
                                                        +
                                                        1397  call rdusdx(lundx,lun)
                                                        +
                                                        1398  cycle inner
                                                        +
                                                        1399  endif
                                                        +
                                                        1400  endif
                                                        +
                                                        1401 
                                                        +
                                                        1402  ! Give up and report the bad news
                                                        +
                                                        1403  if(iprt>=0) then
                                                        +
                                                        1404  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        1405  errstr = 'BUFRLIB: CKTABA - UNRECOGNIZED TABLE A MESSAGE TYPE (' // subset // ') - RETURN WITH IRET = -1'
                                                        +
                                                        1406  call errwrt(errstr)
                                                        +
                                                        1407  call errwrt('+++++++++++++++++++++WARNING+++++++++++++++++++++++')
                                                        +
                                                        1408  call errwrt(' ')
                                                        +
                                                        1409  endif
                                                        +
                                                        1410  iret = -1
                                                        +
                                                        1411  return
                                                        +
                                                        1412 
                                                        +
                                                        1413  enddo inner
                                                        +
                                                        1414 
                                                        +
                                                        1415  enddo outer
                                                        +
                                                        1416 
                                                        +
                                                        1417  ! Confirm the validity of the message type and subtype, and also check for compression
                                                        +
                                                        1418 
                                                        +
                                                        1419  if(isc3(lun)==0) then
                                                        +
                                                        1420  if(mtyp/=mty1) then
                                                        +
                                                        1421  write(bort_str,'("BUFRLIB: CKTABA - MESSAGE TYPE MISMATCH (SUBSET=",A8,", MTYP=",I3,", MTY1=",I3)') subset,mtyp,mty1
                                                        +
                                                        1422  call bort(bort_str)
                                                        +
                                                        1423  endif
                                                        +
                                                        1424  if( msbt/=msb1 .and. ( verify(subset(3:8),'1234567890') == 0 ) ) then
                                                        +
                                                        1425  write(bort_str,'("BUFRLIB: CKTABA - MESSAGE SUBTYPE MISMATCH (SUBSET=",A8,", MSBT=",I3,", MSB1=",I3)') subset,msbt,msb1
                                                        +
                                                        1426  call bort(bort_str)
                                                        +
                                                        1427  endif
                                                        +
                                                        1428  endif
                                                        +
                                                        1429  if(iupbs3(mbay(1,lun),'ICMP')>0) msgunp(lun) = 2
                                                        +
                                                        1430 
                                                        +
                                                        1431  ! Update values in @ref moda_msgcwd
                                                        +
                                                        1432 
                                                        +
                                                        1433  idate(lun) = i4dy(jdate)
                                                        +
                                                        1434  inode(lun) = inod
                                                        +
                                                        1435  msub(lun) = iupbs3(mbay(1,lun),'NSUB')
                                                        +
                                                        1436  nsub(lun) = 0
                                                        +
                                                        1437  if(iret/=11) nmsg(lun) = nmsg(lun)+1
                                                        +
                                                        1438 
                                                        +
                                                        1439  return
                                                        +
                                                        1440 end subroutine cktaba
                                                        +
                                                        1441 
                                                        +
                                                        1481 recursive subroutine mesgbc(lunin,mesgtyp,icomp)
                                                        +
                                                        1482 
                                                        +
                                                        1483  use modv_vars, only: im8b
                                                        +
                                                        1484 
                                                        +
                                                        1485  use moda_bitbuf
                                                        +
                                                        1486  use moda_mgwa
                                                        +
                                                        1487 
                                                        +
                                                        1488  implicit none
                                                        +
                                                        1489 
                                                        +
                                                        1490  integer, intent(in) :: lunin
                                                        +
                                                        1491  integer, intent(out) :: mesgtyp, icomp
                                                        +
                                                        1492  integer my_lunin, lunit, irec, ier, i, lun, il, im, iupbs01, iupbs3, idxmsg
                                                        +
                                                        1493 
                                                        +
                                                        1494  ! Check for I8 integers
                                                        +
                                                        1495 
                                                        +
                                                        1496  if(im8b) then
                                                        +
                                                        1497  im8b=.false.
                                                        +
                                                        1498  call x84(lunin,my_lunin,1)
                                                        +
                                                        1499  call mesgbc(my_lunin,mesgtyp,icomp)
                                                        +
                                                        1500  call x48(mesgtyp,mesgtyp,1)
                                                        +
                                                        1501  call x48(icomp,icomp,1)
                                                        +
                                                        1502  im8b=.true.
                                                        +
                                                        1503  return
                                                        +
                                                        1504  endif
                                                        +
                                                        1505 
                                                        +
                                                        1506  mesgtyp = -256
                                                        +
                                                        1507 
                                                        +
                                                        1508  lunit = abs(lunin)
                                                        +
                                                        1509 
                                                        +
                                                        1510  if(lunit==lunin) then
                                                        +
                                                        1511  ! Open the file, read past any DX BUFR tables and "dummy" messages, and return the first message type found
                                                        +
                                                        1512  irec = 0
                                                        +
                                                        1513  call openbf(lunit,'INX',lunit)
                                                        +
                                                        1514  do while (.true.)
                                                        +
                                                        1515  call rdmsgw(lunit,mgwa,ier)
                                                        +
                                                        1516  if(ier==-1) then
                                                        +
                                                        1517  if(irec==0) then
                                                        +
                                                        1518  mesgtyp = -256
                                                        +
                                                        1519  icomp = -3
                                                        +
                                                        1520  else
                                                        +
                                                        1521  if(mesgtyp>=0) mesgtyp = -mesgtyp
                                                        +
                                                        1522  icomp = -2
                                                        +
                                                        1523  endif
                                                        +
                                                        1524  call closbf(lunit)
                                                        +
                                                        1525  return
                                                        +
                                                        1526  endif
                                                        +
                                                        1527  irec = irec + 1
                                                        +
                                                        1528  mesgtyp = iupbs01(mgwa,'MTYP')
                                                        +
                                                        1529  if( (idxmsg(mgwa)/=1) .and. (iupbs3(mgwa,'NSUB')/=0) ) exit
                                                        +
                                                        1530  enddo
                                                        +
                                                        1531  call closbf(lunit)
                                                        +
                                                        1532  else
                                                        +
                                                        1533  ! Return message type for message currently stored in memory
                                                        +
                                                        1534  call status(lunit,lun,il,im)
                                                        +
                                                        1535  do i=1,12
                                                        +
                                                        1536  mgwa(i) = mbay(i,lun)
                                                        +
                                                        1537  enddo
                                                        +
                                                        1538  mesgtyp = iupbs01(mgwa,'MTYP')
                                                        +
                                                        1539  end if
                                                        +
                                                        1540 
                                                        +
                                                        1541  ! Set the compression switch
                                                        +
                                                        1542  icomp = iupbs3(mgwa,'ICMP')
                                                        +
                                                        1543 
                                                        +
                                                        1544  return
                                                        +
                                                        1545 end subroutine mesgbc
                                                        +
                                                        1546 
                                                        +
                                                        1570 recursive subroutine mesgbf(lunit,mesgtyp)
                                                        +
                                                        1571 
                                                        +
                                                        1572  use modv_vars, only: im8b
                                                        +
                                                        1573 
                                                        +
                                                        1574  use moda_mgwa
                                                        +
                                                        1575 
                                                        +
                                                        1576  implicit none
                                                        +
                                                        1577 
                                                        +
                                                        1578  integer, intent(in) :: lunit
                                                        +
                                                        1579  integer, intent(out) :: mesgtyp
                                                        +
                                                        1580  integer my_lunit, ier, iupbs01, idxmsg
                                                        +
                                                        1581 
                                                        +
                                                        1582  ! Check for I8 integers
                                                        +
                                                        1583 
                                                        +
                                                        1584  if(im8b) then
                                                        +
                                                        1585  im8b=.false.
                                                        +
                                                        1586  call x84(lunit,my_lunit,1)
                                                        +
                                                        1587  call mesgbf(my_lunit,mesgtyp)
                                                        +
                                                        1588  call x48(mesgtyp,mesgtyp,1)
                                                        +
                                                        1589  im8b=.true.
                                                        +
                                                        1590  return
                                                        +
                                                        1591  endif
                                                        +
                                                        1592 
                                                        +
                                                        1593  mesgtyp = -1
                                                        +
                                                        1594 
                                                        +
                                                        1595  call openbf(lunit,'INX',lunit)
                                                        +
                                                        1596 
                                                        +
                                                        1597  do while (.true.)
                                                        +
                                                        1598  call rdmsgw(lunit,mgwa,ier)
                                                        +
                                                        1599  if(ier==0) then
                                                        +
                                                        1600  mesgtyp = iupbs01(mgwa,'MTYP')
                                                        +
                                                        1601  if(idxmsg(mgwa)/=1) exit
                                                        +
                                                        1602  endif
                                                        +
                                                        1603  enddo
                                                        +
                                                        1604 
                                                        +
                                                        1605  call closbf(lunit)
                                                        +
                                                        1606 
                                                        +
                                                        1607  return
                                                        +
                                                        1608 end subroutine mesgbf
                                                        +
                                                        subroutine bort(str)
                                                        Log an error message, then abort the application program.
                                                        Definition: borts.F90:15
                                                        +
                                                        recursive integer function iupb(mbay, nbyt, nbit)
                                                        Decode an integer value from within a specified number of bits of an integer array,...
                                                        Definition: cidecode.F90:226
                                                        +
                                                        subroutine pkb(nval, nbits, ibay, ibit)
                                                        Encode an integer value within a specified number of bits of an integer array, starting at the bit im...
                                                        Definition: ciencode.F90:140
                                                        +
                                                        subroutine rdusdx(lundx, lun)
                                                        Read and parse a file containing a user-supplied DX BUFR table in character format,...
                                                        Definition: dxtable.F90:197
                                                        +
                                                        subroutine nemtbax(lun, nemo, mtyp, msbt, inod)
                                                        Get information about a Table A descriptor from the internal DX BUFR tables.
                                                        Definition: dxtable.F90:1197
                                                        +
                                                        subroutine stntbia(n, lun, numb, nemo, celsq)
                                                        Store a new entry within internal BUFR Table A.
                                                        Definition: dxtable.F90:1560
                                                        +
                                                        subroutine dxinit(lun, ioi)
                                                        Clear out the internal arrays (in module moda_tababd) holding the DX BUFR table, then optionally init...
                                                        Definition: dxtable.F90:606
                                                        +
                                                        integer function idxmsg(mesg)
                                                        Check whether a BUFR message contains DX BUFR tables information that was generated by the NCEPLIBS-b...
                                                        Definition: dxtable.F90:1123
                                                        +
                                                        subroutine errwrt(str)
                                                        Specify a custom location for the logging of error and diagnostic messages generated by the NCEPLIBS-...
                                                        Definition: errwrt.F90:32
                                                        +
                                                        subroutine numtab(lun, idn, nemo, tab, iret)
                                                        Get information about a descriptor, based on the WMO bit-wise representation of an FXY value.
                                                        Definition: fxy.F90:357
                                                        +
                                                        character *(*) function adn30(idn, ldn)
                                                        Convert an FXY value from its WMO bit-wise representation to a character string of length 5 or 6.
                                                        Definition: fxy.F90:18
                                                        + + +
                                                        Wrap C NCEPLIBS-bufr functions so they can be called from within the Fortran part of the library.
                                                        Definition: bufrlib.F90:11
                                                        +
                                                        Declare arrays and variables used to store BUFR messages internally for multiple file IDs.
                                                        +
                                                        integer, dimension(:,:), allocatable mbay
                                                        Current BUFR message for each file ID.
                                                        +
                                                        integer, dimension(:), allocatable mbyt
                                                        Length (in bytes) of current BUFR message for each file ID.
                                                        +
                                                        Declare arrays and variables for the internal Table A mnemonic cache that is used for Section 3 decod...
                                                        +
                                                        character *8, dimension(:), allocatable cnem
                                                        Table A mnemonics.
                                                        +
                                                        integer ncnem
                                                        Number of entries in the internal Table A mnemonic cache (up to a maximum of mxcnem).
                                                        +
                                                        integer, dimension(:,:), allocatable idcach
                                                        WMO bit-wise representations of the child descriptors for the corresponding Table A mnemonic in cnem.
                                                        +
                                                        integer, dimension(:), allocatable ndc
                                                        Number of child descriptors for the corresponding Table A mnemonic in cnem.
                                                        +
                                                        Declare an array used by various subroutines and functions to hold a temporary working copy of a BUFR...
                                                        +
                                                        integer, dimension(:), allocatable mgwa
                                                        Temporary working copy of BUFR message.
                                                        +
                                                        Declare arrays used to store information about the current BUFR message that is in the process of bei...
                                                        +
                                                        integer, dimension(:), allocatable inode
                                                        Table A mnemonic for type of BUFR message.
                                                        +
                                                        integer, dimension(:), allocatable idate
                                                        Section 1 date-time of message.
                                                        +
                                                        integer, dimension(:), allocatable nmsg
                                                        Current message pointer within logical unit.
                                                        +
                                                        integer, dimension(:), allocatable msub
                                                        Total number of data subsets in message.
                                                        +
                                                        integer, dimension(:), allocatable nsub
                                                        Current subset pointer within message.
                                                        +
                                                        Declare arrays and variables used to store custom values for certain mnemonics within Sections 0 and ...
                                                        +
                                                        integer, dimension(:), allocatable ivmnem
                                                        Custom values for use within Sections 0 and 1 of all future output BUFR messages written to all Fortr...
                                                        +
                                                        integer ns01v
                                                        Number of custom values stored.
                                                        +
                                                        character *8, dimension(:), allocatable cmnem
                                                        Section 0 and 1 mnemonics corresponding to ivmnem.
                                                        +
                                                        Declare arrays used by various subroutines and functions to hold a temporary working copy of a Sectio...
                                                        +
                                                        integer, dimension(:), allocatable ids3
                                                        Temporary working copy of Section 3 descriptor list in integer form.
                                                        +
                                                        character *6, dimension(:), allocatable cds3
                                                        Temporary working copy of Section 3 descriptor list in character form.
                                                        +
                                                        Declare an array used to store a switch for each file ID, indicating whether BUFR messages read from ...
                                                        +
                                                        character *8, dimension(:), allocatable tamnem
                                                        Table A mnemonic most recently read from each file ID, if isc3 = 1 for that stream.
                                                        +
                                                        integer, dimension(:), allocatable isc3
                                                        Section 3 switch for each file ID:
                                                        +
                                                        Declare an array used to store, for each file ID from which a BUFR message is currently being read as...
                                                        +
                                                        integer, dimension(:), allocatable msgunp
                                                        Flag indicating how to unpack data subsets from BUFR message:
                                                        +
                                                        recursive subroutine openbt(lundx, mtyp)
                                                        Specify a DX BUFR table of last resort, in case subroutine cktaba() is unable to locate a DX BUFR tab...
                                                        Definition: openbt.F90:31
                                                        +
                                                        recursive subroutine closbf(lunit)
                                                        Close the connection between logical unit lunit and the NCEPLIBS-bufr software.
                                                        +
                                                        recursive subroutine openbf(lunit, io, lundx)
                                                        Connect a new file to the NCEPLIBS-bufr software for input or output operations, or initialize the li...
                                                        +
                                                        recursive subroutine status(lunit, lun, il, im)
                                                        Check whether a specified Fortran logical unit number is currently connected to the NCEPLIBS-bufr sof...
                                                        +
                                                        recursive subroutine getlens(mbay, ll, len0, len1, len2, len3, len4, len5)
                                                        Read the section lengths of a BUFR message, up to a specified point in the message.
                                                        +
                                                        subroutine rdmsgw(lunit, mesg, iret)
                                                        Read the next BUFR message from logical unit lunit as an array of integer words.
                                                        +
                                                        subroutine cktaba(lun, subset, jdate, iret)
                                                        Get the Table A mnemonic from Sections 1 and 3 of a BUFR message.
                                                        Definition: s013vals.F90:1272
                                                        +
                                                        recursive integer function iupbs01(mbay, s01mnem)
                                                        Read a specified value from within Section 0 or Section 1 of a BUFR message.
                                                        Definition: s013vals.F90:247
                                                        +
                                                        recursive subroutine datebf(lunit, mear, mmon, mday, mour, idate)
                                                        Get the Section 1 date-time from the first data message of a BUFR file, bypassing any messages at the...
                                                        Definition: s013vals.F90:937
                                                        +
                                                        recursive integer function iupvs01(lunit, s01mnem)
                                                        Read a specified value from within Section 0 or 1 of a BUFR message.
                                                        Definition: s013vals.F90:443
                                                        +
                                                        recursive subroutine pkbs1(ival, mbay, s1mnem)
                                                        Write a specified value into a specified location within Section 1 of a BUFR message,...
                                                        Definition: s013vals.F90:521
                                                        +
                                                        recursive integer function iupbs3(mbay, s3mnem)
                                                        Read a specified value from within Section 3 of a BUFR message.
                                                        Definition: s013vals.F90:349
                                                        +
                                                        recursive subroutine minimg(lunit, mini)
                                                        Write a minutes value into Section 1 of the BUFR message that was most recently opened for writing vi...
                                                        Definition: s013vals.F90:1224
                                                        +
                                                        recursive subroutine upds3(mbay, lcds3, cds3, nds3)
                                                        Read the sequence of data descriptors contained within Section 3 of a BUFR message.
                                                        Definition: s013vals.F90:829
                                                        +
                                                        recursive subroutine mesgbf(lunit, mesgtyp)
                                                        Read through a BUFR file (starting from the beginning of the file) and return the message type (from ...
                                                        Definition: s013vals.F90:1571
                                                        +
                                                        recursive subroutine gets1loc(s1mnem, iben, isbyt, iwid, iret)
                                                        Get the location of a specified value within Section 1 of a BUFR message.
                                                        Definition: s013vals.F90:48
                                                        +
                                                        recursive subroutine datelen(len)
                                                        Specify the format of Section 1 date-time values that will be output by future calls to any of the NC...
                                                        Definition: s013vals.F90:889
                                                        +
                                                        recursive subroutine dumpbf(lunit, jdate, jdump)
                                                        Read the Section 1 date-time from the first two "dummy" messages of an NCEP dump file.
                                                        Definition: s013vals.F90:1136
                                                        +
                                                        recursive subroutine mesgbc(lunin, mesgtyp, icomp)
                                                        Return the message type (from Section 1) and message compression indicator (from Section 3) of a BUFR...
                                                        Definition: s013vals.F90:1482
                                                        +
                                                        recursive subroutine pkvs01(s01mnem, ival)
                                                        Specify a value to be written into a specified location within Section 0 or Section 1 of all BUFR mes...
                                                        Definition: s013vals.F90:619
                                                        +
                                                        subroutine reads3(lun)
                                                        Read the Section 3 descriptors from the BUFR message in mbay(1,lun), then use the BUFR master tables ...
                                                        Definition: s013vals.F90:686
                                                        +
                                                        recursive integer function i4dy(idate)
                                                        Convert a date-time with a 2-digit year (YYMMDDHH) to a date-time with a 4-digit year (YYYYMMDDHH) us...
                                                        Definition: s013vals.F90:1070
                                                        +
                                                        recursive integer function igetdate(mbay, iyr, imo, idy, ihr)
                                                        Get the date-time from within Section 1 of a BUFR message.
                                                        Definition: s013vals.F90:1022
                                                        +
                                                        subroutine x48(iin4, iout8, nval)
                                                        Encode one or more 4-byte integer values as 8-byte integer values.
                                                        Definition: x4884.F90:18
                                                        +
                                                        subroutine x84(iin8, iout4, nval)
                                                        Encode one or more 8-byte integer values as 4-byte integer values.
                                                        Definition: x4884.F90:65
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/search/all_0.html b/previous_versions/v12.1.0/search/all_0.html new file mode 100644 index 000000000..1ec5b2d59 --- /dev/null +++ b/previous_versions/v12.1.0/search/all_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/all_0.js b/previous_versions/v12.1.0/search/all_0.js new file mode 100644 index 000000000..ac82bc902 --- /dev/null +++ b/previous_versions/v12.1.0/search/all_0.js @@ -0,0 +1,16 @@ +var searchData= +[ + ['adn30_0',['adn30',['../fxy_8F90.html#af1ec2f8fc15418f1238413201f3e075c',1,'fxy.F90']]], + ['adsn_1',['adsn',['../modules__vars_8F90.html#a7a129734d8b06649619e8e9ee42eca62',1,'modv_vars']]], + ['apxdx_2',['apxdx',['../apxdx_8F90.html#ae072f0fa8326c098de4e6dfe2deef450',1,'apxdx.F90']]], + ['apxdx_2ef90_3',['apxdx.F90',['../apxdx_8F90.html',1,'']]], + ['arallocc_4',['arallocc',['../arallocc_8c.html#a98efd59b32b1d2ed2c060d2564824e28',1,'arallocc(void): arallocc.c'],['../bufrlib_8h.html#a98efd59b32b1d2ed2c060d2564824e28',1,'arallocc(void): arallocc.c']]], + ['arallocc_2ec_5',['arallocc.c',['../arallocc_8c.html',1,'']]], + ['arallocc_5fc_6',['arallocc_c',['../interfacebufrlib_1_1arallocc__c.html#a59657ce8014f439d0bdd18713ee7788d',1,'bufrlib::arallocc_c::arallocc_c()'],['../interfacebufrlib_1_1arallocc__c.html',1,'bufrlib::arallocc_c']]], + ['arallocf_7',['arallocf',['../arallocf_8F90.html#a2b64630033a9306be25da1f6b28d913f',1,'arallocf.F90']]], + ['arallocf_2ef90_8',['arallocf.F90',['../arallocf_8F90.html',1,'']]], + ['ardllocc_9',['ardllocc',['../arallocc_8c.html#ac283516a1391fee0635b01beffdad7cb',1,'ardllocc(void): arallocc.c'],['../bufrlib_8h.html#ac283516a1391fee0635b01beffdad7cb',1,'ardllocc(void): arallocc.c']]], + ['ardllocc_5fc_10',['ardllocc_c',['../interfacebufrlib_1_1ardllocc__c.html#a3ca3c885757d7df2b1837e46443b318e',1,'bufrlib::ardllocc_c::ardllocc_c()'],['../interfacebufrlib_1_1ardllocc__c.html',1,'bufrlib::ardllocc_c']]], + ['ardllocf_11',['ardllocf',['../arallocf_8F90.html#a7b3e4d5498fedd9e94ac45b69fc04b58',1,'arallocf.F90']]], + ['atrcpt_12',['atrcpt',['../tankrcpt_8F90.html#adca31c0fc592e5bf04c10572b26c85b1',1,'tankrcpt.F90']]] +]; diff --git a/previous_versions/v12.1.0/search/all_1.html b/previous_versions/v12.1.0/search/all_1.html new file mode 100644 index 000000000..9f80e9043 --- /dev/null +++ b/previous_versions/v12.1.0/search/all_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/all_1.js b/previous_versions/v12.1.0/search/all_1.js new file mode 100644 index 000000000..816b4c7ea --- /dev/null +++ b/previous_versions/v12.1.0/search/all_1.js @@ -0,0 +1,28 @@ +var searchData= +[ + ['backbufr_13',['backbufr',['../cread_8c.html#ad5429d7ed327f515c880227bb795162b',1,'backbufr(int nfile): cread.c'],['../bufrlib_8h.html#ad5429d7ed327f515c880227bb795162b',1,'backbufr(int nfile): cread.c']]], + ['backbufr_5fc_14',['backbufr_c',['../interfacebufrlib_1_1backbufr__c.html#ad9e1b123389021319f06f8e95c34d832',1,'bufrlib::backbufr_c::backbufr_c()'],['../interfacebufrlib_1_1backbufr__c.html',1,'bufrlib::backbufr_c']]], + ['bfrini_15',['bfrini',['../misc_8F90.html#ab3f045cc170403305543e34e30b87001',1,'misc.F90']]], + ['binv_16',['binv',['../binv_8F90.html#a7633b528a2b5299a4e2aa1c6f7e6e2e5',1,'binv.F90']]], + ['binv_2ef90_17',['binv.F90',['../binv_8F90.html',1,'']]], + ['bitmaps_2ef90_18',['bitmaps.F90',['../bitmaps_8F90.html',1,'']]], + ['blocks_19',['blocks',['../blocks_8F90.html#a540b970b11e7da5147889d566c49b681',1,'blocks.F90']]], + ['blocks_2ef90_20',['blocks.F90',['../blocks_8F90.html',1,'']]], + ['bmiss_21',['bmiss',['../modules__vars_8F90.html#a745e8be4bf52246db47090996854736b',1,'modv_vars']]], + ['bort_22',['bort',['../borts_8F90.html#adc4659c5e9171f22248cf61e054ddd17',1,'borts.F90']]], + ['bort2_23',['bort2',['../borts_8F90.html#afef28b5a86909cc8999fad7d98b11f00',1,'borts.F90']]], + ['bort_5fc_24',['bort_c',['../namespacebufr__c2f__interface.html#a70b99a494d9f5ef152ec115a139b1c1f',1,'bufr_c2f_interface']]], + ['bort_5ff_25',['bort_f',['../bufrlib_8h.html#a4bd8daccf2564da21968a531b87bf447',1,'bufrlib.h']]], + ['borts_2ef90_26',['borts.F90',['../borts_8F90.html',1,'']]], + ['bufr_5fc2f_5finterface_27',['bufr_c2f_interface',['../namespacebufr__c2f__interface.html',1,'']]], + ['bufr_5fc2f_5finterface_2ef90_28',['bufr_c2f_interface.F90',['../bufr__c2f__interface_8F90.html',1,'']]], + ['bufr_5finterface_29',['bufr_interface',['../namespacebufr__interface.html',1,'']]], + ['bufr_5finterface_2ef90_30',['bufr_interface.F90',['../bufr__interface_8F90.html',1,'']]], + ['bufr_5finterface_2eh_31',['bufr_interface.h',['../bufr__interface_8h.html',1,'']]], + ['bufrlib_32',['bufrlib',['../namespacebufrlib.html',1,'']]], + ['bufrlib_2ef90_33',['bufrlib.F90',['../bufrlib_8F90.html',1,'']]], + ['bufrlib_2eh_34',['bufrlib.h',['../bufrlib_8h.html',1,'']]], + ['bvers_35',['bvers',['../misc_8F90.html#a76aaeb3402158be94f735c166f93a527',1,'misc.F90']]], + ['bvers_5fc_36',['bvers_c',['../namespacebufr__c2f__interface.html#adc050cbf79f756c7db30f7c4c6b129a0',1,'bufr_c2f_interface']]], + ['bvers_5ff_37',['bvers_f',['../bufr__interface_8h.html#ada9f732c49c87976c31f215c9c040d2b',1,'bufr_interface.h']]] +]; diff --git a/previous_versions/v12.1.0/search/all_10.html b/previous_versions/v12.1.0/search/all_10.html new file mode 100644 index 000000000..3bf11961f --- /dev/null +++ b/previous_versions/v12.1.0/search/all_10.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/all_10.js b/previous_versions/v12.1.0/search/all_10.js new file mode 100644 index 000000000..04c5b03b7 --- /dev/null +++ b/previous_versions/v12.1.0/search/all_10.js @@ -0,0 +1,42 @@ +var searchData= +[ + ['rbytes_603',['rbytes',['../crwbmg_8c.html#a6dbaed2f330cb936df41084b4d8a5aae',1,'crwbmg.c']]], + ['rcstpl_604',['rcstpl',['../readwritesb_8F90.html#abb101b31fac13895d22320a918215372',1,'readwritesb.F90']]], + ['rdbfdx_605',['rdbfdx',['../dxtable_8F90.html#aef89e4de1387c4bcdeda0a64e8c6d308',1,'dxtable.F90']]], + ['rdcmps_606',['rdcmps',['../compress_8F90.html#a1cb1b8bdef41e7ff3420a543e590fde8',1,'compress.F90']]], + ['rdmemm_607',['rdmemm',['../memmsgs_8F90.html#a379c2ad518735b00eecff6ddcf32b278',1,'memmsgs.F90']]], + ['rdmems_608',['rdmems',['../memmsgs_8F90.html#a2687d7372647fc32c4713c7e9eb6d268',1,'memmsgs.F90']]], + ['rdmgsb_609',['rdmgsb',['../readwritesb_8F90.html#ad3f468fd2fbb1a36ebfff82d32674953',1,'readwritesb.F90']]], + ['rdmsgw_610',['rdmsgw',['../readwritemg_8F90.html#ac23041847910e299fa2c89962597a312',1,'readwritemg.F90']]], + ['rdmtbb_611',['rdmtbb',['../mastertable_8F90.html#a62d8d7c9946282d7797030e67c737543',1,'mastertable.F90']]], + ['rdmtbd_612',['rdmtbd',['../mastertable_8F90.html#a2def0dba3a44cc77e6dd716ad8aa238f',1,'mastertable.F90']]], + ['rdmtbf_613',['rdmtbf',['../mastertable_8F90.html#acc76006ba6b47ca59a5343caacb12af9',1,'mastertable.F90']]], + ['rdtree_614',['rdtree',['../readwritesb_8F90.html#a1dab1c658cb8511cfd1cc6a360221da8',1,'readwritesb.F90']]], + ['rdusdx_615',['rdusdx',['../dxtable_8F90.html#a3c5a3be625c365b782f36c0cb772ae35',1,'dxtable.F90']]], + ['readbp_616',['readbp',['../readbp_8F90.html#ac55f7a6af2af963791bb395c6dcc331b',1,'readbp.F90']]], + ['readbp_2ef90_617',['readbp.F90',['../readbp_8F90.html',1,'']]], + ['readdx_618',['readdx',['../dxtable_8F90.html#adc51a45a8d628c17cd4d749733df506b',1,'dxtable.F90']]], + ['readerme_619',['readerme',['../readwritemg_8F90.html#aa2a7bf49cad422b474a24edd3a1cb232',1,'readwritemg.F90']]], + ['readlc_620',['readlc',['../readwriteval_8F90.html#aad0d9cae550b97bc950c739ff44ca6b2',1,'readwriteval.F90']]], + ['readlc_5fc_621',['readlc_c',['../namespacebufr__c2f__interface.html#acce5eddf8c8e56d5b47d45251ac75abc',1,'bufr_c2f_interface']]], + ['readlc_5ff_622',['readlc_f',['../bufr__interface_8h.html#ab9a086f1cd4cb622107c96608279eb97',1,'bufr_interface.h']]], + ['readmg_623',['readmg',['../readwritemg_8F90.html#aad947e23951efbcba54930d6f309e0a8',1,'readwritemg.F90']]], + ['readmm_624',['readmm',['../memmsgs_8F90.html#a6bbcaf22a939d766b7de35ff855531c5',1,'memmsgs.F90']]], + ['readmp_625',['readmp',['../readmp_8F90.html#a0b84a15ad24b7d8dfbef402295b8b650',1,'readmp.F90']]], + ['readmp_2ef90_626',['readmp.F90',['../readmp_8F90.html',1,'']]], + ['readns_627',['readns',['../readwritesb_8F90.html#aeb1fdb4af8ca100d3d80c52a221f1de8',1,'readwritesb.F90']]], + ['reads3_628',['reads3',['../s013vals_8F90.html#ac96e5200de4ecc84f79caa98177e60f6',1,'s013vals.F90']]], + ['readsb_629',['readsb',['../readwritesb_8F90.html#ab4b6c52feffa76d2a4d8fab6e3547f3c',1,'readwritesb.F90']]], + ['readwritemg_2ef90_630',['readwritemg.F90',['../readwritemg_8F90.html',1,'']]], + ['readwritesb_2ef90_631',['readwritesb.F90',['../readwritesb_8F90.html',1,'']]], + ['readwriteval_2ef90_632',['readwriteval.F90',['../readwriteval_8F90.html',1,'']]], + ['release_20notes_633',['Release Notes',['../md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html',1,'']]], + ['reps_634',['reps',['../modules__vars_8F90.html#a5b163d0f13c16e94bdac566d2495faf7',1,'modv_vars']]], + ['restd_635',['restd',['../bufrlib_8h.html#a9fab66c5a028abf354d075040dde317c',1,'restd(int lunb, int tddesc, int *nctddesc, int *ctddesc): restd.c'],['../restd_8c.html#ad5e16b436141e02ca2b1a8def406a1d3',1,'restd(int lun, int tddesc, int *nctddesc, int *ctddesc): restd.c']]], + ['restd_2ec_636',['restd.c',['../restd_8c.html',1,'']]], + ['restd_5fc_637',['restd_c',['../interfacebufrlib_1_1restd__c.html',1,'bufrlib::restd_c'],['../interfacebufrlib_1_1restd__c.html#a29d35bad7067374462ec58d70f489a8d',1,'bufrlib::restd_c::restd_c()']]], + ['rewnbf_638',['rewnbf',['../openclosebf_8F90.html#a56b33c6538a8c0abf1b6a31584c68494',1,'openclosebf.F90']]], + ['rsvfvm_639',['rsvfvm',['../dxtable_8F90.html#a437a4acba1f5e0b3173da0cafc101e9c',1,'dxtable.F90']]], + ['rtrcpt_640',['rtrcpt',['../tankrcpt_8F90.html#a5d6fa241d34622347252bf41b73d8610',1,'tankrcpt.F90']]], + ['rtrcptb_641',['rtrcptb',['../tankrcpt_8F90.html#a9ae992beefc572ef3ae02a330b221ffa',1,'tankrcpt.F90']]] +]; diff --git a/previous_versions/v12.1.0/search/all_11.html b/previous_versions/v12.1.0/search/all_11.html new file mode 100644 index 000000000..c9f79d289 --- /dev/null +++ b/previous_versions/v12.1.0/search/all_11.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/all_11.js b/previous_versions/v12.1.0/search/all_11.js new file mode 100644 index 000000000..9ec664af4 --- /dev/null +++ b/previous_versions/v12.1.0/search/all_11.js @@ -0,0 +1,49 @@ +var searchData= +[ + ['s013vals_2ef90_642',['s013vals.F90',['../s013vals_8F90.html',1,'']]], + ['satcode_643',['satcode',['../sinv_8F90.html#a4ab4fad455062f4d66f23adb61d13c7c',1,'sinv.F90']]], + ['seqsdx_644',['seqsdx',['../dxtable_8F90.html#a591d4a2752e5c69299905fb910f7fcc7',1,'dxtable.F90']]], + ['setblock_645',['setblock',['../blocks_8F90.html#a552eedeacbddeccff86792eb99dad12f',1,'blocks.F90']]], + ['setbmiss_646',['setbmiss',['../missing_8F90.html#a65fba06ac4fb69670084ee11746bdd9f',1,'missing.F90']]], + ['setim8b_647',['setim8b',['../x4884_8F90.html#a156e77d86141acd042efd97146dd18cf',1,'x4884.F90']]], + ['setvalnb_648',['setvalnb',['../readwriteval_8F90.html#ac8bbcb32a65a5acdf50e0f5d835c6ac2',1,'readwriteval.F90']]], + ['share_5ftable_5finfo_649',['share_table_info',['../namespaceshare__table__info.html',1,'']]], + ['sinv_650',['sinv',['../sinv_8F90.html#add80e304e2ffa251811ac6a19162f807',1,'sinv.F90']]], + ['sinv_2ef90_651',['sinv.F90',['../sinv_8F90.html',1,'']]], + ['sntbbe_652',['sntbbe',['../mastertable_8F90.html#a4bc18eda6239cb2cd797dc63e12060d6',1,'mastertable.F90']]], + ['sntbde_653',['sntbde',['../mastertable_8F90.html#a07132e14b98ae1942199d2f9f89f1dfd',1,'mastertable.F90']]], + ['sntbestr_654',['sntbestr',['../mastertable_8F90.html#a1a035df49f8cbaee159153af0d3fb818',1,'mastertable.F90']]], + ['sntbfe_655',['sntbfe',['../mastertable_8F90.html#a13fd8c1d3695fab378b46cd2a6c23d4c',1,'mastertable.F90']]], + ['sorttbf_656',['sorttbf',['../cfe_8c.html#af9bdd990bf256341aa36e1f0611132de',1,'cfe.c']]], + ['sorttbf_5fc_657',['sorttbf_c',['../interfacebufrlib_1_1sorttbf__c.html',1,'bufrlib::sorttbf_c'],['../interfacebufrlib_1_1sorttbf__c.html#a32d698730c2323056301d57bf65265cb',1,'bufrlib::sorttbf_c::sorttbf_c()']]], + ['split_5fby_5fsubset_658',['split_by_subset',['../split__by__subset_8F90.html#ae5d45e2086aa783d8ca85e2fd47c8118',1,'split_by_subset.F90']]], + ['split_5fby_5fsubset_2ef90_659',['split_by_subset.F90',['../split__by__subset_8F90.html',1,'']]], + ['srchtbf_660',['srchtbf',['../cfe_8c.html#aba549e6acf16abcbe89193cb72d94287',1,'cfe.c']]], + ['srchtbf_5fc_661',['srchtbf_c',['../interfacebufrlib_1_1srchtbf__c.html',1,'bufrlib::srchtbf_c'],['../interfacebufrlib_1_1srchtbf__c.html#a81ef463e26669eaf234956ffd027b3dc',1,'bufrlib::srchtbf_c::srchtbf_c()']]], + ['standard_2ef90_662',['standard.F90',['../standard_8F90.html',1,'']]], + ['status_663',['status',['../openclosebf_8F90.html#abceda08f9c29378d3ddadeb46e823d00',1,'openclosebf.F90']]], + ['status_5fc_664',['status_c',['../namespacebufr__c2f__interface.html#a233844a8f03de391d28d20a7bd5d8ef0',1,'bufr_c2f_interface']]], + ['status_5ff_665',['status_f',['../bufr__interface_8h.html#a8864263871383e72d19ac4a57031be7d',1,'bufr_interface.h']]], + ['stbfdx_666',['stbfdx',['../dxtable_8F90.html#ac59d8db430cbb1cbe7ced7ebc386ef4a',1,'dxtable.F90']]], + ['stdmsg_667',['stdmsg',['../standard_8F90.html#a1f7f89920afdd318ec3ff39559c42ecd',1,'standard.F90']]], + ['sth4wlc_668',['sth4wlc',['../namespacemoda__h4wlc.html#a25deca91911dc2223155e55c8b47f889',1,'moda_h4wlc']]], + ['stndrd_669',['stndrd',['../standard_8F90.html#a543c53880e96f04934213352ea77a7ab',1,'standard.F90']]], + ['stntbi_670',['stntbi',['../dxtable_8F90.html#aaa433680a14847a3fd64a6fa1b877211',1,'dxtable.F90']]], + ['stntbi_5fc_671',['stntbi_c',['../namespacebufr__c2f__interface.html#a1c04fd789a555e4a08d798172a07b2e6',1,'bufr_c2f_interface']]], + ['stntbi_5ff_672',['stntbi_f',['../bufrlib_8h.html#a6d361bdabcb605e7677b9c29cf7ba10f',1,'bufrlib.h']]], + ['stntbia_673',['stntbia',['../dxtable_8F90.html#ac0b4a9cb7d5c89dfe084698b9bb4042e',1,'dxtable.F90']]], + ['strbtm_674',['strbtm',['../bitmaps_8F90.html#a81f55f4b1f740f3ac6e3f56ee0a06dee',1,'bitmaps.F90']]], + ['strcln_675',['strcln',['../strings_8F90.html#a19c92d247281ffcad8aab45d7debb54f',1,'strings.F90']]], + ['strcpt_676',['strcpt',['../tankrcpt_8F90.html#a24ba916e2d398ca162381b0d8b3f54fe',1,'tankrcpt.F90']]], + ['string_677',['string',['../strings_8F90.html#aa3112b3661ec475fe7949d9ae5bafb40',1,'strings.F90']]], + ['strings_2ef90_678',['strings.F90',['../strings_8F90.html',1,'']]], + ['strnum_679',['strnum',['../misc_8F90.html#a93d704d3c84005bb12c261225445a99e',1,'misc.F90']]], + ['strnum_5fc_680',['strnum_c',['../namespacebufr__c2f__interface.html#af9137b87796fbc3395e596227515c4f2',1,'bufr_c2f_interface']]], + ['strnum_5ff_681',['strnum_f',['../bufrlib_8h.html#aac0f5146bfdbf7042ac39e515475ba11',1,'bufrlib.h']]], + ['strsuc_682',['strsuc',['../misc_8F90.html#ab18db8197d0e5256ff5dfd2f26304d28',1,'misc.F90']]], + ['strtbfe_683',['strtbfe',['../cfe_8c.html#adae7e8dfb5a605b8e8be2c96f3e2be76',1,'cfe.c']]], + ['strtbfe_5fc_684',['strtbfe_c',['../interfacebufrlib_1_1strtbfe__c.html',1,'bufrlib::strtbfe_c'],['../interfacebufrlib_1_1strtbfe__c.html#ae5f703fa8d04510d2cb00d0ee8a22bc5',1,'bufrlib::strtbfe_c::strtbfe_c()']]], + ['stseq_685',['stseq',['../bufrlib_8h.html#a4f4c37daea8a69385e280d60265f9d40',1,'stseq(int lun, int *irepct, int idn, char *nemo, char *cseq, int *cdesc, int ncdesc): stseq.c'],['../stseq_8c.html#a4f4c37daea8a69385e280d60265f9d40',1,'stseq(int lun, int *irepct, int idn, char *nemo, char *cseq, int *cdesc, int ncdesc): stseq.c']]], + ['stseq_2ec_686',['stseq.c',['../stseq_8c.html',1,'']]], + ['stseq_5fc_687',['stseq_c',['../interfacebufrlib_1_1stseq__c.html',1,'bufrlib::stseq_c'],['../interfacebufrlib_1_1stseq__c.html#aab86c1ca1259592cf56c72ac5f4f8870',1,'bufrlib::stseq_c::stseq_c()']]] +]; diff --git a/previous_versions/v12.1.0/search/all_12.html b/previous_versions/v12.1.0/search/all_12.html new file mode 100644 index 000000000..ab934722c --- /dev/null +++ b/previous_versions/v12.1.0/search/all_12.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/all_12.js b/previous_versions/v12.1.0/search/all_12.js new file mode 100644 index 000000000..aea362316 --- /dev/null +++ b/previous_versions/v12.1.0/search/all_12.js @@ -0,0 +1,17 @@ +var searchData= +[ + ['taba_688',['taba',['../namespacemoda__tababd.html#a21f38471f40c0eaecdf011d5b594de65',1,'moda_tababd']]], + ['tabb_689',['tabb',['../namespacemoda__tababd.html#ad3fddde254d512cae401fc3f5532fe7c',1,'moda_tababd']]], + ['tabd_690',['tabd',['../namespacemoda__tababd.html#a043c64825f8bdb44c4e6b69d2f5c253c',1,'moda_tababd']]], + ['tabent_691',['tabent',['../jumplink_8F90.html#a68d977aaaf6f7869b2048ca79723c838',1,'jumplink.F90']]], + ['tabsub_692',['tabsub',['../jumplink_8F90.html#af1d16fa71d84a333e3448d1081214d2f',1,'jumplink.F90']]], + ['tag_693',['tag',['../namespacemoda__tables.html#a5f03be0ecd3fa7e059b9c74fb67cd4e4',1,'moda_tables']]], + ['tagnrv_694',['tagnrv',['../namespacemoda__nrv203.html#a5f80cd868154c06f202e5886d40750de',1,'moda_nrv203']]], + ['tamnem_695',['tamnem',['../namespacemoda__sc3bfr.html#aa480a82940946343d0d30d8f65c27584',1,'moda_sc3bfr']]], + ['tankrcpt_2ef90_696',['tankrcpt.F90',['../tankrcpt_8F90.html',1,'']]], + ['tbldir_5ff_697',['tbldir_f',['../namespaceshare__table__info.html#ad7e71b6c16362d8d65d97662bcdd7d02',1,'share_table_info']]], + ['trybump_698',['trybump',['../readwriteval_8F90.html#a79d01683a99ab7e6a31359c00c317bd8',1,'readwriteval.F90']]], + ['ttmp_699',['ttmp',['../namespacemoda__ivttmp.html#a126e6cfde8da74741042004b33f48a9e',1,'moda_ivttmp']]], + ['typ_700',['typ',['../namespacemoda__tables.html#a4ff0c6b9328407caa52c08dd22d7525c',1,'moda_tables']]], + ['typs_701',['typs',['../modules__vars_8F90.html#a9d4bd8b03fd20102645f0a43d8867bff',1,'modv_vars']]] +]; diff --git a/previous_versions/v12.1.0/search/all_13.html b/previous_versions/v12.1.0/search/all_13.html new file mode 100644 index 000000000..51172c2f3 --- /dev/null +++ b/previous_versions/v12.1.0/search/all_13.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/all_13.js b/previous_versions/v12.1.0/search/all_13.js new file mode 100644 index 000000000..2b4bcdb5f --- /dev/null +++ b/previous_versions/v12.1.0/search/all_13.js @@ -0,0 +1,50 @@ +var searchData= +[ + ['ufbcnt_702',['ufbcnt',['../openclosebf_8F90.html#aac1b87fbbb688e4f5e2120012eaee382',1,'openclosebf.F90']]], + ['ufbcpy_703',['ufbcpy',['../copydata_8F90.html#aed892e851f07fc9bf94a2c58c809c09c',1,'copydata.F90']]], + ['ufbcup_704',['ufbcup',['../copydata_8F90.html#a6ec0c8f23e362f62f78ba314d6fa8f33',1,'copydata.F90']]], + ['ufbdmp_705',['ufbdmp',['../dumpdata_8F90.html#ad4fdbfc4ae3890133d9204a881541a1a',1,'dumpdata.F90']]], + ['ufbevn_706',['ufbevn',['../readwriteval_8F90.html#ad0c9f5c0f8e4dc0e1ebd7c685b9a5ba9',1,'readwriteval.F90']]], + ['ufbget_707',['ufbget',['../readwriteval_8F90.html#aee2899967d88055f73e4d5ad954d7b5a',1,'readwriteval.F90']]], + ['ufbin3_708',['ufbin3',['../readwriteval_8F90.html#a1ac6ef2be222bff2bab58e3f58f5d67e',1,'readwriteval.F90']]], + ['ufbint_709',['ufbint',['../readwriteval_8F90.html#a6eb38e7aa610c36787b90e50b290eea7',1,'readwriteval.F90']]], + ['ufbint_5fc_710',['ufbint_c',['../namespacebufr__c2f__interface.html#a4d3f0201945123b06c7d198065cf2f67',1,'bufr_c2f_interface']]], + ['ufbint_5ff_711',['ufbint_f',['../bufr__interface_8h.html#ab6cd4669f077cf7c939d9241614bc075',1,'bufr_interface.h']]], + ['ufbinx_712',['ufbinx',['../readwriteval_8F90.html#a1d88d30e5ee23d6d86cbfb66537b512f',1,'readwriteval.F90']]], + ['ufbmem_713',['ufbmem',['../memmsgs_8F90.html#a4959c5f16b679cf4f90b2d5dcfe74247',1,'memmsgs.F90']]], + ['ufbmex_714',['ufbmex',['../memmsgs_8F90.html#a9072ba79bf636849068780fa6467282c',1,'memmsgs.F90']]], + ['ufbmms_715',['ufbmms',['../memmsgs_8F90.html#af0432ae9b24903a84c35bcdbbab9b0f6',1,'memmsgs.F90']]], + ['ufbmns_716',['ufbmns',['../memmsgs_8F90.html#ab44b6a9dd950697675861504ccb24a83',1,'memmsgs.F90']]], + ['ufbovr_717',['ufbovr',['../readwriteval_8F90.html#a62aacb5a102aaf1ee01deef68c63cdb8',1,'readwriteval.F90']]], + ['ufbpos_718',['ufbpos',['../readwritesb_8F90.html#a178ebc9cfe70d3119632799fc3db25de',1,'readwritesb.F90']]], + ['ufbqcd_719',['ufbqcd',['../cftbvs_8F90.html#aa1388284ca8a4e435989e8a6eb551935',1,'cftbvs.F90']]], + ['ufbqcp_720',['ufbqcp',['../cftbvs_8F90.html#abf6e01afd6c876d1319e25f9d591315b',1,'cftbvs.F90']]], + ['ufbrep_721',['ufbrep',['../readwriteval_8F90.html#af46dec3ef4cc6f467323b40eb14a4024',1,'readwriteval.F90']]], + ['ufbrep_5fc_722',['ufbrep_c',['../namespacebufr__c2f__interface.html#a57a1b4956a89ed60a934a02d4140eb93',1,'bufr_c2f_interface']]], + ['ufbrep_5ff_723',['ufbrep_f',['../bufr__interface_8h.html#a14f7b7994cfecdfa6481cbfd39aed3ce',1,'bufr_interface.h']]], + ['ufbrms_724',['ufbrms',['../memmsgs_8F90.html#ae3e462b1a3f2d5af01807bdcded6a745',1,'memmsgs.F90']]], + ['ufbrp_725',['ufbrp',['../readwriteval_8F90.html#a3f676e2267d902f8bc913a6d9d1a6aac',1,'readwriteval.F90']]], + ['ufbrw_726',['ufbrw',['../readwriteval_8F90.html#a543d19ccf3a36ded022cbbe8db66ee85',1,'readwriteval.F90']]], + ['ufbseq_727',['ufbseq',['../readwriteval_8F90.html#a4895b24addb0b3e23f5bd92fd891656e',1,'readwriteval.F90']]], + ['ufbseq_5fc_728',['ufbseq_c',['../namespacebufr__c2f__interface.html#af0b721af91340e7a261e8014455bd6ca',1,'bufr_c2f_interface']]], + ['ufbseq_5ff_729',['ufbseq_f',['../bufr__interface_8h.html#a6415176e3b48b1de4e98f12ea1baec16',1,'bufr_interface.h']]], + ['ufbsp_730',['ufbsp',['../readwriteval_8F90.html#a7281bf7fbd6efa3a9be946f7d63cffad',1,'readwriteval.F90']]], + ['ufbstp_731',['ufbstp',['../readwriteval_8F90.html#a921e4820b81e9f33e28a0d0452785a14',1,'readwriteval.F90']]], + ['ufbtab_732',['ufbtab',['../openclosebf_8F90.html#ae88bf9794ed98ec79e9de0faff0093af',1,'openclosebf.F90']]], + ['ufbtam_733',['ufbtam',['../memmsgs_8F90.html#aef5cd104e2b7ce86e852e4878c8efc9d',1,'memmsgs.F90']]], + ['ufdump_734',['ufdump',['../dumpdata_8F90.html#a20fa33f6e0fcb0816c4b070c73362539',1,'dumpdata.F90']]], + ['unit_5fstr_5flen_735',['UNIT_STR_LEN',['../bufrlib_8h.html#a9043f4f41d0f9e6a276f936a03416f69',1,'bufrlib.h']]], + ['up8_736',['up8',['../cidecode_8F90.html#a9934a3d9c66ea78c7c132066798583f9',1,'cidecode.F90']]], + ['upb_737',['upb',['../cidecode_8F90.html#a07dda20577f7480095dff261d11241f8',1,'cidecode.F90']]], + ['upb8_738',['upb8',['../cidecode_8F90.html#a25ce428c1ae2bcb567fc2762fabf4317',1,'cidecode.F90']]], + ['upbb_739',['upbb',['../cidecode_8F90.html#a243e1ab84f5a36179c0ac05056574257',1,'cidecode.F90']]], + ['upc_740',['upc',['../cidecode_8F90.html#afef1c199ce8e69b085435b74d68cd337',1,'cidecode.F90']]], + ['upds3_741',['upds3',['../s013vals_8F90.html#a7bf4d22f9bb27412a9d041f7a5d7bca6',1,'s013vals.F90']]], + ['upftbv_742',['upftbv',['../cftbvs_8F90.html#ac7a8caa03ed8a2ac40a541762ca7e917',1,'cftbvs.F90']]], + ['ups_743',['ups',['../cidecode_8F90.html#a414b81ace5368c9bb43fdd19442ebaa5',1,'cidecode.F90']]], + ['uptdd_744',['uptdd',['../dxtable_8F90.html#aeec2544ee0e0d8587c6687cda7023e54',1,'dxtable.F90']]], + ['uptdd_5fc_745',['uptdd_c',['../namespacebufr__c2f__interface.html#aa3ea9ef5bab8e3ceb1118f0e8cafaeea',1,'bufr_c2f_interface']]], + ['uptdd_5ff_746',['uptdd_f',['../bufrlib_8h.html#af730245754e061e8dd5f7d77f0310f8b',1,'bufrlib.h']]], + ['usrtpl_747',['usrtpl',['../readwritesb_8F90.html#a470af56bdf10d0b31292b0edac067597',1,'readwritesb.F90']]], + ['utilities_748',['Utilities',['../md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_utils.html',1,'']]] +]; diff --git a/previous_versions/v12.1.0/search/all_14.html b/previous_versions/v12.1.0/search/all_14.html new file mode 100644 index 000000000..afecf5634 --- /dev/null +++ b/previous_versions/v12.1.0/search/all_14.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/all_14.js b/previous_versions/v12.1.0/search/all_14.js new file mode 100644 index 000000000..9e95b660e --- /dev/null +++ b/previous_versions/v12.1.0/search/all_14.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['val_749',['val',['../namespacemoda__usrint.html#a7ad9ef51fc135aad9fcecba2a636f486',1,'moda_usrint']]], + ['vali_750',['vali',['../namespacemoda__tables.html#a2a706219ab0edde0511570bfa32093ed',1,'moda_tables']]], + ['vers_5fstr_5flen_751',['VERS_STR_LEN',['../bufr__interface_8h.html#a016503c090a3f1ecdac526a2e8f696b0',1,'bufr_interface.h']]], + ['vtmp_752',['vtmp',['../namespacemoda__ivttmp.html#ad4937a8d8159f5b7fff9d51b59c6324b',1,'moda_ivttmp']]], + ['vutmp_753',['vutmp',['../namespacemoda__usrtmp.html#afcc556a5fac9b693f0be507fafccf973',1,'moda_usrtmp']]] +]; diff --git a/previous_versions/v12.1.0/search/all_15.html b/previous_versions/v12.1.0/search/all_15.html new file mode 100644 index 000000000..69f382b31 --- /dev/null +++ b/previous_versions/v12.1.0/search/all_15.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/all_15.js b/previous_versions/v12.1.0/search/all_15.js new file mode 100644 index 000000000..fb9e3aabc --- /dev/null +++ b/previous_versions/v12.1.0/search/all_15.js @@ -0,0 +1,14 @@ +var searchData= +[ + ['wrcmps_754',['wrcmps',['../compress_8F90.html#a6936aeb7f52ecaaa76047564005946d9',1,'compress.F90']]], + ['wrdesc_755',['wrdesc',['../restd_8c.html#ab9426972c9b597e6b7382b00416dd572',1,'restd.c']]], + ['wrdxtb_756',['wrdxtb',['../dxtable_8F90.html#a81ea6d2408950b5728790bc8f8c80261',1,'dxtable.F90']]], + ['writ1_757',['writ1',['../namespacemoda__comprx.html#a8be10a997d67944a328d256bfc60bf02',1,'moda_comprx']]], + ['writcp_758',['writcp',['../compress_8F90.html#a52810a80e6afe9d44c454fe1c81a7f81',1,'compress.F90']]], + ['writdx_759',['writdx',['../dxtable_8F90.html#ac8141d6ac66d21c3fd2be3251a6a40c3',1,'dxtable.F90']]], + ['writlc_760',['writlc',['../readwriteval_8F90.html#aecfa08f631e1af46b472c007b93b2955',1,'readwriteval.F90']]], + ['writsa_761',['writsa',['../readwritesb_8F90.html#a4b62a40d2c2860279670bf59a68e8204',1,'readwritesb.F90']]], + ['writsb_762',['writsb',['../readwritesb_8F90.html#aa2218d1cd25f8d558448bdc3061b3a04',1,'readwritesb.F90']]], + ['wrtree_763',['wrtree',['../readwritesb_8F90.html#a2324e7f253ba3ad6209d7ab0fce5bc0e',1,'readwritesb.F90']]], + ['wtstat_764',['wtstat',['../openclosebf_8F90.html#ada4363a068f7df043d75b4519c55142f',1,'openclosebf.F90']]] +]; diff --git a/previous_versions/v12.1.0/search/all_16.html b/previous_versions/v12.1.0/search/all_16.html new file mode 100644 index 000000000..b19867ad9 --- /dev/null +++ b/previous_versions/v12.1.0/search/all_16.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/all_16.js b/previous_versions/v12.1.0/search/all_16.js new file mode 100644 index 000000000..57c9b8b49 --- /dev/null +++ b/previous_versions/v12.1.0/search/all_16.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['x48_765',['x48',['../x4884_8F90.html#a5b19b8932da48639e6bcaeefc4d03bfb',1,'x4884.F90']]], + ['x4884_2ef90_766',['x4884.F90',['../x4884_8F90.html',1,'']]], + ['x84_767',['x84',['../x4884_8F90.html#aa1e012dbd8da45797592cc65a399d71d',1,'x4884.F90']]], + ['xbfmg_2ec_768',['xbfmg.c',['../xbfmg_8c.html',1,'']]], + ['xtab_769',['xtab',['../namespacemoda__xtab.html#ada2721216de79b6527d89323df61956d',1,'moda_xtab']]] +]; diff --git a/previous_versions/v12.1.0/search/all_2.html b/previous_versions/v12.1.0/search/all_2.html new file mode 100644 index 000000000..02cfffc2e --- /dev/null +++ b/previous_versions/v12.1.0/search/all_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/all_2.js b/previous_versions/v12.1.0/search/all_2.js new file mode 100644 index 000000000..fc9e3aa72 --- /dev/null +++ b/previous_versions/v12.1.0/search/all_2.js @@ -0,0 +1,93 @@ +var searchData= +[ + ['cadn30_38',['cadn30',['../fxy_8F90.html#a438b8634d4f1308ee086a8f323662d2c',1,'fxy.F90']]], + ['cadn30_5fc_39',['cadn30_c',['../namespacebufr__c2f__interface.html#a6a463f38336dcbedb5f125a242f69eb5',1,'bufr_c2f_interface']]], + ['cadn30_5ff_40',['cadn30_f',['../bufrlib_8h.html#a039293342a5ca4fe52a09992db5e42c9',1,'bufrlib.h']]], + ['capit_41',['capit',['../misc_8F90.html#abb1e33496bab2eb5a1c93f44173f57ea',1,'misc.F90']]], + ['catx_42',['catx',['../namespacemoda__comprs.html#a94ea2c3cfc88079d837ac29324d61937',1,'moda_comprs']]], + ['cbbw_43',['cbbw',['../namespacemoda__mstabs.html#a31164f84ab9d27493a19afee2fda502a',1,'moda_mstabs']]], + ['cbbw_5fc_44',['cbbw_c',['../mstabs_8h.html#aa0f8eb7c3a1ca9a66a0933d97a3422ab',1,'mstabs.h']]], + ['cbelem_45',['cbelem',['../namespacemoda__mstabs.html#aa842e38ba6243a4ff1ab1e56404c2cb7',1,'moda_mstabs']]], + ['cbelem_5fc_46',['cbelem_c',['../mstabs_8h.html#a19c8207a7b2c18f50438f51f066bad7b',1,'mstabs.h']]], + ['cbmnem_47',['cbmnem',['../namespacemoda__mstabs.html#a4c761088ff4243b661ec78773c07adaa',1,'moda_mstabs']]], + ['cbmnem_5fc_48',['cbmnem_c',['../mstabs_8h.html#a7c0149a5419b96753491953e92ce35b0',1,'mstabs.h']]], + ['cbscl_49',['cbscl',['../namespacemoda__mstabs.html#aab2cc4c7c57e7c7d111f49187aff44ea',1,'moda_mstabs']]], + ['cbscl_5fc_50',['cbscl_c',['../mstabs_8h.html#a49e37dddeae6e1e71da2444d40c6d232',1,'mstabs.h']]], + ['cbsref_51',['cbsref',['../namespacemoda__mstabs.html#ac34001b0c39f1c7b156214adaf3381d0',1,'moda_mstabs']]], + ['cbsref_5fc_52',['cbsref_c',['../mstabs_8h.html#a1209038da13334a450146c0caa5ae9ad',1,'mstabs.h']]], + ['cbunit_53',['cbunit',['../namespacemoda__mstabs.html#a0ccfcc43067ef6debce2218ad50abb0b',1,'moda_mstabs']]], + ['cbunit_5fc_54',['cbunit_c',['../mstabs_8h.html#a558051c0c39c5c6181019fb4231797d1',1,'mstabs.h']]], + ['ccbfl_55',['ccbfl',['../bufr__interface_8h.html#ab66668ab9633ce3b475416f6a9899802',1,'ccbfl(void): crwbmg.c'],['../crwbmg_8c.html#ab66668ab9633ce3b475416f6a9899802',1,'ccbfl(void): crwbmg.c']]], + ['ccbfl_5fc_56',['ccbfl_c',['../interfacebufr__interface_1_1ccbfl__c.html',1,'bufr_interface::ccbfl_c'],['../interfacebufr__interface_1_1ccbfl__c.html#a465bb0ca48168a8a39e63a8a6389fbe8',1,'bufr_interface::ccbfl_c::ccbfl_c()']]], + ['ccmf_57',['ccmf',['../namespacemoda__msgcmp.html#a748ff156e2c817957765b05119f74270',1,'moda_msgcmp']]], + ['cdmf_58',['cdmf',['../namespacemoda__tablef.html#a61847a8129d1a6c6909c2ea4727d67f6',1,'moda_tablef']]], + ['cdmnem_59',['cdmnem',['../namespacemoda__mstabs.html#ab2e77035e8e8a5f8e6a2f544279ab168',1,'moda_mstabs']]], + ['cdmnem_5fc_60',['cdmnem_c',['../mstabs_8h.html#a309b9730283bc44b297b44f4e32db7f1',1,'mstabs.h']]], + ['cds3_61',['cds3',['../namespacemoda__s3list.html#a2ceee9741718460b614f37fb6b976259',1,'moda_s3list']]], + ['cdseq_62',['cdseq',['../namespacemoda__mstabs.html#a37a325646f12fe6d0dd3ae3c341f20d7',1,'moda_mstabs']]], + ['cdseq_5fc_63',['cdseq_c',['../mstabs_8h.html#a3e8f3bcd901b3809309c431d2825d636',1,'mstabs.h']]], + ['ceelem_64',['ceelem',['../namespacemoda__rdmtb.html#a1152389e5fc9eadddbea89bd76abc653',1,'moda_rdmtb']]], + ['cewind_65',['cewind',['../bufrlib_8h.html#afffb1b48f2c7d82abebcf2564d47438a',1,'cewind(int nfile): cread.c'],['../cread_8c.html#afffb1b48f2c7d82abebcf2564d47438a',1,'cewind(int nfile): cread.c']]], + ['cewind_5fc_66',['cewind_c',['../interfacebufrlib_1_1cewind__c.html',1,'bufrlib::cewind_c'],['../interfacebufrlib_1_1cewind__c.html#ade24db84a56b90d1c86b15e87191155b',1,'bufrlib::cewind_c::cewind_c()']]], + ['cfe_67',['cfe',['../cfe_8c.html#ac86272345dff43f22ed1365dbc9f1e16',1,'cfe.c']]], + ['cfe_2ec_68',['cfe.c',['../cfe_8c.html',1,'']]], + ['cftbvs_2ef90_69',['cftbvs.F90',['../cftbvs_8F90.html',1,'']]], + ['chekstab_70',['chekstab',['../jumplink_8F90.html#aca151bb247903f60a7b1a76578db1ed5',1,'jumplink.F90']]], + ['chh4wlc_71',['chh4wlc',['../namespacemoda__h4wlc.html#afbc0cd7c0f91147bca16c7fd909a0d75',1,'moda_h4wlc']]], + ['cidecode_2ef90_72',['cidecode.F90',['../cidecode_8F90.html',1,'']]], + ['ciencode_2ef90_73',['ciencode.F90',['../ciencode_8F90.html',1,'']]], + ['cktaba_74',['cktaba',['../s013vals_8F90.html#a1f8f8b7d0f3b0eb6042e170c0c84c18f',1,'s013vals.F90']]], + ['closbf_75',['closbf',['../openclosebf_8F90.html#a48a49bb82348400c1ba6af00c0138ab3',1,'openclosebf.F90']]], + ['closbf_5fc_76',['closbf_c',['../namespacebufr__c2f__interface.html#a3ac93c0105f2d2e934b5fa1f6581c02d',1,'bufr_c2f_interface']]], + ['closbf_5ff_77',['closbf_f',['../bufr__interface_8h.html#a019047beca19815d95ea0a78993b7e2a',1,'bufr_interface.h']]], + ['close_5fc_78',['close_c',['../namespacebufr__c2f__interface.html#a3c7ddfd5eb36a9904e9886e2d04bfdf3',1,'bufr_c2f_interface']]], + ['close_5ff_79',['close_f',['../bufr__interface_8h.html#ab0f41346d672e0fb0311bd658b867249',1,'bufr_interface.h']]], + ['closfb_80',['closfb',['../bufrlib_8h.html#a7b13da152c5a09e0fc1c92d8eb41154b',1,'closfb(int nfile): cread.c'],['../cread_8c.html#a7b13da152c5a09e0fc1c92d8eb41154b',1,'closfb(int nfile): cread.c']]], + ['closfb_5fc_81',['closfb_c',['../interfacebufrlib_1_1closfb__c.html',1,'bufrlib::closfb_c'],['../interfacebufrlib_1_1closfb__c.html#ae18afec62d70c123a3224c75919c533f',1,'bufrlib::closfb_c::closfb_c()']]], + ['closmg_82',['closmg',['../readwritemg_8F90.html#a63b37b74d9833df9d99e3937a2fa293a',1,'readwritemg.F90']]], + ['cmdscb_83',['cmdscb',['../namespacemoda__rdmtb.html#a21983afeacfaf7e7755271343aca9055',1,'moda_rdmtb']]], + ['cmdscd_84',['cmdscd',['../namespacemoda__rdmtb.html#ab8fe0a01ea7ba06916fd450273c1c38f',1,'moda_rdmtb']]], + ['cmnem_85',['cmnem',['../namespacemoda__s01cm.html#ab7e403dca694be4ae4d4c3803e7bc4c7',1,'moda_s01cm']]], + ['cmpbqm_86',['cmpbqm',['../cmpbqm_8F90.html#a757321e44a7c476abf5e5fb85384b7da',1,'cmpbqm.F90']]], + ['cmpbqm_2ef90_87',['cmpbqm.F90',['../cmpbqm_8F90.html',1,'']]], + ['cmpia_88',['cmpia',['../stseq_8c.html#afe9ff1cb9d09192a6d0c76f58c2e3f29',1,'stseq.c']]], + ['cmpmsg_89',['cmpmsg',['../compress_8F90.html#a8d1905b269c7cd75ff1a451a0550a84e',1,'compress.F90']]], + ['cmpmsg_5ff_90',['cmpmsg_f',['../bufr__interface_8h.html#afcec73b988e42cfd8d10f734f6606128',1,'bufr_interface.h']]], + ['cmpstia1_91',['cmpstia1',['../cfe_8c.html#a7211d196317c36365a40a128875d5041',1,'cfe.c']]], + ['cmpstia2_92',['cmpstia2',['../cfe_8c.html#a54e09962aa43b61717212a2702be33c8',1,'cfe.c']]], + ['cmsgini_93',['cmsgini',['../compress_8F90.html#a3475e3a5a5079d96f47d2e49db98a1a6',1,'compress.F90']]], + ['cnem_94',['cnem',['../namespacemoda__dscach.html#a141173c549e506cd4637af33c4efdece',1,'moda_dscach']]], + ['cnved4_95',['cnved4',['../readwritemg_8F90.html#adc65969dd9c1cedbab0425827e241963',1,'readwritemg.F90']]], + ['cobfl_96',['cobfl',['../bufr__interface_8h.html#a1a79689096002f6f3c125abc59c2143d',1,'cobfl(char *bfl, char io): crwbmg.c'],['../crwbmg_8c.html#a1a79689096002f6f3c125abc59c2143d',1,'cobfl(char *bfl, char io): crwbmg.c']]], + ['cobfl_5fc_97',['cobfl_c',['../interfacebufr__interface_1_1cobfl__c.html',1,'bufr_interface::cobfl_c'],['../interfacebufr__interface_1_1cobfl__c.html#ae36eb00a741323dd644b1d59eaa2d20e',1,'bufr_interface::cobfl_c::cobfl_c()']]], + ['codflg_98',['codflg',['../mastertable_8F90.html#a4721c745ebeb6be54c825cd1f53ec107',1,'mastertable.F90']]], + ['compress_2ef90_99',['compress.F90',['../compress_8F90.html',1,'']]], + ['conwin_100',['conwin',['../jumplink_8F90.html#ac33dc42cbccbf054fa1c72b4bed5e90e',1,'jumplink.F90']]], + ['copybf_101',['copybf',['../copydata_8F90.html#a6df688983642d7845688aba3819c847e',1,'copydata.F90']]], + ['copydata_2ef90_102',['copydata.F90',['../copydata_8F90.html',1,'']]], + ['copymg_103',['copymg',['../copydata_8F90.html#aedfe2559c1f9c59ec85c11993b378e7e',1,'copydata.F90']]], + ['copysb_104',['copysb',['../copydata_8F90.html#a81eba6ff34f0a5020bf311ccf24d8efc',1,'copydata.F90']]], + ['cpbfdx_105',['cpbfdx',['../copydata_8F90.html#a352b4ac3adf31bada79d4d8672f0b800',1,'copydata.F90']]], + ['cpdxmm_106',['cpdxmm',['../memmsgs_8F90.html#a28854648f33f49aaeb3b2209e00c0ae7',1,'memmsgs.F90']]], + ['cpmstabs_107',['cpmstabs',['../cpmstabs_8c.html#ab993a0c7a1d8c4c04fb7006f6253025c',1,'cpmstabs.c']]], + ['cpmstabs_2ec_108',['cpmstabs.c',['../cpmstabs_8c.html',1,'']]], + ['cpmstabs_5fc_109',['cpmstabs_c',['../interfacebufrlib_1_1cpmstabs__c.html',1,'bufrlib::cpmstabs_c'],['../interfacebufrlib_1_1cpmstabs__c.html#a92cd23a27aa89d15a186d93a87c3973d',1,'bufrlib::cpmstabs_c::cpmstabs_c()']]], + ['cpymem_110',['cpymem',['../copydata_8F90.html#ad102179380a6543e1ec7af4c1ba1fdde',1,'copydata.F90']]], + ['cpyupd_111',['cpyupd',['../copydata_8F90.html#a9441a5be99c4a359ce4f2798037a2ea1',1,'copydata.F90']]], + ['crbmg_112',['crbmg',['../bufr__interface_8h.html#a8e937daaf4fe2e1c74c3f8754bcce048',1,'crbmg(char *bmg, int mxmb, int *nmb, int *iret): crwbmg.c'],['../crwbmg_8c.html#a8e937daaf4fe2e1c74c3f8754bcce048',1,'crbmg(char *bmg, int mxmb, int *nmb, int *iret): crwbmg.c']]], + ['crbmg_5fc_113',['crbmg_c',['../interfacebufr__interface_1_1crbmg__c.html',1,'bufr_interface::crbmg_c'],['../interfacebufr__interface_1_1crbmg__c.html#a2032b00ac9a4d3230ce8f78b127f3311',1,'bufr_interface::crbmg_c::crbmg_c()']]], + ['crdbufr_114',['crdbufr',['../bufrlib_8h.html#a8b09f32462059d646e44ea6098a08edc',1,'crdbufr(int nfile, int *bufr, int mxwrd): cread.c'],['../cread_8c.html#a8b09f32462059d646e44ea6098a08edc',1,'crdbufr(int nfile, int *bufr, int mxwrd): cread.c']]], + ['crdbufr_5fc_115',['crdbufr_c',['../interfacebufrlib_1_1crdbufr__c.html',1,'bufrlib::crdbufr_c'],['../interfacebufrlib_1_1crdbufr__c.html#a76d41777024e3548a35d948dd9a1c5b9',1,'bufrlib::crdbufr_c::crdbufr_c()']]], + ['cread_2ec_116',['cread.c',['../cread_8c.html',1,'']]], + ['cread_2eh_117',['cread.h',['../cread_8h.html',1,'']]], + ['crtag_118',['crtag',['../namespacemoda__rlccmn.html#acaa72aa1ab54d9a7a82f83e58c8aeed1',1,'moda_rlccmn']]], + ['crwbmg_2ec_119',['crwbmg.c',['../crwbmg_8c.html',1,'']]], + ['csmf_120',['csmf',['../namespacemoda__msgstd.html#a23356dfd7172ae4d2ff05d657234d6ab',1,'moda_msgstd']]], + ['cstr_121',['cstr',['../namespacemoda__comprx.html#a07c74b931e7ddbba553f8391b8e24aaf',1,'moda_comprx']]], + ['ctco_122',['ctco',['../namespacemoda__bitmaps.html#adbe38c29980443a65ff0bb0cfa1bb753',1,'moda_bitmaps']]], + ['ctrt_123',['ctrt',['../namespacemoda__tnkrcp.html#aba2ec73dacc32807332a7c1e38468f38',1,'moda_tnkrcp']]], + ['cwbmg_124',['cwbmg',['../bufr__interface_8h.html#a3ccf1d9c69d9b23a3906d3f7b5ab743d',1,'cwbmg(char *bmg, int nmb, int *iret): crwbmg.c'],['../crwbmg_8c.html#a3ccf1d9c69d9b23a3906d3f7b5ab743d',1,'cwbmg(char *bmg, int nmb, int *iret): crwbmg.c']]], + ['cwbmg_5fc_125',['cwbmg_c',['../interfacebufr__interface_1_1cwbmg__c.html',1,'bufr_interface::cwbmg_c'],['../interfacebufr__interface_1_1cwbmg__c.html#a239dcd549ee24ca912e161e76619e113',1,'bufr_interface::cwbmg_c::cwbmg_c()']]], + ['cwrbufr_126',['cwrbufr',['../bufrlib_8h.html#a95bc32869561911e9ca020628802edc5',1,'cwrbufr(int nfile, int *bufr, int nwrd): cread.c'],['../cread_8c.html#a95bc32869561911e9ca020628802edc5',1,'cwrbufr(int nfile, int *bufr, int nwrd): cread.c']]], + ['cwrbufr_5fc_127',['cwrbufr_c',['../interfacebufrlib_1_1cwrbufr__c.html',1,'bufrlib::cwrbufr_c'],['../interfacebufrlib_1_1cwrbufr__c.html#a1d2dfb6006e32a86cdfb81aab4693978',1,'bufrlib::cwrbufr_c::cwrbufr_c()']]] +]; diff --git a/previous_versions/v12.1.0/search/all_3.html b/previous_versions/v12.1.0/search/all_3.html new file mode 100644 index 000000000..39767b85b --- /dev/null +++ b/previous_versions/v12.1.0/search/all_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/all_3.js b/previous_versions/v12.1.0/search/all_3.js new file mode 100644 index 000000000..03daf14ab --- /dev/null +++ b/previous_versions/v12.1.0/search/all_3.js @@ -0,0 +1,20 @@ +var searchData= +[ + ['datebf_128',['datebf',['../s013vals_8F90.html#a311f8836440703db774ee651425337b4',1,'s013vals.F90']]], + ['datelen_129',['datelen',['../s013vals_8F90.html#aadd84c217cf5fab0d94564da3f377ebe',1,'s013vals.F90']]], + ['debufr_2ec_130',['debufr.c',['../debufr_8c.html',1,'']]], + ['debufr_2ef90_131',['debufr.F90',['../debufr_8F90.html',1,'']]], + ['delete_5ftable_5fdata_5fc_132',['delete_table_data_c',['../namespacebufr__c2f__interface.html#ab653ca4701372fddd02deddbd1b8d88e',1,'bufr_c2f_interface']]], + ['delete_5ftable_5fdata_5ff_133',['delete_table_data_f',['../bufr__interface_8h.html#ad6cb83d29d8f619e380f8a098b2c6426',1,'bufr_interface.h']]], + ['dlloctbf_134',['dlloctbf',['../cfe_8c.html#a1242c4d43753a37cdb9abfb3f01e5583',1,'cfe.c']]], + ['dlloctbf_5fc_135',['dlloctbf_c',['../interfacebufr__interface_1_1dlloctbf__c.html',1,'bufr_interface::dlloctbf_c'],['../interfacebufr__interface_1_1dlloctbf__c.html#a1391c5c6cddcc5daba0327f8a1b563e6',1,'bufr_interface::dlloctbf_c::dlloctbf_c()']]], + ['drfini_136',['drfini',['../readwriteval_8F90.html#a8a84d615371869d93f16c8617575dee2',1,'readwriteval.F90']]], + ['drstpl_137',['drstpl',['../jumplink_8F90.html#a1f74d80135fda2ac50f57d99645d2853',1,'jumplink.F90']]], + ['dumpbf_138',['dumpbf',['../s013vals_8F90.html#ac2e40c9d462d2855dd693d9498f55342',1,'s013vals.F90']]], + ['dumpdata_2ef90_139',['dumpdata.F90',['../dumpdata_8F90.html',1,'']]], + ['dx_20bufr_20tables_140',['DX BUFR Tables',['../md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_dx_tables.html',1,'']]], + ['dxdump_141',['dxdump',['../dumpdata_8F90.html#ac693ae3d5af0a71505d5f9305c86fdb8',1,'dumpdata.F90']]], + ['dxinit_142',['dxinit',['../dxtable_8F90.html#ae1a2a7cf7f60579fa9e9399a25f4930b',1,'dxtable.F90']]], + ['dxmini_143',['dxmini',['../dxtable_8F90.html#a30167b1b9b52074ad5db11d45665d551',1,'dxtable.F90']]], + ['dxtable_2ef90_144',['dxtable.F90',['../dxtable_8F90.html',1,'']]] +]; diff --git a/previous_versions/v12.1.0/search/all_4.html b/previous_versions/v12.1.0/search/all_4.html new file mode 100644 index 000000000..fc40463c8 --- /dev/null +++ b/previous_versions/v12.1.0/search/all_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/all_4.js b/previous_versions/v12.1.0/search/all_4.js new file mode 100644 index 000000000..39766e6b4 --- /dev/null +++ b/previous_versions/v12.1.0/search/all_4.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['elemdx_145',['elemdx',['../dxtable_8F90.html#a0669d7561ae99961babcdb2022073052',1,'dxtable.F90']]], + ['elemdx_5fc_146',['elemdx_c',['../namespacebufr__c2f__interface.html#a9f5656efe692227be66cfc8e50e24241',1,'bufr_c2f_interface']]], + ['elemdx_5ff_147',['elemdx_f',['../bufrlib_8h.html#a39fc8b2494bb5f754c2d800c4b5a2f1c',1,'bufrlib.h']]], + ['errwrt_148',['errwrt',['../errwrt_8F90.html#a9c4c22af6c77235db8ddd7f41594f543',1,'errwrt.F90']]], + ['errwrt_2ef90_149',['errwrt.F90',['../errwrt_8F90.html',1,'']]], + ['exitbufr_150',['exitbufr',['../arallocf_8F90.html#a355f094d616febcea2820cf547cbff8e',1,'arallocf.F90']]], + ['exitbufr_5fc_151',['exitbufr_c',['../namespacebufr__c2f__interface.html#a5fc80078fb40ff91f250dbb9edb247ab',1,'bufr_c2f_interface']]], + ['exitbufr_5ff_152',['exitbufr_f',['../bufr__interface_8h.html#ac29807d9e7404a4602d03a04a9d4f2a6',1,'bufr_interface.h']]] +]; diff --git a/previous_versions/v12.1.0/search/all_5.html b/previous_versions/v12.1.0/search/all_5.html new file mode 100644 index 000000000..9dd9344b0 --- /dev/null +++ b/previous_versions/v12.1.0/search/all_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/all_5.js b/previous_versions/v12.1.0/search/all_5.js new file mode 100644 index 000000000..ec4476269 --- /dev/null +++ b/previous_versions/v12.1.0/search/all_5.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['fdebufr_5fc_153',['fdebufr_c',['../debufr_8F90.html#abd70421a18d899bec6fbdade1262dd0b',1,'debufr.F90']]], + ['fdebufr_5ff_154',['fdebufr_f',['../debufr_8c.html#a834922eb8174316cd235a552c2456279',1,'debufr.c']]], + ['flush_155',['flush',['../namespacemoda__comprx.html#a47438a5eff5e61065fce0dc3df1694a7',1,'moda_comprx']]], + ['fortran_5fclose_156',['fortran_close',['../openclosebf_8F90.html#aa585324fae3ecf559d6f39507dde6715',1,'openclosebf.F90']]], + ['fortran_5fopen_157',['fortran_open',['../openclosebf_8F90.html#a80df0d62e629b094edd2b3682a7d9e3a',1,'openclosebf.F90']]], + ['fstag_158',['fstag',['../jumplink_8F90.html#a1587e1818caf4b04f1afc556c5c9813b',1,'jumplink.F90']]], + ['fxy_2ef90_159',['fxy.F90',['../fxy_8F90.html',1,'']]], + ['fxy_5fstr_5flen_160',['FXY_STR_LEN',['../bufrlib_8h.html#a320fb202c17784943f8223593c9123dd',1,'bufrlib.h']]] +]; diff --git a/previous_versions/v12.1.0/search/all_6.html b/previous_versions/v12.1.0/search/all_6.html new file mode 100644 index 000000000..f1e516d75 --- /dev/null +++ b/previous_versions/v12.1.0/search/all_6.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/all_6.js b/previous_versions/v12.1.0/search/all_6.js new file mode 100644 index 000000000..d45ae297a --- /dev/null +++ b/previous_versions/v12.1.0/search/all_6.js @@ -0,0 +1,38 @@ +var searchData= +[ + ['get_5finode_5fc_161',['get_inode_c',['../namespacebufr__c2f__interface.html#ab1ced3757361e769756fee2f722de32f',1,'bufr_c2f_interface']]], + ['get_5finode_5ff_162',['get_inode_f',['../bufr__interface_8h.html#a199803bddb330f484dd49b72c75dc32d',1,'bufr_interface.h']]], + ['get_5finv_5fc_163',['get_inv_c',['../namespacebufr__c2f__interface.html#a60f38d89e2da19b4396ca8c3ec8ffff6',1,'bufr_c2f_interface']]], + ['get_5finv_5ff_164',['get_inv_f',['../bufr__interface_8h.html#a8346d95d25b2f8c7437ee96419020992',1,'bufr_interface.h']]], + ['get_5firf_5fc_165',['get_irf_c',['../namespacebufr__c2f__interface.html#af73382fa68e368c201131fd89d1be252',1,'bufr_c2f_interface']]], + ['get_5firf_5ff_166',['get_irf_f',['../bufr__interface_8h.html#aec42e6ee4877ea5fc031677127869ec5',1,'bufr_interface.h']]], + ['get_5fisc_5fc_167',['get_isc_c',['../namespacebufr__c2f__interface.html#a020cf7bcf489ecc2ade71dfa4b7db102',1,'bufr_c2f_interface']]], + ['get_5fisc_5ff_168',['get_isc_f',['../bufr__interface_8h.html#aa13a0b52198dfc0dad84648ef917a68e',1,'bufr_interface.h']]], + ['get_5fitp_5fc_169',['get_itp_c',['../namespacebufr__c2f__interface.html#adffb9acbdd17d4ef3f35baee918c733d',1,'bufr_c2f_interface']]], + ['get_5fitp_5ff_170',['get_itp_f',['../bufr__interface_8h.html#aef4319ad66d2549ac7b1dd8e1bfad1e3',1,'bufr_interface.h']]], + ['get_5fjmpb_5fc_171',['get_jmpb_c',['../namespacebufr__c2f__interface.html#aa9ab4e0c2b6bc184aa70d7a36ac6114f',1,'bufr_c2f_interface']]], + ['get_5fjmpb_5ff_172',['get_jmpb_f',['../bufr__interface_8h.html#a0770faf842091c86b98ebb982d307e3e',1,'bufr_interface.h']]], + ['get_5flink_5fc_173',['get_link_c',['../namespacebufr__c2f__interface.html#ac9e08232d75383f1f64a36b9834598c9',1,'bufr_c2f_interface']]], + ['get_5flink_5ff_174',['get_link_f',['../bufr__interface_8h.html#a8ccb25b1780ea712c9842f31eeb8ac88',1,'bufr_interface.h']]], + ['get_5fnval_5fc_175',['get_nval_c',['../namespacebufr__c2f__interface.html#a124b885560b4d31170993c7921f55503',1,'bufr_c2f_interface']]], + ['get_5fnval_5ff_176',['get_nval_f',['../bufr__interface_8h.html#a16e731ede9b1aa2a2bf7c1c3c86825e2',1,'bufr_interface.h']]], + ['get_5ftag_5fc_177',['get_tag_c',['../namespacebufr__c2f__interface.html#a6515df3d0f5fdcccd422fcac3b2f700a',1,'bufr_c2f_interface']]], + ['get_5ftag_5ff_178',['get_tag_f',['../bufr__interface_8h.html#a82130f6d92d0df75a5cbc7f834a11cca',1,'bufr_interface.h']]], + ['get_5ftyp_5fc_179',['get_typ_c',['../namespacebufr__c2f__interface.html#a86ce772b48d76dc923f9ae87dfd44102',1,'bufr_c2f_interface']]], + ['get_5ftyp_5ff_180',['get_typ_f',['../bufr__interface_8h.html#a8bb1e631318d1ae291e22ba3df7989b3',1,'bufr_interface.h']]], + ['get_5fval_5fc_181',['get_val_c',['../namespacebufr__c2f__interface.html#af7e6742b654813bd1922947049c42a54',1,'bufr_c2f_interface']]], + ['get_5fval_5ff_182',['get_val_f',['../bufr__interface_8h.html#a420c47e8f063dcea1d5dd909567d65e1',1,'bufr_interface.h']]], + ['getabdb_183',['getabdb',['../dumpdata_8F90.html#aa267dbf23e18a201eec17e2fa48238d7',1,'dumpdata.F90']]], + ['getbmiss_184',['getbmiss',['../missing_8F90.html#a2e6035695a459284e0592a2452b2f168',1,'missing.F90']]], + ['getcfmng_185',['getcfmng',['../cftbvs_8F90.html#af113e7ee7e2023cd466c2b28616cd64a',1,'cftbvs.F90']]], + ['getlens_186',['getlens',['../readwritemg_8F90.html#ab6c6c3d1925977e2c4013b3da342dc37',1,'readwritemg.F90']]], + ['getntbe_187',['getntbe',['../mastertable_8F90.html#a57b7efae38f8e79ba76fe5c8fff18f2a',1,'mastertable.F90']]], + ['gets1loc_188',['gets1loc',['../s013vals_8F90.html#a867795708832230010199b5a31f687a8',1,'s013vals.F90']]], + ['gettab_189',['gettab',['../gettab_8F90.html#ac9eda42ec8bf46baae0a4f34cd517813',1,'gettab.F90']]], + ['gettab_2ef90_190',['gettab.F90',['../gettab_8F90.html',1,'']]], + ['gettagpr_191',['gettagpr',['../jumplink_8F90.html#aff303b3e9951ce71da6c66ae5e0d76bf',1,'jumplink.F90']]], + ['gettagre_192',['gettagre',['../bitmaps_8F90.html#a867a81be072effc2a9d2de0d6031e264',1,'bitmaps.F90']]], + ['gettbh_193',['gettbh',['../mastertable_8F90.html#ab8f682eb706037e99550eeedb3e8c963',1,'mastertable.F90']]], + ['getvalnb_194',['getvalnb',['../readwriteval_8F90.html#a10cd831e6dc0a773534c5c2787da56c8',1,'readwriteval.F90']]], + ['getwin_195',['getwin',['../jumplink_8F90.html#af10a8f5f84135d80474c70f06be65b73',1,'jumplink.F90']]] +]; diff --git a/previous_versions/v12.1.0/search/all_7.html b/previous_versions/v12.1.0/search/all_7.html new file mode 100644 index 000000000..8ddbf6c8e --- /dev/null +++ b/previous_versions/v12.1.0/search/all_7.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/all_7.js b/previous_versions/v12.1.0/search/all_7.js new file mode 100644 index 000000000..b8801bc1d --- /dev/null +++ b/previous_versions/v12.1.0/search/all_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['hold4wlc_196',['hold4wlc',['../readwriteval_8F90.html#a551fbe590397eacf06bb471b738dd6a5',1,'readwriteval.F90']]] +]; diff --git a/previous_versions/v12.1.0/search/all_8.html b/previous_versions/v12.1.0/search/all_8.html new file mode 100644 index 000000000..83c55ae22 --- /dev/null +++ b/previous_versions/v12.1.0/search/all_8.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/all_8.js b/previous_versions/v12.1.0/search/all_8.js new file mode 100644 index 000000000..7aaca90d4 --- /dev/null +++ b/previous_versions/v12.1.0/search/all_8.js @@ -0,0 +1,143 @@ +var searchData= +[ + ['i4dy_197',['i4dy',['../s013vals_8F90.html#ada4930358eb16c05c65c2df068db90c1',1,'s013vals.F90']]], + ['iac_198',['iac',['../modules__vars_8F90.html#a7db5428bb409dc91391908e3f6005da0',1,'modv_vars']]], + ['iafpk_199',['iafpk',['../mstabs_8h.html#aaa7c3e504e98938c63caeb866c071c59',1,'mstabs.h']]], + ['ibay_200',['ibay',['../namespacemoda__bitbuf.html#a4910f483014af612d37ea34a1f477434',1,'moda_bitbuf']]], + ['ibfms_201',['ibfms',['../missing_8F90.html#a7dd66484c8bf4dd8d8e3791d02715e86',1,'missing.F90']]], + ['ibfms_5fc_202',['ibfms_c',['../namespacebufr__c2f__interface.html#a437d60612140092ed5cea7516b5b093c',1,'bufr_c2f_interface']]], + ['ibfms_5ff_203',['ibfms_f',['../bufr__interface_8h.html#a94577bfb670f48d514886ffa9476277c',1,'bufr_interface.h']]], + ['ibfxyn_204',['ibfxyn',['../namespacemoda__mstabs.html#af0d2b78411b01dc1aabe9baf6c946b38',1,'moda_mstabs']]], + ['ibfxyn_5fc_205',['ibfxyn_c',['../mstabs_8h.html#acdfc509abed04b3bc643a4171c419fa4',1,'mstabs.h']]], + ['ibit_206',['ibit',['../namespacemoda__bitbuf.html#a8c052fc732472f6f329209ac2db75cf9',1,'moda_bitbuf']]], + ['iblock_207',['iblock',['../modules__vars_8F90.html#a8623e746f63272cf61b014607d998345',1,'modv_vars']]], + ['ibt_208',['ibt',['../namespacemoda__tables.html#a1ff254e3c0f169340a16225a17c5a2c2',1,'moda_tables']]], + ['ibtmse_209',['ibtmse',['../namespacemoda__bitmaps.html#ab3096b8b9d713e5183ac8275305e002a',1,'moda_bitmaps']]], + ['ibtnrv_210',['ibtnrv',['../namespacemoda__nrv203.html#af1ca5281543dc4ce645d861f7f744c6d',1,'moda_nrv203']]], + ['icbfms_211',['icbfms',['../missing_8F90.html#a5f3cd824b4ddd60e635ec591d285b23f',1,'missing.F90']]], + ['icdxts_212',['icdxts',['../namespacemoda__msgmem.html#a52a37b6bcc7ed3492325f47e1f8018ab',1,'moda_msgmem']]], + ['icmpdx_213',['icmpdx',['../jumplink_8F90.html#aa8ae055da512a9259d4f248b3ccdb5e8',1,'jumplink.F90']]], + ['icopysb_214',['icopysb',['../copydata_8F90.html#a31b6d67aacae28998cab9d130d39e7a2',1,'copydata.F90']]], + ['icvidx_215',['icvidx',['../bufrlib_8h.html#ab3b665adb5a53a4c82d3c5caadbb2c38',1,'icvidx(int ii, int jj, int numjj): icvidx.c'],['../icvidx_8c.html#ab3b665adb5a53a4c82d3c5caadbb2c38',1,'icvidx(int ii, int jj, int numjj): icvidx.c']]], + ['icvidx_2ec_216',['icvidx.c',['../icvidx_8c.html',1,'']]], + ['icvidx_5fc_217',['icvidx_c',['../interfacebufrlib_1_1icvidx__c.html',1,'bufrlib::icvidx_c'],['../interfacebufrlib_1_1icvidx__c.html#a9e16a712324edc13188f650d138f0ec0',1,'bufrlib::icvidx_c::icvidx_c()']]], + ['idate_218',['idate',['../namespacemoda__msgcwd.html#a37df9d6a60023612be784db0b759da3b',1,'moda_msgcwd']]], + ['idcach_219',['idcach',['../namespacemoda__dscach.html#ab79409e1e5c6d8e2542bac564283a5ef',1,'moda_dscach']]], + ['idefxy_220',['idefxy',['../namespacemoda__mstabs.html#aeabc918978c598efc0231fc59d2bfd24',1,'moda_mstabs']]], + ['idefxy_5fc_221',['idefxy_c',['../mstabs_8h.html#a006ec50bbb9f20fad017eb980cc7afa0',1,'mstabs.h']]], + ['idfxyn_222',['idfxyn',['../namespacemoda__mstabs.html#a089cf80d582ff75c6596063d0ed8c049',1,'moda_mstabs']]], + ['idfxyn_5fc_223',['idfxyn_c',['../mstabs_8h.html#a2798d24f3443eeee2999eddf34d24c19',1,'mstabs.h']]], + ['idn30_224',['idn30',['../fxy_8F90.html#ac17b9bb050c7279594284b063390dc55',1,'fxy.F90']]], + ['idna_225',['idna',['../namespacemoda__tababd.html#a6e28d53baf8dce1d6a5c4b91546cfcca',1,'moda_tababd']]], + ['idnb_226',['idnb',['../namespacemoda__tababd.html#ab09abac79a48acf677cf36764ffe5db5',1,'moda_tababd']]], + ['idnd_227',['idnd',['../namespacemoda__tababd.html#a9e14841d9a084410d3ee7d5d08d3bf5e',1,'moda_tababd']]], + ['idnr_228',['idnr',['../modules__vars_8F90.html#a181516c96f53bedb9774c83ebfeb0a23',1,'modv_vars']]], + ['idrdm_229',['idrdm',['../namespacemoda__idrdm.html#a24e12e5c288360f0e7e6483094773db6',1,'moda_idrdm']]], + ['ids3_230',['ids3',['../namespacemoda__s3list.html#a07f44b4772abffacaba7e9be5fbb7fda',1,'moda_s3list']]], + ['idxmsg_231',['idxmsg',['../dxtable_8F90.html#aea259cd399ca3121a66475a2ea73ec65',1,'dxtable.F90']]], + ['iefxyn_232',['iefxyn',['../namespacemoda__rdmtb.html#ab26bcc9dccfa0b250af20392755adf93',1,'moda_rdmtb']]], + ['ienrv_233',['ienrv',['../namespacemoda__nrv203.html#a2784f03b6c19452c601b1377a3ed59a1',1,'moda_nrv203']]], + ['ifbget_234',['ifbget',['../readwritemg_8F90.html#abb1acb6092b6e1f49737498c1f76f0d0',1,'readwritemg.F90']]], + ['ifdxts_235',['ifdxts',['../namespacemoda__msgmem.html#a55020aca1118bb6f09f8b3d1f68a5c74',1,'moda_msgmem']]], + ['ifopbf_236',['ifopbf',['../modules__vars_8F90.html#a6007e8a5d98440d7bb16ce63bbf007e6',1,'modv_vars']]], + ['ifxy_237',['ifxy',['../fxy_8F90.html#ae3b70fcfea3c6201ad415fad4c4d375e',1,'fxy.F90']]], + ['ifxy_5fc_238',['ifxy_c',['../namespacebufr__c2f__interface.html#a081831085335c5a2d1a60040bf4a68b6',1,'bufr_c2f_interface']]], + ['ifxy_5ff_239',['ifxy_f',['../bufrlib_8h.html#a9941f6596dafba1e4361eb2f5e173f24',1,'bufrlib.h']]], + ['igetdate_240',['igetdate',['../s013vals_8F90.html#aedbe120baa1a1058174325c5e2d0e487',1,'s013vals.F90']]], + ['igetfxy_241',['igetfxy',['../fxy_8F90.html#ad6db7a4654e1d26530c1fe4bdfb29ad9',1,'fxy.F90']]], + ['igetmxby_242',['igetmxby',['../readwritemg_8F90.html#a87f1117bcbbc713c95bdca6f1bb1214c',1,'readwritemg.F90']]], + ['igetmxby_5fc_243',['igetmxby_c',['../namespacebufr__c2f__interface.html#af1cdfa1f4b3b097464a0bcd4da3ddeeb',1,'bufr_c2f_interface']]], + ['igetmxby_5ff_244',['igetmxby_f',['../bufr__interface_8h.html#a6d0a0985ac16769f70756c7a741184d4',1,'bufr_interface.h']]], + ['igetntbi_245',['igetntbi',['../dxtable_8F90.html#ad7abde76f89f036b69d944c260fbe2d4',1,'dxtable.F90']]], + ['igetntbi_5fc_246',['igetntbi_c',['../namespacebufr__c2f__interface.html#a558946e761c0246444bcd3c2fcdcb37e',1,'bufr_c2f_interface']]], + ['igetntbi_5ff_247',['igetntbi_f',['../bufrlib_8h.html#ad32acb7e25a0763d1ecfa201884bc131',1,'bufrlib.h']]], + ['igetntbl_248',['igetntbl',['../mastertable_8F90.html#a8d9fae4a86fb1a4db715788bd73071cf',1,'mastertable.F90']]], + ['igetprm_249',['igetprm',['../arallocf_8F90.html#a222fe99cf2ad84fe3166a498ef20c9ce',1,'arallocf.F90']]], + ['igetprm_5fc_250',['igetprm_c',['../namespacebufr__c2f__interface.html#a32a449b5c117d53b4b4374dd0e8bea8b',1,'bufr_c2f_interface']]], + ['igetprm_5ff_251',['igetprm_f',['../bufr__interface_8h.html#a0b06d7dc9ae1ba6147ad0f1ea3d359bb',1,'bufr_interface.h']]], + ['igetrfel_252',['igetrfel',['../bitmaps_8F90.html#a2dd600ba6cd71e06a19d88956337781b',1,'bitmaps.F90']]], + ['igetsc_253',['igetsc',['../misc_8F90.html#a5b379fcc508f3f50fa71042b8e3645af',1,'misc.F90']]], + ['igettdi_254',['igettdi',['../mastertable_8F90.html#a5ef341975ece8b54885d7518d30d7a99',1,'mastertable.F90']]], + ['igettdi_5fc_255',['igettdi_c',['../namespacebufr__c2f__interface.html#a606519361d6b6db6e153fd809387399d',1,'bufr_c2f_interface']]], + ['igettdi_5ff_256',['igettdi_f',['../bufrlib_8h.html#a0320e66350174c1e05f30babd13d52c2',1,'bufrlib.h']]], + ['im8b_257',['im8b',['../modules__vars_8F90.html#a4ff59bf9f9ee31e187bf7f8ecb61f4dd',1,'modv_vars']]], + ['imiss_258',['imiss',['../namespacemoda__comprx.html#a7a0967a79c236a16f1fa11ebb8f99b0f',1,'moda_comprx']]], + ['imrkopr_259',['imrkopr',['../bitmaps_8F90.html#ad95571bf5308d6b64163d3bcc7ea3512',1,'bitmaps.F90']]], + ['imrkopr_5fc_260',['imrkopr_c',['../namespacebufr__c2f__interface.html#aa7df2e3f4575affeab5df95d00aad75f',1,'bufr_c2f_interface']]], + ['imrkopr_5ff_261',['imrkopr_f',['../bufrlib_8h.html#a3e533930a6aa9c6fc76c89d14e54cf47',1,'bufrlib.h']]], + ['in_5farallocc_262',['IN_ARALLOCC',['../arallocc_8c.html#a99a030277b9ff412087d1e599de3f730',1,'arallocc.c']]], + ['incr_263',['incr',['../namespacemoda__comprs.html#a7e5d5589bde01337616f2527beed519f',1,'moda_comprs']]], + ['inctab_264',['inctab',['../jumplink_8F90.html#a5459f5cd4813acaa5e695c650a77eeca',1,'jumplink.F90']]], + ['inittbf_265',['inittbf',['../cfe_8c.html#aa06057bdd5b8456df9b33ec96a5cc57e',1,'cfe.c']]], + ['inittbf_5fc_266',['inittbf_c',['../interfacebufrlib_1_1inittbf__c.html',1,'bufrlib::inittbf_c'],['../interfacebufrlib_1_1inittbf__c.html#af4870e73ac56c18850786a9c6f5d6ff8',1,'bufrlib::inittbf_c::inittbf_c()']]], + ['inode_267',['inode',['../namespacemoda__msgcwd.html#a034d50224d3416c855472ead1043b1aa',1,'moda_msgcwd']]], + ['inodnrv_268',['inodnrv',['../namespacemoda__nrv203.html#ad4299c9b916b83272f07cba8d2d22d4f',1,'moda_nrv203']]], + ['inodtamc_269',['inodtamc',['../namespacemoda__bitmaps.html#a6ab1ee23535fd8b352c4f5d863a1c458',1,'moda_bitmaps']]], + ['inodtco_270',['inodtco',['../namespacemoda__bitmaps.html#a481c60320ac88f9d5b5d85d1af3a60cf',1,'moda_bitmaps']]], + ['inv_271',['inv',['../namespacemoda__usrint.html#a7e27d4bdf5a372fd7dac8ede033f969e',1,'moda_usrint']]], + ['invcon_272',['invcon',['../jumplink_8F90.html#a44e33584f368731a2373831f207a527d',1,'jumplink.F90']]], + ['invmrg_273',['invmrg',['../readwritesb_8F90.html#aa926be9632b9da3990e2591f0386ee94',1,'readwritesb.F90']]], + ['invtag_274',['invtag',['../jumplink_8F90.html#a77a6346a03867a7e65e984ee34de3d91',1,'jumplink.F90']]], + ['invwin_275',['invwin',['../jumplink_8F90.html#ab4cc1160c451fcd8709a46f32515ca3c',1,'jumplink.F90']]], + ['iok2cpy_276',['iok2cpy',['../copydata_8F90.html#a23f9925bf37d99fd855fd80cf5750ee2',1,'copydata.F90']]], + ['iokoper_277',['iokoper',['../misc_8F90.html#a1bc01a10f226d09971ab1a3b0d3734bf',1,'misc.F90']]], + ['iolun_278',['iolun',['../namespacemoda__stbfr.html#aa6ed42f02eb5933c83e7acf1422b8d99',1,'moda_stbfr']]], + ['iomsg_279',['iomsg',['../namespacemoda__stbfr.html#ac23d0e71777440374b51773ab34d31c7',1,'moda_stbfr']]], + ['iordbe_280',['iordbe',['../modules__vars_8F90.html#a2588ca33cb30f0316759c9ca7735bbb3',1,'modv_vars']]], + ['iordle_281',['iordle',['../modules__vars_8F90.html#a7376f8406ce5e5e420d4d012aea93416',1,'modv_vars']]], + ['ipdxm_282',['ipdxm',['../namespacemoda__msgmem.html#af55ccb71d40a6980f3e18dee2ea3a9db',1,'moda_msgmem']]], + ['ipfnrv_283',['ipfnrv',['../namespacemoda__nrv203.html#aadd51c4f00c0c4a12b922aace0ed04f7',1,'moda_nrv203']]], + ['ipkm_284',['ipkm',['../ciencode_8F90.html#a8e976b63f679f03590d7c3cb5b5dee59',1,'ciencode.F90']]], + ['ipks_285',['ipks',['../ciencode_8F90.html#a7501045242bc6174585e20be99d3d269',1,'ciencode.F90']]], + ['ipmsgs_286',['ipmsgs',['../namespacemoda__msgmem.html#a07ee8cbf949167ffea7e2ac9ceddd536',1,'moda_msgmem']]], + ['irbit_287',['irbit',['../namespacemoda__rlccmn.html#a90cc348c7156330efc75a45e5e5860ca',1,'moda_rlccmn']]], + ['ireadmg_288',['ireadmg',['../readwritemg_8F90.html#ae023a7cc381f488ac7669dc3e3ee8236',1,'readwritemg.F90']]], + ['ireadmg_5fc_289',['ireadmg_c',['../namespacebufr__c2f__interface.html#a31bb70cc0fe1b242d4dee68ed843391b',1,'bufr_c2f_interface']]], + ['ireadmg_5ff_290',['ireadmg_f',['../bufr__interface_8h.html#a9217e24780915325fb8fdea549015c96',1,'bufr_interface.h']]], + ['ireadmm_291',['ireadmm',['../memmsgs_8F90.html#afa09c66c60b22359e9642fa6eee8fcbb',1,'memmsgs.F90']]], + ['ireadmt_292',['ireadmt',['../mastertable_8F90.html#adde6acff18af3673cd9ef45b7ec12833',1,'mastertable.F90']]], + ['ireadns_293',['ireadns',['../readwritesb_8F90.html#a8a621b1996440ed233c796e49c8971f3',1,'readwritesb.F90']]], + ['ireadns_5fc_294',['ireadns_c',['../namespacebufr__c2f__interface.html#a89153453f5db4c56685d3b309a517da7',1,'bufr_c2f_interface']]], + ['ireadns_5ff_295',['ireadns_f',['../bufr__interface_8h.html#ac23fc2c4b19fcc7f617e17d93c59eb7f',1,'bufr_interface.h']]], + ['ireadsb_296',['ireadsb',['../readwritesb_8F90.html#aae33d6dd74331ba0a2a34ba22e8e56ab',1,'readwritesb.F90']]], + ['ireadsb_5fc_297',['ireadsb_c',['../namespacebufr__c2f__interface.html#ac349c058a2cd324d8cfe5a85ebf2acb1',1,'bufr_c2f_interface']]], + ['ireadsb_5ff_298',['ireadsb_f',['../bufr__interface_8h.html#a707ed94f1807e145055b97b19f5b3fcb',1,'bufr_interface.h']]], + ['irev_299',['irev',['../misc_8F90.html#a1cd5e68cc460b388986ba7273abdd689',1,'misc.F90']]], + ['irf_300',['irf',['../namespacemoda__tables.html#a17c04e8d3d8d361463e3f2fc0b3dd599',1,'moda_tables']]], + ['irnch_301',['irnch',['../namespacemoda__rlccmn.html#a76b8845911215f91b5a91128facb7cbd',1,'moda_rlccmn']]], + ['irp_302',['irp',['../namespacemoda__nmikrp.html#a6e3f292bfc1ab7b63b783bdf0266c812',1,'moda_nmikrp']]], + ['isc_303',['isc',['../namespacemoda__tables.html#a1c370e229cc62002283ca2462296273e',1,'moda_tables']]], + ['isc3_304',['isc3',['../namespacemoda__sc3bfr.html#ac3bbd45f25c8071e161bf7898230695a',1,'moda_sc3bfr']]], + ['iscodes_305',['iscodes',['../namespacemoda__stcode.html#a81b647a972ded879adf10cb98bfaab2e',1,'moda_stcode']]], + ['iseq_306',['iseq',['../namespacemoda__tables.html#a18e681f9bedbaadf3526641e19598901',1,'moda_tables']]], + ['isetprm_307',['isetprm',['../arallocf_8F90.html#a4a77f5d91e7900692757350632f71ff0',1,'arallocf.F90']]], + ['isetprm_5fc_308',['isetprm_c',['../namespacebufr__c2f__interface.html#ad1dcef9962b409b6448c928d0dfb9490',1,'bufr_c2f_interface']]], + ['isetprm_5ff_309',['isetprm_f',['../bufr__interface_8h.html#a0795b7713ffc4ca11e692932d807038c',1,'bufr_interface.h']]], + ['ishrdx_310',['ishrdx',['../jumplink_8F90.html#af13fb1da5f3cb8bafd2c305b6c7234db',1,'jumplink.F90']]], + ['isize_311',['isize',['../misc_8F90.html#ac720bf9bc96336f8e4bf8120852f094e',1,'misc.F90']]], + ['isnrv_312',['isnrv',['../namespacemoda__nrv203.html#a61eaac2cb0e3dd6de4d02e9986cab602',1,'moda_nrv203']]], + ['istbtm_313',['istbtm',['../namespacemoda__bitmaps.html#a5a7267a967fec712c56a680893698965',1,'moda_bitmaps']]], + ['istdesc_314',['istdesc',['../standard_8F90.html#af4f78acf5cbb9eda9a8ef03d03030aaf',1,'standard.F90']]], + ['istdesc_5fc_315',['istdesc_c',['../namespacebufr__c2f__interface.html#a7968999c9eda822f79eec9178762a2ae',1,'bufr_c2f_interface']]], + ['istdesc_5ff_316',['istdesc_f',['../bufrlib_8h.html#af98949e6ee91a0b77a8f24509401ed2d',1,'bufrlib.h']]], + ['iszbtm_317',['iszbtm',['../namespacemoda__bitmaps.html#a2648b6b58fd6cf4c983b5c4c23b29574',1,'moda_bitmaps']]], + ['itmp_318',['itmp',['../namespacemoda__ivttmp.html#af59d63e63df8f925e55a922d70a37785',1,'moda_ivttmp']]], + ['itp_319',['itp',['../namespacemoda__tables.html#ab12171885e93720ae2716b4b1ecae251',1,'moda_tables']]], + ['itrdy_320',['itrdy',['../namespacemoda__tnkrcp.html#a97f45bd4e10b6016c9ef17bbd0efc2ca',1,'moda_tnkrcp']]], + ['itrhr_321',['itrhr',['../namespacemoda__tnkrcp.html#a12d35afcaacac53905061f928377d92b',1,'moda_tnkrcp']]], + ['itrmi_322',['itrmi',['../namespacemoda__tnkrcp.html#aceb65be824d657fa109be2d9059a3a2b',1,'moda_tnkrcp']]], + ['itrmo_323',['itrmo',['../namespacemoda__tnkrcp.html#af081362974b0ae4f5be67c4bea20bae6',1,'moda_tnkrcp']]], + ['itryr_324',['itryr',['../namespacemoda__tnkrcp.html#a3f402734944f1438bc986b0d877a0bd7',1,'moda_tnkrcp']]], + ['ityp_325',['ityp',['../namespacemoda__comprx.html#a8ecc5d87d79c8c3aa778665041bcb522',1,'moda_comprx']]], + ['iupb_326',['iupb',['../cidecode_8F90.html#a73f371d0af1f65ff546e0484ee97238f',1,'cidecode.F90']]], + ['iupbs01_327',['iupbs01',['../s013vals_8F90.html#a28944a4d73587a3943964a95619cb8a2',1,'s013vals.F90']]], + ['iupbs01_5fc_328',['iupbs01_c',['../namespacebufr__c2f__interface.html#a583019d0b109031d8f8aedb4d48e2afd',1,'bufr_c2f_interface']]], + ['iupbs01_5ff_329',['iupbs01_f',['../bufr__interface_8h.html#a45c55e3a4c3b8179f7e3a89714a05d7f',1,'bufr_interface.h']]], + ['iupbs3_330',['iupbs3',['../s013vals_8F90.html#a6060b7b617646ee396097f20317e2f4d',1,'s013vals.F90']]], + ['iupm_331',['iupm',['../cidecode_8F90.html#a79f34b3a9df0eedb64115bca8c65ebaa',1,'cidecode.F90']]], + ['iupvs01_332',['iupvs01',['../s013vals_8F90.html#a3b1a6e580f306826c680ff0a71d883f8',1,'s013vals.F90']]], + ['iutmp_333',['iutmp',['../namespacemoda__usrtmp.html#a77349b5f0a6f8916850dcb253aee1f30',1,'moda_usrtmp']]], + ['ival_334',['ival',['../namespacemoda__ival.html#a354161b574c84bfd3401bc0b287335c7',1,'moda_ival']]], + ['ivmnem_335',['ivmnem',['../namespacemoda__s01cm.html#a320a25005a0063e8a0713fc66973b655',1,'moda_s01cm']]], + ['iwid_336',['iwid',['../namespacemoda__comprx.html#aa945d27bc1c5cf32ea5ba624ef289808',1,'moda_comprx']]] +]; diff --git a/previous_versions/v12.1.0/search/all_9.html b/previous_versions/v12.1.0/search/all_9.html new file mode 100644 index 000000000..1e263c134 --- /dev/null +++ b/previous_versions/v12.1.0/search/all_9.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/all_9.js b/previous_versions/v12.1.0/search/all_9.js new file mode 100644 index 000000000..579449c9d --- /dev/null +++ b/previous_versions/v12.1.0/search/all_9.js @@ -0,0 +1,18 @@ +var searchData= +[ + ['jbay_337',['jbay',['../namespacemoda__bufrsr.html#adff426f406bb1f795e94c0af6d68d856',1,'moda_bufrsr']]], + ['jbit_338',['jbit',['../namespacemoda__bufrsr.html#a80dd6be1ed3b93e6cb6fcfef1e87ee08',1,'moda_bufrsr']]], + ['jbyt_339',['jbyt',['../namespacemoda__bufrsr.html#ab23685bcce40ee0d9f71f881bdfa0d07',1,'moda_bufrsr']]], + ['jill_340',['jill',['../namespacemoda__bufrsr.html#a157bb0cb25913753748822ce3c384b06',1,'moda_bufrsr']]], + ['jimm_341',['jimm',['../namespacemoda__bufrsr.html#a225d75cc454938f8da4ed39857ff2c5c',1,'moda_bufrsr']]], + ['jlnode_342',['jlnode',['../namespacemoda__comprx.html#a7caf741d65ff0b68932fa7d207c689ba',1,'moda_comprx']]], + ['jmpb_343',['jmpb',['../namespacemoda__tables.html#a5a1f71e4a27babbf5eadd01f7b3dcdcb',1,'moda_tables']]], + ['jmsg_344',['jmsg',['../namespacemoda__bufrsr.html#a4971d723fe9c86ed7741f7cfae61f2f0',1,'moda_bufrsr']]], + ['jseq_345',['jseq',['../namespacemoda__tables.html#a0b8b25c6365505c5045ab473f54e03f6',1,'moda_tables']]], + ['jsr_346',['jsr',['../namespacemoda__bufrsr.html#a38470e8cca9ad2afce56dd577ddd5b51',1,'moda_bufrsr']]], + ['jstnum_347',['jstnum',['../misc_8F90.html#a0e7d4106a679cae0404866a8781a7651',1,'misc.F90']]], + ['jsub_348',['jsub',['../namespacemoda__bufrsr.html#a821fcf75cf865aaebdba3527d04190e0',1,'moda_bufrsr']]], + ['jump_349',['jump',['../namespacemoda__tables.html#a945fc956c1c6ba8c37bfe63c04837b36',1,'moda_tables']]], + ['jumplink_2ef90_350',['jumplink.F90',['../jumplink_8F90.html',1,'']]], + ['junn_351',['junn',['../namespacemoda__bufrsr.html#a9ec76b10297b2e9521682a1e2014370d',1,'moda_bufrsr']]] +]; diff --git a/previous_versions/v12.1.0/search/all_a.html b/previous_versions/v12.1.0/search/all_a.html new file mode 100644 index 000000000..3a6cac108 --- /dev/null +++ b/previous_versions/v12.1.0/search/all_a.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/all_a.js b/previous_versions/v12.1.0/search/all_a.js new file mode 100644 index 000000000..87896117d --- /dev/null +++ b/previous_versions/v12.1.0/search/all_a.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['kbit_352',['kbit',['../namespacemoda__comprx.html#ad9b27559a7e05f9939764fa6688d7147',1,'moda_comprx']]], + ['kbyt_353',['kbyt',['../namespacemoda__comprx.html#a243a2baa283f951be51ea9466cca35b8',1,'moda_comprx']]], + ['kmax_354',['kmax',['../namespacemoda__comprx.html#a7c3104f9c9731b91a8a105bcc5212542',1,'moda_comprx']]], + ['kmin_355',['kmin',['../namespacemoda__comprx.html#af3c2aa97661a37d85840d480e611695e',1,'moda_comprx']]], + ['kmis_356',['kmis',['../namespacemoda__comprx.html#aedf59ef218e980c24d128aa7bc8884b1',1,'moda_comprx']]], + ['knt_357',['knt',['../namespacemoda__tables.html#a28b0f02b81a535890fc64ec13fdfc35b',1,'moda_tables']]], + ['knti_358',['knti',['../namespacemoda__tables.html#af5a5b5688cbfbea4a3d5d0705172fba3',1,'moda_tables']]], + ['krp_359',['krp',['../namespacemoda__nmikrp.html#a547378be8180b17844161916eca1e876',1,'moda_nmikrp']]] +]; diff --git a/previous_versions/v12.1.0/search/all_b.html b/previous_versions/v12.1.0/search/all_b.html new file mode 100644 index 000000000..130deb4ed --- /dev/null +++ b/previous_versions/v12.1.0/search/all_b.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/all_b.js b/previous_versions/v12.1.0/search/all_b.js new file mode 100644 index 000000000..5b5fdcb41 --- /dev/null +++ b/previous_versions/v12.1.0/search/all_b.js @@ -0,0 +1,21 @@ +var searchData= +[ + ['lcmgdf_360',['lcmgdf',['../readwritesb_8F90.html#acd820000e0fca0bc8d4ca0abac7b81fd',1,'readwritesb.F90']]], + ['ldxm_361',['ldxm',['../namespacemoda__msgmem.html#a79bdd90460fa467a8e9130089d7963a5',1,'moda_msgmem']]], + ['ldxts_362',['ldxts',['../namespacemoda__msgmem.html#aa92c2a9b9faf87958775d45a00ee866f',1,'moda_msgmem']]], + ['lendat_363',['lendat',['../modules__vars_8F90.html#a9776bd15698bdb2c211a2326f0ca61dc',1,'modv_vars']]], + ['lens_364',['lens',['../modules__vars_8F90.html#a3eaffbddfb28ae6f90cff4ec580463c1',1,'modv_vars']]], + ['linbtm_365',['linbtm',['../namespacemoda__bitmaps.html#acd6cd1e5190bdc17381e81624a7e2e80',1,'moda_bitmaps']]], + ['link_366',['link',['../namespacemoda__tables.html#ac0c5953da2d8867d81acad1800fec53c',1,'moda_tables']]], + ['lmsg_367',['lmsg',['../readwritemg_8F90.html#a44d876e69afb2688f364d8bdd0ca2400',1,'readwritemg.F90']]], + ['lstjpb_368',['lstjpb',['../jumplink_8F90.html#a46ebb8c05619d2580397218ff36f4a9b',1,'jumplink.F90']]], + ['lstnod_369',['lstnod',['../namespacemoda__bitmaps.html#a352a33aaf989dcaab7646f86aa41e27d',1,'moda_bitmaps']]], + ['lstnodct_370',['lstnodct',['../namespacemoda__bitmaps.html#accaa0826b48e876c29f6bb8ebe21c83e',1,'moda_bitmaps']]], + ['lstpos_371',['lstpos',['../cread_8h.html#af3681883f8ef0fe1771afc9aeb072eb0',1,'cread.h']]], + ['ltbd_372',['ltbd',['../namespaceshare__table__info.html#a9cb558bc60eed8b777532f56fff8a08c',1,'share_table_info']]], + ['ludx_373',['ludx',['../namespaceshare__table__info.html#a88fbe3e8e14e3810e1dc3f1560d1c51f',1,'share_table_info']]], + ['luh4wlc_374',['luh4wlc',['../namespacemoda__h4wlc.html#aec0b91e9c09fffd506b27ea574b7da71',1,'moda_h4wlc']]], + ['lunc_375',['lunc',['../namespacemoda__comprx.html#ac17dd8dc0aeb695a1046a884673b1fc3',1,'moda_comprx']]], + ['luncpy_376',['luncpy',['../namespacemoda__ufbcpl.html#abf94758379c91be61fcf18f6c9dae5cf',1,'moda_ufbcpl']]], + ['lus_377',['lus',['../namespacemoda__lushr.html#a3baea9191da6d91a8590cba5181493a6',1,'moda_lushr']]] +]; diff --git a/previous_versions/v12.1.0/search/all_c.html b/previous_versions/v12.1.0/search/all_c.html new file mode 100644 index 000000000..3dd5af06d --- /dev/null +++ b/previous_versions/v12.1.0/search/all_c.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/all_c.js b/previous_versions/v12.1.0/search/all_c.js new file mode 100644 index 000000000..d65ca1080 --- /dev/null +++ b/previous_versions/v12.1.0/search/all_c.js @@ -0,0 +1,124 @@ +var searchData= +[ + ['main_378',['main',['../xbfmg_8c.html#a0ddf1224851353fc92bfbff6f499fa97',1,'main(int argc, char *argv[]): xbfmg.c'],['../debufr_8c.html#a0ddf1224851353fc92bfbff6f499fa97',1,'main(int argc, char *argv[]): debufr.c']]], + ['makestab_379',['makestab',['../jumplink_8F90.html#ad12d047119fdcdeb97ffbced0696b9fb',1,'jumplink.F90']]], + ['master_20bufr_20tables_380',['Master BUFR Tables',['../md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_master_tables.html',1,'']]], + ['mastertable_2ef90_381',['mastertable.F90',['../mastertable_8F90.html',1,'']]], + ['matx_382',['matx',['../namespacemoda__comprs.html#ac4fd15b3e268548d17edca4e1e5e5675',1,'moda_comprs']]], + ['max_5ffxy_5ftableb_383',['MAX_FXY_TABLEB',['../bufrlib_8h.html#ab25c8c36df6eb956d84010bc74002858',1,'bufrlib.h']]], + ['max_5fmeaning_5flen_384',['MAX_MEANING_LEN',['../cfe_8c.html#a655e9465dd48c1e8a068b4689748e509',1,'cfe.c']]], + ['maxbyt_385',['maxbyt',['../namespacemoda__bitbuf.html#aeb00e574adb63bf7cc809d540d5a02bc',1,'moda_bitbuf']]], + ['maxcd_386',['maxcd',['../modules__vars_8F90.html#ae8a681bd9096d6c9a2466b3c71f6ec7e',1,'modv_vars']]], + ['maxjl_387',['maxjl',['../modules__vars_8F90.html#ad2e54a398ee4fd5c87669a2883e7a37d',1,'modv_vars']]], + ['maxmem_388',['maxmem',['../modules__vars_8F90.html#ab5934a6a2f8cd3e09418203c1d3c20de',1,'modv_vars']]], + ['maxmsg_389',['maxmsg',['../modules__vars_8F90.html#a61162c966b964b3039b9180818d0e7ee',1,'modv_vars']]], + ['maxnc_390',['maxnc',['../modules__vars_8F90.html#a6c14025516cc65ace5f17fc2c4e4a9a3',1,'modv_vars']]], + ['maxout_391',['maxout',['../readwritemg_8F90.html#a1c8cdc47f69010cd4eaa20710e28f53d',1,'readwritemg.F90']]], + ['maxout_5fc_392',['maxout_c',['../namespacebufr__c2f__interface.html#aa7f319cef617f458cbaf40cdeea42d42',1,'bufr_c2f_interface']]], + ['maxout_5ff_393',['maxout_f',['../bufr__interface_8h.html#a6e947358c5c4833a4c2b30a68d0fdfa3',1,'bufr_interface.h']]], + ['maxrcr_394',['maxrcr',['../modules__vars_8F90.html#a656c690a79e927a6d824a1e8cef901e9',1,'modv_vars']]], + ['maxss_395',['maxss',['../modules__vars_8F90.html#adaae2c5fadf243ece139cc7e84688d75',1,'modv_vars']]], + ['maxtba_396',['maxtba',['../modules__vars_8F90.html#aec19b6418a5d88f574f4b196b93a5cf5',1,'modv_vars']]], + ['maxtbb_397',['maxtbb',['../modules__vars_8F90.html#a14452fc0317594bd880c9abba582ae74',1,'modv_vars']]], + ['maxtbd_398',['maxtbd',['../modules__vars_8F90.html#ab5fc7a78bb32e9a0fa7cbb1f402e7528',1,'modv_vars']]], + ['mbay_399',['mbay',['../namespacemoda__bitbuf.html#aad8a1595878ac1a9907c708067c4c050',1,'moda_bitbuf']]], + ['mbit_400',['mbit',['../namespacemoda__usrbit.html#ab5ade5e51c2620a6e6be9cad890baf7a',1,'moda_usrbit']]], + ['mbyt_401',['mbyt',['../namespacemoda__bitbuf.html#acfcd2b4391b00ae43bdb026de8573c7a',1,'moda_bitbuf']]], + ['mdx_402',['mdx',['../namespacemoda__msgmem.html#ab991cce44554fb17b1c1cd0474929a94',1,'moda_msgmem']]], + ['memmsgs_2ef90_403',['memmsgs.F90',['../memmsgs_8F90.html',1,'']]], + ['mesgbc_404',['mesgbc',['../s013vals_8F90.html#ac3a5070d2415122d7a93471e5f019247',1,'s013vals.F90']]], + ['mesgbf_405',['mesgbf',['../s013vals_8F90.html#a837bd14b4718718edb57b5f53c7bbcbe',1,'s013vals.F90']]], + ['mgwa_406',['mgwa',['../namespacemoda__mgwa.html#abe572c04d3aa498e8135d20e656d0e6a',1,'moda_mgwa']]], + ['mgwb_407',['mgwb',['../namespacemoda__mgwb.html#ac38651460e5e05dd70fe8c19fc1a9caa',1,'moda_mgwb']]], + ['min_5ffxy_5frepl_408',['MIN_FXY_REPL',['../bufrlib_8h.html#a6fa6d930bc1885cd5cf30d57dfcc6a4b',1,'bufrlib.h']]], + ['min_5ffxy_5ftabled_409',['MIN_FXY_TABLED',['../bufrlib_8h.html#a87f18b149395d0c626a9ba310c959e3c',1,'bufrlib.h']]], + ['minimg_410',['minimg',['../s013vals_8F90.html#a70447e085c4523fa53796c5317f63ae8',1,'s013vals.F90']]], + ['misc_2ef90_411',['misc.F90',['../misc_8F90.html',1,'']]], + ['missing_2ef90_412',['missing.F90',['../missing_8F90.html',1,'']]], + ['mlast_413',['mlast',['../namespacemoda__msgmem.html#a9905d8bc2ddc7681086ea0319442d0d9',1,'moda_msgmem']]], + ['moda_5fbitbuf_414',['moda_bitbuf',['../namespacemoda__bitbuf.html',1,'']]], + ['moda_5fbitmaps_415',['moda_bitmaps',['../namespacemoda__bitmaps.html',1,'']]], + ['moda_5fbufrmg_416',['moda_bufrmg',['../namespacemoda__bufrmg.html',1,'']]], + ['moda_5fbufrsr_417',['moda_bufrsr',['../namespacemoda__bufrsr.html',1,'']]], + ['moda_5fcomprs_418',['moda_comprs',['../namespacemoda__comprs.html',1,'']]], + ['moda_5fcomprx_419',['moda_comprx',['../namespacemoda__comprx.html',1,'']]], + ['moda_5fdscach_420',['moda_dscach',['../namespacemoda__dscach.html',1,'']]], + ['moda_5fh4wlc_421',['moda_h4wlc',['../namespacemoda__h4wlc.html',1,'']]], + ['moda_5fidrdm_422',['moda_idrdm',['../namespacemoda__idrdm.html',1,'']]], + ['moda_5fival_423',['moda_ival',['../namespacemoda__ival.html',1,'']]], + ['moda_5fivttmp_424',['moda_ivttmp',['../namespacemoda__ivttmp.html',1,'']]], + ['moda_5flushr_425',['moda_lushr',['../namespacemoda__lushr.html',1,'']]], + ['moda_5fmgwa_426',['moda_mgwa',['../namespacemoda__mgwa.html',1,'']]], + ['moda_5fmgwb_427',['moda_mgwb',['../namespacemoda__mgwb.html',1,'']]], + ['moda_5fmsgcmp_428',['moda_msgcmp',['../namespacemoda__msgcmp.html',1,'']]], + ['moda_5fmsgcwd_429',['moda_msgcwd',['../namespacemoda__msgcwd.html',1,'']]], + ['moda_5fmsglim_430',['moda_msglim',['../namespacemoda__msglim.html',1,'']]], + ['moda_5fmsgmem_431',['moda_msgmem',['../namespacemoda__msgmem.html',1,'']]], + ['moda_5fmsgstd_432',['moda_msgstd',['../namespacemoda__msgstd.html',1,'']]], + ['moda_5fmstabs_433',['moda_mstabs',['../namespacemoda__mstabs.html',1,'']]], + ['moda_5fnmikrp_434',['moda_nmikrp',['../namespacemoda__nmikrp.html',1,'']]], + ['moda_5fnrv203_435',['moda_nrv203',['../namespacemoda__nrv203.html',1,'']]], + ['moda_5fnulbfr_436',['moda_nulbfr',['../namespacemoda__nulbfr.html',1,'']]], + ['moda_5frdmtb_437',['moda_rdmtb',['../namespacemoda__rdmtb.html',1,'']]], + ['moda_5frlccmn_438',['moda_rlccmn',['../namespacemoda__rlccmn.html',1,'']]], + ['moda_5fs01cm_439',['moda_s01cm',['../namespacemoda__s01cm.html',1,'']]], + ['moda_5fs3list_440',['moda_s3list',['../namespacemoda__s3list.html',1,'']]], + ['moda_5fsc3bfr_441',['moda_sc3bfr',['../namespacemoda__sc3bfr.html',1,'']]], + ['moda_5fstbfr_442',['moda_stbfr',['../namespacemoda__stbfr.html',1,'']]], + ['moda_5fstcode_443',['moda_stcode',['../namespacemoda__stcode.html',1,'']]], + ['moda_5ftababd_444',['moda_tababd',['../namespacemoda__tababd.html',1,'']]], + ['moda_5ftablef_445',['moda_tablef',['../namespacemoda__tablef.html',1,'']]], + ['moda_5ftables_446',['moda_tables',['../namespacemoda__tables.html',1,'']]], + ['moda_5ftnkrcp_447',['moda_tnkrcp',['../namespacemoda__tnkrcp.html',1,'']]], + ['moda_5fufbcpl_448',['moda_ufbcpl',['../namespacemoda__ufbcpl.html',1,'']]], + ['moda_5funptyp_449',['moda_unptyp',['../namespacemoda__unptyp.html',1,'']]], + ['moda_5fusrbit_450',['moda_usrbit',['../namespacemoda__usrbit.html',1,'']]], + ['moda_5fusrint_451',['moda_usrint',['../namespacemoda__usrint.html',1,'']]], + ['moda_5fusrtmp_452',['moda_usrtmp',['../namespacemoda__usrtmp.html',1,'']]], + ['moda_5fxtab_453',['moda_xtab',['../namespacemoda__xtab.html',1,'']]], + ['modules_5farrs_2ef90_454',['modules_arrs.F90',['../modules__arrs_8F90.html',1,'']]], + ['modules_5fvars_2ef90_455',['modules_vars.F90',['../modules__vars_8F90.html',1,'']]], + ['mrginv_456',['mrginv',['../misc_8F90.html#ad2b1b1578991d75d98e005d2678bef78',1,'misc.F90']]], + ['msgfull_457',['msgfull',['../readwritemg_8F90.html#a47d4a63b5e7276a90eee0ce83237cb60',1,'readwritemg.F90']]], + ['msgini_458',['msgini',['../readwritemg_8F90.html#ae5477034329440d4127a5243305b81e4',1,'readwritemg.F90']]], + ['msglen_459',['msglen',['../namespacemoda__bufrmg.html#a2514f74da635c6ba7047ec108ce4e211',1,'moda_bufrmg']]], + ['msglim_460',['msglim',['../namespacemoda__msglim.html#abe63e3ddf9a739b073e8dd5b01460ddf',1,'moda_msglim']]], + ['msgp_461',['msgp',['../namespacemoda__msgmem.html#a030ff35af84549af17fe0b0e4315ebf2',1,'moda_msgmem']]], + ['msgs_462',['msgs',['../namespacemoda__msgmem.html#a0db33f8017f2c46947f0a5589ba98227',1,'moda_msgmem']]], + ['msgtxt_463',['msgtxt',['../namespacemoda__bufrmg.html#a67590bc418c6aeb7792572c11a6bc793',1,'moda_bufrmg']]], + ['msgunp_464',['msgunp',['../namespacemoda__unptyp.html#abc7e7be12befacea858a7f249c9425ca',1,'moda_unptyp']]], + ['msgupd_465',['msgupd',['../readwritesb_8F90.html#a237f33069932c5fae473ac718c2eae9a',1,'readwritesb.F90']]], + ['msgwrt_466',['msgwrt',['../readwritemg_8F90.html#af49a08bdf36b69217da7571dcfc90624',1,'readwritemg.F90']]], + ['mstabs_2eh_467',['mstabs.h',['../mstabs_8h.html',1,'']]], + ['msub_468',['msub',['../namespacemoda__msgcwd.html#aaf25479459e35ef12ce20eecfc632295',1,'moda_msgcwd']]], + ['mtab_469',['mtab',['../namespacemoda__tababd.html#a29788f9aef200e10d2f557c16abfaa56',1,'moda_tababd']]], + ['mtfnam_470',['mtfnam',['../mastertable_8F90.html#a3c167cbcb11e3c1ec0a9abc584e27a57',1,'mastertable.F90']]], + ['mtinfo_471',['mtinfo',['../mastertable_8F90.html#abf69490965212318f1dfee9b0bc4890c',1,'mastertable.F90']]], + ['mtinfo_5fc_472',['mtinfo_c',['../namespacebufr__c2f__interface.html#a550c1c61605eca9fa6cf04aba7612364',1,'bufr_c2f_interface']]], + ['mtinfo_5ff_473',['mtinfo_f',['../bufr__interface_8h.html#aa865d9e85dab5e85a1816ec02f94cb6e',1,'bufr_interface.h']]], + ['munit_474',['munit',['../namespacemoda__msgmem.html#a5ac2ef8f11fcf81b55a5353dbfda18cc',1,'moda_msgmem']]], + ['mvb_475',['mvb',['../copydata_8F90.html#a4ced98b23d03cd8718d81b357ee4e2c5',1,'copydata.F90']]], + ['mxbtm_476',['mxbtm',['../modules__vars_8F90.html#a9c06e9ba0f47cbeecfb1e6d1972e1e4f',1,'modv_vars']]], + ['mxbtmse_477',['mxbtmse',['../modules__vars_8F90.html#aa7b24da237033a528cb05754d5736cc6',1,'modv_vars']]], + ['mxcdv_478',['mxcdv',['../modules__vars_8F90.html#ae330052e2bcc0a81949c5ef8d6e7cc9e',1,'modv_vars']]], + ['mxcnem_479',['mxcnem',['../modules__vars_8F90.html#ad5cda585f8b55a9e6e3a81808c23630f',1,'modv_vars']]], + ['mxcsb_480',['mxcsb',['../modules__vars_8F90.html#a6780f1f07eeec5333e01ca17588f7d39',1,'modv_vars']]], + ['mxdxm_481',['mxdxm',['../namespacemoda__msgmem.html#a549e012729bbc3cb18894d34380ce5bd',1,'moda_msgmem']]], + ['mxdxts_482',['mxdxts',['../modules__vars_8F90.html#a179ebe33ab923f74ef05e2851a86d33b',1,'modv_vars']]], + ['mxdxw_483',['mxdxw',['../namespacemoda__msgmem.html#af2710ff69575fa7a323c654e7998e142',1,'moda_msgmem']]], + ['mxfnlen_484',['MXFNLEN',['../crwbmg_8c.html#adcb9ca74c59f88b5a3d6bd10c8095692',1,'crwbmg.c']]], + ['mxh4wlc_485',['mxh4wlc',['../modules__vars_8F90.html#a59f64f9f847d2171ecac822482b2f0a9',1,'modv_vars']]], + ['mxlcc_486',['mxlcc',['../modules__vars_8F90.html#a739ea87803beaa51dd172adb95af9b86',1,'modv_vars']]], + ['mxmsgl_487',['mxmsgl',['../modules__vars_8F90.html#a6062176c0f51fa9f593310f46cc14fe0',1,'modv_vars']]], + ['mxmsgld4_488',['mxmsgld4',['../modules__vars_8F90.html#a5a89be3220392c5b182d4d475d22e3e1',1,'modv_vars']]], + ['mxmtbb_489',['mxmtbb',['../modules__vars_8F90.html#ab2c78405872b159e107674c2fc2a12f7',1,'modv_vars']]], + ['mxmtbd_490',['mxmtbd',['../modules__vars_8F90.html#ae0bf7b02df4e070e72a90672e3eded90',1,'modv_vars']]], + ['mxmtbf_491',['mxmtbf',['../cfe_8c.html#ada229859d4369f2b51b268c2a3bf4ea2',1,'mxmtbf(): cfe.c'],['../modules__vars_8F90.html#a9242cd091e5ab5d3956740035f6b6207',1,'modv_vars::mxmtbf()']]], + ['mxnaf_492',['mxnaf',['../modules__vars_8F90.html#a7b92c0b0ed1fb2b80b048414fa1e54ce',1,'modv_vars']]], + ['mxnrv_493',['mxnrv',['../modules__vars_8F90.html#a009fea23b90695d1556e33a557d4b7f1',1,'modv_vars']]], + ['mxrst_494',['mxrst',['../modules__vars_8F90.html#ae2e923a33b968adc577317f6cef8f24e',1,'modv_vars']]], + ['mxs_495',['mxs',['../modules__vars_8F90.html#a695fe6ca7714604e88e1fc4d21cc839d',1,'modv_vars']]], + ['mxs01v_496',['mxs01v',['../modules__vars_8F90.html#a61b398d330ce6937423db44f080b93fd',1,'modv_vars']]], + ['mxtamc_497',['mxtamc',['../modules__vars_8F90.html#a85bed6c0b0a9aa339abd8fb7b3a136b5',1,'modv_vars']]], + ['mxtco_498',['mxtco',['../modules__vars_8F90.html#a68ea76a4751743e58280e061b43313e7',1,'modv_vars']]] +]; diff --git a/previous_versions/v12.1.0/search/all_d.html b/previous_versions/v12.1.0/search/all_d.html new file mode 100644 index 000000000..af7f2f0f5 --- /dev/null +++ b/previous_versions/v12.1.0/search/all_d.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/all_d.js b/previous_versions/v12.1.0/search/all_d.js new file mode 100644 index 000000000..41d713270 --- /dev/null +++ b/previous_versions/v12.1.0/search/all_d.js @@ -0,0 +1,70 @@ +var searchData= +[ + ['nbit_499',['nbit',['../namespacemoda__usrbit.html#a99268fc2b9168fcbbd5f8ab70e6da0b7',1,'moda_usrbit']]], + ['nbitw_500',['nbitw',['../modules__vars_8F90.html#a18a87ef02ab98d62e7fa272b20acd77a',1,'modv_vars']]], + ['nbtm_501',['nbtm',['../namespacemoda__bitmaps.html#a6530eb70f0a9131f659c61a74652c93d',1,'moda_bitmaps']]], + ['nbtmse_502',['nbtmse',['../namespacemoda__bitmaps.html#ad03b1bbbb4eb8366a77af6da12f0793c',1,'moda_bitmaps']]], + ['nbytw_503',['nbytw',['../modules__vars_8F90.html#a2b80f794fded7bf159ff58796ec31a7c',1,'modv_vars']]], + ['ncnem_504',['ncnem',['../namespacemoda__dscach.html#aa768890377f016eaae82cb56404ecdc6',1,'moda_dscach']]], + ['ncol_505',['ncol',['../namespacemoda__comprs.html#a0bab4a779995493580b46f231516e133',1,'moda_comprs']]], + ['ndc_506',['ndc',['../namespacemoda__dscach.html#abbb9e570ae869b4abdf6e18c14475485',1,'moda_dscach']]], + ['ndelem_507',['ndelem',['../namespacemoda__mstabs.html#a5f77a3f33df1fc46f007160428b674d1',1,'moda_mstabs']]], + ['ndelem_5fc_508',['ndelem_c',['../mstabs_8h.html#ad9af08676809848df12a73ece2a37182',1,'mstabs.h']]], + ['ndxm_509',['ndxm',['../namespacemoda__msgmem.html#a6e754cd1cdefe0c8c93ab497fcb33637',1,'moda_msgmem']]], + ['ndxts_510',['ndxts',['../namespacemoda__msgmem.html#ab1873371ca3b5f3e44a5d19ebf30af23',1,'moda_msgmem']]], + ['nem_511',['nem',['../namespacemoda__nmikrp.html#a94ad19bfc71bbfcd6f1caf4a744d5eb3',1,'moda_nmikrp']]], + ['nemdefs_512',['nemdefs',['../dxtable_8F90.html#ad6352a1c1fdec4ba0adb0173781e4542',1,'dxtable.F90']]], + ['nemdefs_5fc_513',['nemdefs_c',['../namespacebufr__c2f__interface.html#a7ee256962a48d99336f255aad04abf48',1,'bufr_c2f_interface']]], + ['nemdefs_5ff_514',['nemdefs_f',['../bufr__interface_8h.html#aa913369b92645e3d69658c0ef902f29c',1,'bufr_interface.h']]], + ['nemo_5fstr_5flen_515',['NEMO_STR_LEN',['../bufrlib_8h.html#aaf134edc1efd697331c03effd4d056e0',1,'bufrlib.h']]], + ['nemock_516',['nemock',['../mastertable_8F90.html#a4bb75d7258bc23294546f956cfbe2d36',1,'mastertable.F90']]], + ['nemspecs_517',['nemspecs',['../jumplink_8F90.html#a6ec2d1015cdc1315eb384ea92223e620',1,'jumplink.F90']]], + ['nemspecs_5fc_518',['nemspecs_c',['../namespacebufr__c2f__interface.html#a5b9e80deaefcabb2b18ecbf55cbc2c55',1,'bufr_c2f_interface']]], + ['nemspecs_5ff_519',['nemspecs_f',['../bufr__interface_8h.html#a85a42b5881da22246e5bb302c883777f',1,'bufr_interface.h']]], + ['nemtab_520',['nemtab',['../fxy_8F90.html#a01efa3bb871b451a8d53bd6d841bb297',1,'fxy.F90']]], + ['nemtab_5fc_521',['nemtab_c',['../namespacebufr__c2f__interface.html#ac07a6f6ec1555c09041853d4c81081e9',1,'bufr_c2f_interface']]], + ['nemtab_5ff_522',['nemtab_f',['../bufr__interface_8h.html#ad75bcdd935567fd79e3385c94b78284c',1,'bufr_interface.h']]], + ['nemtba_523',['nemtba',['../dxtable_8F90.html#a36f644b9119ebf87f957bfe023e5cc45',1,'dxtable.F90']]], + ['nemtbax_524',['nemtbax',['../dxtable_8F90.html#a8ea33660d62d74dee92cf7bf9541c1cd',1,'dxtable.F90']]], + ['nemtbb_525',['nemtbb',['../dxtable_8F90.html#a21fa5817ff8a6f471dca950fbaa693ba',1,'dxtable.F90']]], + ['nemtbb_5fc_526',['nemtbb_c',['../namespacebufr__c2f__interface.html#ae352def57bda0cd117486a03a8594cf2',1,'bufr_c2f_interface']]], + ['nemtbb_5ff_527',['nemtbb_f',['../bufr__interface_8h.html#ac9a3eafcb7e3802e5c8a39de95b1726b',1,'bufr_interface.h']]], + ['nemtbd_528',['nemtbd',['../dxtable_8F90.html#aa0b7269b3a7df645e6917bfd4ba72b32',1,'dxtable.F90']]], + ['nenubd_529',['nenubd',['../dxtable_8F90.html#ae672eaf27f17dc904b894f347d89c233',1,'dxtable.F90']]], + ['nevn_530',['nevn',['../readwriteval_8F90.html#a2017ce90611078ae96c6bc12da4e8e02',1,'readwriteval.F90']]], + ['newwin_531',['newwin',['../jumplink_8F90.html#ab082ab8ef32893928cb10a2876d73af0',1,'jumplink.F90']]], + ['nfiles_532',['nfiles',['../modules__vars_8F90.html#aa9124552f5c640e47f8decc9499688d8',1,'modv_vars']]], + ['nh4wlc_533',['nh4wlc',['../namespacemoda__h4wlc.html#a013b7b1f0e72002222c0ee2ae5a3dcac',1,'moda_h4wlc']]], + ['nmsg_534',['nmsg',['../namespacemoda__msgcwd.html#a43a1031d5c017c6f61ba6deabe22daad',1,'moda_msgcwd']]], + ['nmsub_535',['nmsub',['../readwritemg_8F90.html#a7430cdcec381d86f72a4b60a6a7db982',1,'readwritemg.F90']]], + ['nmtb_536',['nmtb',['../namespacemoda__mstabs.html#a2861db4fcd6083b5f6d194c92e873c95',1,'moda_mstabs']]], + ['nmtb_5fc_537',['nmtb_c',['../mstabs_8h.html#ad93c9a8906bf4b63fba3143c8d9d5da5',1,'mstabs.h']]], + ['nmtd_538',['nmtd',['../namespacemoda__mstabs.html#ae8e13371b82ad223284aeac9d6ad9aae',1,'moda_mstabs']]], + ['nmtd_5fc_539',['nmtd_c',['../mstabs_8h.html#aaa17913e195f9e3cf457d748d2c8f60e',1,'mstabs.h']]], + ['nmtf_540',['nmtf',['../cfe_8c.html#aeade079cc5207ec44fe26e6a90c38d3b',1,'cfe.c']]], + ['nmwrd_541',['nmwrd',['../readwritemg_8F90.html#a7c7234f006ddb78fb82844c95b608002',1,'readwritemg.F90']]], + ['nnrv_542',['nnrv',['../namespacemoda__nrv203.html#a7f37665c0422638e65824c8b9183169e',1,'moda_nrv203']]], + ['nrfelm_543',['nrfelm',['../namespacemoda__usrint.html#ab05877244c7131b445de4326efd8aa8a',1,'moda_usrint']]], + ['nrow_544',['nrow',['../namespacemoda__comprx.html#a574b3c666f5e8aa725910e20a739f561',1,'moda_comprx']]], + ['nrst_545',['nrst',['../namespacemoda__rlccmn.html#a6ee3ae8f4cfb91d15189834b8b62d41f',1,'moda_rlccmn']]], + ['nrv_546',['nrv',['../namespacemoda__nrv203.html#a9c4d7ff754fd79feb908c6858f7e4e5f',1,'moda_nrv203']]], + ['ns01v_547',['ns01v',['../namespacemoda__s01cm.html#a7dfdd248050c7cc36f38933711526888',1,'moda_s01cm']]], + ['nsub_548',['nsub',['../namespacemoda__msgcwd.html#ac477545b5d44685da84af7f23d7baa59',1,'moda_msgcwd']]], + ['ntab_549',['ntab',['../namespacemoda__tables.html#a74976394b2b70036d27222507ba4bfcc',1,'moda_tables']]], + ['ntamc_550',['ntamc',['../namespacemoda__bitmaps.html#a4dfbf13c3d38b007276cb0f5c5418396',1,'moda_bitmaps']]], + ['ntba_551',['ntba',['../namespacemoda__tababd.html#a02ea2421e524ac9f2f8e213dd0151558',1,'moda_tababd']]], + ['ntbb_552',['ntbb',['../namespacemoda__tababd.html#a8f322e3d7724bb96f7ce06beec989c0f',1,'moda_tababd']]], + ['ntbd_553',['ntbd',['../namespacemoda__tababd.html#a875c0ff90cd5fdc88e3f10ae7b5bc556',1,'moda_tababd']]], + ['ntco_554',['ntco',['../namespacemoda__bitmaps.html#aef82673973ab814f34658d9a1e5f3404',1,'moda_bitmaps']]], + ['null_555',['null',['../namespacemoda__nulbfr.html#a1b6c0eaf2305df7abddd8c6c66723526',1,'moda_nulbfr']]], + ['numbck_556',['numbck',['../fxy_8F90.html#a11357abe01c36dc3472be03e950e8fe3',1,'fxy.F90']]], + ['nummtb_557',['nummtb',['../stseq_8c.html#a340a16a2c0d988d37fbc2e92974b2b5e',1,'stseq.c']]], + ['numtab_558',['numtab',['../fxy_8F90.html#ab6ec8c0148ab5d70923831667277b14e',1,'fxy.F90']]], + ['numtbd_559',['numtbd',['../fxy_8F90.html#aca1fae67e284131dfd240d2336e3e77d',1,'fxy.F90']]], + ['numtbd_5fc_560',['numtbd_c',['../namespacebufr__c2f__interface.html#ab70a5dfe76eb5f9bce5015c3bce3bf64',1,'bufr_c2f_interface']]], + ['numtbd_5ff_561',['numtbd_f',['../bufrlib_8h.html#a45c023844f35d35ee3c5e77e60fdb18a',1,'bufrlib.h']]], + ['nval_562',['nval',['../namespacemoda__usrint.html#a2269ddd572fded029ca62080b38f6261',1,'moda_usrint']]], + ['nvnwin_563',['nvnwin',['../jumplink_8F90.html#a32fa4aca38700d53dd9899f93b9b3636',1,'jumplink.F90']]], + ['nwords_564',['nwords',['../readwritesb_8F90.html#a90ab4c66c5564da3a326c66cc42d067f',1,'readwritesb.F90']]], + ['nxtwin_565',['nxtwin',['../jumplink_8F90.html#a8a7a4ff46107f36ae57dd76442bd2447',1,'jumplink.F90']]] +]; diff --git a/previous_versions/v12.1.0/search/all_e.html b/previous_versions/v12.1.0/search/all_e.html new file mode 100644 index 000000000..e25df423a --- /dev/null +++ b/previous_versions/v12.1.0/search/all_e.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/all_e.js b/previous_versions/v12.1.0/search/all_e.js new file mode 100644 index 000000000..b95474e04 --- /dev/null +++ b/previous_versions/v12.1.0/search/all_e.js @@ -0,0 +1,21 @@ +var searchData= +[ + ['open_5fc_566',['open_c',['../namespacebufr__c2f__interface.html#a05ac8542818be260a3c1dc15d5dc2f53',1,'bufr_c2f_interface']]], + ['open_5ff_567',['open_f',['../bufr__interface_8h.html#accefcb852f45e506cac79e92a52b93a0',1,'bufr_interface.h']]], + ['openab_568',['openab',['../cread_8c.html#a8eb759a820f7f12a3b75e92473db3c78',1,'openab(int nfile, char *ufile): cread.c'],['../bufrlib_8h.html#a8eb759a820f7f12a3b75e92473db3c78',1,'openab(int nfile, char *ufile): cread.c']]], + ['openab_5fc_569',['openab_c',['../interfacebufrlib_1_1openab__c.html',1,'bufrlib::openab_c'],['../interfacebufrlib_1_1openab__c.html#a840a75512f0193e8b8538cfc9d6562c6',1,'bufrlib::openab_c::openab_c()']]], + ['openbf_570',['openbf',['../openclosebf_8F90.html#a9dc7e4fb476a5528a958ee132ee6392d',1,'openclosebf.F90']]], + ['openbf_5fc_571',['openbf_c',['../namespacebufr__c2f__interface.html#a6a97fe37e5caced81c5c6b769644832d',1,'bufr_c2f_interface']]], + ['openbf_5ff_572',['openbf_f',['../bufr__interface_8h.html#a750d83d2c9745f46cccb75dc9fec3788',1,'bufr_interface.h']]], + ['openbt_573',['openbt',['../openbt_8F90.html#a7e64e80a4c6a00f66c7dc1cbdeab96ef',1,'openbt(lundx, mtyp): openbt.F90'],['../debufr_8F90.html#a8dbba5dc66c2e09ccdd8065dda184f89',1,'openbt(lundx, mtyp): debufr.F90']]], + ['openbt_2ef90_574',['openbt.F90',['../openbt_8F90.html',1,'']]], + ['openclosebf_2ef90_575',['openclosebf.F90',['../openclosebf_8F90.html',1,'']]], + ['openmb_576',['openmb',['../readwritemg_8F90.html#a5edbefade4e7194e4dd3ee42f394034b',1,'readwritemg.F90']]], + ['openmb_5fc_577',['openmb_c',['../namespacebufr__c2f__interface.html#aad56de517eff0435b805addbf0692f44',1,'bufr_c2f_interface']]], + ['openmb_5ff_578',['openmb_f',['../bufr__interface_8h.html#ab062d9a7aad917f9937c577bab7f86fe',1,'bufr_interface.h']]], + ['openmg_579',['openmg',['../readwritemg_8F90.html#a493ce59c1a2976e9714c2d9b283bdb11',1,'readwritemg.F90']]], + ['openrb_580',['openrb',['../bufrlib_8h.html#ab18be8cbb2bdbdb682adce89dd1a9c69',1,'openrb(int nfile, char *ufile): cread.c'],['../cread_8c.html#ab18be8cbb2bdbdb682adce89dd1a9c69',1,'openrb(int nfile, char *ufile): cread.c']]], + ['openrb_5fc_581',['openrb_c',['../interfacebufrlib_1_1openrb__c.html',1,'bufrlib::openrb_c'],['../interfacebufrlib_1_1openrb__c.html#a705b951ea4f72a0aa1654e77a2379626',1,'bufrlib::openrb_c::openrb_c()']]], + ['openwb_582',['openwb',['../bufrlib_8h.html#aa7b36dfb6c0fe0f9a1104d34c5acfa5e',1,'openwb(int nfile, char *ufile): cread.c'],['../cread_8c.html#aa7b36dfb6c0fe0f9a1104d34c5acfa5e',1,'openwb(int nfile, char *ufile): cread.c']]], + ['openwb_5fc_583',['openwb_c',['../interfacebufrlib_1_1openwb__c.html',1,'bufrlib::openwb_c'],['../interfacebufrlib_1_1openwb__c.html#a7859316c1cfa913d54d3fc36b619cb28',1,'bufrlib::openwb_c::openwb_c()']]] +]; diff --git a/previous_versions/v12.1.0/search/all_f.html b/previous_versions/v12.1.0/search/all_f.html new file mode 100644 index 000000000..b23da6ce4 --- /dev/null +++ b/previous_versions/v12.1.0/search/all_f.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/all_f.js b/previous_versions/v12.1.0/search/all_f.js new file mode 100644 index 000000000..a2bbd9a11 --- /dev/null +++ b/previous_versions/v12.1.0/search/all_f.js @@ -0,0 +1,22 @@ +var searchData= +[ + ['pad_584',['pad',['../readwritesb_8F90.html#a1ca33013e4c11f3c9d1fe614f9f1d585',1,'readwritesb.F90']]], + ['padmsg_585',['padmsg',['../readwritemg_8F90.html#a127f4e4664445595654494dea28d7d8f',1,'readwritemg.F90']]], + ['parstr_586',['parstr',['../strings_8F90.html#a1d493e7de1c23739a0fcd06089139f35',1,'strings.F90']]], + ['parusr_587',['parusr',['../strings_8F90.html#ae49e5fa3610c743607ca6288d4107d28',1,'strings.F90']]], + ['parutg_588',['parutg',['../strings_8F90.html#a2da1c300ec049ee215d937b5ab545f53',1,'strings.F90']]], + ['pb_589',['pb',['../cread_8h.html#a58db779a0b3c7250a119069bd2e5106c',1,'cread.h']]], + ['pbf_590',['pbf',['../crwbmg_8c.html#ae17af2b55406347c25aca1cb56d7b193',1,'crwbmg.c']]], + ['pkb_591',['pkb',['../ciencode_8F90.html#a8f795cd39c8f939b486407c65d8959c0',1,'ciencode.F90']]], + ['pkb8_592',['pkb8',['../ciencode_8F90.html#ad41a6d2e1a35c122af15bbc6dffe8eaa',1,'ciencode.F90']]], + ['pkbs1_593',['pkbs1',['../s013vals_8F90.html#a5522b3ec85470f1def91880bbc5df5e6',1,'s013vals.F90']]], + ['pkc_594',['pkc',['../ciencode_8F90.html#a52ae4b28f79718d9b6631d2f7a5a7160',1,'ciencode.F90']]], + ['pkftbv_595',['pkftbv',['../cftbvs_8F90.html#a46efecc01f463c64fe193b800fff9a35',1,'cftbvs.F90']]], + ['pktdd_596',['pktdd',['../dxtable_8F90.html#aae6295132b2eb71f969417879832ed47',1,'dxtable.F90']]], + ['pktdd_5fc_597',['pktdd_c',['../namespacebufr__c2f__interface.html#a9a8d8f66405c9b1679e92e0d908877e0',1,'bufr_c2f_interface']]], + ['pktdd_5ff_598',['pktdd_f',['../bufrlib_8h.html#ac68117670f91ed84a5edf1bf074bc187',1,'bufrlib.h']]], + ['pkvs01_599',['pkvs01',['../s013vals_8F90.html#ac8fa984389323f08dd1cbd3aa6b57da9',1,'s013vals.F90']]], + ['posapx_600',['posapx',['../openclosebf_8F90.html#aeef6f5d08d9631dbe92c1821a9d02903',1,'openclosebf.F90']]], + ['printx_601',['printx',['../readbp_8F90.html#a20f66afc4b9a6ab619111b0d614e452c',1,'readbp.F90']]], + ['prtusage_602',['prtusage',['../xbfmg_8c.html#a54cbb8b652032605c043b18a134cd85d',1,'prtusage(char *prgnam): xbfmg.c'],['../debufr_8c.html#a54cbb8b652032605c043b18a134cd85d',1,'prtusage(char *prgnam): debufr.c']]] +]; diff --git a/previous_versions/v12.1.0/search/classes_0.html b/previous_versions/v12.1.0/search/classes_0.html new file mode 100644 index 000000000..af8159ee6 --- /dev/null +++ b/previous_versions/v12.1.0/search/classes_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/classes_0.js b/previous_versions/v12.1.0/search/classes_0.js new file mode 100644 index 000000000..9d8ab62a4 --- /dev/null +++ b/previous_versions/v12.1.0/search/classes_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['arallocc_5fc_770',['arallocc_c',['../interfacebufrlib_1_1arallocc__c.html',1,'bufrlib']]], + ['ardllocc_5fc_771',['ardllocc_c',['../interfacebufrlib_1_1ardllocc__c.html',1,'bufrlib']]] +]; diff --git a/previous_versions/v12.1.0/search/classes_1.html b/previous_versions/v12.1.0/search/classes_1.html new file mode 100644 index 000000000..576e91689 --- /dev/null +++ b/previous_versions/v12.1.0/search/classes_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/classes_1.js b/previous_versions/v12.1.0/search/classes_1.js new file mode 100644 index 000000000..c3d768095 --- /dev/null +++ b/previous_versions/v12.1.0/search/classes_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['backbufr_5fc_772',['backbufr_c',['../interfacebufrlib_1_1backbufr__c.html',1,'bufrlib']]] +]; diff --git a/previous_versions/v12.1.0/search/classes_2.html b/previous_versions/v12.1.0/search/classes_2.html new file mode 100644 index 000000000..956405e5a --- /dev/null +++ b/previous_versions/v12.1.0/search/classes_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/classes_2.js b/previous_versions/v12.1.0/search/classes_2.js new file mode 100644 index 000000000..d94e4f038 --- /dev/null +++ b/previous_versions/v12.1.0/search/classes_2.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['ccbfl_5fc_773',['ccbfl_c',['../interfacebufr__interface_1_1ccbfl__c.html',1,'bufr_interface']]], + ['cewind_5fc_774',['cewind_c',['../interfacebufrlib_1_1cewind__c.html',1,'bufrlib']]], + ['closfb_5fc_775',['closfb_c',['../interfacebufrlib_1_1closfb__c.html',1,'bufrlib']]], + ['cobfl_5fc_776',['cobfl_c',['../interfacebufr__interface_1_1cobfl__c.html',1,'bufr_interface']]], + ['cpmstabs_5fc_777',['cpmstabs_c',['../interfacebufrlib_1_1cpmstabs__c.html',1,'bufrlib']]], + ['crbmg_5fc_778',['crbmg_c',['../interfacebufr__interface_1_1crbmg__c.html',1,'bufr_interface']]], + ['crdbufr_5fc_779',['crdbufr_c',['../interfacebufrlib_1_1crdbufr__c.html',1,'bufrlib']]], + ['cwbmg_5fc_780',['cwbmg_c',['../interfacebufr__interface_1_1cwbmg__c.html',1,'bufr_interface']]], + ['cwrbufr_5fc_781',['cwrbufr_c',['../interfacebufrlib_1_1cwrbufr__c.html',1,'bufrlib']]] +]; diff --git a/previous_versions/v12.1.0/search/classes_3.html b/previous_versions/v12.1.0/search/classes_3.html new file mode 100644 index 000000000..d33343bc1 --- /dev/null +++ b/previous_versions/v12.1.0/search/classes_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/classes_3.js b/previous_versions/v12.1.0/search/classes_3.js new file mode 100644 index 000000000..9815732cd --- /dev/null +++ b/previous_versions/v12.1.0/search/classes_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['dlloctbf_5fc_782',['dlloctbf_c',['../interfacebufr__interface_1_1dlloctbf__c.html',1,'bufr_interface']]] +]; diff --git a/previous_versions/v12.1.0/search/classes_4.html b/previous_versions/v12.1.0/search/classes_4.html new file mode 100644 index 000000000..8430b07fe --- /dev/null +++ b/previous_versions/v12.1.0/search/classes_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/classes_4.js b/previous_versions/v12.1.0/search/classes_4.js new file mode 100644 index 000000000..96bfd9f67 --- /dev/null +++ b/previous_versions/v12.1.0/search/classes_4.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['icvidx_5fc_783',['icvidx_c',['../interfacebufrlib_1_1icvidx__c.html',1,'bufrlib']]], + ['inittbf_5fc_784',['inittbf_c',['../interfacebufrlib_1_1inittbf__c.html',1,'bufrlib']]] +]; diff --git a/previous_versions/v12.1.0/search/classes_5.html b/previous_versions/v12.1.0/search/classes_5.html new file mode 100644 index 000000000..c2f1b767b --- /dev/null +++ b/previous_versions/v12.1.0/search/classes_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/classes_5.js b/previous_versions/v12.1.0/search/classes_5.js new file mode 100644 index 000000000..cdca3fb29 --- /dev/null +++ b/previous_versions/v12.1.0/search/classes_5.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['openab_5fc_785',['openab_c',['../interfacebufrlib_1_1openab__c.html',1,'bufrlib']]], + ['openrb_5fc_786',['openrb_c',['../interfacebufrlib_1_1openrb__c.html',1,'bufrlib']]], + ['openwb_5fc_787',['openwb_c',['../interfacebufrlib_1_1openwb__c.html',1,'bufrlib']]] +]; diff --git a/previous_versions/v12.1.0/search/classes_6.html b/previous_versions/v12.1.0/search/classes_6.html new file mode 100644 index 000000000..e39847ce8 --- /dev/null +++ b/previous_versions/v12.1.0/search/classes_6.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/classes_6.js b/previous_versions/v12.1.0/search/classes_6.js new file mode 100644 index 000000000..d8fbf7c1d --- /dev/null +++ b/previous_versions/v12.1.0/search/classes_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['restd_5fc_788',['restd_c',['../interfacebufrlib_1_1restd__c.html',1,'bufrlib']]] +]; diff --git a/search/classes_7.html b/previous_versions/v12.1.0/search/classes_7.html similarity index 100% rename from search/classes_7.html rename to previous_versions/v12.1.0/search/classes_7.html diff --git a/search/classes_7.js b/previous_versions/v12.1.0/search/classes_7.js similarity index 100% rename from search/classes_7.js rename to previous_versions/v12.1.0/search/classes_7.js diff --git a/previous_versions/v12.1.0/search/close.svg b/previous_versions/v12.1.0/search/close.svg new file mode 100644 index 000000000..a933eea1a --- /dev/null +++ b/previous_versions/v12.1.0/search/close.svg @@ -0,0 +1,31 @@ + + + + + + image/svg+xml + + + + + + + + diff --git a/previous_versions/v12.1.0/search/defines_0.html b/previous_versions/v12.1.0/search/defines_0.html new file mode 100644 index 000000000..15cc3de38 --- /dev/null +++ b/previous_versions/v12.1.0/search/defines_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/defines_0.js b/previous_versions/v12.1.0/search/defines_0.js new file mode 100644 index 000000000..573c1c04d --- /dev/null +++ b/previous_versions/v12.1.0/search/defines_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['fxy_5fstr_5flen_1549',['FXY_STR_LEN',['../bufrlib_8h.html#a320fb202c17784943f8223593c9123dd',1,'bufrlib.h']]] +]; diff --git a/previous_versions/v12.1.0/search/defines_1.html b/previous_versions/v12.1.0/search/defines_1.html new file mode 100644 index 000000000..c49009c71 --- /dev/null +++ b/previous_versions/v12.1.0/search/defines_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/defines_1.js b/previous_versions/v12.1.0/search/defines_1.js new file mode 100644 index 000000000..ae5829569 --- /dev/null +++ b/previous_versions/v12.1.0/search/defines_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['in_5farallocc_1550',['IN_ARALLOCC',['../arallocc_8c.html#a99a030277b9ff412087d1e599de3f730',1,'arallocc.c']]] +]; diff --git a/previous_versions/v12.1.0/search/defines_2.html b/previous_versions/v12.1.0/search/defines_2.html new file mode 100644 index 000000000..c55101115 --- /dev/null +++ b/previous_versions/v12.1.0/search/defines_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/defines_2.js b/previous_versions/v12.1.0/search/defines_2.js new file mode 100644 index 000000000..e6d9cc2b7 --- /dev/null +++ b/previous_versions/v12.1.0/search/defines_2.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['max_5ffxy_5ftableb_1551',['MAX_FXY_TABLEB',['../bufrlib_8h.html#ab25c8c36df6eb956d84010bc74002858',1,'bufrlib.h']]], + ['max_5fmeaning_5flen_1552',['MAX_MEANING_LEN',['../cfe_8c.html#a655e9465dd48c1e8a068b4689748e509',1,'cfe.c']]], + ['min_5ffxy_5frepl_1553',['MIN_FXY_REPL',['../bufrlib_8h.html#a6fa6d930bc1885cd5cf30d57dfcc6a4b',1,'bufrlib.h']]], + ['min_5ffxy_5ftabled_1554',['MIN_FXY_TABLED',['../bufrlib_8h.html#a87f18b149395d0c626a9ba310c959e3c',1,'bufrlib.h']]], + ['mxfnlen_1555',['MXFNLEN',['../crwbmg_8c.html#adcb9ca74c59f88b5a3d6bd10c8095692',1,'crwbmg.c']]] +]; diff --git a/previous_versions/v12.1.0/search/defines_3.html b/previous_versions/v12.1.0/search/defines_3.html new file mode 100644 index 000000000..8c6d21536 --- /dev/null +++ b/previous_versions/v12.1.0/search/defines_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/defines_3.js b/previous_versions/v12.1.0/search/defines_3.js new file mode 100644 index 000000000..ca8594cc4 --- /dev/null +++ b/previous_versions/v12.1.0/search/defines_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['nemo_5fstr_5flen_1556',['NEMO_STR_LEN',['../bufrlib_8h.html#aaf134edc1efd697331c03effd4d056e0',1,'bufrlib.h']]] +]; diff --git a/previous_versions/v12.1.0/search/defines_4.html b/previous_versions/v12.1.0/search/defines_4.html new file mode 100644 index 000000000..f4afac124 --- /dev/null +++ b/previous_versions/v12.1.0/search/defines_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/defines_4.js b/previous_versions/v12.1.0/search/defines_4.js new file mode 100644 index 000000000..9c8d8e509 --- /dev/null +++ b/previous_versions/v12.1.0/search/defines_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['unit_5fstr_5flen_1557',['UNIT_STR_LEN',['../bufrlib_8h.html#a9043f4f41d0f9e6a276f936a03416f69',1,'bufrlib.h']]] +]; diff --git a/previous_versions/v12.1.0/search/defines_5.html b/previous_versions/v12.1.0/search/defines_5.html new file mode 100644 index 000000000..8c40d123b --- /dev/null +++ b/previous_versions/v12.1.0/search/defines_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/defines_5.js b/previous_versions/v12.1.0/search/defines_5.js new file mode 100644 index 000000000..d1b5db60a --- /dev/null +++ b/previous_versions/v12.1.0/search/defines_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['vers_5fstr_5flen_1558',['VERS_STR_LEN',['../bufr__interface_8h.html#a016503c090a3f1ecdac526a2e8f696b0',1,'bufr_interface.h']]] +]; diff --git a/previous_versions/v12.1.0/search/files_0.html b/previous_versions/v12.1.0/search/files_0.html new file mode 100644 index 000000000..9498842a6 --- /dev/null +++ b/previous_versions/v12.1.0/search/files_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/files_0.js b/previous_versions/v12.1.0/search/files_0.js new file mode 100644 index 000000000..e49900d1d --- /dev/null +++ b/previous_versions/v12.1.0/search/files_0.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['apxdx_2ef90_837',['apxdx.F90',['../apxdx_8F90.html',1,'']]], + ['arallocc_2ec_838',['arallocc.c',['../arallocc_8c.html',1,'']]], + ['arallocf_2ef90_839',['arallocf.F90',['../arallocf_8F90.html',1,'']]] +]; diff --git a/previous_versions/v12.1.0/search/files_1.html b/previous_versions/v12.1.0/search/files_1.html new file mode 100644 index 000000000..7050ef48a --- /dev/null +++ b/previous_versions/v12.1.0/search/files_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/files_1.js b/previous_versions/v12.1.0/search/files_1.js new file mode 100644 index 000000000..232514e77 --- /dev/null +++ b/previous_versions/v12.1.0/search/files_1.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['binv_2ef90_840',['binv.F90',['../binv_8F90.html',1,'']]], + ['bitmaps_2ef90_841',['bitmaps.F90',['../bitmaps_8F90.html',1,'']]], + ['blocks_2ef90_842',['blocks.F90',['../blocks_8F90.html',1,'']]], + ['borts_2ef90_843',['borts.F90',['../borts_8F90.html',1,'']]], + ['bufr_5fc2f_5finterface_2ef90_844',['bufr_c2f_interface.F90',['../bufr__c2f__interface_8F90.html',1,'']]], + ['bufr_5finterface_2ef90_845',['bufr_interface.F90',['../bufr__interface_8F90.html',1,'']]], + ['bufr_5finterface_2eh_846',['bufr_interface.h',['../bufr__interface_8h.html',1,'']]], + ['bufrlib_2ef90_847',['bufrlib.F90',['../bufrlib_8F90.html',1,'']]], + ['bufrlib_2eh_848',['bufrlib.h',['../bufrlib_8h.html',1,'']]] +]; diff --git a/previous_versions/v12.1.0/search/files_2.html b/previous_versions/v12.1.0/search/files_2.html new file mode 100644 index 000000000..497cdf5c7 --- /dev/null +++ b/previous_versions/v12.1.0/search/files_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/files_2.js b/previous_versions/v12.1.0/search/files_2.js new file mode 100644 index 000000000..460933575 --- /dev/null +++ b/previous_versions/v12.1.0/search/files_2.js @@ -0,0 +1,14 @@ +var searchData= +[ + ['cfe_2ec_849',['cfe.c',['../cfe_8c.html',1,'']]], + ['cftbvs_2ef90_850',['cftbvs.F90',['../cftbvs_8F90.html',1,'']]], + ['cidecode_2ef90_851',['cidecode.F90',['../cidecode_8F90.html',1,'']]], + ['ciencode_2ef90_852',['ciencode.F90',['../ciencode_8F90.html',1,'']]], + ['cmpbqm_2ef90_853',['cmpbqm.F90',['../cmpbqm_8F90.html',1,'']]], + ['compress_2ef90_854',['compress.F90',['../compress_8F90.html',1,'']]], + ['copydata_2ef90_855',['copydata.F90',['../copydata_8F90.html',1,'']]], + ['cpmstabs_2ec_856',['cpmstabs.c',['../cpmstabs_8c.html',1,'']]], + ['cread_2ec_857',['cread.c',['../cread_8c.html',1,'']]], + ['cread_2eh_858',['cread.h',['../cread_8h.html',1,'']]], + ['crwbmg_2ec_859',['crwbmg.c',['../crwbmg_8c.html',1,'']]] +]; diff --git a/previous_versions/v12.1.0/search/files_3.html b/previous_versions/v12.1.0/search/files_3.html new file mode 100644 index 000000000..1ba106b2d --- /dev/null +++ b/previous_versions/v12.1.0/search/files_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/files_3.js b/previous_versions/v12.1.0/search/files_3.js new file mode 100644 index 000000000..932b10598 --- /dev/null +++ b/previous_versions/v12.1.0/search/files_3.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['debufr_2ec_860',['debufr.c',['../debufr_8c.html',1,'']]], + ['debufr_2ef90_861',['debufr.F90',['../debufr_8F90.html',1,'']]], + ['dumpdata_2ef90_862',['dumpdata.F90',['../dumpdata_8F90.html',1,'']]], + ['dxtable_2ef90_863',['dxtable.F90',['../dxtable_8F90.html',1,'']]] +]; diff --git a/previous_versions/v12.1.0/search/files_4.html b/previous_versions/v12.1.0/search/files_4.html new file mode 100644 index 000000000..753b7b109 --- /dev/null +++ b/previous_versions/v12.1.0/search/files_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/files_4.js b/previous_versions/v12.1.0/search/files_4.js new file mode 100644 index 000000000..02e3a7c82 --- /dev/null +++ b/previous_versions/v12.1.0/search/files_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['errwrt_2ef90_864',['errwrt.F90',['../errwrt_8F90.html',1,'']]] +]; diff --git a/previous_versions/v12.1.0/search/files_5.html b/previous_versions/v12.1.0/search/files_5.html new file mode 100644 index 000000000..7b6affd7f --- /dev/null +++ b/previous_versions/v12.1.0/search/files_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/files_5.js b/previous_versions/v12.1.0/search/files_5.js new file mode 100644 index 000000000..9aed003e6 --- /dev/null +++ b/previous_versions/v12.1.0/search/files_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['fxy_2ef90_865',['fxy.F90',['../fxy_8F90.html',1,'']]] +]; diff --git a/previous_versions/v12.1.0/search/files_6.html b/previous_versions/v12.1.0/search/files_6.html new file mode 100644 index 000000000..802ebf715 --- /dev/null +++ b/previous_versions/v12.1.0/search/files_6.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/files_6.js b/previous_versions/v12.1.0/search/files_6.js new file mode 100644 index 000000000..5c715765d --- /dev/null +++ b/previous_versions/v12.1.0/search/files_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['gettab_2ef90_866',['gettab.F90',['../gettab_8F90.html',1,'']]] +]; diff --git a/previous_versions/v12.1.0/search/files_7.html b/previous_versions/v12.1.0/search/files_7.html new file mode 100644 index 000000000..365e6484f --- /dev/null +++ b/previous_versions/v12.1.0/search/files_7.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/files_7.js b/previous_versions/v12.1.0/search/files_7.js new file mode 100644 index 000000000..db7b4a539 --- /dev/null +++ b/previous_versions/v12.1.0/search/files_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['icvidx_2ec_867',['icvidx.c',['../icvidx_8c.html',1,'']]] +]; diff --git a/previous_versions/v12.1.0/search/files_8.html b/previous_versions/v12.1.0/search/files_8.html new file mode 100644 index 000000000..3df0f2fae --- /dev/null +++ b/previous_versions/v12.1.0/search/files_8.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/files_8.js b/previous_versions/v12.1.0/search/files_8.js new file mode 100644 index 000000000..6516e1127 --- /dev/null +++ b/previous_versions/v12.1.0/search/files_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['jumplink_2ef90_868',['jumplink.F90',['../jumplink_8F90.html',1,'']]] +]; diff --git a/previous_versions/v12.1.0/search/files_9.html b/previous_versions/v12.1.0/search/files_9.html new file mode 100644 index 000000000..52f8b6c07 --- /dev/null +++ b/previous_versions/v12.1.0/search/files_9.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/files_9.js b/previous_versions/v12.1.0/search/files_9.js new file mode 100644 index 000000000..79c70da45 --- /dev/null +++ b/previous_versions/v12.1.0/search/files_9.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['mastertable_2ef90_869',['mastertable.F90',['../mastertable_8F90.html',1,'']]], + ['memmsgs_2ef90_870',['memmsgs.F90',['../memmsgs_8F90.html',1,'']]], + ['misc_2ef90_871',['misc.F90',['../misc_8F90.html',1,'']]], + ['missing_2ef90_872',['missing.F90',['../missing_8F90.html',1,'']]], + ['modules_5farrs_2ef90_873',['modules_arrs.F90',['../modules__arrs_8F90.html',1,'']]], + ['modules_5fvars_2ef90_874',['modules_vars.F90',['../modules__vars_8F90.html',1,'']]], + ['mstabs_2eh_875',['mstabs.h',['../mstabs_8h.html',1,'']]] +]; diff --git a/previous_versions/v12.1.0/search/files_a.html b/previous_versions/v12.1.0/search/files_a.html new file mode 100644 index 000000000..11d4c117b --- /dev/null +++ b/previous_versions/v12.1.0/search/files_a.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/files_a.js b/previous_versions/v12.1.0/search/files_a.js new file mode 100644 index 000000000..cddc5554f --- /dev/null +++ b/previous_versions/v12.1.0/search/files_a.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['openbt_2ef90_876',['openbt.F90',['../openbt_8F90.html',1,'']]], + ['openclosebf_2ef90_877',['openclosebf.F90',['../openclosebf_8F90.html',1,'']]] +]; diff --git a/previous_versions/v12.1.0/search/files_b.html b/previous_versions/v12.1.0/search/files_b.html new file mode 100644 index 000000000..9fc83436a --- /dev/null +++ b/previous_versions/v12.1.0/search/files_b.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/files_b.js b/previous_versions/v12.1.0/search/files_b.js new file mode 100644 index 000000000..8b56a4b83 --- /dev/null +++ b/previous_versions/v12.1.0/search/files_b.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['readbp_2ef90_878',['readbp.F90',['../readbp_8F90.html',1,'']]], + ['readmp_2ef90_879',['readmp.F90',['../readmp_8F90.html',1,'']]], + ['readwritemg_2ef90_880',['readwritemg.F90',['../readwritemg_8F90.html',1,'']]], + ['readwritesb_2ef90_881',['readwritesb.F90',['../readwritesb_8F90.html',1,'']]], + ['readwriteval_2ef90_882',['readwriteval.F90',['../readwriteval_8F90.html',1,'']]], + ['restd_2ec_883',['restd.c',['../restd_8c.html',1,'']]] +]; diff --git a/previous_versions/v12.1.0/search/files_c.html b/previous_versions/v12.1.0/search/files_c.html new file mode 100644 index 000000000..c266b4c25 --- /dev/null +++ b/previous_versions/v12.1.0/search/files_c.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/files_c.js b/previous_versions/v12.1.0/search/files_c.js new file mode 100644 index 000000000..0cc033470 --- /dev/null +++ b/previous_versions/v12.1.0/search/files_c.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['s013vals_2ef90_884',['s013vals.F90',['../s013vals_8F90.html',1,'']]], + ['sinv_2ef90_885',['sinv.F90',['../sinv_8F90.html',1,'']]], + ['split_5fby_5fsubset_2ef90_886',['split_by_subset.F90',['../split__by__subset_8F90.html',1,'']]], + ['standard_2ef90_887',['standard.F90',['../standard_8F90.html',1,'']]], + ['strings_2ef90_888',['strings.F90',['../strings_8F90.html',1,'']]], + ['stseq_2ec_889',['stseq.c',['../stseq_8c.html',1,'']]] +]; diff --git a/previous_versions/v12.1.0/search/files_d.html b/previous_versions/v12.1.0/search/files_d.html new file mode 100644 index 000000000..d2ca3c1ca --- /dev/null +++ b/previous_versions/v12.1.0/search/files_d.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/files_d.js b/previous_versions/v12.1.0/search/files_d.js new file mode 100644 index 000000000..707a43b75 --- /dev/null +++ b/previous_versions/v12.1.0/search/files_d.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['tankrcpt_2ef90_890',['tankrcpt.F90',['../tankrcpt_8F90.html',1,'']]] +]; diff --git a/previous_versions/v12.1.0/search/files_e.html b/previous_versions/v12.1.0/search/files_e.html new file mode 100644 index 000000000..9df411672 --- /dev/null +++ b/previous_versions/v12.1.0/search/files_e.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/files_e.js b/previous_versions/v12.1.0/search/files_e.js new file mode 100644 index 000000000..d545991a1 --- /dev/null +++ b/previous_versions/v12.1.0/search/files_e.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['x4884_2ef90_891',['x4884.F90',['../x4884_8F90.html',1,'']]], + ['xbfmg_2ec_892',['xbfmg.c',['../xbfmg_8c.html',1,'']]] +]; diff --git a/previous_versions/v12.1.0/search/functions_0.html b/previous_versions/v12.1.0/search/functions_0.html new file mode 100644 index 000000000..eb4c5014c --- /dev/null +++ b/previous_versions/v12.1.0/search/functions_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/functions_0.js b/previous_versions/v12.1.0/search/functions_0.js new file mode 100644 index 000000000..91aff8ba0 --- /dev/null +++ b/previous_versions/v12.1.0/search/functions_0.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['adn30_893',['adn30',['../fxy_8F90.html#af1ec2f8fc15418f1238413201f3e075c',1,'fxy.F90']]], + ['apxdx_894',['apxdx',['../apxdx_8F90.html#ae072f0fa8326c098de4e6dfe2deef450',1,'apxdx.F90']]], + ['arallocc_895',['arallocc',['../arallocc_8c.html#a98efd59b32b1d2ed2c060d2564824e28',1,'arallocc(void): arallocc.c'],['../bufrlib_8h.html#a98efd59b32b1d2ed2c060d2564824e28',1,'arallocc(void): arallocc.c']]], + ['arallocc_5fc_896',['arallocc_c',['../interfacebufrlib_1_1arallocc__c.html#a59657ce8014f439d0bdd18713ee7788d',1,'bufrlib::arallocc_c']]], + ['arallocf_897',['arallocf',['../arallocf_8F90.html#a2b64630033a9306be25da1f6b28d913f',1,'arallocf.F90']]], + ['ardllocc_898',['ardllocc',['../arallocc_8c.html#ac283516a1391fee0635b01beffdad7cb',1,'ardllocc(void): arallocc.c'],['../bufrlib_8h.html#ac283516a1391fee0635b01beffdad7cb',1,'ardllocc(void): arallocc.c']]], + ['ardllocc_5fc_899',['ardllocc_c',['../interfacebufrlib_1_1ardllocc__c.html#a3ca3c885757d7df2b1837e46443b318e',1,'bufrlib::ardllocc_c']]], + ['ardllocf_900',['ardllocf',['../arallocf_8F90.html#a7b3e4d5498fedd9e94ac45b69fc04b58',1,'arallocf.F90']]], + ['atrcpt_901',['atrcpt',['../tankrcpt_8F90.html#adca31c0fc592e5bf04c10572b26c85b1',1,'tankrcpt.F90']]] +]; diff --git a/previous_versions/v12.1.0/search/functions_1.html b/previous_versions/v12.1.0/search/functions_1.html new file mode 100644 index 000000000..ef4088b89 --- /dev/null +++ b/previous_versions/v12.1.0/search/functions_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/functions_1.js b/previous_versions/v12.1.0/search/functions_1.js new file mode 100644 index 000000000..93a20a615 --- /dev/null +++ b/previous_versions/v12.1.0/search/functions_1.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['backbufr_902',['backbufr',['../bufrlib_8h.html#ad5429d7ed327f515c880227bb795162b',1,'backbufr(int nfile): cread.c'],['../cread_8c.html#ad5429d7ed327f515c880227bb795162b',1,'backbufr(int nfile): cread.c']]], + ['backbufr_5fc_903',['backbufr_c',['../interfacebufrlib_1_1backbufr__c.html#ad9e1b123389021319f06f8e95c34d832',1,'bufrlib::backbufr_c']]], + ['bfrini_904',['bfrini',['../misc_8F90.html#ab3f045cc170403305543e34e30b87001',1,'misc.F90']]], + ['binv_905',['binv',['../binv_8F90.html#a7633b528a2b5299a4e2aa1c6f7e6e2e5',1,'binv.F90']]], + ['blocks_906',['blocks',['../blocks_8F90.html#a540b970b11e7da5147889d566c49b681',1,'blocks.F90']]], + ['bort_907',['bort',['../borts_8F90.html#adc4659c5e9171f22248cf61e054ddd17',1,'borts.F90']]], + ['bort2_908',['bort2',['../borts_8F90.html#afef28b5a86909cc8999fad7d98b11f00',1,'borts.F90']]], + ['bort_5fc_909',['bort_c',['../namespacebufr__c2f__interface.html#a70b99a494d9f5ef152ec115a139b1c1f',1,'bufr_c2f_interface']]], + ['bort_5ff_910',['bort_f',['../bufrlib_8h.html#a4bd8daccf2564da21968a531b87bf447',1,'bufrlib.h']]], + ['bvers_911',['bvers',['../misc_8F90.html#a76aaeb3402158be94f735c166f93a527',1,'misc.F90']]], + ['bvers_5fc_912',['bvers_c',['../namespacebufr__c2f__interface.html#adc050cbf79f756c7db30f7c4c6b129a0',1,'bufr_c2f_interface']]], + ['bvers_5ff_913',['bvers_f',['../bufr__interface_8h.html#ada9f732c49c87976c31f215c9c040d2b',1,'bufr_interface.h']]] +]; diff --git a/previous_versions/v12.1.0/search/functions_10.html b/previous_versions/v12.1.0/search/functions_10.html new file mode 100644 index 000000000..1bdc12572 --- /dev/null +++ b/previous_versions/v12.1.0/search/functions_10.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/functions_10.js b/previous_versions/v12.1.0/search/functions_10.js new file mode 100644 index 000000000..a4a5f0acb --- /dev/null +++ b/previous_versions/v12.1.0/search/functions_10.js @@ -0,0 +1,41 @@ +var searchData= +[ + ['satcode_1209',['satcode',['../sinv_8F90.html#a4ab4fad455062f4d66f23adb61d13c7c',1,'sinv.F90']]], + ['seqsdx_1210',['seqsdx',['../dxtable_8F90.html#a591d4a2752e5c69299905fb910f7fcc7',1,'dxtable.F90']]], + ['setblock_1211',['setblock',['../blocks_8F90.html#a552eedeacbddeccff86792eb99dad12f',1,'blocks.F90']]], + ['setbmiss_1212',['setbmiss',['../missing_8F90.html#a65fba06ac4fb69670084ee11746bdd9f',1,'missing.F90']]], + ['setim8b_1213',['setim8b',['../x4884_8F90.html#a156e77d86141acd042efd97146dd18cf',1,'x4884.F90']]], + ['setvalnb_1214',['setvalnb',['../readwriteval_8F90.html#ac8bbcb32a65a5acdf50e0f5d835c6ac2',1,'readwriteval.F90']]], + ['sinv_1215',['sinv',['../sinv_8F90.html#add80e304e2ffa251811ac6a19162f807',1,'sinv.F90']]], + ['sntbbe_1216',['sntbbe',['../mastertable_8F90.html#a4bc18eda6239cb2cd797dc63e12060d6',1,'mastertable.F90']]], + ['sntbde_1217',['sntbde',['../mastertable_8F90.html#a07132e14b98ae1942199d2f9f89f1dfd',1,'mastertable.F90']]], + ['sntbestr_1218',['sntbestr',['../mastertable_8F90.html#a1a035df49f8cbaee159153af0d3fb818',1,'mastertable.F90']]], + ['sntbfe_1219',['sntbfe',['../mastertable_8F90.html#a13fd8c1d3695fab378b46cd2a6c23d4c',1,'mastertable.F90']]], + ['sorttbf_1220',['sorttbf',['../cfe_8c.html#af9bdd990bf256341aa36e1f0611132de',1,'cfe.c']]], + ['sorttbf_5fc_1221',['sorttbf_c',['../interfacebufrlib_1_1sorttbf__c.html#a32d698730c2323056301d57bf65265cb',1,'bufrlib::sorttbf_c']]], + ['split_5fby_5fsubset_1222',['split_by_subset',['../split__by__subset_8F90.html#ae5d45e2086aa783d8ca85e2fd47c8118',1,'split_by_subset.F90']]], + ['srchtbf_1223',['srchtbf',['../cfe_8c.html#aba549e6acf16abcbe89193cb72d94287',1,'cfe.c']]], + ['srchtbf_5fc_1224',['srchtbf_c',['../interfacebufrlib_1_1srchtbf__c.html#a81ef463e26669eaf234956ffd027b3dc',1,'bufrlib::srchtbf_c']]], + ['status_1225',['status',['../openclosebf_8F90.html#abceda08f9c29378d3ddadeb46e823d00',1,'openclosebf.F90']]], + ['status_5fc_1226',['status_c',['../namespacebufr__c2f__interface.html#a233844a8f03de391d28d20a7bd5d8ef0',1,'bufr_c2f_interface']]], + ['status_5ff_1227',['status_f',['../bufr__interface_8h.html#a8864263871383e72d19ac4a57031be7d',1,'bufr_interface.h']]], + ['stbfdx_1228',['stbfdx',['../dxtable_8F90.html#ac59d8db430cbb1cbe7ced7ebc386ef4a',1,'dxtable.F90']]], + ['stdmsg_1229',['stdmsg',['../standard_8F90.html#a1f7f89920afdd318ec3ff39559c42ecd',1,'standard.F90']]], + ['stndrd_1230',['stndrd',['../standard_8F90.html#a543c53880e96f04934213352ea77a7ab',1,'standard.F90']]], + ['stntbi_1231',['stntbi',['../dxtable_8F90.html#aaa433680a14847a3fd64a6fa1b877211',1,'dxtable.F90']]], + ['stntbi_5fc_1232',['stntbi_c',['../namespacebufr__c2f__interface.html#a1c04fd789a555e4a08d798172a07b2e6',1,'bufr_c2f_interface']]], + ['stntbi_5ff_1233',['stntbi_f',['../bufrlib_8h.html#a6d361bdabcb605e7677b9c29cf7ba10f',1,'bufrlib.h']]], + ['stntbia_1234',['stntbia',['../dxtable_8F90.html#ac0b4a9cb7d5c89dfe084698b9bb4042e',1,'dxtable.F90']]], + ['strbtm_1235',['strbtm',['../bitmaps_8F90.html#a81f55f4b1f740f3ac6e3f56ee0a06dee',1,'bitmaps.F90']]], + ['strcln_1236',['strcln',['../strings_8F90.html#a19c92d247281ffcad8aab45d7debb54f',1,'strings.F90']]], + ['strcpt_1237',['strcpt',['../tankrcpt_8F90.html#a24ba916e2d398ca162381b0d8b3f54fe',1,'tankrcpt.F90']]], + ['string_1238',['string',['../strings_8F90.html#aa3112b3661ec475fe7949d9ae5bafb40',1,'strings.F90']]], + ['strnum_1239',['strnum',['../misc_8F90.html#a93d704d3c84005bb12c261225445a99e',1,'misc.F90']]], + ['strnum_5fc_1240',['strnum_c',['../namespacebufr__c2f__interface.html#af9137b87796fbc3395e596227515c4f2',1,'bufr_c2f_interface']]], + ['strnum_5ff_1241',['strnum_f',['../bufrlib_8h.html#aac0f5146bfdbf7042ac39e515475ba11',1,'bufrlib.h']]], + ['strsuc_1242',['strsuc',['../misc_8F90.html#ab18db8197d0e5256ff5dfd2f26304d28',1,'misc.F90']]], + ['strtbfe_1243',['strtbfe',['../cfe_8c.html#adae7e8dfb5a605b8e8be2c96f3e2be76',1,'cfe.c']]], + ['strtbfe_5fc_1244',['strtbfe_c',['../interfacebufrlib_1_1strtbfe__c.html#ae5f703fa8d04510d2cb00d0ee8a22bc5',1,'bufrlib::strtbfe_c']]], + ['stseq_1245',['stseq',['../bufrlib_8h.html#a4f4c37daea8a69385e280d60265f9d40',1,'stseq(int lun, int *irepct, int idn, char *nemo, char *cseq, int *cdesc, int ncdesc): stseq.c'],['../stseq_8c.html#a4f4c37daea8a69385e280d60265f9d40',1,'stseq(int lun, int *irepct, int idn, char *nemo, char *cseq, int *cdesc, int ncdesc): stseq.c']]], + ['stseq_5fc_1246',['stseq_c',['../interfacebufrlib_1_1stseq__c.html#aab86c1ca1259592cf56c72ac5f4f8870',1,'bufrlib::stseq_c']]] +]; diff --git a/previous_versions/v12.1.0/search/functions_11.html b/previous_versions/v12.1.0/search/functions_11.html new file mode 100644 index 000000000..188076ef2 --- /dev/null +++ b/previous_versions/v12.1.0/search/functions_11.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/functions_11.js b/previous_versions/v12.1.0/search/functions_11.js new file mode 100644 index 000000000..6f028e434 --- /dev/null +++ b/previous_versions/v12.1.0/search/functions_11.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['tabent_1247',['tabent',['../jumplink_8F90.html#a68d977aaaf6f7869b2048ca79723c838',1,'jumplink.F90']]], + ['tabsub_1248',['tabsub',['../jumplink_8F90.html#af1d16fa71d84a333e3448d1081214d2f',1,'jumplink.F90']]], + ['trybump_1249',['trybump',['../readwriteval_8F90.html#a79d01683a99ab7e6a31359c00c317bd8',1,'readwriteval.F90']]] +]; diff --git a/previous_versions/v12.1.0/search/functions_12.html b/previous_versions/v12.1.0/search/functions_12.html new file mode 100644 index 000000000..eb29d8f9a --- /dev/null +++ b/previous_versions/v12.1.0/search/functions_12.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/functions_12.js b/previous_versions/v12.1.0/search/functions_12.js new file mode 100644 index 000000000..0b6be3366 --- /dev/null +++ b/previous_versions/v12.1.0/search/functions_12.js @@ -0,0 +1,48 @@ +var searchData= +[ + ['ufbcnt_1250',['ufbcnt',['../openclosebf_8F90.html#aac1b87fbbb688e4f5e2120012eaee382',1,'openclosebf.F90']]], + ['ufbcpy_1251',['ufbcpy',['../copydata_8F90.html#aed892e851f07fc9bf94a2c58c809c09c',1,'copydata.F90']]], + ['ufbcup_1252',['ufbcup',['../copydata_8F90.html#a6ec0c8f23e362f62f78ba314d6fa8f33',1,'copydata.F90']]], + ['ufbdmp_1253',['ufbdmp',['../dumpdata_8F90.html#ad4fdbfc4ae3890133d9204a881541a1a',1,'dumpdata.F90']]], + ['ufbevn_1254',['ufbevn',['../readwriteval_8F90.html#ad0c9f5c0f8e4dc0e1ebd7c685b9a5ba9',1,'readwriteval.F90']]], + ['ufbget_1255',['ufbget',['../readwriteval_8F90.html#aee2899967d88055f73e4d5ad954d7b5a',1,'readwriteval.F90']]], + ['ufbin3_1256',['ufbin3',['../readwriteval_8F90.html#a1ac6ef2be222bff2bab58e3f58f5d67e',1,'readwriteval.F90']]], + ['ufbint_1257',['ufbint',['../readwriteval_8F90.html#a6eb38e7aa610c36787b90e50b290eea7',1,'readwriteval.F90']]], + ['ufbint_5fc_1258',['ufbint_c',['../namespacebufr__c2f__interface.html#a4d3f0201945123b06c7d198065cf2f67',1,'bufr_c2f_interface']]], + ['ufbint_5ff_1259',['ufbint_f',['../bufr__interface_8h.html#ab6cd4669f077cf7c939d9241614bc075',1,'bufr_interface.h']]], + ['ufbinx_1260',['ufbinx',['../readwriteval_8F90.html#a1d88d30e5ee23d6d86cbfb66537b512f',1,'readwriteval.F90']]], + ['ufbmem_1261',['ufbmem',['../memmsgs_8F90.html#a4959c5f16b679cf4f90b2d5dcfe74247',1,'memmsgs.F90']]], + ['ufbmex_1262',['ufbmex',['../memmsgs_8F90.html#a9072ba79bf636849068780fa6467282c',1,'memmsgs.F90']]], + ['ufbmms_1263',['ufbmms',['../memmsgs_8F90.html#af0432ae9b24903a84c35bcdbbab9b0f6',1,'memmsgs.F90']]], + ['ufbmns_1264',['ufbmns',['../memmsgs_8F90.html#ab44b6a9dd950697675861504ccb24a83',1,'memmsgs.F90']]], + ['ufbovr_1265',['ufbovr',['../readwriteval_8F90.html#a62aacb5a102aaf1ee01deef68c63cdb8',1,'readwriteval.F90']]], + ['ufbpos_1266',['ufbpos',['../readwritesb_8F90.html#a178ebc9cfe70d3119632799fc3db25de',1,'readwritesb.F90']]], + ['ufbqcd_1267',['ufbqcd',['../cftbvs_8F90.html#aa1388284ca8a4e435989e8a6eb551935',1,'cftbvs.F90']]], + ['ufbqcp_1268',['ufbqcp',['../cftbvs_8F90.html#abf6e01afd6c876d1319e25f9d591315b',1,'cftbvs.F90']]], + ['ufbrep_1269',['ufbrep',['../readwriteval_8F90.html#af46dec3ef4cc6f467323b40eb14a4024',1,'readwriteval.F90']]], + ['ufbrep_5fc_1270',['ufbrep_c',['../namespacebufr__c2f__interface.html#a57a1b4956a89ed60a934a02d4140eb93',1,'bufr_c2f_interface']]], + ['ufbrep_5ff_1271',['ufbrep_f',['../bufr__interface_8h.html#a14f7b7994cfecdfa6481cbfd39aed3ce',1,'bufr_interface.h']]], + ['ufbrms_1272',['ufbrms',['../memmsgs_8F90.html#ae3e462b1a3f2d5af01807bdcded6a745',1,'memmsgs.F90']]], + ['ufbrp_1273',['ufbrp',['../readwriteval_8F90.html#a3f676e2267d902f8bc913a6d9d1a6aac',1,'readwriteval.F90']]], + ['ufbrw_1274',['ufbrw',['../readwriteval_8F90.html#a543d19ccf3a36ded022cbbe8db66ee85',1,'readwriteval.F90']]], + ['ufbseq_1275',['ufbseq',['../readwriteval_8F90.html#a4895b24addb0b3e23f5bd92fd891656e',1,'readwriteval.F90']]], + ['ufbseq_5fc_1276',['ufbseq_c',['../namespacebufr__c2f__interface.html#af0b721af91340e7a261e8014455bd6ca',1,'bufr_c2f_interface']]], + ['ufbseq_5ff_1277',['ufbseq_f',['../bufr__interface_8h.html#a6415176e3b48b1de4e98f12ea1baec16',1,'bufr_interface.h']]], + ['ufbsp_1278',['ufbsp',['../readwriteval_8F90.html#a7281bf7fbd6efa3a9be946f7d63cffad',1,'readwriteval.F90']]], + ['ufbstp_1279',['ufbstp',['../readwriteval_8F90.html#a921e4820b81e9f33e28a0d0452785a14',1,'readwriteval.F90']]], + ['ufbtab_1280',['ufbtab',['../openclosebf_8F90.html#ae88bf9794ed98ec79e9de0faff0093af',1,'openclosebf.F90']]], + ['ufbtam_1281',['ufbtam',['../memmsgs_8F90.html#aef5cd104e2b7ce86e852e4878c8efc9d',1,'memmsgs.F90']]], + ['ufdump_1282',['ufdump',['../dumpdata_8F90.html#a20fa33f6e0fcb0816c4b070c73362539',1,'dumpdata.F90']]], + ['up8_1283',['up8',['../cidecode_8F90.html#a9934a3d9c66ea78c7c132066798583f9',1,'cidecode.F90']]], + ['upb_1284',['upb',['../cidecode_8F90.html#a07dda20577f7480095dff261d11241f8',1,'cidecode.F90']]], + ['upb8_1285',['upb8',['../cidecode_8F90.html#a25ce428c1ae2bcb567fc2762fabf4317',1,'cidecode.F90']]], + ['upbb_1286',['upbb',['../cidecode_8F90.html#a243e1ab84f5a36179c0ac05056574257',1,'cidecode.F90']]], + ['upc_1287',['upc',['../cidecode_8F90.html#afef1c199ce8e69b085435b74d68cd337',1,'cidecode.F90']]], + ['upds3_1288',['upds3',['../s013vals_8F90.html#a7bf4d22f9bb27412a9d041f7a5d7bca6',1,'s013vals.F90']]], + ['upftbv_1289',['upftbv',['../cftbvs_8F90.html#ac7a8caa03ed8a2ac40a541762ca7e917',1,'cftbvs.F90']]], + ['ups_1290',['ups',['../cidecode_8F90.html#a414b81ace5368c9bb43fdd19442ebaa5',1,'cidecode.F90']]], + ['uptdd_1291',['uptdd',['../dxtable_8F90.html#aeec2544ee0e0d8587c6687cda7023e54',1,'dxtable.F90']]], + ['uptdd_5fc_1292',['uptdd_c',['../namespacebufr__c2f__interface.html#aa3ea9ef5bab8e3ceb1118f0e8cafaeea',1,'bufr_c2f_interface']]], + ['uptdd_5ff_1293',['uptdd_f',['../bufrlib_8h.html#af730245754e061e8dd5f7d77f0310f8b',1,'bufrlib.h']]], + ['usrtpl_1294',['usrtpl',['../readwritesb_8F90.html#a470af56bdf10d0b31292b0edac067597',1,'readwritesb.F90']]] +]; diff --git a/previous_versions/v12.1.0/search/functions_13.html b/previous_versions/v12.1.0/search/functions_13.html new file mode 100644 index 000000000..3da2ea69c --- /dev/null +++ b/previous_versions/v12.1.0/search/functions_13.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/functions_13.js b/previous_versions/v12.1.0/search/functions_13.js new file mode 100644 index 000000000..2c6f21325 --- /dev/null +++ b/previous_versions/v12.1.0/search/functions_13.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['wrcmps_1295',['wrcmps',['../compress_8F90.html#a6936aeb7f52ecaaa76047564005946d9',1,'compress.F90']]], + ['wrdesc_1296',['wrdesc',['../restd_8c.html#ab9426972c9b597e6b7382b00416dd572',1,'restd.c']]], + ['wrdxtb_1297',['wrdxtb',['../dxtable_8F90.html#a81ea6d2408950b5728790bc8f8c80261',1,'dxtable.F90']]], + ['writcp_1298',['writcp',['../compress_8F90.html#a52810a80e6afe9d44c454fe1c81a7f81',1,'compress.F90']]], + ['writdx_1299',['writdx',['../dxtable_8F90.html#ac8141d6ac66d21c3fd2be3251a6a40c3',1,'dxtable.F90']]], + ['writlc_1300',['writlc',['../readwriteval_8F90.html#aecfa08f631e1af46b472c007b93b2955',1,'readwriteval.F90']]], + ['writsa_1301',['writsa',['../readwritesb_8F90.html#a4b62a40d2c2860279670bf59a68e8204',1,'readwritesb.F90']]], + ['writsb_1302',['writsb',['../readwritesb_8F90.html#aa2218d1cd25f8d558448bdc3061b3a04',1,'readwritesb.F90']]], + ['wrtree_1303',['wrtree',['../readwritesb_8F90.html#a2324e7f253ba3ad6209d7ab0fce5bc0e',1,'readwritesb.F90']]], + ['wtstat_1304',['wtstat',['../openclosebf_8F90.html#ada4363a068f7df043d75b4519c55142f',1,'openclosebf.F90']]] +]; diff --git a/previous_versions/v12.1.0/search/functions_14.html b/previous_versions/v12.1.0/search/functions_14.html new file mode 100644 index 000000000..29237b44c --- /dev/null +++ b/previous_versions/v12.1.0/search/functions_14.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/functions_14.js b/previous_versions/v12.1.0/search/functions_14.js new file mode 100644 index 000000000..e9e85d94b --- /dev/null +++ b/previous_versions/v12.1.0/search/functions_14.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['x48_1305',['x48',['../x4884_8F90.html#a5b19b8932da48639e6bcaeefc4d03bfb',1,'x4884.F90']]], + ['x84_1306',['x84',['../x4884_8F90.html#aa1e012dbd8da45797592cc65a399d71d',1,'x4884.F90']]] +]; diff --git a/previous_versions/v12.1.0/search/functions_2.html b/previous_versions/v12.1.0/search/functions_2.html new file mode 100644 index 000000000..ca5aa10e6 --- /dev/null +++ b/previous_versions/v12.1.0/search/functions_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/functions_2.js b/previous_versions/v12.1.0/search/functions_2.js new file mode 100644 index 000000000..6052c5827 --- /dev/null +++ b/previous_versions/v12.1.0/search/functions_2.js @@ -0,0 +1,50 @@ +var searchData= +[ + ['cadn30_914',['cadn30',['../fxy_8F90.html#a438b8634d4f1308ee086a8f323662d2c',1,'fxy.F90']]], + ['cadn30_5fc_915',['cadn30_c',['../namespacebufr__c2f__interface.html#a6a463f38336dcbedb5f125a242f69eb5',1,'bufr_c2f_interface']]], + ['cadn30_5ff_916',['cadn30_f',['../bufrlib_8h.html#a039293342a5ca4fe52a09992db5e42c9',1,'bufrlib.h']]], + ['capit_917',['capit',['../misc_8F90.html#abb1e33496bab2eb5a1c93f44173f57ea',1,'misc.F90']]], + ['ccbfl_918',['ccbfl',['../crwbmg_8c.html#ab66668ab9633ce3b475416f6a9899802',1,'ccbfl(void): crwbmg.c'],['../bufr__interface_8h.html#ab66668ab9633ce3b475416f6a9899802',1,'ccbfl(void): crwbmg.c']]], + ['ccbfl_5fc_919',['ccbfl_c',['../interfacebufr__interface_1_1ccbfl__c.html#a465bb0ca48168a8a39e63a8a6389fbe8',1,'bufr_interface::ccbfl_c']]], + ['cewind_920',['cewind',['../cread_8c.html#afffb1b48f2c7d82abebcf2564d47438a',1,'cewind(int nfile): cread.c'],['../bufrlib_8h.html#afffb1b48f2c7d82abebcf2564d47438a',1,'cewind(int nfile): cread.c']]], + ['cewind_5fc_921',['cewind_c',['../interfacebufrlib_1_1cewind__c.html#ade24db84a56b90d1c86b15e87191155b',1,'bufrlib::cewind_c']]], + ['chekstab_922',['chekstab',['../jumplink_8F90.html#aca151bb247903f60a7b1a76578db1ed5',1,'jumplink.F90']]], + ['cktaba_923',['cktaba',['../s013vals_8F90.html#a1f8f8b7d0f3b0eb6042e170c0c84c18f',1,'s013vals.F90']]], + ['closbf_924',['closbf',['../openclosebf_8F90.html#a48a49bb82348400c1ba6af00c0138ab3',1,'openclosebf.F90']]], + ['closbf_5fc_925',['closbf_c',['../namespacebufr__c2f__interface.html#a3ac93c0105f2d2e934b5fa1f6581c02d',1,'bufr_c2f_interface']]], + ['closbf_5ff_926',['closbf_f',['../bufr__interface_8h.html#a019047beca19815d95ea0a78993b7e2a',1,'bufr_interface.h']]], + ['close_5fc_927',['close_c',['../namespacebufr__c2f__interface.html#a3c7ddfd5eb36a9904e9886e2d04bfdf3',1,'bufr_c2f_interface']]], + ['close_5ff_928',['close_f',['../bufr__interface_8h.html#ab0f41346d672e0fb0311bd658b867249',1,'bufr_interface.h']]], + ['closfb_929',['closfb',['../bufrlib_8h.html#a7b13da152c5a09e0fc1c92d8eb41154b',1,'closfb(int nfile): cread.c'],['../cread_8c.html#a7b13da152c5a09e0fc1c92d8eb41154b',1,'closfb(int nfile): cread.c']]], + ['closfb_5fc_930',['closfb_c',['../interfacebufrlib_1_1closfb__c.html#ae18afec62d70c123a3224c75919c533f',1,'bufrlib::closfb_c']]], + ['closmg_931',['closmg',['../readwritemg_8F90.html#a63b37b74d9833df9d99e3937a2fa293a',1,'readwritemg.F90']]], + ['cmpbqm_932',['cmpbqm',['../cmpbqm_8F90.html#a757321e44a7c476abf5e5fb85384b7da',1,'cmpbqm.F90']]], + ['cmpia_933',['cmpia',['../stseq_8c.html#afe9ff1cb9d09192a6d0c76f58c2e3f29',1,'stseq.c']]], + ['cmpmsg_934',['cmpmsg',['../compress_8F90.html#a8d1905b269c7cd75ff1a451a0550a84e',1,'compress.F90']]], + ['cmpmsg_5ff_935',['cmpmsg_f',['../bufr__interface_8h.html#afcec73b988e42cfd8d10f734f6606128',1,'bufr_interface.h']]], + ['cmpstia1_936',['cmpstia1',['../cfe_8c.html#a7211d196317c36365a40a128875d5041',1,'cfe.c']]], + ['cmpstia2_937',['cmpstia2',['../cfe_8c.html#a54e09962aa43b61717212a2702be33c8',1,'cfe.c']]], + ['cmsgini_938',['cmsgini',['../compress_8F90.html#a3475e3a5a5079d96f47d2e49db98a1a6',1,'compress.F90']]], + ['cnved4_939',['cnved4',['../readwritemg_8F90.html#adc65969dd9c1cedbab0425827e241963',1,'readwritemg.F90']]], + ['cobfl_940',['cobfl',['../bufr__interface_8h.html#a1a79689096002f6f3c125abc59c2143d',1,'cobfl(char *bfl, char io): crwbmg.c'],['../crwbmg_8c.html#a1a79689096002f6f3c125abc59c2143d',1,'cobfl(char *bfl, char io): crwbmg.c']]], + ['cobfl_5fc_941',['cobfl_c',['../interfacebufr__interface_1_1cobfl__c.html#ae36eb00a741323dd644b1d59eaa2d20e',1,'bufr_interface::cobfl_c']]], + ['codflg_942',['codflg',['../mastertable_8F90.html#a4721c745ebeb6be54c825cd1f53ec107',1,'mastertable.F90']]], + ['conwin_943',['conwin',['../jumplink_8F90.html#ac33dc42cbccbf054fa1c72b4bed5e90e',1,'jumplink.F90']]], + ['copybf_944',['copybf',['../copydata_8F90.html#a6df688983642d7845688aba3819c847e',1,'copydata.F90']]], + ['copymg_945',['copymg',['../copydata_8F90.html#aedfe2559c1f9c59ec85c11993b378e7e',1,'copydata.F90']]], + ['copysb_946',['copysb',['../copydata_8F90.html#a81eba6ff34f0a5020bf311ccf24d8efc',1,'copydata.F90']]], + ['cpbfdx_947',['cpbfdx',['../copydata_8F90.html#a352b4ac3adf31bada79d4d8672f0b800',1,'copydata.F90']]], + ['cpdxmm_948',['cpdxmm',['../memmsgs_8F90.html#a28854648f33f49aaeb3b2209e00c0ae7',1,'memmsgs.F90']]], + ['cpmstabs_949',['cpmstabs',['../cpmstabs_8c.html#ab993a0c7a1d8c4c04fb7006f6253025c',1,'cpmstabs.c']]], + ['cpmstabs_5fc_950',['cpmstabs_c',['../interfacebufrlib_1_1cpmstabs__c.html#a92cd23a27aa89d15a186d93a87c3973d',1,'bufrlib::cpmstabs_c']]], + ['cpymem_951',['cpymem',['../copydata_8F90.html#ad102179380a6543e1ec7af4c1ba1fdde',1,'copydata.F90']]], + ['cpyupd_952',['cpyupd',['../copydata_8F90.html#a9441a5be99c4a359ce4f2798037a2ea1',1,'copydata.F90']]], + ['crbmg_953',['crbmg',['../bufr__interface_8h.html#a8e937daaf4fe2e1c74c3f8754bcce048',1,'crbmg(char *bmg, int mxmb, int *nmb, int *iret): crwbmg.c'],['../crwbmg_8c.html#a8e937daaf4fe2e1c74c3f8754bcce048',1,'crbmg(char *bmg, int mxmb, int *nmb, int *iret): crwbmg.c']]], + ['crbmg_5fc_954',['crbmg_c',['../interfacebufr__interface_1_1crbmg__c.html#a2032b00ac9a4d3230ce8f78b127f3311',1,'bufr_interface::crbmg_c']]], + ['crdbufr_955',['crdbufr',['../bufrlib_8h.html#a8b09f32462059d646e44ea6098a08edc',1,'crdbufr(int nfile, int *bufr, int mxwrd): cread.c'],['../cread_8c.html#a8b09f32462059d646e44ea6098a08edc',1,'crdbufr(int nfile, int *bufr, int mxwrd): cread.c']]], + ['crdbufr_5fc_956',['crdbufr_c',['../interfacebufrlib_1_1crdbufr__c.html#a76d41777024e3548a35d948dd9a1c5b9',1,'bufrlib::crdbufr_c']]], + ['cwbmg_957',['cwbmg',['../bufr__interface_8h.html#a3ccf1d9c69d9b23a3906d3f7b5ab743d',1,'cwbmg(char *bmg, int nmb, int *iret): crwbmg.c'],['../crwbmg_8c.html#a3ccf1d9c69d9b23a3906d3f7b5ab743d',1,'cwbmg(char *bmg, int nmb, int *iret): crwbmg.c']]], + ['cwbmg_5fc_958',['cwbmg_c',['../interfacebufr__interface_1_1cwbmg__c.html#a239dcd549ee24ca912e161e76619e113',1,'bufr_interface::cwbmg_c']]], + ['cwrbufr_959',['cwrbufr',['../bufrlib_8h.html#a95bc32869561911e9ca020628802edc5',1,'cwrbufr(int nfile, int *bufr, int nwrd): cread.c'],['../cread_8c.html#a95bc32869561911e9ca020628802edc5',1,'cwrbufr(int nfile, int *bufr, int nwrd): cread.c']]], + ['cwrbufr_5fc_960',['cwrbufr_c',['../interfacebufrlib_1_1cwrbufr__c.html#a1d2dfb6006e32a86cdfb81aab4693978',1,'bufrlib::cwrbufr_c']]] +]; diff --git a/previous_versions/v12.1.0/search/functions_3.html b/previous_versions/v12.1.0/search/functions_3.html new file mode 100644 index 000000000..d79f55b8e --- /dev/null +++ b/previous_versions/v12.1.0/search/functions_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/functions_3.js b/previous_versions/v12.1.0/search/functions_3.js new file mode 100644 index 000000000..a621cef38 --- /dev/null +++ b/previous_versions/v12.1.0/search/functions_3.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['datebf_961',['datebf',['../s013vals_8F90.html#a311f8836440703db774ee651425337b4',1,'s013vals.F90']]], + ['datelen_962',['datelen',['../s013vals_8F90.html#aadd84c217cf5fab0d94564da3f377ebe',1,'s013vals.F90']]], + ['delete_5ftable_5fdata_5fc_963',['delete_table_data_c',['../namespacebufr__c2f__interface.html#ab653ca4701372fddd02deddbd1b8d88e',1,'bufr_c2f_interface']]], + ['delete_5ftable_5fdata_5ff_964',['delete_table_data_f',['../bufr__interface_8h.html#ad6cb83d29d8f619e380f8a098b2c6426',1,'bufr_interface.h']]], + ['dlloctbf_965',['dlloctbf',['../cfe_8c.html#a1242c4d43753a37cdb9abfb3f01e5583',1,'cfe.c']]], + ['dlloctbf_5fc_966',['dlloctbf_c',['../interfacebufr__interface_1_1dlloctbf__c.html#a1391c5c6cddcc5daba0327f8a1b563e6',1,'bufr_interface::dlloctbf_c']]], + ['drfini_967',['drfini',['../readwriteval_8F90.html#a8a84d615371869d93f16c8617575dee2',1,'readwriteval.F90']]], + ['drstpl_968',['drstpl',['../jumplink_8F90.html#a1f74d80135fda2ac50f57d99645d2853',1,'jumplink.F90']]], + ['dumpbf_969',['dumpbf',['../s013vals_8F90.html#ac2e40c9d462d2855dd693d9498f55342',1,'s013vals.F90']]], + ['dxdump_970',['dxdump',['../dumpdata_8F90.html#ac693ae3d5af0a71505d5f9305c86fdb8',1,'dumpdata.F90']]], + ['dxinit_971',['dxinit',['../dxtable_8F90.html#ae1a2a7cf7f60579fa9e9399a25f4930b',1,'dxtable.F90']]], + ['dxmini_972',['dxmini',['../dxtable_8F90.html#a30167b1b9b52074ad5db11d45665d551',1,'dxtable.F90']]] +]; diff --git a/previous_versions/v12.1.0/search/functions_4.html b/previous_versions/v12.1.0/search/functions_4.html new file mode 100644 index 000000000..1657cad0d --- /dev/null +++ b/previous_versions/v12.1.0/search/functions_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/functions_4.js b/previous_versions/v12.1.0/search/functions_4.js new file mode 100644 index 000000000..8862d5f74 --- /dev/null +++ b/previous_versions/v12.1.0/search/functions_4.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['elemdx_973',['elemdx',['../dxtable_8F90.html#a0669d7561ae99961babcdb2022073052',1,'dxtable.F90']]], + ['elemdx_5fc_974',['elemdx_c',['../namespacebufr__c2f__interface.html#a9f5656efe692227be66cfc8e50e24241',1,'bufr_c2f_interface']]], + ['elemdx_5ff_975',['elemdx_f',['../bufrlib_8h.html#a39fc8b2494bb5f754c2d800c4b5a2f1c',1,'bufrlib.h']]], + ['errwrt_976',['errwrt',['../errwrt_8F90.html#a9c4c22af6c77235db8ddd7f41594f543',1,'errwrt.F90']]], + ['exitbufr_977',['exitbufr',['../arallocf_8F90.html#a355f094d616febcea2820cf547cbff8e',1,'arallocf.F90']]], + ['exitbufr_5fc_978',['exitbufr_c',['../namespacebufr__c2f__interface.html#a5fc80078fb40ff91f250dbb9edb247ab',1,'bufr_c2f_interface']]], + ['exitbufr_5ff_979',['exitbufr_f',['../bufr__interface_8h.html#ac29807d9e7404a4602d03a04a9d4f2a6',1,'bufr_interface.h']]] +]; diff --git a/previous_versions/v12.1.0/search/functions_5.html b/previous_versions/v12.1.0/search/functions_5.html new file mode 100644 index 000000000..9301d6b9c --- /dev/null +++ b/previous_versions/v12.1.0/search/functions_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/functions_5.js b/previous_versions/v12.1.0/search/functions_5.js new file mode 100644 index 000000000..bda2733dd --- /dev/null +++ b/previous_versions/v12.1.0/search/functions_5.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['fdebufr_5fc_980',['fdebufr_c',['../debufr_8F90.html#abd70421a18d899bec6fbdade1262dd0b',1,'debufr.F90']]], + ['fdebufr_5ff_981',['fdebufr_f',['../debufr_8c.html#a834922eb8174316cd235a552c2456279',1,'debufr.c']]], + ['fortran_5fclose_982',['fortran_close',['../openclosebf_8F90.html#aa585324fae3ecf559d6f39507dde6715',1,'openclosebf.F90']]], + ['fortran_5fopen_983',['fortran_open',['../openclosebf_8F90.html#a80df0d62e629b094edd2b3682a7d9e3a',1,'openclosebf.F90']]], + ['fstag_984',['fstag',['../jumplink_8F90.html#a1587e1818caf4b04f1afc556c5c9813b',1,'jumplink.F90']]] +]; diff --git a/previous_versions/v12.1.0/search/functions_6.html b/previous_versions/v12.1.0/search/functions_6.html new file mode 100644 index 000000000..9c4f5fc65 --- /dev/null +++ b/previous_versions/v12.1.0/search/functions_6.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/functions_6.js b/previous_versions/v12.1.0/search/functions_6.js new file mode 100644 index 000000000..b8230adc0 --- /dev/null +++ b/previous_versions/v12.1.0/search/functions_6.js @@ -0,0 +1,37 @@ +var searchData= +[ + ['get_5finode_5fc_985',['get_inode_c',['../namespacebufr__c2f__interface.html#ab1ced3757361e769756fee2f722de32f',1,'bufr_c2f_interface']]], + ['get_5finode_5ff_986',['get_inode_f',['../bufr__interface_8h.html#a199803bddb330f484dd49b72c75dc32d',1,'bufr_interface.h']]], + ['get_5finv_5fc_987',['get_inv_c',['../namespacebufr__c2f__interface.html#a60f38d89e2da19b4396ca8c3ec8ffff6',1,'bufr_c2f_interface']]], + ['get_5finv_5ff_988',['get_inv_f',['../bufr__interface_8h.html#a8346d95d25b2f8c7437ee96419020992',1,'bufr_interface.h']]], + ['get_5firf_5fc_989',['get_irf_c',['../namespacebufr__c2f__interface.html#af73382fa68e368c201131fd89d1be252',1,'bufr_c2f_interface']]], + ['get_5firf_5ff_990',['get_irf_f',['../bufr__interface_8h.html#aec42e6ee4877ea5fc031677127869ec5',1,'bufr_interface.h']]], + ['get_5fisc_5fc_991',['get_isc_c',['../namespacebufr__c2f__interface.html#a020cf7bcf489ecc2ade71dfa4b7db102',1,'bufr_c2f_interface']]], + ['get_5fisc_5ff_992',['get_isc_f',['../bufr__interface_8h.html#aa13a0b52198dfc0dad84648ef917a68e',1,'bufr_interface.h']]], + ['get_5fitp_5fc_993',['get_itp_c',['../namespacebufr__c2f__interface.html#adffb9acbdd17d4ef3f35baee918c733d',1,'bufr_c2f_interface']]], + ['get_5fitp_5ff_994',['get_itp_f',['../bufr__interface_8h.html#aef4319ad66d2549ac7b1dd8e1bfad1e3',1,'bufr_interface.h']]], + ['get_5fjmpb_5fc_995',['get_jmpb_c',['../namespacebufr__c2f__interface.html#aa9ab4e0c2b6bc184aa70d7a36ac6114f',1,'bufr_c2f_interface']]], + ['get_5fjmpb_5ff_996',['get_jmpb_f',['../bufr__interface_8h.html#a0770faf842091c86b98ebb982d307e3e',1,'bufr_interface.h']]], + ['get_5flink_5fc_997',['get_link_c',['../namespacebufr__c2f__interface.html#ac9e08232d75383f1f64a36b9834598c9',1,'bufr_c2f_interface']]], + ['get_5flink_5ff_998',['get_link_f',['../bufr__interface_8h.html#a8ccb25b1780ea712c9842f31eeb8ac88',1,'bufr_interface.h']]], + ['get_5fnval_5fc_999',['get_nval_c',['../namespacebufr__c2f__interface.html#a124b885560b4d31170993c7921f55503',1,'bufr_c2f_interface']]], + ['get_5fnval_5ff_1000',['get_nval_f',['../bufr__interface_8h.html#a16e731ede9b1aa2a2bf7c1c3c86825e2',1,'bufr_interface.h']]], + ['get_5ftag_5fc_1001',['get_tag_c',['../namespacebufr__c2f__interface.html#a6515df3d0f5fdcccd422fcac3b2f700a',1,'bufr_c2f_interface']]], + ['get_5ftag_5ff_1002',['get_tag_f',['../bufr__interface_8h.html#a82130f6d92d0df75a5cbc7f834a11cca',1,'bufr_interface.h']]], + ['get_5ftyp_5fc_1003',['get_typ_c',['../namespacebufr__c2f__interface.html#a86ce772b48d76dc923f9ae87dfd44102',1,'bufr_c2f_interface']]], + ['get_5ftyp_5ff_1004',['get_typ_f',['../bufr__interface_8h.html#a8bb1e631318d1ae291e22ba3df7989b3',1,'bufr_interface.h']]], + ['get_5fval_5fc_1005',['get_val_c',['../namespacebufr__c2f__interface.html#af7e6742b654813bd1922947049c42a54',1,'bufr_c2f_interface']]], + ['get_5fval_5ff_1006',['get_val_f',['../bufr__interface_8h.html#a420c47e8f063dcea1d5dd909567d65e1',1,'bufr_interface.h']]], + ['getabdb_1007',['getabdb',['../dumpdata_8F90.html#aa267dbf23e18a201eec17e2fa48238d7',1,'dumpdata.F90']]], + ['getbmiss_1008',['getbmiss',['../missing_8F90.html#a2e6035695a459284e0592a2452b2f168',1,'missing.F90']]], + ['getcfmng_1009',['getcfmng',['../cftbvs_8F90.html#af113e7ee7e2023cd466c2b28616cd64a',1,'cftbvs.F90']]], + ['getlens_1010',['getlens',['../readwritemg_8F90.html#ab6c6c3d1925977e2c4013b3da342dc37',1,'readwritemg.F90']]], + ['getntbe_1011',['getntbe',['../mastertable_8F90.html#a57b7efae38f8e79ba76fe5c8fff18f2a',1,'mastertable.F90']]], + ['gets1loc_1012',['gets1loc',['../s013vals_8F90.html#a867795708832230010199b5a31f687a8',1,'s013vals.F90']]], + ['gettab_1013',['gettab',['../gettab_8F90.html#ac9eda42ec8bf46baae0a4f34cd517813',1,'gettab.F90']]], + ['gettagpr_1014',['gettagpr',['../jumplink_8F90.html#aff303b3e9951ce71da6c66ae5e0d76bf',1,'jumplink.F90']]], + ['gettagre_1015',['gettagre',['../bitmaps_8F90.html#a867a81be072effc2a9d2de0d6031e264',1,'bitmaps.F90']]], + ['gettbh_1016',['gettbh',['../mastertable_8F90.html#ab8f682eb706037e99550eeedb3e8c963',1,'mastertable.F90']]], + ['getvalnb_1017',['getvalnb',['../readwriteval_8F90.html#a10cd831e6dc0a773534c5c2787da56c8',1,'readwriteval.F90']]], + ['getwin_1018',['getwin',['../jumplink_8F90.html#af10a8f5f84135d80474c70f06be65b73',1,'jumplink.F90']]] +]; diff --git a/previous_versions/v12.1.0/search/functions_7.html b/previous_versions/v12.1.0/search/functions_7.html new file mode 100644 index 000000000..46b5c0f61 --- /dev/null +++ b/previous_versions/v12.1.0/search/functions_7.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/functions_7.js b/previous_versions/v12.1.0/search/functions_7.js new file mode 100644 index 000000000..477aa1dae --- /dev/null +++ b/previous_versions/v12.1.0/search/functions_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['hold4wlc_1019',['hold4wlc',['../readwriteval_8F90.html#a551fbe590397eacf06bb471b738dd6a5',1,'readwriteval.F90']]] +]; diff --git a/previous_versions/v12.1.0/search/functions_8.html b/previous_versions/v12.1.0/search/functions_8.html new file mode 100644 index 000000000..31a1d9503 --- /dev/null +++ b/previous_versions/v12.1.0/search/functions_8.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/functions_8.js b/previous_versions/v12.1.0/search/functions_8.js new file mode 100644 index 000000000..f4a2856a9 --- /dev/null +++ b/previous_versions/v12.1.0/search/functions_8.js @@ -0,0 +1,76 @@ +var searchData= +[ + ['i4dy_1020',['i4dy',['../s013vals_8F90.html#ada4930358eb16c05c65c2df068db90c1',1,'s013vals.F90']]], + ['ibfms_1021',['ibfms',['../missing_8F90.html#a7dd66484c8bf4dd8d8e3791d02715e86',1,'missing.F90']]], + ['ibfms_5fc_1022',['ibfms_c',['../namespacebufr__c2f__interface.html#a437d60612140092ed5cea7516b5b093c',1,'bufr_c2f_interface']]], + ['ibfms_5ff_1023',['ibfms_f',['../bufr__interface_8h.html#a94577bfb670f48d514886ffa9476277c',1,'bufr_interface.h']]], + ['icbfms_1024',['icbfms',['../missing_8F90.html#a5f3cd824b4ddd60e635ec591d285b23f',1,'missing.F90']]], + ['icmpdx_1025',['icmpdx',['../jumplink_8F90.html#aa8ae055da512a9259d4f248b3ccdb5e8',1,'jumplink.F90']]], + ['icopysb_1026',['icopysb',['../copydata_8F90.html#a31b6d67aacae28998cab9d130d39e7a2',1,'copydata.F90']]], + ['icvidx_1027',['icvidx',['../icvidx_8c.html#ab3b665adb5a53a4c82d3c5caadbb2c38',1,'icvidx(int ii, int jj, int numjj): icvidx.c'],['../bufrlib_8h.html#ab3b665adb5a53a4c82d3c5caadbb2c38',1,'icvidx(int ii, int jj, int numjj): icvidx.c']]], + ['icvidx_5fc_1028',['icvidx_c',['../interfacebufrlib_1_1icvidx__c.html#a9e16a712324edc13188f650d138f0ec0',1,'bufrlib::icvidx_c']]], + ['idn30_1029',['idn30',['../fxy_8F90.html#ac17b9bb050c7279594284b063390dc55',1,'fxy.F90']]], + ['idxmsg_1030',['idxmsg',['../dxtable_8F90.html#aea259cd399ca3121a66475a2ea73ec65',1,'dxtable.F90']]], + ['ifbget_1031',['ifbget',['../readwritemg_8F90.html#abb1acb6092b6e1f49737498c1f76f0d0',1,'readwritemg.F90']]], + ['ifxy_1032',['ifxy',['../fxy_8F90.html#ae3b70fcfea3c6201ad415fad4c4d375e',1,'fxy.F90']]], + ['ifxy_5fc_1033',['ifxy_c',['../namespacebufr__c2f__interface.html#a081831085335c5a2d1a60040bf4a68b6',1,'bufr_c2f_interface']]], + ['ifxy_5ff_1034',['ifxy_f',['../bufrlib_8h.html#a9941f6596dafba1e4361eb2f5e173f24',1,'bufrlib.h']]], + ['igetdate_1035',['igetdate',['../s013vals_8F90.html#aedbe120baa1a1058174325c5e2d0e487',1,'s013vals.F90']]], + ['igetfxy_1036',['igetfxy',['../fxy_8F90.html#ad6db7a4654e1d26530c1fe4bdfb29ad9',1,'fxy.F90']]], + ['igetmxby_1037',['igetmxby',['../readwritemg_8F90.html#a87f1117bcbbc713c95bdca6f1bb1214c',1,'readwritemg.F90']]], + ['igetmxby_5fc_1038',['igetmxby_c',['../namespacebufr__c2f__interface.html#af1cdfa1f4b3b097464a0bcd4da3ddeeb',1,'bufr_c2f_interface']]], + ['igetmxby_5ff_1039',['igetmxby_f',['../bufr__interface_8h.html#a6d0a0985ac16769f70756c7a741184d4',1,'bufr_interface.h']]], + ['igetntbi_1040',['igetntbi',['../dxtable_8F90.html#ad7abde76f89f036b69d944c260fbe2d4',1,'dxtable.F90']]], + ['igetntbi_5fc_1041',['igetntbi_c',['../namespacebufr__c2f__interface.html#a558946e761c0246444bcd3c2fcdcb37e',1,'bufr_c2f_interface']]], + ['igetntbi_5ff_1042',['igetntbi_f',['../bufrlib_8h.html#ad32acb7e25a0763d1ecfa201884bc131',1,'bufrlib.h']]], + ['igetntbl_1043',['igetntbl',['../mastertable_8F90.html#a8d9fae4a86fb1a4db715788bd73071cf',1,'mastertable.F90']]], + ['igetprm_1044',['igetprm',['../arallocf_8F90.html#a222fe99cf2ad84fe3166a498ef20c9ce',1,'arallocf.F90']]], + ['igetprm_5fc_1045',['igetprm_c',['../namespacebufr__c2f__interface.html#a32a449b5c117d53b4b4374dd0e8bea8b',1,'bufr_c2f_interface']]], + ['igetprm_5ff_1046',['igetprm_f',['../bufr__interface_8h.html#a0b06d7dc9ae1ba6147ad0f1ea3d359bb',1,'bufr_interface.h']]], + ['igetrfel_1047',['igetrfel',['../bitmaps_8F90.html#a2dd600ba6cd71e06a19d88956337781b',1,'bitmaps.F90']]], + ['igetsc_1048',['igetsc',['../misc_8F90.html#a5b379fcc508f3f50fa71042b8e3645af',1,'misc.F90']]], + ['igettdi_1049',['igettdi',['../mastertable_8F90.html#a5ef341975ece8b54885d7518d30d7a99',1,'mastertable.F90']]], + ['igettdi_5fc_1050',['igettdi_c',['../namespacebufr__c2f__interface.html#a606519361d6b6db6e153fd809387399d',1,'bufr_c2f_interface']]], + ['igettdi_5ff_1051',['igettdi_f',['../bufrlib_8h.html#a0320e66350174c1e05f30babd13d52c2',1,'bufrlib.h']]], + ['imrkopr_1052',['imrkopr',['../bitmaps_8F90.html#ad95571bf5308d6b64163d3bcc7ea3512',1,'bitmaps.F90']]], + ['imrkopr_5fc_1053',['imrkopr_c',['../namespacebufr__c2f__interface.html#aa7df2e3f4575affeab5df95d00aad75f',1,'bufr_c2f_interface']]], + ['imrkopr_5ff_1054',['imrkopr_f',['../bufrlib_8h.html#a3e533930a6aa9c6fc76c89d14e54cf47',1,'bufrlib.h']]], + ['inctab_1055',['inctab',['../jumplink_8F90.html#a5459f5cd4813acaa5e695c650a77eeca',1,'jumplink.F90']]], + ['inittbf_1056',['inittbf',['../cfe_8c.html#aa06057bdd5b8456df9b33ec96a5cc57e',1,'cfe.c']]], + ['inittbf_5fc_1057',['inittbf_c',['../interfacebufrlib_1_1inittbf__c.html#af4870e73ac56c18850786a9c6f5d6ff8',1,'bufrlib::inittbf_c']]], + ['invcon_1058',['invcon',['../jumplink_8F90.html#a44e33584f368731a2373831f207a527d',1,'jumplink.F90']]], + ['invmrg_1059',['invmrg',['../readwritesb_8F90.html#aa926be9632b9da3990e2591f0386ee94',1,'readwritesb.F90']]], + ['invtag_1060',['invtag',['../jumplink_8F90.html#a77a6346a03867a7e65e984ee34de3d91',1,'jumplink.F90']]], + ['invwin_1061',['invwin',['../jumplink_8F90.html#ab4cc1160c451fcd8709a46f32515ca3c',1,'jumplink.F90']]], + ['iok2cpy_1062',['iok2cpy',['../copydata_8F90.html#a23f9925bf37d99fd855fd80cf5750ee2',1,'copydata.F90']]], + ['iokoper_1063',['iokoper',['../misc_8F90.html#a1bc01a10f226d09971ab1a3b0d3734bf',1,'misc.F90']]], + ['ipkm_1064',['ipkm',['../ciencode_8F90.html#a8e976b63f679f03590d7c3cb5b5dee59',1,'ciencode.F90']]], + ['ipks_1065',['ipks',['../ciencode_8F90.html#a7501045242bc6174585e20be99d3d269',1,'ciencode.F90']]], + ['ireadmg_1066',['ireadmg',['../readwritemg_8F90.html#ae023a7cc381f488ac7669dc3e3ee8236',1,'readwritemg.F90']]], + ['ireadmg_5fc_1067',['ireadmg_c',['../namespacebufr__c2f__interface.html#a31bb70cc0fe1b242d4dee68ed843391b',1,'bufr_c2f_interface']]], + ['ireadmg_5ff_1068',['ireadmg_f',['../bufr__interface_8h.html#a9217e24780915325fb8fdea549015c96',1,'bufr_interface.h']]], + ['ireadmm_1069',['ireadmm',['../memmsgs_8F90.html#afa09c66c60b22359e9642fa6eee8fcbb',1,'memmsgs.F90']]], + ['ireadmt_1070',['ireadmt',['../mastertable_8F90.html#adde6acff18af3673cd9ef45b7ec12833',1,'mastertable.F90']]], + ['ireadns_1071',['ireadns',['../readwritesb_8F90.html#a8a621b1996440ed233c796e49c8971f3',1,'readwritesb.F90']]], + ['ireadns_5fc_1072',['ireadns_c',['../namespacebufr__c2f__interface.html#a89153453f5db4c56685d3b309a517da7',1,'bufr_c2f_interface']]], + ['ireadns_5ff_1073',['ireadns_f',['../bufr__interface_8h.html#ac23fc2c4b19fcc7f617e17d93c59eb7f',1,'bufr_interface.h']]], + ['ireadsb_1074',['ireadsb',['../readwritesb_8F90.html#aae33d6dd74331ba0a2a34ba22e8e56ab',1,'readwritesb.F90']]], + ['ireadsb_5fc_1075',['ireadsb_c',['../namespacebufr__c2f__interface.html#ac349c058a2cd324d8cfe5a85ebf2acb1',1,'bufr_c2f_interface']]], + ['ireadsb_5ff_1076',['ireadsb_f',['../bufr__interface_8h.html#a707ed94f1807e145055b97b19f5b3fcb',1,'bufr_interface.h']]], + ['irev_1077',['irev',['../misc_8F90.html#a1cd5e68cc460b388986ba7273abdd689',1,'misc.F90']]], + ['isetprm_1078',['isetprm',['../arallocf_8F90.html#a4a77f5d91e7900692757350632f71ff0',1,'arallocf.F90']]], + ['isetprm_5fc_1079',['isetprm_c',['../namespacebufr__c2f__interface.html#ad1dcef9962b409b6448c928d0dfb9490',1,'bufr_c2f_interface']]], + ['isetprm_5ff_1080',['isetprm_f',['../bufr__interface_8h.html#a0795b7713ffc4ca11e692932d807038c',1,'bufr_interface.h']]], + ['ishrdx_1081',['ishrdx',['../jumplink_8F90.html#af13fb1da5f3cb8bafd2c305b6c7234db',1,'jumplink.F90']]], + ['isize_1082',['isize',['../misc_8F90.html#ac720bf9bc96336f8e4bf8120852f094e',1,'misc.F90']]], + ['istdesc_1083',['istdesc',['../standard_8F90.html#af4f78acf5cbb9eda9a8ef03d03030aaf',1,'standard.F90']]], + ['istdesc_5fc_1084',['istdesc_c',['../namespacebufr__c2f__interface.html#a7968999c9eda822f79eec9178762a2ae',1,'bufr_c2f_interface']]], + ['istdesc_5ff_1085',['istdesc_f',['../bufrlib_8h.html#af98949e6ee91a0b77a8f24509401ed2d',1,'bufrlib.h']]], + ['iupb_1086',['iupb',['../cidecode_8F90.html#a73f371d0af1f65ff546e0484ee97238f',1,'cidecode.F90']]], + ['iupbs01_1087',['iupbs01',['../s013vals_8F90.html#a28944a4d73587a3943964a95619cb8a2',1,'s013vals.F90']]], + ['iupbs01_5fc_1088',['iupbs01_c',['../namespacebufr__c2f__interface.html#a583019d0b109031d8f8aedb4d48e2afd',1,'bufr_c2f_interface']]], + ['iupbs01_5ff_1089',['iupbs01_f',['../bufr__interface_8h.html#a45c55e3a4c3b8179f7e3a89714a05d7f',1,'bufr_interface.h']]], + ['iupbs3_1090',['iupbs3',['../s013vals_8F90.html#a6060b7b617646ee396097f20317e2f4d',1,'s013vals.F90']]], + ['iupm_1091',['iupm',['../cidecode_8F90.html#a79f34b3a9df0eedb64115bca8c65ebaa',1,'cidecode.F90']]], + ['iupvs01_1092',['iupvs01',['../s013vals_8F90.html#a3b1a6e580f306826c680ff0a71d883f8',1,'s013vals.F90']]] +]; diff --git a/previous_versions/v12.1.0/search/functions_9.html b/previous_versions/v12.1.0/search/functions_9.html new file mode 100644 index 000000000..9a8e4290c --- /dev/null +++ b/previous_versions/v12.1.0/search/functions_9.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/functions_9.js b/previous_versions/v12.1.0/search/functions_9.js new file mode 100644 index 000000000..ef2ab077e --- /dev/null +++ b/previous_versions/v12.1.0/search/functions_9.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['jstnum_1093',['jstnum',['../misc_8F90.html#a0e7d4106a679cae0404866a8781a7651',1,'misc.F90']]] +]; diff --git a/previous_versions/v12.1.0/search/functions_a.html b/previous_versions/v12.1.0/search/functions_a.html new file mode 100644 index 000000000..5ecc152ca --- /dev/null +++ b/previous_versions/v12.1.0/search/functions_a.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/functions_a.js b/previous_versions/v12.1.0/search/functions_a.js new file mode 100644 index 000000000..0034c736b --- /dev/null +++ b/previous_versions/v12.1.0/search/functions_a.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['lcmgdf_1094',['lcmgdf',['../readwritesb_8F90.html#acd820000e0fca0bc8d4ca0abac7b81fd',1,'readwritesb.F90']]], + ['lmsg_1095',['lmsg',['../readwritemg_8F90.html#a44d876e69afb2688f364d8bdd0ca2400',1,'readwritemg.F90']]], + ['lstjpb_1096',['lstjpb',['../jumplink_8F90.html#a46ebb8c05619d2580397218ff36f4a9b',1,'jumplink.F90']]] +]; diff --git a/previous_versions/v12.1.0/search/functions_b.html b/previous_versions/v12.1.0/search/functions_b.html new file mode 100644 index 000000000..e301fedd7 --- /dev/null +++ b/previous_versions/v12.1.0/search/functions_b.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/functions_b.js b/previous_versions/v12.1.0/search/functions_b.js new file mode 100644 index 000000000..2daff379a --- /dev/null +++ b/previous_versions/v12.1.0/search/functions_b.js @@ -0,0 +1,21 @@ +var searchData= +[ + ['main_1097',['main',['../debufr_8c.html#a0ddf1224851353fc92bfbff6f499fa97',1,'main(int argc, char *argv[]): debufr.c'],['../xbfmg_8c.html#a0ddf1224851353fc92bfbff6f499fa97',1,'main(int argc, char *argv[]): xbfmg.c']]], + ['makestab_1098',['makestab',['../jumplink_8F90.html#ad12d047119fdcdeb97ffbced0696b9fb',1,'jumplink.F90']]], + ['maxout_1099',['maxout',['../readwritemg_8F90.html#a1c8cdc47f69010cd4eaa20710e28f53d',1,'readwritemg.F90']]], + ['maxout_5fc_1100',['maxout_c',['../namespacebufr__c2f__interface.html#aa7f319cef617f458cbaf40cdeea42d42',1,'bufr_c2f_interface']]], + ['maxout_5ff_1101',['maxout_f',['../bufr__interface_8h.html#a6e947358c5c4833a4c2b30a68d0fdfa3',1,'bufr_interface.h']]], + ['mesgbc_1102',['mesgbc',['../s013vals_8F90.html#ac3a5070d2415122d7a93471e5f019247',1,'s013vals.F90']]], + ['mesgbf_1103',['mesgbf',['../s013vals_8F90.html#a837bd14b4718718edb57b5f53c7bbcbe',1,'s013vals.F90']]], + ['minimg_1104',['minimg',['../s013vals_8F90.html#a70447e085c4523fa53796c5317f63ae8',1,'s013vals.F90']]], + ['mrginv_1105',['mrginv',['../misc_8F90.html#ad2b1b1578991d75d98e005d2678bef78',1,'misc.F90']]], + ['msgfull_1106',['msgfull',['../readwritemg_8F90.html#a47d4a63b5e7276a90eee0ce83237cb60',1,'readwritemg.F90']]], + ['msgini_1107',['msgini',['../readwritemg_8F90.html#ae5477034329440d4127a5243305b81e4',1,'readwritemg.F90']]], + ['msgupd_1108',['msgupd',['../readwritesb_8F90.html#a237f33069932c5fae473ac718c2eae9a',1,'readwritesb.F90']]], + ['msgwrt_1109',['msgwrt',['../readwritemg_8F90.html#af49a08bdf36b69217da7571dcfc90624',1,'readwritemg.F90']]], + ['mtfnam_1110',['mtfnam',['../mastertable_8F90.html#a3c167cbcb11e3c1ec0a9abc584e27a57',1,'mastertable.F90']]], + ['mtinfo_1111',['mtinfo',['../mastertable_8F90.html#abf69490965212318f1dfee9b0bc4890c',1,'mastertable.F90']]], + ['mtinfo_5fc_1112',['mtinfo_c',['../namespacebufr__c2f__interface.html#a550c1c61605eca9fa6cf04aba7612364',1,'bufr_c2f_interface']]], + ['mtinfo_5ff_1113',['mtinfo_f',['../bufr__interface_8h.html#aa865d9e85dab5e85a1816ec02f94cb6e',1,'bufr_interface.h']]], + ['mvb_1114',['mvb',['../copydata_8F90.html#a4ced98b23d03cd8718d81b357ee4e2c5',1,'copydata.F90']]] +]; diff --git a/previous_versions/v12.1.0/search/functions_c.html b/previous_versions/v12.1.0/search/functions_c.html new file mode 100644 index 000000000..c4f326877 --- /dev/null +++ b/previous_versions/v12.1.0/search/functions_c.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/functions_c.js b/previous_versions/v12.1.0/search/functions_c.js new file mode 100644 index 000000000..a802b3333 --- /dev/null +++ b/previous_versions/v12.1.0/search/functions_c.js @@ -0,0 +1,33 @@ +var searchData= +[ + ['nemdefs_1115',['nemdefs',['../dxtable_8F90.html#ad6352a1c1fdec4ba0adb0173781e4542',1,'dxtable.F90']]], + ['nemdefs_5fc_1116',['nemdefs_c',['../namespacebufr__c2f__interface.html#a7ee256962a48d99336f255aad04abf48',1,'bufr_c2f_interface']]], + ['nemdefs_5ff_1117',['nemdefs_f',['../bufr__interface_8h.html#aa913369b92645e3d69658c0ef902f29c',1,'bufr_interface.h']]], + ['nemock_1118',['nemock',['../mastertable_8F90.html#a4bb75d7258bc23294546f956cfbe2d36',1,'mastertable.F90']]], + ['nemspecs_1119',['nemspecs',['../jumplink_8F90.html#a6ec2d1015cdc1315eb384ea92223e620',1,'jumplink.F90']]], + ['nemspecs_5fc_1120',['nemspecs_c',['../namespacebufr__c2f__interface.html#a5b9e80deaefcabb2b18ecbf55cbc2c55',1,'bufr_c2f_interface']]], + ['nemspecs_5ff_1121',['nemspecs_f',['../bufr__interface_8h.html#a85a42b5881da22246e5bb302c883777f',1,'bufr_interface.h']]], + ['nemtab_1122',['nemtab',['../fxy_8F90.html#a01efa3bb871b451a8d53bd6d841bb297',1,'fxy.F90']]], + ['nemtab_5fc_1123',['nemtab_c',['../namespacebufr__c2f__interface.html#ac07a6f6ec1555c09041853d4c81081e9',1,'bufr_c2f_interface']]], + ['nemtab_5ff_1124',['nemtab_f',['../bufr__interface_8h.html#ad75bcdd935567fd79e3385c94b78284c',1,'bufr_interface.h']]], + ['nemtba_1125',['nemtba',['../dxtable_8F90.html#a36f644b9119ebf87f957bfe023e5cc45',1,'dxtable.F90']]], + ['nemtbax_1126',['nemtbax',['../dxtable_8F90.html#a8ea33660d62d74dee92cf7bf9541c1cd',1,'dxtable.F90']]], + ['nemtbb_1127',['nemtbb',['../dxtable_8F90.html#a21fa5817ff8a6f471dca950fbaa693ba',1,'dxtable.F90']]], + ['nemtbb_5fc_1128',['nemtbb_c',['../namespacebufr__c2f__interface.html#ae352def57bda0cd117486a03a8594cf2',1,'bufr_c2f_interface']]], + ['nemtbb_5ff_1129',['nemtbb_f',['../bufr__interface_8h.html#ac9a3eafcb7e3802e5c8a39de95b1726b',1,'bufr_interface.h']]], + ['nemtbd_1130',['nemtbd',['../dxtable_8F90.html#aa0b7269b3a7df645e6917bfd4ba72b32',1,'dxtable.F90']]], + ['nenubd_1131',['nenubd',['../dxtable_8F90.html#ae672eaf27f17dc904b894f347d89c233',1,'dxtable.F90']]], + ['nevn_1132',['nevn',['../readwriteval_8F90.html#a2017ce90611078ae96c6bc12da4e8e02',1,'readwriteval.F90']]], + ['newwin_1133',['newwin',['../jumplink_8F90.html#ab082ab8ef32893928cb10a2876d73af0',1,'jumplink.F90']]], + ['nmsub_1134',['nmsub',['../readwritemg_8F90.html#a7430cdcec381d86f72a4b60a6a7db982',1,'readwritemg.F90']]], + ['nmwrd_1135',['nmwrd',['../readwritemg_8F90.html#a7c7234f006ddb78fb82844c95b608002',1,'readwritemg.F90']]], + ['numbck_1136',['numbck',['../fxy_8F90.html#a11357abe01c36dc3472be03e950e8fe3',1,'fxy.F90']]], + ['nummtb_1137',['nummtb',['../stseq_8c.html#a340a16a2c0d988d37fbc2e92974b2b5e',1,'stseq.c']]], + ['numtab_1138',['numtab',['../fxy_8F90.html#ab6ec8c0148ab5d70923831667277b14e',1,'fxy.F90']]], + ['numtbd_1139',['numtbd',['../fxy_8F90.html#aca1fae67e284131dfd240d2336e3e77d',1,'fxy.F90']]], + ['numtbd_5fc_1140',['numtbd_c',['../namespacebufr__c2f__interface.html#ab70a5dfe76eb5f9bce5015c3bce3bf64',1,'bufr_c2f_interface']]], + ['numtbd_5ff_1141',['numtbd_f',['../bufrlib_8h.html#a45c023844f35d35ee3c5e77e60fdb18a',1,'bufrlib.h']]], + ['nvnwin_1142',['nvnwin',['../jumplink_8F90.html#a32fa4aca38700d53dd9899f93b9b3636',1,'jumplink.F90']]], + ['nwords_1143',['nwords',['../readwritesb_8F90.html#a90ab4c66c5564da3a326c66cc42d067f',1,'readwritesb.F90']]], + ['nxtwin_1144',['nxtwin',['../jumplink_8F90.html#a8a7a4ff46107f36ae57dd76442bd2447',1,'jumplink.F90']]] +]; diff --git a/previous_versions/v12.1.0/search/functions_d.html b/previous_versions/v12.1.0/search/functions_d.html new file mode 100644 index 000000000..7a1ed065d --- /dev/null +++ b/previous_versions/v12.1.0/search/functions_d.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/functions_d.js b/previous_versions/v12.1.0/search/functions_d.js new file mode 100644 index 000000000..d1ad21aa2 --- /dev/null +++ b/previous_versions/v12.1.0/search/functions_d.js @@ -0,0 +1,19 @@ +var searchData= +[ + ['open_5fc_1145',['open_c',['../namespacebufr__c2f__interface.html#a05ac8542818be260a3c1dc15d5dc2f53',1,'bufr_c2f_interface']]], + ['open_5ff_1146',['open_f',['../bufr__interface_8h.html#accefcb852f45e506cac79e92a52b93a0',1,'bufr_interface.h']]], + ['openab_1147',['openab',['../bufrlib_8h.html#a8eb759a820f7f12a3b75e92473db3c78',1,'openab(int nfile, char *ufile): cread.c'],['../cread_8c.html#a8eb759a820f7f12a3b75e92473db3c78',1,'openab(int nfile, char *ufile): cread.c']]], + ['openab_5fc_1148',['openab_c',['../interfacebufrlib_1_1openab__c.html#a840a75512f0193e8b8538cfc9d6562c6',1,'bufrlib::openab_c']]], + ['openbf_1149',['openbf',['../openclosebf_8F90.html#a9dc7e4fb476a5528a958ee132ee6392d',1,'openclosebf.F90']]], + ['openbf_5fc_1150',['openbf_c',['../namespacebufr__c2f__interface.html#a6a97fe37e5caced81c5c6b769644832d',1,'bufr_c2f_interface']]], + ['openbf_5ff_1151',['openbf_f',['../bufr__interface_8h.html#a750d83d2c9745f46cccb75dc9fec3788',1,'bufr_interface.h']]], + ['openbt_1152',['openbt',['../openbt_8F90.html#a7e64e80a4c6a00f66c7dc1cbdeab96ef',1,'openbt(lundx, mtyp): openbt.F90'],['../debufr_8F90.html#a8dbba5dc66c2e09ccdd8065dda184f89',1,'openbt(lundx, mtyp): debufr.F90']]], + ['openmb_1153',['openmb',['../readwritemg_8F90.html#a5edbefade4e7194e4dd3ee42f394034b',1,'readwritemg.F90']]], + ['openmb_5fc_1154',['openmb_c',['../namespacebufr__c2f__interface.html#aad56de517eff0435b805addbf0692f44',1,'bufr_c2f_interface']]], + ['openmb_5ff_1155',['openmb_f',['../bufr__interface_8h.html#ab062d9a7aad917f9937c577bab7f86fe',1,'bufr_interface.h']]], + ['openmg_1156',['openmg',['../readwritemg_8F90.html#a493ce59c1a2976e9714c2d9b283bdb11',1,'readwritemg.F90']]], + ['openrb_1157',['openrb',['../cread_8c.html#ab18be8cbb2bdbdb682adce89dd1a9c69',1,'openrb(int nfile, char *ufile): cread.c'],['../bufrlib_8h.html#ab18be8cbb2bdbdb682adce89dd1a9c69',1,'openrb(int nfile, char *ufile): cread.c']]], + ['openrb_5fc_1158',['openrb_c',['../interfacebufrlib_1_1openrb__c.html#a705b951ea4f72a0aa1654e77a2379626',1,'bufrlib::openrb_c']]], + ['openwb_1159',['openwb',['../bufrlib_8h.html#aa7b36dfb6c0fe0f9a1104d34c5acfa5e',1,'openwb(int nfile, char *ufile): cread.c'],['../cread_8c.html#aa7b36dfb6c0fe0f9a1104d34c5acfa5e',1,'openwb(int nfile, char *ufile): cread.c']]], + ['openwb_5fc_1160',['openwb_c',['../interfacebufrlib_1_1openwb__c.html#a7859316c1cfa913d54d3fc36b619cb28',1,'bufrlib::openwb_c']]] +]; diff --git a/previous_versions/v12.1.0/search/functions_e.html b/previous_versions/v12.1.0/search/functions_e.html new file mode 100644 index 000000000..22d2a6bf5 --- /dev/null +++ b/previous_versions/v12.1.0/search/functions_e.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/functions_e.js b/previous_versions/v12.1.0/search/functions_e.js new file mode 100644 index 000000000..e80c7e6c4 --- /dev/null +++ b/previous_versions/v12.1.0/search/functions_e.js @@ -0,0 +1,20 @@ +var searchData= +[ + ['pad_1161',['pad',['../readwritesb_8F90.html#a1ca33013e4c11f3c9d1fe614f9f1d585',1,'readwritesb.F90']]], + ['padmsg_1162',['padmsg',['../readwritemg_8F90.html#a127f4e4664445595654494dea28d7d8f',1,'readwritemg.F90']]], + ['parstr_1163',['parstr',['../strings_8F90.html#a1d493e7de1c23739a0fcd06089139f35',1,'strings.F90']]], + ['parusr_1164',['parusr',['../strings_8F90.html#ae49e5fa3610c743607ca6288d4107d28',1,'strings.F90']]], + ['parutg_1165',['parutg',['../strings_8F90.html#a2da1c300ec049ee215d937b5ab545f53',1,'strings.F90']]], + ['pkb_1166',['pkb',['../ciencode_8F90.html#a8f795cd39c8f939b486407c65d8959c0',1,'ciencode.F90']]], + ['pkb8_1167',['pkb8',['../ciencode_8F90.html#ad41a6d2e1a35c122af15bbc6dffe8eaa',1,'ciencode.F90']]], + ['pkbs1_1168',['pkbs1',['../s013vals_8F90.html#a5522b3ec85470f1def91880bbc5df5e6',1,'s013vals.F90']]], + ['pkc_1169',['pkc',['../ciencode_8F90.html#a52ae4b28f79718d9b6631d2f7a5a7160',1,'ciencode.F90']]], + ['pkftbv_1170',['pkftbv',['../cftbvs_8F90.html#a46efecc01f463c64fe193b800fff9a35',1,'cftbvs.F90']]], + ['pktdd_1171',['pktdd',['../dxtable_8F90.html#aae6295132b2eb71f969417879832ed47',1,'dxtable.F90']]], + ['pktdd_5fc_1172',['pktdd_c',['../namespacebufr__c2f__interface.html#a9a8d8f66405c9b1679e92e0d908877e0',1,'bufr_c2f_interface']]], + ['pktdd_5ff_1173',['pktdd_f',['../bufrlib_8h.html#ac68117670f91ed84a5edf1bf074bc187',1,'bufrlib.h']]], + ['pkvs01_1174',['pkvs01',['../s013vals_8F90.html#ac8fa984389323f08dd1cbd3aa6b57da9',1,'s013vals.F90']]], + ['posapx_1175',['posapx',['../openclosebf_8F90.html#aeef6f5d08d9631dbe92c1821a9d02903',1,'openclosebf.F90']]], + ['printx_1176',['printx',['../readbp_8F90.html#a20f66afc4b9a6ab619111b0d614e452c',1,'readbp.F90']]], + ['prtusage_1177',['prtusage',['../xbfmg_8c.html#a54cbb8b652032605c043b18a134cd85d',1,'prtusage(char *prgnam): xbfmg.c'],['../debufr_8c.html#a54cbb8b652032605c043b18a134cd85d',1,'prtusage(char *prgnam): debufr.c']]] +]; diff --git a/previous_versions/v12.1.0/search/functions_f.html b/previous_versions/v12.1.0/search/functions_f.html new file mode 100644 index 000000000..54b7dee08 --- /dev/null +++ b/previous_versions/v12.1.0/search/functions_f.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/functions_f.js b/previous_versions/v12.1.0/search/functions_f.js new file mode 100644 index 000000000..3d3c3768a --- /dev/null +++ b/previous_versions/v12.1.0/search/functions_f.js @@ -0,0 +1,34 @@ +var searchData= +[ + ['rbytes_1178',['rbytes',['../crwbmg_8c.html#a6dbaed2f330cb936df41084b4d8a5aae',1,'crwbmg.c']]], + ['rcstpl_1179',['rcstpl',['../readwritesb_8F90.html#abb101b31fac13895d22320a918215372',1,'readwritesb.F90']]], + ['rdbfdx_1180',['rdbfdx',['../dxtable_8F90.html#aef89e4de1387c4bcdeda0a64e8c6d308',1,'dxtable.F90']]], + ['rdcmps_1181',['rdcmps',['../compress_8F90.html#a1cb1b8bdef41e7ff3420a543e590fde8',1,'compress.F90']]], + ['rdmemm_1182',['rdmemm',['../memmsgs_8F90.html#a379c2ad518735b00eecff6ddcf32b278',1,'memmsgs.F90']]], + ['rdmems_1183',['rdmems',['../memmsgs_8F90.html#a2687d7372647fc32c4713c7e9eb6d268',1,'memmsgs.F90']]], + ['rdmgsb_1184',['rdmgsb',['../readwritesb_8F90.html#ad3f468fd2fbb1a36ebfff82d32674953',1,'readwritesb.F90']]], + ['rdmsgw_1185',['rdmsgw',['../readwritemg_8F90.html#ac23041847910e299fa2c89962597a312',1,'readwritemg.F90']]], + ['rdmtbb_1186',['rdmtbb',['../mastertable_8F90.html#a62d8d7c9946282d7797030e67c737543',1,'mastertable.F90']]], + ['rdmtbd_1187',['rdmtbd',['../mastertable_8F90.html#a2def0dba3a44cc77e6dd716ad8aa238f',1,'mastertable.F90']]], + ['rdmtbf_1188',['rdmtbf',['../mastertable_8F90.html#acc76006ba6b47ca59a5343caacb12af9',1,'mastertable.F90']]], + ['rdtree_1189',['rdtree',['../readwritesb_8F90.html#a1dab1c658cb8511cfd1cc6a360221da8',1,'readwritesb.F90']]], + ['rdusdx_1190',['rdusdx',['../dxtable_8F90.html#a3c5a3be625c365b782f36c0cb772ae35',1,'dxtable.F90']]], + ['readbp_1191',['readbp',['../readbp_8F90.html#ac55f7a6af2af963791bb395c6dcc331b',1,'readbp.F90']]], + ['readdx_1192',['readdx',['../dxtable_8F90.html#adc51a45a8d628c17cd4d749733df506b',1,'dxtable.F90']]], + ['readerme_1193',['readerme',['../readwritemg_8F90.html#aa2a7bf49cad422b474a24edd3a1cb232',1,'readwritemg.F90']]], + ['readlc_1194',['readlc',['../readwriteval_8F90.html#aad0d9cae550b97bc950c739ff44ca6b2',1,'readwriteval.F90']]], + ['readlc_5fc_1195',['readlc_c',['../namespacebufr__c2f__interface.html#acce5eddf8c8e56d5b47d45251ac75abc',1,'bufr_c2f_interface']]], + ['readlc_5ff_1196',['readlc_f',['../bufr__interface_8h.html#ab9a086f1cd4cb622107c96608279eb97',1,'bufr_interface.h']]], + ['readmg_1197',['readmg',['../readwritemg_8F90.html#aad947e23951efbcba54930d6f309e0a8',1,'readwritemg.F90']]], + ['readmm_1198',['readmm',['../memmsgs_8F90.html#a6bbcaf22a939d766b7de35ff855531c5',1,'memmsgs.F90']]], + ['readmp_1199',['readmp',['../readmp_8F90.html#a0b84a15ad24b7d8dfbef402295b8b650',1,'readmp.F90']]], + ['readns_1200',['readns',['../readwritesb_8F90.html#aeb1fdb4af8ca100d3d80c52a221f1de8',1,'readwritesb.F90']]], + ['reads3_1201',['reads3',['../s013vals_8F90.html#ac96e5200de4ecc84f79caa98177e60f6',1,'s013vals.F90']]], + ['readsb_1202',['readsb',['../readwritesb_8F90.html#ab4b6c52feffa76d2a4d8fab6e3547f3c',1,'readwritesb.F90']]], + ['restd_1203',['restd',['../bufrlib_8h.html#a9fab66c5a028abf354d075040dde317c',1,'restd(int lunb, int tddesc, int *nctddesc, int *ctddesc): restd.c'],['../restd_8c.html#ad5e16b436141e02ca2b1a8def406a1d3',1,'restd(int lun, int tddesc, int *nctddesc, int *ctddesc): restd.c']]], + ['restd_5fc_1204',['restd_c',['../interfacebufrlib_1_1restd__c.html#a29d35bad7067374462ec58d70f489a8d',1,'bufrlib::restd_c']]], + ['rewnbf_1205',['rewnbf',['../openclosebf_8F90.html#a56b33c6538a8c0abf1b6a31584c68494',1,'openclosebf.F90']]], + ['rsvfvm_1206',['rsvfvm',['../dxtable_8F90.html#a437a4acba1f5e0b3173da0cafc101e9c',1,'dxtable.F90']]], + ['rtrcpt_1207',['rtrcpt',['../tankrcpt_8F90.html#a5d6fa241d34622347252bf41b73d8610',1,'tankrcpt.F90']]], + ['rtrcptb_1208',['rtrcptb',['../tankrcpt_8F90.html#a9ae992beefc572ef3ae02a330b221ffa',1,'tankrcpt.F90']]] +]; diff --git a/previous_versions/v12.1.0/search/mag_sel.svg b/previous_versions/v12.1.0/search/mag_sel.svg new file mode 100644 index 000000000..03626f64a --- /dev/null +++ b/previous_versions/v12.1.0/search/mag_sel.svg @@ -0,0 +1,74 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/previous_versions/v12.1.0/search/namespaces_0.html b/previous_versions/v12.1.0/search/namespaces_0.html new file mode 100644 index 000000000..21db2c3a5 --- /dev/null +++ b/previous_versions/v12.1.0/search/namespaces_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/namespaces_0.js b/previous_versions/v12.1.0/search/namespaces_0.js new file mode 100644 index 000000000..65e63345e --- /dev/null +++ b/previous_versions/v12.1.0/search/namespaces_0.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['bufr_5fc2f_5finterface_793',['bufr_c2f_interface',['../namespacebufr__c2f__interface.html',1,'']]], + ['bufr_5finterface_794',['bufr_interface',['../namespacebufr__interface.html',1,'']]], + ['bufrlib_795',['bufrlib',['../namespacebufrlib.html',1,'']]] +]; diff --git a/previous_versions/v12.1.0/search/namespaces_1.html b/previous_versions/v12.1.0/search/namespaces_1.html new file mode 100644 index 000000000..a01efeb1e --- /dev/null +++ b/previous_versions/v12.1.0/search/namespaces_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/namespaces_1.js b/previous_versions/v12.1.0/search/namespaces_1.js new file mode 100644 index 000000000..ab312b6f9 --- /dev/null +++ b/previous_versions/v12.1.0/search/namespaces_1.js @@ -0,0 +1,43 @@ +var searchData= +[ + ['moda_5fbitbuf_796',['moda_bitbuf',['../namespacemoda__bitbuf.html',1,'']]], + ['moda_5fbitmaps_797',['moda_bitmaps',['../namespacemoda__bitmaps.html',1,'']]], + ['moda_5fbufrmg_798',['moda_bufrmg',['../namespacemoda__bufrmg.html',1,'']]], + ['moda_5fbufrsr_799',['moda_bufrsr',['../namespacemoda__bufrsr.html',1,'']]], + ['moda_5fcomprs_800',['moda_comprs',['../namespacemoda__comprs.html',1,'']]], + ['moda_5fcomprx_801',['moda_comprx',['../namespacemoda__comprx.html',1,'']]], + ['moda_5fdscach_802',['moda_dscach',['../namespacemoda__dscach.html',1,'']]], + ['moda_5fh4wlc_803',['moda_h4wlc',['../namespacemoda__h4wlc.html',1,'']]], + ['moda_5fidrdm_804',['moda_idrdm',['../namespacemoda__idrdm.html',1,'']]], + ['moda_5fival_805',['moda_ival',['../namespacemoda__ival.html',1,'']]], + ['moda_5fivttmp_806',['moda_ivttmp',['../namespacemoda__ivttmp.html',1,'']]], + ['moda_5flushr_807',['moda_lushr',['../namespacemoda__lushr.html',1,'']]], + ['moda_5fmgwa_808',['moda_mgwa',['../namespacemoda__mgwa.html',1,'']]], + ['moda_5fmgwb_809',['moda_mgwb',['../namespacemoda__mgwb.html',1,'']]], + ['moda_5fmsgcmp_810',['moda_msgcmp',['../namespacemoda__msgcmp.html',1,'']]], + ['moda_5fmsgcwd_811',['moda_msgcwd',['../namespacemoda__msgcwd.html',1,'']]], + ['moda_5fmsglim_812',['moda_msglim',['../namespacemoda__msglim.html',1,'']]], + ['moda_5fmsgmem_813',['moda_msgmem',['../namespacemoda__msgmem.html',1,'']]], + ['moda_5fmsgstd_814',['moda_msgstd',['../namespacemoda__msgstd.html',1,'']]], + ['moda_5fmstabs_815',['moda_mstabs',['../namespacemoda__mstabs.html',1,'']]], + ['moda_5fnmikrp_816',['moda_nmikrp',['../namespacemoda__nmikrp.html',1,'']]], + ['moda_5fnrv203_817',['moda_nrv203',['../namespacemoda__nrv203.html',1,'']]], + ['moda_5fnulbfr_818',['moda_nulbfr',['../namespacemoda__nulbfr.html',1,'']]], + ['moda_5frdmtb_819',['moda_rdmtb',['../namespacemoda__rdmtb.html',1,'']]], + ['moda_5frlccmn_820',['moda_rlccmn',['../namespacemoda__rlccmn.html',1,'']]], + ['moda_5fs01cm_821',['moda_s01cm',['../namespacemoda__s01cm.html',1,'']]], + ['moda_5fs3list_822',['moda_s3list',['../namespacemoda__s3list.html',1,'']]], + ['moda_5fsc3bfr_823',['moda_sc3bfr',['../namespacemoda__sc3bfr.html',1,'']]], + ['moda_5fstbfr_824',['moda_stbfr',['../namespacemoda__stbfr.html',1,'']]], + ['moda_5fstcode_825',['moda_stcode',['../namespacemoda__stcode.html',1,'']]], + ['moda_5ftababd_826',['moda_tababd',['../namespacemoda__tababd.html',1,'']]], + ['moda_5ftablef_827',['moda_tablef',['../namespacemoda__tablef.html',1,'']]], + ['moda_5ftables_828',['moda_tables',['../namespacemoda__tables.html',1,'']]], + ['moda_5ftnkrcp_829',['moda_tnkrcp',['../namespacemoda__tnkrcp.html',1,'']]], + ['moda_5fufbcpl_830',['moda_ufbcpl',['../namespacemoda__ufbcpl.html',1,'']]], + ['moda_5funptyp_831',['moda_unptyp',['../namespacemoda__unptyp.html',1,'']]], + ['moda_5fusrbit_832',['moda_usrbit',['../namespacemoda__usrbit.html',1,'']]], + ['moda_5fusrint_833',['moda_usrint',['../namespacemoda__usrint.html',1,'']]], + ['moda_5fusrtmp_834',['moda_usrtmp',['../namespacemoda__usrtmp.html',1,'']]], + ['moda_5fxtab_835',['moda_xtab',['../namespacemoda__xtab.html',1,'']]] +]; diff --git a/previous_versions/v12.1.0/search/namespaces_2.html b/previous_versions/v12.1.0/search/namespaces_2.html new file mode 100644 index 000000000..b46f2a5de --- /dev/null +++ b/previous_versions/v12.1.0/search/namespaces_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/namespaces_2.js b/previous_versions/v12.1.0/search/namespaces_2.js new file mode 100644 index 000000000..e40982268 --- /dev/null +++ b/previous_versions/v12.1.0/search/namespaces_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['share_5ftable_5finfo_836',['share_table_info',['../namespaceshare__table__info.html',1,'']]] +]; diff --git a/previous_versions/v12.1.0/search/nomatches.html b/previous_versions/v12.1.0/search/nomatches.html new file mode 100644 index 000000000..2b9360b6b --- /dev/null +++ b/previous_versions/v12.1.0/search/nomatches.html @@ -0,0 +1,13 @@ + + + + + + + + +
                                                        +
                                                        No Matches
                                                        +
                                                        + + diff --git a/previous_versions/v12.1.0/search/pages_0.html b/previous_versions/v12.1.0/search/pages_0.html new file mode 100644 index 000000000..8517b48f0 --- /dev/null +++ b/previous_versions/v12.1.0/search/pages_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/pages_0.js b/previous_versions/v12.1.0/search/pages_0.js new file mode 100644 index 000000000..dfc073586 --- /dev/null +++ b/previous_versions/v12.1.0/search/pages_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['dx_20bufr_20tables_1559',['DX BUFR Tables',['../md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_dx_tables.html',1,'']]] +]; diff --git a/previous_versions/v12.1.0/search/pages_1.html b/previous_versions/v12.1.0/search/pages_1.html new file mode 100644 index 000000000..a0fb67963 --- /dev/null +++ b/previous_versions/v12.1.0/search/pages_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/pages_1.js b/previous_versions/v12.1.0/search/pages_1.js new file mode 100644 index 000000000..c575debf4 --- /dev/null +++ b/previous_versions/v12.1.0/search/pages_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['master_20bufr_20tables_1560',['Master BUFR Tables',['../md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_master_tables.html',1,'']]] +]; diff --git a/previous_versions/v12.1.0/search/pages_2.html b/previous_versions/v12.1.0/search/pages_2.html new file mode 100644 index 000000000..084edfd03 --- /dev/null +++ b/previous_versions/v12.1.0/search/pages_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/pages_2.js b/previous_versions/v12.1.0/search/pages_2.js new file mode 100644 index 000000000..26097fdbb --- /dev/null +++ b/previous_versions/v12.1.0/search/pages_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['release_20notes_1561',['Release Notes',['../md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_ReleaseNotes.html',1,'']]] +]; diff --git a/previous_versions/v12.1.0/search/pages_3.html b/previous_versions/v12.1.0/search/pages_3.html new file mode 100644 index 000000000..c0b45b0fc --- /dev/null +++ b/previous_versions/v12.1.0/search/pages_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/pages_3.js b/previous_versions/v12.1.0/search/pages_3.js new file mode 100644 index 000000000..23d2708de --- /dev/null +++ b/previous_versions/v12.1.0/search/pages_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['utilities_1562',['Utilities',['../md__home_runner_work_NCEPLIBS_bufr_NCEPLIBS_bufr_bufr_docs_utils.html',1,'']]] +]; diff --git a/previous_versions/v12.1.0/search/search.css b/previous_versions/v12.1.0/search/search.css new file mode 100644 index 000000000..9074198f8 --- /dev/null +++ b/previous_versions/v12.1.0/search/search.css @@ -0,0 +1,257 @@ +/*---------------- Search Box */ + +#MSearchBox { + white-space : nowrap; + background: white; + border-radius: 0.65em; + box-shadow: inset 0.5px 0.5px 3px 0px #555; + z-index: 102; +} + +#MSearchBox .left { + display: inline-block; + vertical-align: middle; + height: 1.4em; +} + +#MSearchSelect { + display: inline-block; + vertical-align: middle; + height: 1.4em; + padding: 0 0 0 0.3em; + margin: 0; +} + +#MSearchField { + display: inline-block; + vertical-align: middle; + width: 7.5em; + height: 1.1em; + margin: 0 0.15em; + padding: 0; + line-height: 1em; + border:none; + color: #909090; + outline: none; + font-family: Arial, Verdana, sans-serif; + -webkit-border-radius: 0px; + border-radius: 0px; + background: none; +} + + +#MSearchBox .right { + display: inline-block; + vertical-align: middle; + width: 1.4em; + height: 1.4em; +} + +#MSearchClose { + display: none; + font-size: inherit; + background : none; + border: none; + margin: 0; + padding: 0; + outline: none; + +} + +#MSearchCloseImg { + height: 1.4em; + padding: 0.3em; + margin: 0; +} + +.MSearchBoxActive #MSearchField { + color: #000000; +} + +#main-menu > li:last-child { + /* This
                                                      • object is the parent of the search bar */ + display: flex; + justify-content: center; + align-items: center; + height: 36px; + margin-right: 1em; +} + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #90A5CE; + background-color: #F9FAFC; + z-index: 10001; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt Arial, Verdana, sans-serif; + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: monospace; + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: #000000; + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: #000000; + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: #FFFFFF; + background-color: #3D578C; + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + width: 60ex; + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #000; + background-color: #EEF1F7; + z-index:10000; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; + padding-bottom: 15px; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +body.SRPage { + margin: 5px 2px; +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; + font-family: Arial, Verdana, sans-serif; +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; + font-family: Arial, Verdana, sans-serif; +} + +.SRResult { + display: none; +} + +div.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.searchresult { + background-color: #F0F3F8; +} + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: url("../tab_a.png"); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/previous_versions/v12.1.0/search/search.js b/previous_versions/v12.1.0/search/search.js new file mode 100644 index 000000000..fb226f734 --- /dev/null +++ b/previous_versions/v12.1.0/search/search.js @@ -0,0 +1,816 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var resultsPage; + var resultsPageWithSearch; + var hasResultsPage; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + this.extension; + resultsPageWithSearch = resultsPage+'?'+escape(searchValue); + hasResultsPage = true; + } + else // nothing available for this search term + { + resultsPage = this.resultsPath + '/nomatches' + this.extension; + resultsPageWithSearch = resultsPage; + hasResultsPage = false; + } + + window.frames.MSearchResults.location = resultsPageWithSearch; + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + + if (domPopupSearchResultsWindow.style.display!='block') + { + var domSearchBox = this.DOMSearchBox(); + this.DOMSearchClose().style.display = 'inline-block'; + if (this.insideFrame) + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + domPopupSearchResultsWindow.style.position = 'relative'; + domPopupSearchResultsWindow.style.display = 'block'; + var width = document.body.clientWidth - 8; // the -8 is for IE :-( + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResults.style.width = width + 'px'; + } + else + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth; + var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + } + } + + this.lastSearchValue = searchValue; + this.lastResultsPage = resultsPage; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + + var searchField = this.DOMSearchField(); + + if (searchField.value == this.searchLabel) // clear "Search" term upon entry + { + searchField.value = ''; + this.searchActive = true; + } + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.DOMSearchField().value = this.searchLabel; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName.toLowerCase() == 'div' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName.toLowerCase() == 'div' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + parent.document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults() +{ + var results = document.getElementById("SRResults"); + for (var e=0; e(R!W8j_r#qQ#gnr4kAxdU#F0+OBry$Z+ z_0PMi;P|#{d%mw(dnw=jM%@$onTJa%@6Nm3`;2S#nwtVFJI#`U@2Q@@JCCctagvF- z8H=anvo~dTmJ2YA%wA6IHRv%{vxvUm|R)kgZeo zmX%Zb;mpflGZdXCTAgit`||AFzkI#z&(3d4(htA?U2FOL4WF6wY&TB#n3n*I4+hl| z*NBpo#FA92vEu822WQ%mvv4FO#qs` BFGc_W literal 0 HcmV?d00001 diff --git a/previous_versions/v12.1.0/search/search_r.png b/previous_versions/v12.1.0/search/search_r.png new file mode 100644 index 0000000000000000000000000000000000000000..1af5d21ee13e070d7600f1c4657fde843b953a69 GIT binary patch literal 553 zcmeAS@N?(olHy`uVBq!ia0vp^LO?9c!2%@BXHTsJQY`6?zK#qG8~eHcB(ehe3dtTp zz6=bxGZ+|(`xqD=STHa&U1eaXVrO7DwS|Gf*oA>XrmV$GYcEhOQT(QLuS{~ooZ2P@v=Xc@RKW@Irliv8_;wroU0*)0O?temdsA~70jrdux+`@W7 z-N(<(C)L?hOO?KV{>8(jC{hpKsws)#Fh zvsO>IB+gb@b+rGWaO&!a9Z{!U+fV*s7TS>fdt&j$L%^U@Epd$~Nl7e8wMs5Z1yT$~ z28I^8hDN#u<{^fLRz?<9hUVG^237_Jy7tbuQ8eV{r(~v8;?@w8^gA7>fx*+&&t;uc GLK6VEQpiUD literal 0 HcmV?d00001 diff --git a/previous_versions/v12.1.0/search/searchdata.js b/previous_versions/v12.1.0/search/searchdata.js new file mode 100644 index 000000000..899e0e280 --- /dev/null +++ b/previous_versions/v12.1.0/search/searchdata.js @@ -0,0 +1,36 @@ +var indexSectionsWithContent = +{ + 0: "abcdefghijklmnoprstuvwx", + 1: "abcdiors", + 2: "bms", + 3: "abcdefgijmorstx", + 4: "abcdefghijlmnoprstuwx", + 5: "abcfijklmnprstvwx", + 6: "fimnuv", + 7: "dmru" +}; + +var indexSectionNames = +{ + 0: "all", + 1: "classes", + 2: "namespaces", + 3: "files", + 4: "functions", + 5: "variables", + 6: "defines", + 7: "pages" +}; + +var indexSectionLabels = +{ + 0: "All", + 1: "Data Structures", + 2: "Namespaces", + 3: "Files", + 4: "Functions", + 5: "Variables", + 6: "Macros", + 7: "Pages" +}; + diff --git a/previous_versions/v12.1.0/search/variables_0.html b/previous_versions/v12.1.0/search/variables_0.html new file mode 100644 index 000000000..1e477c08c --- /dev/null +++ b/previous_versions/v12.1.0/search/variables_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/variables_0.js b/previous_versions/v12.1.0/search/variables_0.js new file mode 100644 index 000000000..479a6e1dd --- /dev/null +++ b/previous_versions/v12.1.0/search/variables_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['adsn_1307',['adsn',['../modules__vars_8F90.html#a7a129734d8b06649619e8e9ee42eca62',1,'modv_vars']]] +]; diff --git a/previous_versions/v12.1.0/search/variables_1.html b/previous_versions/v12.1.0/search/variables_1.html new file mode 100644 index 000000000..ea73d9a49 --- /dev/null +++ b/previous_versions/v12.1.0/search/variables_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/variables_1.js b/previous_versions/v12.1.0/search/variables_1.js new file mode 100644 index 000000000..f30f93a74 --- /dev/null +++ b/previous_versions/v12.1.0/search/variables_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['bmiss_1308',['bmiss',['../modules__vars_8F90.html#a745e8be4bf52246db47090996854736b',1,'modv_vars']]] +]; diff --git a/previous_versions/v12.1.0/search/variables_10.html b/previous_versions/v12.1.0/search/variables_10.html new file mode 100644 index 000000000..dc9920b6d --- /dev/null +++ b/previous_versions/v12.1.0/search/variables_10.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/variables_10.js b/previous_versions/v12.1.0/search/variables_10.js new file mode 100644 index 000000000..497639cae --- /dev/null +++ b/previous_versions/v12.1.0/search/variables_10.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['xtab_1548',['xtab',['../namespacemoda__xtab.html#ada2721216de79b6527d89323df61956d',1,'moda_xtab']]] +]; diff --git a/previous_versions/v12.1.0/search/variables_2.html b/previous_versions/v12.1.0/search/variables_2.html new file mode 100644 index 000000000..0580462e9 --- /dev/null +++ b/previous_versions/v12.1.0/search/variables_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/variables_2.js b/previous_versions/v12.1.0/search/variables_2.js new file mode 100644 index 000000000..f86149a17 --- /dev/null +++ b/previous_versions/v12.1.0/search/variables_2.js @@ -0,0 +1,35 @@ +var searchData= +[ + ['catx_1309',['catx',['../namespacemoda__comprs.html#a94ea2c3cfc88079d837ac29324d61937',1,'moda_comprs']]], + ['cbbw_1310',['cbbw',['../namespacemoda__mstabs.html#a31164f84ab9d27493a19afee2fda502a',1,'moda_mstabs']]], + ['cbbw_5fc_1311',['cbbw_c',['../mstabs_8h.html#aa0f8eb7c3a1ca9a66a0933d97a3422ab',1,'mstabs.h']]], + ['cbelem_1312',['cbelem',['../namespacemoda__mstabs.html#aa842e38ba6243a4ff1ab1e56404c2cb7',1,'moda_mstabs']]], + ['cbelem_5fc_1313',['cbelem_c',['../mstabs_8h.html#a19c8207a7b2c18f50438f51f066bad7b',1,'mstabs.h']]], + ['cbmnem_1314',['cbmnem',['../namespacemoda__mstabs.html#a4c761088ff4243b661ec78773c07adaa',1,'moda_mstabs']]], + ['cbmnem_5fc_1315',['cbmnem_c',['../mstabs_8h.html#a7c0149a5419b96753491953e92ce35b0',1,'mstabs.h']]], + ['cbscl_1316',['cbscl',['../namespacemoda__mstabs.html#aab2cc4c7c57e7c7d111f49187aff44ea',1,'moda_mstabs']]], + ['cbscl_5fc_1317',['cbscl_c',['../mstabs_8h.html#a49e37dddeae6e1e71da2444d40c6d232',1,'mstabs.h']]], + ['cbsref_1318',['cbsref',['../namespacemoda__mstabs.html#ac34001b0c39f1c7b156214adaf3381d0',1,'moda_mstabs']]], + ['cbsref_5fc_1319',['cbsref_c',['../mstabs_8h.html#a1209038da13334a450146c0caa5ae9ad',1,'mstabs.h']]], + ['cbunit_1320',['cbunit',['../namespacemoda__mstabs.html#a0ccfcc43067ef6debce2218ad50abb0b',1,'moda_mstabs']]], + ['cbunit_5fc_1321',['cbunit_c',['../mstabs_8h.html#a558051c0c39c5c6181019fb4231797d1',1,'mstabs.h']]], + ['ccmf_1322',['ccmf',['../namespacemoda__msgcmp.html#a748ff156e2c817957765b05119f74270',1,'moda_msgcmp']]], + ['cdmf_1323',['cdmf',['../namespacemoda__tablef.html#a61847a8129d1a6c6909c2ea4727d67f6',1,'moda_tablef']]], + ['cdmnem_1324',['cdmnem',['../namespacemoda__mstabs.html#ab2e77035e8e8a5f8e6a2f544279ab168',1,'moda_mstabs']]], + ['cdmnem_5fc_1325',['cdmnem_c',['../mstabs_8h.html#a309b9730283bc44b297b44f4e32db7f1',1,'mstabs.h']]], + ['cds3_1326',['cds3',['../namespacemoda__s3list.html#a2ceee9741718460b614f37fb6b976259',1,'moda_s3list']]], + ['cdseq_1327',['cdseq',['../namespacemoda__mstabs.html#a37a325646f12fe6d0dd3ae3c341f20d7',1,'moda_mstabs']]], + ['cdseq_5fc_1328',['cdseq_c',['../mstabs_8h.html#a3e8f3bcd901b3809309c431d2825d636',1,'mstabs.h']]], + ['ceelem_1329',['ceelem',['../namespacemoda__rdmtb.html#a1152389e5fc9eadddbea89bd76abc653',1,'moda_rdmtb']]], + ['cfe_1330',['cfe',['../cfe_8c.html#ac86272345dff43f22ed1365dbc9f1e16',1,'cfe.c']]], + ['chh4wlc_1331',['chh4wlc',['../namespacemoda__h4wlc.html#afbc0cd7c0f91147bca16c7fd909a0d75',1,'moda_h4wlc']]], + ['cmdscb_1332',['cmdscb',['../namespacemoda__rdmtb.html#a21983afeacfaf7e7755271343aca9055',1,'moda_rdmtb']]], + ['cmdscd_1333',['cmdscd',['../namespacemoda__rdmtb.html#ab8fe0a01ea7ba06916fd450273c1c38f',1,'moda_rdmtb']]], + ['cmnem_1334',['cmnem',['../namespacemoda__s01cm.html#ab7e403dca694be4ae4d4c3803e7bc4c7',1,'moda_s01cm']]], + ['cnem_1335',['cnem',['../namespacemoda__dscach.html#a141173c549e506cd4637af33c4efdece',1,'moda_dscach']]], + ['crtag_1336',['crtag',['../namespacemoda__rlccmn.html#acaa72aa1ab54d9a7a82f83e58c8aeed1',1,'moda_rlccmn']]], + ['csmf_1337',['csmf',['../namespacemoda__msgstd.html#a23356dfd7172ae4d2ff05d657234d6ab',1,'moda_msgstd']]], + ['cstr_1338',['cstr',['../namespacemoda__comprx.html#a07c74b931e7ddbba553f8391b8e24aaf',1,'moda_comprx']]], + ['ctco_1339',['ctco',['../namespacemoda__bitmaps.html#adbe38c29980443a65ff0bb0cfa1bb753',1,'moda_bitmaps']]], + ['ctrt_1340',['ctrt',['../namespacemoda__tnkrcp.html#aba2ec73dacc32807332a7c1e38468f38',1,'moda_tnkrcp']]] +]; diff --git a/previous_versions/v12.1.0/search/variables_3.html b/previous_versions/v12.1.0/search/variables_3.html new file mode 100644 index 000000000..0d69e7619 --- /dev/null +++ b/previous_versions/v12.1.0/search/variables_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/variables_3.js b/previous_versions/v12.1.0/search/variables_3.js new file mode 100644 index 000000000..d35885e4f --- /dev/null +++ b/previous_versions/v12.1.0/search/variables_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['flush_1341',['flush',['../namespacemoda__comprx.html#a47438a5eff5e61065fce0dc3df1694a7',1,'moda_comprx']]] +]; diff --git a/previous_versions/v12.1.0/search/variables_4.html b/previous_versions/v12.1.0/search/variables_4.html new file mode 100644 index 000000000..a4b6506bb --- /dev/null +++ b/previous_versions/v12.1.0/search/variables_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/variables_4.js b/previous_versions/v12.1.0/search/variables_4.js new file mode 100644 index 000000000..54ef7f1ab --- /dev/null +++ b/previous_versions/v12.1.0/search/variables_4.js @@ -0,0 +1,68 @@ +var searchData= +[ + ['iac_1342',['iac',['../modules__vars_8F90.html#a7db5428bb409dc91391908e3f6005da0',1,'modv_vars']]], + ['iafpk_1343',['iafpk',['../mstabs_8h.html#aaa7c3e504e98938c63caeb866c071c59',1,'mstabs.h']]], + ['ibay_1344',['ibay',['../namespacemoda__bitbuf.html#a4910f483014af612d37ea34a1f477434',1,'moda_bitbuf']]], + ['ibfxyn_1345',['ibfxyn',['../namespacemoda__mstabs.html#af0d2b78411b01dc1aabe9baf6c946b38',1,'moda_mstabs']]], + ['ibfxyn_5fc_1346',['ibfxyn_c',['../mstabs_8h.html#acdfc509abed04b3bc643a4171c419fa4',1,'mstabs.h']]], + ['ibit_1347',['ibit',['../namespacemoda__bitbuf.html#a8c052fc732472f6f329209ac2db75cf9',1,'moda_bitbuf']]], + ['iblock_1348',['iblock',['../modules__vars_8F90.html#a8623e746f63272cf61b014607d998345',1,'modv_vars']]], + ['ibt_1349',['ibt',['../namespacemoda__tables.html#a1ff254e3c0f169340a16225a17c5a2c2',1,'moda_tables']]], + ['ibtmse_1350',['ibtmse',['../namespacemoda__bitmaps.html#ab3096b8b9d713e5183ac8275305e002a',1,'moda_bitmaps']]], + ['ibtnrv_1351',['ibtnrv',['../namespacemoda__nrv203.html#af1ca5281543dc4ce645d861f7f744c6d',1,'moda_nrv203']]], + ['icdxts_1352',['icdxts',['../namespacemoda__msgmem.html#a52a37b6bcc7ed3492325f47e1f8018ab',1,'moda_msgmem']]], + ['idate_1353',['idate',['../namespacemoda__msgcwd.html#a37df9d6a60023612be784db0b759da3b',1,'moda_msgcwd']]], + ['idcach_1354',['idcach',['../namespacemoda__dscach.html#ab79409e1e5c6d8e2542bac564283a5ef',1,'moda_dscach']]], + ['idefxy_1355',['idefxy',['../namespacemoda__mstabs.html#aeabc918978c598efc0231fc59d2bfd24',1,'moda_mstabs']]], + ['idefxy_5fc_1356',['idefxy_c',['../mstabs_8h.html#a006ec50bbb9f20fad017eb980cc7afa0',1,'mstabs.h']]], + ['idfxyn_1357',['idfxyn',['../namespacemoda__mstabs.html#a089cf80d582ff75c6596063d0ed8c049',1,'moda_mstabs']]], + ['idfxyn_5fc_1358',['idfxyn_c',['../mstabs_8h.html#a2798d24f3443eeee2999eddf34d24c19',1,'mstabs.h']]], + ['idna_1359',['idna',['../namespacemoda__tababd.html#a6e28d53baf8dce1d6a5c4b91546cfcca',1,'moda_tababd']]], + ['idnb_1360',['idnb',['../namespacemoda__tababd.html#ab09abac79a48acf677cf36764ffe5db5',1,'moda_tababd']]], + ['idnd_1361',['idnd',['../namespacemoda__tababd.html#a9e14841d9a084410d3ee7d5d08d3bf5e',1,'moda_tababd']]], + ['idnr_1362',['idnr',['../modules__vars_8F90.html#a181516c96f53bedb9774c83ebfeb0a23',1,'modv_vars']]], + ['idrdm_1363',['idrdm',['../namespacemoda__idrdm.html#a24e12e5c288360f0e7e6483094773db6',1,'moda_idrdm']]], + ['ids3_1364',['ids3',['../namespacemoda__s3list.html#a07f44b4772abffacaba7e9be5fbb7fda',1,'moda_s3list']]], + ['iefxyn_1365',['iefxyn',['../namespacemoda__rdmtb.html#ab26bcc9dccfa0b250af20392755adf93',1,'moda_rdmtb']]], + ['ienrv_1366',['ienrv',['../namespacemoda__nrv203.html#a2784f03b6c19452c601b1377a3ed59a1',1,'moda_nrv203']]], + ['ifdxts_1367',['ifdxts',['../namespacemoda__msgmem.html#a55020aca1118bb6f09f8b3d1f68a5c74',1,'moda_msgmem']]], + ['ifopbf_1368',['ifopbf',['../modules__vars_8F90.html#a6007e8a5d98440d7bb16ce63bbf007e6',1,'modv_vars']]], + ['im8b_1369',['im8b',['../modules__vars_8F90.html#a4ff59bf9f9ee31e187bf7f8ecb61f4dd',1,'modv_vars']]], + ['imiss_1370',['imiss',['../namespacemoda__comprx.html#a7a0967a79c236a16f1fa11ebb8f99b0f',1,'moda_comprx']]], + ['incr_1371',['incr',['../namespacemoda__comprs.html#a7e5d5589bde01337616f2527beed519f',1,'moda_comprs']]], + ['inode_1372',['inode',['../namespacemoda__msgcwd.html#a034d50224d3416c855472ead1043b1aa',1,'moda_msgcwd']]], + ['inodnrv_1373',['inodnrv',['../namespacemoda__nrv203.html#ad4299c9b916b83272f07cba8d2d22d4f',1,'moda_nrv203']]], + ['inodtamc_1374',['inodtamc',['../namespacemoda__bitmaps.html#a6ab1ee23535fd8b352c4f5d863a1c458',1,'moda_bitmaps']]], + ['inodtco_1375',['inodtco',['../namespacemoda__bitmaps.html#a481c60320ac88f9d5b5d85d1af3a60cf',1,'moda_bitmaps']]], + ['inv_1376',['inv',['../namespacemoda__usrint.html#a7e27d4bdf5a372fd7dac8ede033f969e',1,'moda_usrint']]], + ['iolun_1377',['iolun',['../namespacemoda__stbfr.html#aa6ed42f02eb5933c83e7acf1422b8d99',1,'moda_stbfr']]], + ['iomsg_1378',['iomsg',['../namespacemoda__stbfr.html#ac23d0e71777440374b51773ab34d31c7',1,'moda_stbfr']]], + ['iordbe_1379',['iordbe',['../modules__vars_8F90.html#a2588ca33cb30f0316759c9ca7735bbb3',1,'modv_vars']]], + ['iordle_1380',['iordle',['../modules__vars_8F90.html#a7376f8406ce5e5e420d4d012aea93416',1,'modv_vars']]], + ['ipdxm_1381',['ipdxm',['../namespacemoda__msgmem.html#af55ccb71d40a6980f3e18dee2ea3a9db',1,'moda_msgmem']]], + ['ipfnrv_1382',['ipfnrv',['../namespacemoda__nrv203.html#aadd51c4f00c0c4a12b922aace0ed04f7',1,'moda_nrv203']]], + ['ipmsgs_1383',['ipmsgs',['../namespacemoda__msgmem.html#a07ee8cbf949167ffea7e2ac9ceddd536',1,'moda_msgmem']]], + ['irbit_1384',['irbit',['../namespacemoda__rlccmn.html#a90cc348c7156330efc75a45e5e5860ca',1,'moda_rlccmn']]], + ['irf_1385',['irf',['../namespacemoda__tables.html#a17c04e8d3d8d361463e3f2fc0b3dd599',1,'moda_tables']]], + ['irnch_1386',['irnch',['../namespacemoda__rlccmn.html#a76b8845911215f91b5a91128facb7cbd',1,'moda_rlccmn']]], + ['irp_1387',['irp',['../namespacemoda__nmikrp.html#a6e3f292bfc1ab7b63b783bdf0266c812',1,'moda_nmikrp']]], + ['isc_1388',['isc',['../namespacemoda__tables.html#a1c370e229cc62002283ca2462296273e',1,'moda_tables']]], + ['isc3_1389',['isc3',['../namespacemoda__sc3bfr.html#ac3bbd45f25c8071e161bf7898230695a',1,'moda_sc3bfr']]], + ['iscodes_1390',['iscodes',['../namespacemoda__stcode.html#a81b647a972ded879adf10cb98bfaab2e',1,'moda_stcode']]], + ['iseq_1391',['iseq',['../namespacemoda__tables.html#a18e681f9bedbaadf3526641e19598901',1,'moda_tables']]], + ['isnrv_1392',['isnrv',['../namespacemoda__nrv203.html#a61eaac2cb0e3dd6de4d02e9986cab602',1,'moda_nrv203']]], + ['istbtm_1393',['istbtm',['../namespacemoda__bitmaps.html#a5a7267a967fec712c56a680893698965',1,'moda_bitmaps']]], + ['iszbtm_1394',['iszbtm',['../namespacemoda__bitmaps.html#a2648b6b58fd6cf4c983b5c4c23b29574',1,'moda_bitmaps']]], + ['itmp_1395',['itmp',['../namespacemoda__ivttmp.html#af59d63e63df8f925e55a922d70a37785',1,'moda_ivttmp']]], + ['itp_1396',['itp',['../namespacemoda__tables.html#ab12171885e93720ae2716b4b1ecae251',1,'moda_tables']]], + ['itrdy_1397',['itrdy',['../namespacemoda__tnkrcp.html#a97f45bd4e10b6016c9ef17bbd0efc2ca',1,'moda_tnkrcp']]], + ['itrhr_1398',['itrhr',['../namespacemoda__tnkrcp.html#a12d35afcaacac53905061f928377d92b',1,'moda_tnkrcp']]], + ['itrmi_1399',['itrmi',['../namespacemoda__tnkrcp.html#aceb65be824d657fa109be2d9059a3a2b',1,'moda_tnkrcp']]], + ['itrmo_1400',['itrmo',['../namespacemoda__tnkrcp.html#af081362974b0ae4f5be67c4bea20bae6',1,'moda_tnkrcp']]], + ['itryr_1401',['itryr',['../namespacemoda__tnkrcp.html#a3f402734944f1438bc986b0d877a0bd7',1,'moda_tnkrcp']]], + ['ityp_1402',['ityp',['../namespacemoda__comprx.html#a8ecc5d87d79c8c3aa778665041bcb522',1,'moda_comprx']]], + ['iutmp_1403',['iutmp',['../namespacemoda__usrtmp.html#a77349b5f0a6f8916850dcb253aee1f30',1,'moda_usrtmp']]], + ['ival_1404',['ival',['../namespacemoda__ival.html#a354161b574c84bfd3401bc0b287335c7',1,'moda_ival']]], + ['ivmnem_1405',['ivmnem',['../namespacemoda__s01cm.html#a320a25005a0063e8a0713fc66973b655',1,'moda_s01cm']]], + ['iwid_1406',['iwid',['../namespacemoda__comprx.html#aa945d27bc1c5cf32ea5ba624ef289808',1,'moda_comprx']]] +]; diff --git a/previous_versions/v12.1.0/search/variables_5.html b/previous_versions/v12.1.0/search/variables_5.html new file mode 100644 index 000000000..7e345d16c --- /dev/null +++ b/previous_versions/v12.1.0/search/variables_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/variables_5.js b/previous_versions/v12.1.0/search/variables_5.js new file mode 100644 index 000000000..24eb6c47a --- /dev/null +++ b/previous_versions/v12.1.0/search/variables_5.js @@ -0,0 +1,16 @@ +var searchData= +[ + ['jbay_1407',['jbay',['../namespacemoda__bufrsr.html#adff426f406bb1f795e94c0af6d68d856',1,'moda_bufrsr']]], + ['jbit_1408',['jbit',['../namespacemoda__bufrsr.html#a80dd6be1ed3b93e6cb6fcfef1e87ee08',1,'moda_bufrsr']]], + ['jbyt_1409',['jbyt',['../namespacemoda__bufrsr.html#ab23685bcce40ee0d9f71f881bdfa0d07',1,'moda_bufrsr']]], + ['jill_1410',['jill',['../namespacemoda__bufrsr.html#a157bb0cb25913753748822ce3c384b06',1,'moda_bufrsr']]], + ['jimm_1411',['jimm',['../namespacemoda__bufrsr.html#a225d75cc454938f8da4ed39857ff2c5c',1,'moda_bufrsr']]], + ['jlnode_1412',['jlnode',['../namespacemoda__comprx.html#a7caf741d65ff0b68932fa7d207c689ba',1,'moda_comprx']]], + ['jmpb_1413',['jmpb',['../namespacemoda__tables.html#a5a1f71e4a27babbf5eadd01f7b3dcdcb',1,'moda_tables']]], + ['jmsg_1414',['jmsg',['../namespacemoda__bufrsr.html#a4971d723fe9c86ed7741f7cfae61f2f0',1,'moda_bufrsr']]], + ['jseq_1415',['jseq',['../namespacemoda__tables.html#a0b8b25c6365505c5045ab473f54e03f6',1,'moda_tables']]], + ['jsr_1416',['jsr',['../namespacemoda__bufrsr.html#a38470e8cca9ad2afce56dd577ddd5b51',1,'moda_bufrsr']]], + ['jsub_1417',['jsub',['../namespacemoda__bufrsr.html#a821fcf75cf865aaebdba3527d04190e0',1,'moda_bufrsr']]], + ['jump_1418',['jump',['../namespacemoda__tables.html#a945fc956c1c6ba8c37bfe63c04837b36',1,'moda_tables']]], + ['junn_1419',['junn',['../namespacemoda__bufrsr.html#a9ec76b10297b2e9521682a1e2014370d',1,'moda_bufrsr']]] +]; diff --git a/previous_versions/v12.1.0/search/variables_6.html b/previous_versions/v12.1.0/search/variables_6.html new file mode 100644 index 000000000..7d48e75e2 --- /dev/null +++ b/previous_versions/v12.1.0/search/variables_6.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/variables_6.js b/previous_versions/v12.1.0/search/variables_6.js new file mode 100644 index 000000000..48b720efe --- /dev/null +++ b/previous_versions/v12.1.0/search/variables_6.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['kbit_1420',['kbit',['../namespacemoda__comprx.html#ad9b27559a7e05f9939764fa6688d7147',1,'moda_comprx']]], + ['kbyt_1421',['kbyt',['../namespacemoda__comprx.html#a243a2baa283f951be51ea9466cca35b8',1,'moda_comprx']]], + ['kmax_1422',['kmax',['../namespacemoda__comprx.html#a7c3104f9c9731b91a8a105bcc5212542',1,'moda_comprx']]], + ['kmin_1423',['kmin',['../namespacemoda__comprx.html#af3c2aa97661a37d85840d480e611695e',1,'moda_comprx']]], + ['kmis_1424',['kmis',['../namespacemoda__comprx.html#aedf59ef218e980c24d128aa7bc8884b1',1,'moda_comprx']]], + ['knt_1425',['knt',['../namespacemoda__tables.html#a28b0f02b81a535890fc64ec13fdfc35b',1,'moda_tables']]], + ['knti_1426',['knti',['../namespacemoda__tables.html#af5a5b5688cbfbea4a3d5d0705172fba3',1,'moda_tables']]], + ['krp_1427',['krp',['../namespacemoda__nmikrp.html#a547378be8180b17844161916eca1e876',1,'moda_nmikrp']]] +]; diff --git a/previous_versions/v12.1.0/search/variables_7.html b/previous_versions/v12.1.0/search/variables_7.html new file mode 100644 index 000000000..5c2634092 --- /dev/null +++ b/previous_versions/v12.1.0/search/variables_7.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/variables_7.js b/previous_versions/v12.1.0/search/variables_7.js new file mode 100644 index 000000000..be4cd93f5 --- /dev/null +++ b/previous_versions/v12.1.0/search/variables_7.js @@ -0,0 +1,18 @@ +var searchData= +[ + ['ldxm_1428',['ldxm',['../namespacemoda__msgmem.html#a79bdd90460fa467a8e9130089d7963a5',1,'moda_msgmem']]], + ['ldxts_1429',['ldxts',['../namespacemoda__msgmem.html#aa92c2a9b9faf87958775d45a00ee866f',1,'moda_msgmem']]], + ['lendat_1430',['lendat',['../modules__vars_8F90.html#a9776bd15698bdb2c211a2326f0ca61dc',1,'modv_vars']]], + ['lens_1431',['lens',['../modules__vars_8F90.html#a3eaffbddfb28ae6f90cff4ec580463c1',1,'modv_vars']]], + ['linbtm_1432',['linbtm',['../namespacemoda__bitmaps.html#acd6cd1e5190bdc17381e81624a7e2e80',1,'moda_bitmaps']]], + ['link_1433',['link',['../namespacemoda__tables.html#ac0c5953da2d8867d81acad1800fec53c',1,'moda_tables']]], + ['lstnod_1434',['lstnod',['../namespacemoda__bitmaps.html#a352a33aaf989dcaab7646f86aa41e27d',1,'moda_bitmaps']]], + ['lstnodct_1435',['lstnodct',['../namespacemoda__bitmaps.html#accaa0826b48e876c29f6bb8ebe21c83e',1,'moda_bitmaps']]], + ['lstpos_1436',['lstpos',['../cread_8h.html#af3681883f8ef0fe1771afc9aeb072eb0',1,'cread.h']]], + ['ltbd_1437',['ltbd',['../namespaceshare__table__info.html#a9cb558bc60eed8b777532f56fff8a08c',1,'share_table_info']]], + ['ludx_1438',['ludx',['../namespaceshare__table__info.html#a88fbe3e8e14e3810e1dc3f1560d1c51f',1,'share_table_info']]], + ['luh4wlc_1439',['luh4wlc',['../namespacemoda__h4wlc.html#aec0b91e9c09fffd506b27ea574b7da71',1,'moda_h4wlc']]], + ['lunc_1440',['lunc',['../namespacemoda__comprx.html#ac17dd8dc0aeb695a1046a884673b1fc3',1,'moda_comprx']]], + ['luncpy_1441',['luncpy',['../namespacemoda__ufbcpl.html#abf94758379c91be61fcf18f6c9dae5cf',1,'moda_ufbcpl']]], + ['lus_1442',['lus',['../namespacemoda__lushr.html#a3baea9191da6d91a8590cba5181493a6',1,'moda_lushr']]] +]; diff --git a/previous_versions/v12.1.0/search/variables_8.html b/previous_versions/v12.1.0/search/variables_8.html new file mode 100644 index 000000000..dc9ec54a5 --- /dev/null +++ b/previous_versions/v12.1.0/search/variables_8.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/variables_8.js b/previous_versions/v12.1.0/search/variables_8.js new file mode 100644 index 000000000..4eaf867ca --- /dev/null +++ b/previous_versions/v12.1.0/search/variables_8.js @@ -0,0 +1,53 @@ +var searchData= +[ + ['matx_1443',['matx',['../namespacemoda__comprs.html#ac4fd15b3e268548d17edca4e1e5e5675',1,'moda_comprs']]], + ['maxbyt_1444',['maxbyt',['../namespacemoda__bitbuf.html#aeb00e574adb63bf7cc809d540d5a02bc',1,'moda_bitbuf']]], + ['maxcd_1445',['maxcd',['../modules__vars_8F90.html#ae8a681bd9096d6c9a2466b3c71f6ec7e',1,'modv_vars']]], + ['maxjl_1446',['maxjl',['../modules__vars_8F90.html#ad2e54a398ee4fd5c87669a2883e7a37d',1,'modv_vars']]], + ['maxmem_1447',['maxmem',['../modules__vars_8F90.html#ab5934a6a2f8cd3e09418203c1d3c20de',1,'modv_vars']]], + ['maxmsg_1448',['maxmsg',['../modules__vars_8F90.html#a61162c966b964b3039b9180818d0e7ee',1,'modv_vars']]], + ['maxnc_1449',['maxnc',['../modules__vars_8F90.html#a6c14025516cc65ace5f17fc2c4e4a9a3',1,'modv_vars']]], + ['maxrcr_1450',['maxrcr',['../modules__vars_8F90.html#a656c690a79e927a6d824a1e8cef901e9',1,'modv_vars']]], + ['maxss_1451',['maxss',['../modules__vars_8F90.html#adaae2c5fadf243ece139cc7e84688d75',1,'modv_vars']]], + ['maxtba_1452',['maxtba',['../modules__vars_8F90.html#aec19b6418a5d88f574f4b196b93a5cf5',1,'modv_vars']]], + ['maxtbb_1453',['maxtbb',['../modules__vars_8F90.html#a14452fc0317594bd880c9abba582ae74',1,'modv_vars']]], + ['maxtbd_1454',['maxtbd',['../modules__vars_8F90.html#ab5fc7a78bb32e9a0fa7cbb1f402e7528',1,'modv_vars']]], + ['mbay_1455',['mbay',['../namespacemoda__bitbuf.html#aad8a1595878ac1a9907c708067c4c050',1,'moda_bitbuf']]], + ['mbit_1456',['mbit',['../namespacemoda__usrbit.html#ab5ade5e51c2620a6e6be9cad890baf7a',1,'moda_usrbit']]], + ['mbyt_1457',['mbyt',['../namespacemoda__bitbuf.html#acfcd2b4391b00ae43bdb026de8573c7a',1,'moda_bitbuf']]], + ['mdx_1458',['mdx',['../namespacemoda__msgmem.html#ab991cce44554fb17b1c1cd0474929a94',1,'moda_msgmem']]], + ['mgwa_1459',['mgwa',['../namespacemoda__mgwa.html#abe572c04d3aa498e8135d20e656d0e6a',1,'moda_mgwa']]], + ['mgwb_1460',['mgwb',['../namespacemoda__mgwb.html#ac38651460e5e05dd70fe8c19fc1a9caa',1,'moda_mgwb']]], + ['mlast_1461',['mlast',['../namespacemoda__msgmem.html#a9905d8bc2ddc7681086ea0319442d0d9',1,'moda_msgmem']]], + ['msglen_1462',['msglen',['../namespacemoda__bufrmg.html#a2514f74da635c6ba7047ec108ce4e211',1,'moda_bufrmg']]], + ['msglim_1463',['msglim',['../namespacemoda__msglim.html#abe63e3ddf9a739b073e8dd5b01460ddf',1,'moda_msglim']]], + ['msgp_1464',['msgp',['../namespacemoda__msgmem.html#a030ff35af84549af17fe0b0e4315ebf2',1,'moda_msgmem']]], + ['msgs_1465',['msgs',['../namespacemoda__msgmem.html#a0db33f8017f2c46947f0a5589ba98227',1,'moda_msgmem']]], + ['msgtxt_1466',['msgtxt',['../namespacemoda__bufrmg.html#a67590bc418c6aeb7792572c11a6bc793',1,'moda_bufrmg']]], + ['msgunp_1467',['msgunp',['../namespacemoda__unptyp.html#abc7e7be12befacea858a7f249c9425ca',1,'moda_unptyp']]], + ['msub_1468',['msub',['../namespacemoda__msgcwd.html#aaf25479459e35ef12ce20eecfc632295',1,'moda_msgcwd']]], + ['mtab_1469',['mtab',['../namespacemoda__tababd.html#a29788f9aef200e10d2f557c16abfaa56',1,'moda_tababd']]], + ['munit_1470',['munit',['../namespacemoda__msgmem.html#a5ac2ef8f11fcf81b55a5353dbfda18cc',1,'moda_msgmem']]], + ['mxbtm_1471',['mxbtm',['../modules__vars_8F90.html#a9c06e9ba0f47cbeecfb1e6d1972e1e4f',1,'modv_vars']]], + ['mxbtmse_1472',['mxbtmse',['../modules__vars_8F90.html#aa7b24da237033a528cb05754d5736cc6',1,'modv_vars']]], + ['mxcdv_1473',['mxcdv',['../modules__vars_8F90.html#ae330052e2bcc0a81949c5ef8d6e7cc9e',1,'modv_vars']]], + ['mxcnem_1474',['mxcnem',['../modules__vars_8F90.html#ad5cda585f8b55a9e6e3a81808c23630f',1,'modv_vars']]], + ['mxcsb_1475',['mxcsb',['../modules__vars_8F90.html#a6780f1f07eeec5333e01ca17588f7d39',1,'modv_vars']]], + ['mxdxm_1476',['mxdxm',['../namespacemoda__msgmem.html#a549e012729bbc3cb18894d34380ce5bd',1,'moda_msgmem']]], + ['mxdxts_1477',['mxdxts',['../modules__vars_8F90.html#a179ebe33ab923f74ef05e2851a86d33b',1,'modv_vars']]], + ['mxdxw_1478',['mxdxw',['../namespacemoda__msgmem.html#af2710ff69575fa7a323c654e7998e142',1,'moda_msgmem']]], + ['mxh4wlc_1479',['mxh4wlc',['../modules__vars_8F90.html#a59f64f9f847d2171ecac822482b2f0a9',1,'modv_vars']]], + ['mxlcc_1480',['mxlcc',['../modules__vars_8F90.html#a739ea87803beaa51dd172adb95af9b86',1,'modv_vars']]], + ['mxmsgl_1481',['mxmsgl',['../modules__vars_8F90.html#a6062176c0f51fa9f593310f46cc14fe0',1,'modv_vars']]], + ['mxmsgld4_1482',['mxmsgld4',['../modules__vars_8F90.html#a5a89be3220392c5b182d4d475d22e3e1',1,'modv_vars']]], + ['mxmtbb_1483',['mxmtbb',['../modules__vars_8F90.html#ab2c78405872b159e107674c2fc2a12f7',1,'modv_vars']]], + ['mxmtbd_1484',['mxmtbd',['../modules__vars_8F90.html#ae0bf7b02df4e070e72a90672e3eded90',1,'modv_vars']]], + ['mxmtbf_1485',['mxmtbf',['../cfe_8c.html#ada229859d4369f2b51b268c2a3bf4ea2',1,'mxmtbf(): cfe.c'],['../modules__vars_8F90.html#a9242cd091e5ab5d3956740035f6b6207',1,'modv_vars::mxmtbf()']]], + ['mxnaf_1486',['mxnaf',['../modules__vars_8F90.html#a7b92c0b0ed1fb2b80b048414fa1e54ce',1,'modv_vars']]], + ['mxnrv_1487',['mxnrv',['../modules__vars_8F90.html#a009fea23b90695d1556e33a557d4b7f1',1,'modv_vars']]], + ['mxrst_1488',['mxrst',['../modules__vars_8F90.html#ae2e923a33b968adc577317f6cef8f24e',1,'modv_vars']]], + ['mxs_1489',['mxs',['../modules__vars_8F90.html#a695fe6ca7714604e88e1fc4d21cc839d',1,'modv_vars']]], + ['mxs01v_1490',['mxs01v',['../modules__vars_8F90.html#a61b398d330ce6937423db44f080b93fd',1,'modv_vars']]], + ['mxtamc_1491',['mxtamc',['../modules__vars_8F90.html#a85bed6c0b0a9aa339abd8fb7b3a136b5',1,'modv_vars']]], + ['mxtco_1492',['mxtco',['../modules__vars_8F90.html#a68ea76a4751743e58280e061b43313e7',1,'modv_vars']]] +]; diff --git a/previous_versions/v12.1.0/search/variables_9.html b/previous_versions/v12.1.0/search/variables_9.html new file mode 100644 index 000000000..7b0147509 --- /dev/null +++ b/previous_versions/v12.1.0/search/variables_9.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/variables_9.js b/previous_versions/v12.1.0/search/variables_9.js new file mode 100644 index 000000000..10baae3bc --- /dev/null +++ b/previous_versions/v12.1.0/search/variables_9.js @@ -0,0 +1,39 @@ +var searchData= +[ + ['nbit_1493',['nbit',['../namespacemoda__usrbit.html#a99268fc2b9168fcbbd5f8ab70e6da0b7',1,'moda_usrbit']]], + ['nbitw_1494',['nbitw',['../modules__vars_8F90.html#a18a87ef02ab98d62e7fa272b20acd77a',1,'modv_vars']]], + ['nbtm_1495',['nbtm',['../namespacemoda__bitmaps.html#a6530eb70f0a9131f659c61a74652c93d',1,'moda_bitmaps']]], + ['nbtmse_1496',['nbtmse',['../namespacemoda__bitmaps.html#ad03b1bbbb4eb8366a77af6da12f0793c',1,'moda_bitmaps']]], + ['nbytw_1497',['nbytw',['../modules__vars_8F90.html#a2b80f794fded7bf159ff58796ec31a7c',1,'modv_vars']]], + ['ncnem_1498',['ncnem',['../namespacemoda__dscach.html#aa768890377f016eaae82cb56404ecdc6',1,'moda_dscach']]], + ['ncol_1499',['ncol',['../namespacemoda__comprs.html#a0bab4a779995493580b46f231516e133',1,'moda_comprs']]], + ['ndc_1500',['ndc',['../namespacemoda__dscach.html#abbb9e570ae869b4abdf6e18c14475485',1,'moda_dscach']]], + ['ndelem_1501',['ndelem',['../namespacemoda__mstabs.html#a5f77a3f33df1fc46f007160428b674d1',1,'moda_mstabs']]], + ['ndelem_5fc_1502',['ndelem_c',['../mstabs_8h.html#ad9af08676809848df12a73ece2a37182',1,'mstabs.h']]], + ['ndxm_1503',['ndxm',['../namespacemoda__msgmem.html#a6e754cd1cdefe0c8c93ab497fcb33637',1,'moda_msgmem']]], + ['ndxts_1504',['ndxts',['../namespacemoda__msgmem.html#ab1873371ca3b5f3e44a5d19ebf30af23',1,'moda_msgmem']]], + ['nem_1505',['nem',['../namespacemoda__nmikrp.html#a94ad19bfc71bbfcd6f1caf4a744d5eb3',1,'moda_nmikrp']]], + ['nfiles_1506',['nfiles',['../modules__vars_8F90.html#aa9124552f5c640e47f8decc9499688d8',1,'modv_vars']]], + ['nh4wlc_1507',['nh4wlc',['../namespacemoda__h4wlc.html#a013b7b1f0e72002222c0ee2ae5a3dcac',1,'moda_h4wlc']]], + ['nmsg_1508',['nmsg',['../namespacemoda__msgcwd.html#a43a1031d5c017c6f61ba6deabe22daad',1,'moda_msgcwd']]], + ['nmtb_1509',['nmtb',['../namespacemoda__mstabs.html#a2861db4fcd6083b5f6d194c92e873c95',1,'moda_mstabs']]], + ['nmtb_5fc_1510',['nmtb_c',['../mstabs_8h.html#ad93c9a8906bf4b63fba3143c8d9d5da5',1,'mstabs.h']]], + ['nmtd_1511',['nmtd',['../namespacemoda__mstabs.html#ae8e13371b82ad223284aeac9d6ad9aae',1,'moda_mstabs']]], + ['nmtd_5fc_1512',['nmtd_c',['../mstabs_8h.html#aaa17913e195f9e3cf457d748d2c8f60e',1,'mstabs.h']]], + ['nmtf_1513',['nmtf',['../cfe_8c.html#aeade079cc5207ec44fe26e6a90c38d3b',1,'cfe.c']]], + ['nnrv_1514',['nnrv',['../namespacemoda__nrv203.html#a7f37665c0422638e65824c8b9183169e',1,'moda_nrv203']]], + ['nrfelm_1515',['nrfelm',['../namespacemoda__usrint.html#ab05877244c7131b445de4326efd8aa8a',1,'moda_usrint']]], + ['nrow_1516',['nrow',['../namespacemoda__comprx.html#a574b3c666f5e8aa725910e20a739f561',1,'moda_comprx']]], + ['nrst_1517',['nrst',['../namespacemoda__rlccmn.html#a6ee3ae8f4cfb91d15189834b8b62d41f',1,'moda_rlccmn']]], + ['nrv_1518',['nrv',['../namespacemoda__nrv203.html#a9c4d7ff754fd79feb908c6858f7e4e5f',1,'moda_nrv203']]], + ['ns01v_1519',['ns01v',['../namespacemoda__s01cm.html#a7dfdd248050c7cc36f38933711526888',1,'moda_s01cm']]], + ['nsub_1520',['nsub',['../namespacemoda__msgcwd.html#ac477545b5d44685da84af7f23d7baa59',1,'moda_msgcwd']]], + ['ntab_1521',['ntab',['../namespacemoda__tables.html#a74976394b2b70036d27222507ba4bfcc',1,'moda_tables']]], + ['ntamc_1522',['ntamc',['../namespacemoda__bitmaps.html#a4dfbf13c3d38b007276cb0f5c5418396',1,'moda_bitmaps']]], + ['ntba_1523',['ntba',['../namespacemoda__tababd.html#a02ea2421e524ac9f2f8e213dd0151558',1,'moda_tababd']]], + ['ntbb_1524',['ntbb',['../namespacemoda__tababd.html#a8f322e3d7724bb96f7ce06beec989c0f',1,'moda_tababd']]], + ['ntbd_1525',['ntbd',['../namespacemoda__tababd.html#a875c0ff90cd5fdc88e3f10ae7b5bc556',1,'moda_tababd']]], + ['ntco_1526',['ntco',['../namespacemoda__bitmaps.html#aef82673973ab814f34658d9a1e5f3404',1,'moda_bitmaps']]], + ['null_1527',['null',['../namespacemoda__nulbfr.html#a1b6c0eaf2305df7abddd8c6c66723526',1,'moda_nulbfr']]], + ['nval_1528',['nval',['../namespacemoda__usrint.html#a2269ddd572fded029ca62080b38f6261',1,'moda_usrint']]] +]; diff --git a/previous_versions/v12.1.0/search/variables_a.html b/previous_versions/v12.1.0/search/variables_a.html new file mode 100644 index 000000000..52a724d19 --- /dev/null +++ b/previous_versions/v12.1.0/search/variables_a.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/variables_a.js b/previous_versions/v12.1.0/search/variables_a.js new file mode 100644 index 000000000..d293e692a --- /dev/null +++ b/previous_versions/v12.1.0/search/variables_a.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['pb_1529',['pb',['../cread_8h.html#a58db779a0b3c7250a119069bd2e5106c',1,'cread.h']]], + ['pbf_1530',['pbf',['../crwbmg_8c.html#ae17af2b55406347c25aca1cb56d7b193',1,'crwbmg.c']]] +]; diff --git a/previous_versions/v12.1.0/search/variables_b.html b/previous_versions/v12.1.0/search/variables_b.html new file mode 100644 index 000000000..f376b27af --- /dev/null +++ b/previous_versions/v12.1.0/search/variables_b.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/variables_b.js b/previous_versions/v12.1.0/search/variables_b.js new file mode 100644 index 000000000..e171c2503 --- /dev/null +++ b/previous_versions/v12.1.0/search/variables_b.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['reps_1531',['reps',['../modules__vars_8F90.html#a5b163d0f13c16e94bdac566d2495faf7',1,'modv_vars']]] +]; diff --git a/previous_versions/v12.1.0/search/variables_c.html b/previous_versions/v12.1.0/search/variables_c.html new file mode 100644 index 000000000..6019eba96 --- /dev/null +++ b/previous_versions/v12.1.0/search/variables_c.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/variables_c.js b/previous_versions/v12.1.0/search/variables_c.js new file mode 100644 index 000000000..f9873cc2e --- /dev/null +++ b/previous_versions/v12.1.0/search/variables_c.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['sth4wlc_1532',['sth4wlc',['../namespacemoda__h4wlc.html#a25deca91911dc2223155e55c8b47f889',1,'moda_h4wlc']]] +]; diff --git a/previous_versions/v12.1.0/search/variables_d.html b/previous_versions/v12.1.0/search/variables_d.html new file mode 100644 index 000000000..f61ae7511 --- /dev/null +++ b/previous_versions/v12.1.0/search/variables_d.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/variables_d.js b/previous_versions/v12.1.0/search/variables_d.js new file mode 100644 index 000000000..808964d56 --- /dev/null +++ b/previous_versions/v12.1.0/search/variables_d.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['taba_1533',['taba',['../namespacemoda__tababd.html#a21f38471f40c0eaecdf011d5b594de65',1,'moda_tababd']]], + ['tabb_1534',['tabb',['../namespacemoda__tababd.html#ad3fddde254d512cae401fc3f5532fe7c',1,'moda_tababd']]], + ['tabd_1535',['tabd',['../namespacemoda__tababd.html#a043c64825f8bdb44c4e6b69d2f5c253c',1,'moda_tababd']]], + ['tag_1536',['tag',['../namespacemoda__tables.html#a5f03be0ecd3fa7e059b9c74fb67cd4e4',1,'moda_tables']]], + ['tagnrv_1537',['tagnrv',['../namespacemoda__nrv203.html#a5f80cd868154c06f202e5886d40750de',1,'moda_nrv203']]], + ['tamnem_1538',['tamnem',['../namespacemoda__sc3bfr.html#aa480a82940946343d0d30d8f65c27584',1,'moda_sc3bfr']]], + ['tbldir_5ff_1539',['tbldir_f',['../namespaceshare__table__info.html#ad7e71b6c16362d8d65d97662bcdd7d02',1,'share_table_info']]], + ['ttmp_1540',['ttmp',['../namespacemoda__ivttmp.html#a126e6cfde8da74741042004b33f48a9e',1,'moda_ivttmp']]], + ['typ_1541',['typ',['../namespacemoda__tables.html#a4ff0c6b9328407caa52c08dd22d7525c',1,'moda_tables']]], + ['typs_1542',['typs',['../modules__vars_8F90.html#a9d4bd8b03fd20102645f0a43d8867bff',1,'modv_vars']]] +]; diff --git a/previous_versions/v12.1.0/search/variables_e.html b/previous_versions/v12.1.0/search/variables_e.html new file mode 100644 index 000000000..7bfd37215 --- /dev/null +++ b/previous_versions/v12.1.0/search/variables_e.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/variables_e.js b/previous_versions/v12.1.0/search/variables_e.js new file mode 100644 index 000000000..7c1e730a6 --- /dev/null +++ b/previous_versions/v12.1.0/search/variables_e.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['val_1543',['val',['../namespacemoda__usrint.html#a7ad9ef51fc135aad9fcecba2a636f486',1,'moda_usrint']]], + ['vali_1544',['vali',['../namespacemoda__tables.html#a2a706219ab0edde0511570bfa32093ed',1,'moda_tables']]], + ['vtmp_1545',['vtmp',['../namespacemoda__ivttmp.html#ad4937a8d8159f5b7fff9d51b59c6324b',1,'moda_ivttmp']]], + ['vutmp_1546',['vutmp',['../namespacemoda__usrtmp.html#afcc556a5fac9b693f0be507fafccf973',1,'moda_usrtmp']]] +]; diff --git a/previous_versions/v12.1.0/search/variables_f.html b/previous_versions/v12.1.0/search/variables_f.html new file mode 100644 index 000000000..d97920d08 --- /dev/null +++ b/previous_versions/v12.1.0/search/variables_f.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
                                                        +
                                                        Loading...
                                                        +
                                                        + +
                                                        Searching...
                                                        +
                                                        No Matches
                                                        + +
                                                        + + diff --git a/previous_versions/v12.1.0/search/variables_f.js b/previous_versions/v12.1.0/search/variables_f.js new file mode 100644 index 000000000..421c6346f --- /dev/null +++ b/previous_versions/v12.1.0/search/variables_f.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['writ1_1547',['writ1',['../namespacemoda__comprx.html#a8be10a997d67944a328d256bfc60bf02',1,'moda_comprx']]] +]; diff --git a/previous_versions/v12.1.0/sinv_8F90.html b/previous_versions/v12.1.0/sinv_8F90.html new file mode 100644 index 000000000..c3f7d078e --- /dev/null +++ b/previous_versions/v12.1.0/sinv_8F90.html @@ -0,0 +1,213 @@ + + + + + + + +NCEPLIBS-bufr: sinv.F90 File Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        sinv.F90 File Reference
                                                        +
                                                        +
                                                        + +

                                                        Produces a BUFR file inventory by satellite type. +More...

                                                        + +

                                                        Go to the source code of this file.

                                                        + + + + + + + + +

                                                        +Functions/Subroutines

                                                        subroutine satcode (lunit, icode, csad, jcode, csid)
                                                         This subroutine looks in the master BUFR tables for meaning strings associated with specified code figures for the satellite platform and instrument. More...
                                                         
                                                        program sinv
                                                         Usage: sinv <satbufrfile> will print inventory of satellites by platform and instrument. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Produces a BUFR file inventory by satellite type.

                                                        +

                                                        Looks in the BUFR tables to get meaning strings for satellite platform and instrument codes.

                                                        +
                                                        Author
                                                        J Woollen
                                                        +
                                                        Date
                                                        2010
                                                        + +

                                                        Definition in file sinv.F90.

                                                        +

                                                        Function/Subroutine Documentation

                                                        + +

                                                        ◆ satcode()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        subroutine satcode ( lunit,
                                                         icode,
                                                        character(16) csad,
                                                         jcode,
                                                        character(80) csid 
                                                        )
                                                        +
                                                        + +

                                                        This subroutine looks in the master BUFR tables for meaning strings associated with specified code figures for the satellite platform and instrument.

                                                        +
                                                        Parameters
                                                        + + + + + + +
                                                        [in]lunit- integer: Fortran logical unit number for BUFR file
                                                        [in]icode- integer: satellite platform code
                                                        [out]csad- character*16: meaning string associated with icode
                                                        [in]jcode- integer: satellite instrument code
                                                        [out]csid- character*80: meaning string associated with jcode
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J Woollen
                                                        +
                                                        Date
                                                        2010
                                                        + +

                                                        Definition at line 119 of file sinv.F90.

                                                        + +

                                                        References getcfmng().

                                                        + +

                                                        Referenced by sinv().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ sinv()

                                                        + +
                                                        +
                                                        + + + + +
                                                        program sinv
                                                        +
                                                        + +

                                                        Usage: sinv <satbufrfile> will print inventory of satellites by platform and instrument.

                                                        +
                                                        Returns
                                                        0 for success, error message otherwise.
                                                        +
                                                        Author
                                                        J Woollen
                                                        +
                                                        Date
                                                        2010
                                                        + +

                                                        Definition at line 11 of file sinv.F90.

                                                        + +

                                                        References bort(), codflg(), mtinfo(), openbf(), readmg(), satcode(), and ufbtab().

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/sinv_8F90.js b/previous_versions/v12.1.0/sinv_8F90.js new file mode 100644 index 000000000..26b325701 --- /dev/null +++ b/previous_versions/v12.1.0/sinv_8F90.js @@ -0,0 +1,5 @@ +var sinv_8F90 = +[ + [ "satcode", "sinv_8F90.html#a4ab4fad455062f4d66f23adb61d13c7c", null ], + [ "sinv", "sinv_8F90.html#add80e304e2ffa251811ac6a19162f807", null ] +]; \ No newline at end of file diff --git a/previous_versions/v12.1.0/sinv_8F90_source.html b/previous_versions/v12.1.0/sinv_8F90_source.html new file mode 100644 index 000000000..d2437c3ce --- /dev/null +++ b/previous_versions/v12.1.0/sinv_8F90_source.html @@ -0,0 +1,224 @@ + + + + + + + +NCEPLIBS-bufr: sinv.F90 Source File + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        +
                                                        sinv.F90
                                                        +
                                                        +
                                                        +Go to the documentation of this file.
                                                        1 
                                                        +
                                                        5 
                                                        +
                                                        11 program sinv
                                                        +
                                                        12 
                                                        +
                                                        13  parameter(maxa=16000000)
                                                        +
                                                        14  parameter(maxs=1000)
                                                        +
                                                        15 
                                                        +
                                                        16  character(255) file
                                                        +
                                                        17  character(240) cmtdir,tbldir
                                                        +
                                                        18  character(8) subset
                                                        +
                                                        19  character ci*16,cj*80
                                                        +
                                                        20  dimension isat(0:maxs,0:maxs)
                                                        +
                                                        21  real(8) said(maxa),siid(maxa)
                                                        +
                                                        22  logical exist
                                                        +
                                                        23 
                                                        +
                                                        24  data lunbf /20/
                                                        +
                                                        25 
                                                        +
                                                        26  !-----------------------------------------------------------------------
                                                        +
                                                        27  !-----------------------------------------------------------------------
                                                        +
                                                        28 
                                                        +
                                                        29  isat=0
                                                        +
                                                        30  jsat=0
                                                        +
                                                        31  said=0
                                                        +
                                                        32  ssid=0
                                                        +
                                                        33 
                                                        +
                                                        34  ! get filename argument
                                                        +
                                                        35 
                                                        +
                                                        36  narg=command_argument_count()
                                                        +
                                                        37  if(narg<1) then
                                                        +
                                                        38  write(*,*)'Usage: sinv <satbufrfile> will print inventory of satellites by platform and instrument'
                                                        +
                                                        39  call exit(2)
                                                        +
                                                        40  endif
                                                        +
                                                        41  call get_command_argument(1,file)
                                                        +
                                                        42  file = trim(adjustl(file))
                                                        +
                                                        43  inquire(file=file,exist=exist)
                                                        +
                                                        44  if (.not.exist) call bort(trim(file)//' does not exist')
                                                        +
                                                        45 
                                                        +
                                                        46  ! define master table directory
                                                        +
                                                        47 
                                                        +
                                                        48  ! Before calling mtinfo, make an initial call to openbf so that bfrini is called internally.
                                                        +
                                                        49  ! Otherwise, if we wait until later to make the initial call to openbf, then the internal call
                                                        +
                                                        50  ! to bfrini will end up overwriting the master table directory that we pass in during either
                                                        +
                                                        51  ! of the following calls to mtinfo.
                                                        +
                                                        52  call openbf(lunbf,'FIRST',lunbf)
                                                        +
                                                        53  if(narg==2) then ! arg 2 would be a user defined table dir
                                                        +
                                                        54  call get_command_argument(2,tbldir)
                                                        +
                                                        55  call mtinfo(tbldir,3,4)
                                                        +
                                                        56  else ! otherwise default table dir is used
                                                        +
                                                        57  cmtdir = '/home/runner/work/NCEPLIBS-bufr/NCEPLIBS-bufr/bufr/build-doc' // &
                                                        +
                                                        58 's/install/tables'
                                                        +
                                                        59  call mtinfo(cmtdir,3,4)
                                                        +
                                                        60  endif
                                                        +
                                                        61 
                                                        +
                                                        62  ! read through the file and collect counts of satid and sat inst combinations
                                                        +
                                                        63 
                                                        +
                                                        64  open(lunbf,file=file,form='unformatted')
                                                        +
                                                        65  call ufbtab(lunbf,said,1,maxa,nret,'SAID')
                                                        +
                                                        66  call ufbtab(lunbf,siid,1,maxa,nrex,'SIID')
                                                        +
                                                        67 
                                                        +
                                                        68  ! need to open the bufrfile with the satellites of interest
                                                        +
                                                        69 
                                                        +
                                                        70  open(lunbf,file=file,form='unformatted')
                                                        +
                                                        71  call openbf(lunbf,'IN',lunbf)
                                                        +
                                                        72  call readmg(lunbf,subset,idate,iret)
                                                        +
                                                        73  call codflg('Y')
                                                        +
                                                        74 
                                                        +
                                                        75  ! make a table of sat ids and sat instruments
                                                        +
                                                        76 
                                                        +
                                                        77  do n=1,max(nret,nrex)
                                                        +
                                                        78  i = nint(said(n))
                                                        +
                                                        79  j = nint(siid(n))
                                                        +
                                                        80  if(i>maxs.or.i<0) i=0
                                                        +
                                                        81  if(j>maxs.or.j<0) j=0
                                                        +
                                                        82  isat(i,j) = isat(i,j)+1
                                                        +
                                                        83  enddo
                                                        +
                                                        84 
                                                        +
                                                        85  ! print the summary of satid and sat inst combinations
                                                        +
                                                        86 
                                                        +
                                                        87  write(*,*)
                                                        +
                                                        88  write(*,'(a14,12x,a14,4x,a10)') 'id satellite', 'subsets id ', 'instrument'
                                                        +
                                                        89  write(*,*)
                                                        +
                                                        90  do i=0,1000
                                                        +
                                                        91  do j=0,1000
                                                        +
                                                        92  if(isat(i,j)>0) then
                                                        +
                                                        93  jsat=jsat+isat(i,j)
                                                        +
                                                        94  call satcode(lunbf,i,ci,j,cj)
                                                        +
                                                        95  write(*,'(i3.3,2x,a,2x,i10,2x,i3.3,6x,a)')i,ci,isat(i,j),j,trim(adjustl(cj))
                                                        +
                                                        96  endif
                                                        +
                                                        97  enddo
                                                        +
                                                        98  enddo
                                                        +
                                                        99 
                                                        +
                                                        100  write(*,'(/23x,i10/)') jsat
                                                        +
                                                        101 
                                                        +
                                                        102 end program sinv
                                                        +
                                                        107 
                                                        +
                                                        118 
                                                        +
                                                        119 subroutine satcode(lunit,icode,csad,jcode,csid)
                                                        +
                                                        120 
                                                        +
                                                        121  character(16) :: csad
                                                        +
                                                        122  character(80) :: csid
                                                        +
                                                        123  character(255) :: str
                                                        +
                                                        124 
                                                        +
                                                        125  csad(1:16)=' '; csid(1:80)=' '
                                                        +
                                                        126 
                                                        +
                                                        127  ! call routines to look up the said and siid
                                                        +
                                                        128 
                                                        +
                                                        129  if(icode>0) then
                                                        +
                                                        130  str=repeat(' ',255)
                                                        +
                                                        131  call getcfmng(lunit,'SAID',icode,' ',-1,str,len,iret); csad=str(1:16)
                                                        +
                                                        132  endif
                                                        +
                                                        133  if(jcode>0) then
                                                        +
                                                        134  str=repeat(' ',255)
                                                        +
                                                        135  call getcfmng(lunit,'SIID',jcode,' ',-1,str,len,iret); csid=str(1:80)
                                                        +
                                                        136  endif
                                                        +
                                                        137 
                                                        +
                                                        138 end subroutine satcode
                                                        +
                                                        subroutine bort(str)
                                                        Log an error message, then abort the application program.
                                                        Definition: borts.F90:15
                                                        +
                                                        recursive subroutine getcfmng(lunit, nemoi, ivali, nemod, ivald, cmeang, lnmng, iret)
                                                        Decode the meaning of a numerical value from a code or flag table.
                                                        Definition: cftbvs.F90:220
                                                        +
                                                        subroutine codflg(cf)
                                                        Specify whether or not code and flag table information should be included during all future reads of ...
                                                        +
                                                        recursive subroutine mtinfo(cmtdir, lunmt1, lunmt2)
                                                        Specify the directory location and Fortran logical unit numbers to be used when reading master BUFR t...
                                                        Definition: mastertable.F90:35
                                                        +
                                                        recursive subroutine openbf(lunit, io, lundx)
                                                        Connect a new file to the NCEPLIBS-bufr software for input or output operations, or initialize the li...
                                                        +
                                                        recursive subroutine ufbtab(lunin, tab, i1, i2, iret, str)
                                                        Read through every data subset in a BUFR file and return one or more specified data values from each ...
                                                        +
                                                        recursive subroutine readmg(lunxx, subset, jdate, iret)
                                                        Read the next BUFR message from logical unit abs(lunxx) into internal arrays.
                                                        Definition: readwritemg.F90:44
                                                        +
                                                        subroutine satcode(lunit, icode, csad, jcode, csid)
                                                        This subroutine looks in the master BUFR tables for meaning strings associated with specified code fi...
                                                        Definition: sinv.F90:120
                                                        +
                                                        program sinv
                                                        Usage: sinv <satbufrfile> will print inventory of satellites by platform and instrument.
                                                        Definition: sinv.F90:11
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/split__by__subset_8F90.html b/previous_versions/v12.1.0/split__by__subset_8F90.html new file mode 100644 index 000000000..4d64d352b --- /dev/null +++ b/previous_versions/v12.1.0/split__by__subset_8F90.html @@ -0,0 +1,144 @@ + + + + + + + +NCEPLIBS-bufr: split_by_subset.F90 File Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        split_by_subset.F90 File Reference
                                                        +
                                                        +
                                                        + +

                                                        Split a BUFR file into separate BUFR files by subset type. +More...

                                                        + +

                                                        Go to the source code of this file.

                                                        + + + + + +

                                                        +Functions/Subroutines

                                                        program split_by_subset
                                                         Read BUFR file messages, collating them into output files by message type/subtype (eg NC001002, aka subset type). More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Split a BUFR file into separate BUFR files by subset type.

                                                        +
                                                        Author
                                                        Woollen
                                                        +
                                                        Date
                                                        2000-01-01
                                                        + +

                                                        Definition in file split_by_subset.F90.

                                                        +

                                                        Function/Subroutine Documentation

                                                        + +

                                                        ◆ split_by_subset()

                                                        + +
                                                        +
                                                        + + + + +
                                                        program split_by_subset
                                                        +
                                                        + +

                                                        Read BUFR file messages, collating them into output files by message type/subtype (eg NC001002, aka subset type).

                                                        +

                                                        This is the opposite of combfr.f, which concatenates BUFR messages from listed input files.

                                                        +
                                                        Returns
                                                        0 for success, error code otherwise.
                                                        +
                                                        Author
                                                        Woollen
                                                        +
                                                        Date
                                                        2000-01-01
                                                        + +

                                                        Definition at line 15 of file split_by_subset.F90.

                                                        + +

                                                        References bort(), closbf(), copymg(), ireadmg(), iupvs01(), maxout(), nmsub(), and openbf().

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/split__by__subset_8F90.js b/previous_versions/v12.1.0/split__by__subset_8F90.js new file mode 100644 index 000000000..0b69d44a2 --- /dev/null +++ b/previous_versions/v12.1.0/split__by__subset_8F90.js @@ -0,0 +1,4 @@ +var split__by__subset_8F90 = +[ + [ "split_by_subset", "split__by__subset_8F90.html#ae5d45e2086aa783d8ca85e2fd47c8118", null ] +]; \ No newline at end of file diff --git a/previous_versions/v12.1.0/split__by__subset_8F90_source.html b/previous_versions/v12.1.0/split__by__subset_8F90_source.html new file mode 100644 index 000000000..54ed13c7c --- /dev/null +++ b/previous_versions/v12.1.0/split__by__subset_8F90_source.html @@ -0,0 +1,203 @@ + + + + + + + +NCEPLIBS-bufr: split_by_subset.F90 Source File + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        +
                                                        split_by_subset.F90
                                                        +
                                                        +
                                                        +Go to the documentation of this file.
                                                        1 
                                                        +
                                                        5 
                                                        +
                                                        14 
                                                        + +
                                                        16 
                                                        +
                                                        17  implicit none
                                                        +
                                                        18 
                                                        +
                                                        19  integer, parameter :: maxsub = 100
                                                        +
                                                        20  integer, parameter :: lunit = 20
                                                        +
                                                        21  real(8), parameter :: bmiss = 10e10
                                                        +
                                                        22 
                                                        +
                                                        23  character(len=255) :: finput
                                                        +
                                                        24  character(len=8) :: subset, sub(maxsub)
                                                        +
                                                        25  integer(4), dimension(3, maxsub) :: ninv
                                                        +
                                                        26  integer(4) :: idate
                                                        +
                                                        27  integer(4) :: ireadmg, nmsub, iupvs01
                                                        +
                                                        28  integer :: nsub, isub, ii, jj
                                                        +
                                                        29  logical :: file_exists
                                                        +
                                                        30  integer, dimension(maxsub) :: lsubunit
                                                        +
                                                        31 
                                                        +
                                                        33 
                                                        +
                                                        34  if(command_argument_count()==1) then
                                                        +
                                                        35  call get_command_argument(1, finput)
                                                        +
                                                        36  inquire(file=trim(adjustl(finput)), exist=file_exists)
                                                        +
                                                        37  if (file_exists) then
                                                        +
                                                        38  open(lunit, file=trim(adjustl(finput)), form='unformatted')
                                                        +
                                                        39  call openbf(lunit,'IN',lunit)
                                                        +
                                                        40  else
                                                        +
                                                        41  write(6,'(a)') 'File ' // trim(adjustl(finput)) // ' does not exist'
                                                        +
                                                        42  call exit(1)
                                                        +
                                                        43  endif
                                                        +
                                                        44  else
                                                        +
                                                        45  write(6,'(a)') 'Usage: split_by_subset <bufrfile> will split a BUFR file into subsets'
                                                        +
                                                        46  call exit(2)
                                                        +
                                                        47  endif
                                                        +
                                                        48 
                                                        +
                                                        50  ninv = 0
                                                        +
                                                        51  nsub = 0
                                                        +
                                                        52  lsubunit = 50
                                                        +
                                                        53 
                                                        +
                                                        55  ireadmg_loop: do while(ireadmg(lunit, subset, idate) == 0)
                                                        +
                                                        56 
                                                        +
                                                        58  isub = 0
                                                        +
                                                        59  do ii = 1, nsub
                                                        +
                                                        60  if (subset == sub(ii)) then
                                                        +
                                                        61  isub = ii
                                                        +
                                                        62  continue
                                                        +
                                                        63  endif
                                                        +
                                                        64  enddo
                                                        +
                                                        65 
                                                        +
                                                        67  new_subset: if (isub == 0) then
                                                        +
                                                        69  if (nsub+1 > maxsub) call bort('nsub too big')
                                                        +
                                                        70  sub(nsub+1) = subset
                                                        +
                                                        71  isub = nsub+1
                                                        +
                                                        72  lsubunit(isub) = 50+isub
                                                        +
                                                        73 
                                                        +
                                                        75  open(lsubunit(isub), file=trim(adjustl(subset)), form='unformatted')
                                                        +
                                                        76  call openbf(lsubunit(isub), 'OUT', lunit)
                                                        +
                                                        77  if (nsub == 0) call maxout(20000)
                                                        +
                                                        78  nsub = nsub+1
                                                        +
                                                        79  endif new_subset
                                                        +
                                                        80 
                                                        +
                                                        82  ninv(1, isub) = ninv(1, isub) + 1
                                                        +
                                                        83  ninv(2, isub) = ninv(2, isub) + nmsub(lunit)
                                                        +
                                                        84  ninv(3, isub) = ninv(3, isub) + iupvs01(lunit, 'LENM')
                                                        +
                                                        85 
                                                        +
                                                        87  call copymg(lunit, lsubunit(isub))
                                                        +
                                                        88 
                                                        +
                                                        89  enddo ireadmg_loop
                                                        +
                                                        90 
                                                        +
                                                        92  do ii = 1,nsub
                                                        +
                                                        93  call closbf(lsubunit(50+ii))
                                                        +
                                                        94  enddo
                                                        +
                                                        95 
                                                        +
                                                        97  write(6,'(a)') repeat('#',48)
                                                        +
                                                        98  write(6,101) 'TYPE', 'MESSAGES', 'SUBSETS', 'BYTES'
                                                        +
                                                        99  write(6,'(a)') repeat('#',48)
                                                        +
                                                        100  do ii=1,nsub
                                                        +
                                                        101  write(6,102) sub(ii), (ninv(jj,ii),jj=1,3)
                                                        +
                                                        102  if (ii > 1) then
                                                        +
                                                        103  ninv(1,1) = ninv(1,1)+ninv(1,ii)
                                                        +
                                                        104  ninv(2,1) = ninv(2,1)+ninv(2,ii)
                                                        +
                                                        105  ninv(3,1) = ninv(3,1)+ninv(3,ii)
                                                        +
                                                        106  endif
                                                        +
                                                        107  enddo
                                                        +
                                                        108  write(6,'(a)') repeat('-',48)
                                                        +
                                                        109  write(6,102) 'TOTAL', (ninv(jj,1),jj=1,3)
                                                        +
                                                        110  write(6,'(a)') repeat('#',48)
                                                        +
                                                        111 
                                                        +
                                                        112 101 format(a8,2x,3(a10,4x))
                                                        +
                                                        113 102 format(a8,2x,3(i10,4x))
                                                        +
                                                        114 
                                                        +
                                                        115  stop
                                                        +
                                                        116 end program split_by_subset
                                                        +
                                                        117 
                                                        +
                                                        subroutine bort(str)
                                                        Log an error message, then abort the application program.
                                                        Definition: borts.F90:15
                                                        +
                                                        recursive subroutine copymg(lunin, lunot)
                                                        Copy a BUFR message from one file to another.
                                                        Definition: copydata.F90:108
                                                        +
                                                        recursive subroutine closbf(lunit)
                                                        Close the connection between logical unit lunit and the NCEPLIBS-bufr software.
                                                        +
                                                        recursive subroutine openbf(lunit, io, lundx)
                                                        Connect a new file to the NCEPLIBS-bufr software for input or output operations, or initialize the li...
                                                        +
                                                        recursive subroutine maxout(maxo)
                                                        Specify the maximum length of a BUFR message that can be written to any output file by the NCEPLIBS-b...
                                                        +
                                                        recursive integer function nmsub(lunit)
                                                        Get the total number of data subsets available within the BUFR message that was most recently opened ...
                                                        +
                                                        recursive integer function ireadmg(lunit, subset, idate)
                                                        Call subroutine readmg() and pass back its return code as the function value.
                                                        +
                                                        recursive integer function iupvs01(lunit, s01mnem)
                                                        Read a specified value from within Section 0 or 1 of a BUFR message.
                                                        Definition: s013vals.F90:443
                                                        +
                                                        program split_by_subset
                                                        Read BUFR file messages, collating them into output files by message type/subtype (eg NC001002,...
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/splitbar.png b/previous_versions/v12.1.0/splitbar.png new file mode 100644 index 0000000000000000000000000000000000000000..fe895f2c58179b471a22d8320b39a4bd7312ec8e GIT binary patch literal 314 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{AmhX=Jf(#6djGiuzAr*{o?=JLmPLyc> z_*`QK&+BH@jWrYJ7>r6%keRM@)Qyv8R=enp0jiI>aWlGyB58O zFVR20d+y`K7vDw(hJF3;>dD*3-?v=<8M)@x|EEGLnJsniYK!2U1 Y!`|5biEc?d1`HDhPgg&ebxsLQ02F6;9RL6T literal 0 HcmV?d00001 diff --git a/previous_versions/v12.1.0/standard_8F90.html b/previous_versions/v12.1.0/standard_8F90.html new file mode 100644 index 000000000..ebbfd87c0 --- /dev/null +++ b/previous_versions/v12.1.0/standard_8F90.html @@ -0,0 +1,269 @@ + + + + + + + +NCEPLIBS-bufr: standard.F90 File Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        standard.F90 File Reference
                                                        +
                                                        +
                                                        + +

                                                        Write WMO-standard BUFR messages. +More...

                                                        + +

                                                        Go to the source code of this file.

                                                        + + + + + + + + + + + +

                                                        +Functions/Subroutines

                                                        integer function istdesc (idn)
                                                         Given the WMO bit-wise representation of an FXY value for a descriptor, check whether the descriptor is WMO-standard. More...
                                                         
                                                        subroutine stdmsg (cf)
                                                         Specify whether BUFR messages output by future calls to message-writing subroutines and subset-writing subroutines should be internally reformatted to remove all NCEPLIBS-bufr software extensions to the WMO standard, prior to actually writing each message. More...
                                                         
                                                        recursive subroutine stndrd (lunit, msgin, lmsgot, msgot)
                                                         Standardize a BUFR message. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Write WMO-standard BUFR messages.

                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2004-08-18
                                                        + +

                                                        Definition in file standard.F90.

                                                        +

                                                        Function/Subroutine Documentation

                                                        + +

                                                        ◆ istdesc()

                                                        + +
                                                        +
                                                        + + + + + + + + +
                                                        integer function istdesc (integer, intent(in) idn)
                                                        +
                                                        + +

                                                        Given the WMO bit-wise representation of an FXY value for a descriptor, check whether the descriptor is WMO-standard.

                                                        +

                                                        If a descriptor is not WMO-standard, then by definition it is a local descriptor.

                                                        +
                                                        Parameters
                                                        + + +
                                                        idn- WMO bit-wise representation of FXY value for descriptor
                                                        +
                                                        +
                                                        +
                                                        Returns
                                                        istdesc - Flag indicating whether idn is a WMO-standard descriptor:
                                                          +
                                                        • 0 = No
                                                        • +
                                                        • 1 = Yes
                                                        • +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2004-08-18
                                                        + +

                                                        Definition at line 297 of file standard.F90.

                                                        + +

                                                        References adn30(), and iokoper().

                                                        + +

                                                        Referenced by ireadmt(), bufr_c2f_interface::istdesc_c(), and stndrd().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ stdmsg()

                                                        + +
                                                        +
                                                        + + + + + + + + +
                                                        subroutine stdmsg (character*1, intent(in) cf)
                                                        +
                                                        + +

                                                        Specify whether BUFR messages output by future calls to message-writing subroutines and subset-writing subroutines should be internally reformatted to remove all NCEPLIBS-bufr software extensions to the WMO standard, prior to actually writing each message.

                                                        +

                                                        It is strongly recommended to use this subroutine (or, alternatively, subroutine stndrd() for messages which already exist in memory arrays) whenever BUFR messages are being written that will potentially be read using software other than the NCEPLIBS-bufr software. Otherwise, by default the output messages will contain a number of extensions to allow for faster reading and more efficient storage, but which will be encoded using non-standard descriptors in Section 3, and therefore likely be unrecognizable to other software packages.

                                                        +

                                                        The specified value for cf will remain in effect for all future calls to message-writing subroutines and subset-writing subroutines for all Fortran logical units that are open for output within the application program, unless a subsequent call is made to this subroutine to reset the value of cf again. If this subroutine is never called, a default value of 'N' is used for cf.

                                                        +
                                                        Parameters
                                                        + + +
                                                        cf- Flag indicating whether future BUFR output messages are to be standardized:
                                                          +
                                                        • 'N' = No (the default)
                                                        • +
                                                        • 'Y' = Yes
                                                        • +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2004-08-18
                                                        + +

                                                        Definition at line 35 of file standard.F90.

                                                        + +

                                                        References bort(), capit(), and moda_msgstd::csmf.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ stndrd()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        recursive subroutine stndrd (integer, intent(in) lunit,
                                                        integer, dimension(*), intent(in) msgin,
                                                        integer, intent(in) lmsgot,
                                                        integer, dimension(*), intent(out) msgot 
                                                        )
                                                        +
                                                        + +

                                                        Standardize a BUFR message.

                                                        +

                                                        This subroutine performs the same function as subroutine stdmsg(), except that it operates on a BUFR message passed in via a memory array and returns its output via a separate memory array, whereas stdmsg() operates on BUFR messages stored internally within the software.

                                                        +
                                                        Remarks
                                                          +
                                                        • msgin and msgot must be separate arrays
                                                        • +
                                                        • Standardized messages are usually longer in length than their non-standard counterparts, so it's a good idea to allow for extra space when allocating msgot within the application program
                                                        • +
                                                        +
                                                        +
                                                        Parameters
                                                        + + + + + +
                                                        lunit- Fortran logical unit number for BUFR file
                                                        msgin- BUFR message
                                                        lmsgot- Dimensioned size (in integers) of msgot; used by the subroutine to ensure that it doesn't overflow the msgot array
                                                        msgot- Standardized copy of msgin
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2004-08-18
                                                        + +

                                                        Definition at line 72 of file standard.F90.

                                                        + +

                                                        References bort(), getlens(), moda_s3list::ids3, istdesc(), iupb(), iupbs01(), iupbs3(), mvb(), nemtbax(), numtab(), pkb(), pkc(), status(), upb(), upc(), and x84().

                                                        + +

                                                        Referenced by msgwrt().

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/standard_8F90.js b/previous_versions/v12.1.0/standard_8F90.js new file mode 100644 index 000000000..e405d74e2 --- /dev/null +++ b/previous_versions/v12.1.0/standard_8F90.js @@ -0,0 +1,6 @@ +var standard_8F90 = +[ + [ "istdesc", "standard_8F90.html#af4f78acf5cbb9eda9a8ef03d03030aaf", null ], + [ "stdmsg", "standard_8F90.html#a1f7f89920afdd318ec3ff39559c42ecd", null ], + [ "stndrd", "standard_8F90.html#a543c53880e96f04934213352ea77a7ab", null ] +]; \ No newline at end of file diff --git a/previous_versions/v12.1.0/standard_8F90_source.html b/previous_versions/v12.1.0/standard_8F90_source.html new file mode 100644 index 000000000..0c0067747 --- /dev/null +++ b/previous_versions/v12.1.0/standard_8F90_source.html @@ -0,0 +1,387 @@ + + + + + + + +NCEPLIBS-bufr: standard.F90 Source File + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        +
                                                        standard.F90
                                                        +
                                                        +
                                                        +Go to the documentation of this file.
                                                        1 
                                                        +
                                                        5 
                                                        +
                                                        35 subroutine stdmsg(cf)
                                                        +
                                                        36 
                                                        +
                                                        37  use moda_msgstd
                                                        +
                                                        38 
                                                        +
                                                        39  implicit none
                                                        +
                                                        40 
                                                        +
                                                        41  character*1, intent(in) :: cf
                                                        +
                                                        42  character*128 bort_str
                                                        +
                                                        43 
                                                        +
                                                        44  call capit(cf)
                                                        +
                                                        45  if(cf/='Y'.and. cf/='N') then
                                                        +
                                                        46  write(bort_str,'("BUFRLIB: STDMSG - INPUT ARGUMENT IS ",A1,", IT MUST BE EITHER Y OR N")') cf
                                                        +
                                                        47  call bort(bort_str)
                                                        +
                                                        48  endif
                                                        +
                                                        49  csmf = cf
                                                        +
                                                        50 
                                                        +
                                                        51  return
                                                        +
                                                        52 end subroutine stdmsg
                                                        +
                                                        53 
                                                        +
                                                        72 recursive subroutine stndrd(lunit,msgin,lmsgot,msgot)
                                                        +
                                                        73 
                                                        +
                                                        74  use bufrlib
                                                        +
                                                        75 
                                                        +
                                                        76  use modv_vars, only: im8b, nbytw
                                                        +
                                                        77 
                                                        +
                                                        78  use moda_s3list
                                                        +
                                                        79 
                                                        +
                                                        80  implicit none
                                                        +
                                                        81 
                                                        +
                                                        82  integer, intent(in) :: msgin(*), lunit, lmsgot
                                                        +
                                                        83  integer, intent(out) :: msgot(*)
                                                        +
                                                        84  integer my_lunit, my_lmsgot, lun, il, im, len0, len1, len2, len3, len4, len5
                                                        +
                                                        85  integer iad3, iad4, lenn, lenm, iupbs01, iupbs3, iupb, mxbyto, lbyto, ii, isub, itab, mtyp, msbt, inod
                                                        +
                                                        86  integer istdesc, ncd, iben, ibit, jbit, kbit, mbit, nad4, lsub, nsub, islen, kval, nval, i, k, l, n
                                                        +
                                                        87 
                                                        +
                                                        88  character*128 bort_str
                                                        +
                                                        89  character*8 subset
                                                        +
                                                        90  character*4 sevn
                                                        +
                                                        91  character*1 tab
                                                        +
                                                        92  character*(*), parameter :: bort_arrayoverflow = &
                                                        +
                                                        93  'BUFRLIB: STNDRD - OVERFLOW OF OUTPUT (STANDARD) MESSAGE ARRAY; TRY A LARGER DIMENSION FOR THIS ARRAY'
                                                        +
                                                        94 
                                                        +
                                                        95  logical found
                                                        +
                                                        96 
                                                        +
                                                        97  ! Check for I8 integers.
                                                        +
                                                        98 
                                                        +
                                                        99  if(im8b) then
                                                        +
                                                        100  im8b=.false.
                                                        +
                                                        101 
                                                        +
                                                        102  call x84 ( lunit, my_lunit, 1 )
                                                        +
                                                        103  call x84 ( lmsgot, my_lmsgot, 1 )
                                                        +
                                                        104  call stndrd ( my_lunit, msgin, my_lmsgot*2, msgot )
                                                        +
                                                        105 
                                                        +
                                                        106  im8b=.true.
                                                        +
                                                        107  return
                                                        +
                                                        108  endif
                                                        +
                                                        109 
                                                        +
                                                        110  ! lunit must point to an open bufr file.
                                                        +
                                                        111 
                                                        +
                                                        112  call status(lunit,lun,il,im)
                                                        +
                                                        113  if(il==0) call bort('BUFRLIB: STNDRD - BUFR FILE IS CLOSED, IT MUST BE OPEN')
                                                        +
                                                        114 
                                                        +
                                                        115  ! Identify the section lengths and addresses in msgin.
                                                        +
                                                        116 
                                                        +
                                                        117  call getlens(msgin,5,len0,len1,len2,len3,len4,len5)
                                                        +
                                                        118 
                                                        +
                                                        119  iad3 = len0+len1+len2
                                                        +
                                                        120  iad4 = iad3+len3
                                                        +
                                                        121 
                                                        +
                                                        122  lenn = len0+len1+len2+len3+len4+len5
                                                        +
                                                        123 
                                                        +
                                                        124  lenm = iupbs01(msgin,'LENM')
                                                        +
                                                        125 
                                                        +
                                                        126  if(lenn/=lenm) then
                                                        +
                                                        127  write(bort_str,'("BUFRLIB: STNDRD - INPUT MESSAGE LENGTH FROM SECTION 0",I6," DOES NOT EQUAL SUM OF ALL INDIVIDUAL '// &
                                                        +
                                                        128  'SECTION LENGTHS (",I6,")")') lenm,lenn
                                                        +
                                                        129  call bort(bort_str)
                                                        +
                                                        130  endif
                                                        +
                                                        131 
                                                        +
                                                        132  mbit = (lenn-4)*8
                                                        +
                                                        133  call upc(sevn,4,msgin,mbit,.true.)
                                                        +
                                                        134  if(sevn/='7777') then
                                                        +
                                                        135  write(bort_str,'("BUFRLIB: STNDRD - INPUT MESSAGE DOES NOT END WITH ""7777"" (ENDS WITH ",A)') sevn
                                                        +
                                                        136  call bort(bort_str)
                                                        +
                                                        137  endif
                                                        +
                                                        138 
                                                        +
                                                        139  ! Copy Sections 0 through part of Section 3 into msgot.
                                                        +
                                                        140 
                                                        +
                                                        141  mxbyto = (lmsgot*nbytw) - 8
                                                        +
                                                        142 
                                                        +
                                                        143  lbyto = iad3+7
                                                        +
                                                        144  if(lbyto>mxbyto) call bort(bort_arrayoverflow)
                                                        +
                                                        145  call mvb(msgin,1,msgot,1,lbyto)
                                                        +
                                                        146 
                                                        +
                                                        147  ! Rewrite new Section 3 in a standard form. First, locate the top-level Table A descriptor.
                                                        +
                                                        148 
                                                        +
                                                        149  found = .false.
                                                        +
                                                        150  ii = 10
                                                        +
                                                        151  do while ((.not.found).and.(ii>=8))
                                                        +
                                                        152  isub = iupb(msgin,iad3+ii,16)
                                                        +
                                                        153  call numtab(lun,isub,subset,tab,itab)
                                                        +
                                                        154  if((itab/=0).and.(tab=='D')) then
                                                        +
                                                        155  call nemtbax(lun,subset,mtyp,msbt,inod)
                                                        +
                                                        156  if(inod/=0) found = .true.
                                                        +
                                                        157  endif
                                                        +
                                                        158  ii = ii - 2
                                                        +
                                                        159  enddo
                                                        +
                                                        160  if(.not.found) call bort('BUFRLIB: STNDRD - TABLE A SUBSET DESCRIPTOR NOT FOUND')
                                                        +
                                                        161 
                                                        +
                                                        162  if (istdesc(isub)==0) then
                                                        +
                                                        163  ! isub is a non-standard Table A descriptor and needs to be expanded into an equivalent standard sequence
                                                        +
                                                        164  call restd_c(lun,isub,ncd,ids3)
                                                        +
                                                        165  else
                                                        +
                                                        166  ! isub is already a standard descriptor, so just copy it "as is" into the new Section 3 (i.e. no expansion is necessary)
                                                        +
                                                        167  ncd = 1
                                                        +
                                                        168  ids3(ncd) = isub
                                                        +
                                                        169  endif
                                                        +
                                                        170 
                                                        +
                                                        171  ! Use the edition number to determine the length of the new Section 3.
                                                        +
                                                        172 
                                                        +
                                                        173  len3 = 7+(ncd*2)
                                                        +
                                                        174  iben = iupbs01(msgin,'BEN')
                                                        +
                                                        175  if(iben<4) then
                                                        +
                                                        176  len3 = len3+1
                                                        +
                                                        177  endif
                                                        +
                                                        178  lbyto = lbyto + len3 - 7
                                                        +
                                                        179  if(lbyto>mxbyto) call bort(bort_arrayoverflow)
                                                        +
                                                        180 
                                                        +
                                                        181  ! Store the descriptors into the new Section 3.
                                                        +
                                                        182 
                                                        +
                                                        183  ibit = (iad3+7)*8
                                                        +
                                                        184  do n=1,ncd
                                                        +
                                                        185  call pkb(ids3(n),16,msgot,ibit)
                                                        +
                                                        186  enddo
                                                        +
                                                        187 
                                                        +
                                                        188  ! Depending on the edition number, pad out the new Section 3 with an additional zeroed-out byte to ensure an even byte count.
                                                        +
                                                        189 
                                                        +
                                                        190  if(iben<4) then
                                                        +
                                                        191  call pkb(0,8,msgot,ibit)
                                                        +
                                                        192  endif
                                                        +
                                                        193 
                                                        +
                                                        194  ! Store the length of the new Section 3.
                                                        +
                                                        195 
                                                        +
                                                        196  ibit = iad3*8
                                                        +
                                                        197  call pkb(len3,24,msgot,ibit)
                                                        +
                                                        198 
                                                        +
                                                        199  ! Now the tricky part - new Section 4.
                                                        +
                                                        200 
                                                        +
                                                        201  if(iupbs3(msgin,'ICMP')==1) then
                                                        +
                                                        202 
                                                        +
                                                        203  ! The data in Section 4 is compressed and is therefore already standardized, so copy it "as is" into the new Section 4.
                                                        +
                                                        204 
                                                        +
                                                        205  if((lbyto+len4+4)>mxbyto) call bort(bort_arrayoverflow)
                                                        +
                                                        206 
                                                        +
                                                        207  call mvb(msgin,iad4+1,msgot,lbyto+1,len4)
                                                        +
                                                        208  jbit = (lbyto+len4)*8
                                                        +
                                                        209 
                                                        +
                                                        210  else
                                                        +
                                                        211 
                                                        +
                                                        212  nad4 = iad3+len3
                                                        +
                                                        213 
                                                        +
                                                        214  ibit = (iad4+4)*8
                                                        +
                                                        215  jbit = (nad4+4)*8
                                                        +
                                                        216 
                                                        +
                                                        217  lbyto = lbyto + 4
                                                        +
                                                        218 
                                                        +
                                                        219  ! Copy the subsets, minus the byte counters and bit pads, into the new Section 4.
                                                        +
                                                        220 
                                                        +
                                                        221  nsub = iupbs3(msgin,'NSUB')
                                                        +
                                                        222 
                                                        +
                                                        223  subset_copy: do i=1,nsub
                                                        +
                                                        224  call upb(lsub,16,msgin,ibit)
                                                        +
                                                        225  if(nsub>1) then
                                                        +
                                                        226  ! Use the byte counter to copy this subset.
                                                        +
                                                        227  islen = lsub-2
                                                        +
                                                        228  else
                                                        +
                                                        229  ! This is the only subset in the message, and it could possibly be an overlarge (> 65530 bytes) subset, in
                                                        +
                                                        230  ! which case we can't rely on the value stored in the byte counter. either way, we don't really need it.
                                                        +
                                                        231  islen = iad4+len4-(ibit/8)
                                                        +
                                                        232  if (mod(len4,2)==0) islen = islen - 1
                                                        +
                                                        233  endif
                                                        +
                                                        234  do l=1,islen
                                                        +
                                                        235  call upb(nval,8,msgin,ibit)
                                                        +
                                                        236  lbyto = lbyto + 1
                                                        +
                                                        237  if(lbyto>mxbyto) call bort(bort_arrayoverflow)
                                                        +
                                                        238  call pkb(nval,8,msgot,jbit)
                                                        +
                                                        239  enddo
                                                        +
                                                        240  do k=1,8
                                                        +
                                                        241  kbit = ibit-k-8
                                                        +
                                                        242  call upb(kval,8,msgin,kbit)
                                                        +
                                                        243  if(kval==k) then
                                                        +
                                                        244  jbit = jbit-k-8
                                                        +
                                                        245  cycle subset_copy
                                                        +
                                                        246  endif
                                                        +
                                                        247  enddo
                                                        +
                                                        248  call bort('BUFRLIB: STNDRD - BIT MISMATCH COPYING SECTION 4 FROM INPUT TO OUTPUT (STANDARD) MESSAGE')
                                                        +
                                                        249  enddo subset_copy
                                                        +
                                                        250 
                                                        +
                                                        251  ! From this point on, we will need (at most) 6 more bytes of space within msgot in order to be able to store the entire
                                                        +
                                                        252  ! standardized message (i.e. we will need (at most) 2 more zeroed-out bytes in Section 4, plus the 4 bytes '7777' in
                                                        +
                                                        253  ! Section 5), so do a final msgot overflow check now.
                                                        +
                                                        254 
                                                        +
                                                        255  if(lbyto+6>mxbyto) call bort(bort_arrayoverflow)
                                                        +
                                                        256 
                                                        +
                                                        257  ! Pad the new Section 4 with zeroes up to the next whole byte boundary.
                                                        +
                                                        258 
                                                        +
                                                        259  do while(.not.(mod(jbit,8)==0))
                                                        +
                                                        260  call pkb(0,1,msgot,jbit)
                                                        +
                                                        261  enddo
                                                        +
                                                        262 
                                                        +
                                                        263  ! Depending on the edition number, we may need to further pad the new Section 4 with an additional zeroed-out byte in
                                                        +
                                                        264  ! order to ensure that the padding is up to an even byte boundary.
                                                        +
                                                        265 
                                                        +
                                                        266  if( (iben<4) .and. (mod(jbit/8,2)/=0) ) then
                                                        +
                                                        267  call pkb(0,8,msgot,jbit)
                                                        +
                                                        268  endif
                                                        +
                                                        269 
                                                        +
                                                        270  ibit = nad4*8
                                                        +
                                                        271  len4 = jbit/8 - nad4
                                                        +
                                                        272  call pkb(len4,24,msgot,ibit)
                                                        +
                                                        273  call pkb(0,8,msgot,ibit)
                                                        +
                                                        274  endif
                                                        +
                                                        275 
                                                        +
                                                        276  ! Finish the new message with an updated section 0 byte count.
                                                        +
                                                        277 
                                                        +
                                                        278  ibit = 32
                                                        +
                                                        279  lenn = len0+len1+len2+len3+len4+len5
                                                        +
                                                        280  call pkb(lenn,24,msgot,ibit)
                                                        +
                                                        281 
                                                        +
                                                        282  call pkc('7777',4,msgot,jbit)
                                                        +
                                                        283 
                                                        +
                                                        284  return
                                                        +
                                                        285 end subroutine stndrd
                                                        +
                                                        286 
                                                        +
                                                        297 integer function istdesc( idn ) result( iret )
                                                        +
                                                        298 
                                                        +
                                                        299  implicit none
                                                        +
                                                        300 
                                                        +
                                                        301  integer, intent(in) :: idn
                                                        +
                                                        302  integer if, ix, iy, iokoper
                                                        +
                                                        303 
                                                        +
                                                        304  character*6 adsc, adn30
                                                        +
                                                        305 
                                                        +
                                                        306  adsc = adn30( idn, 6 )
                                                        +
                                                        307 
                                                        +
                                                        308  read(adsc,'(I1,I2,I3)') if,ix,iy
                                                        +
                                                        309  if ( if == 1 ) then
                                                        +
                                                        310  ! adsc is a replication descriptor and therefore standard by default
                                                        +
                                                        311  iret = 1
                                                        +
                                                        312  else if ( if == 2 ) then
                                                        +
                                                        313  ! adsc is an operator descriptor
                                                        +
                                                        314  iret = iokoper( adsc )
                                                        +
                                                        315  else if ( ( ix < 48 ) .and. ( iy < 192 ) ) then
                                                        +
                                                        316  iret = 1
                                                        +
                                                        317  else
                                                        +
                                                        318  iret = 0
                                                        +
                                                        319  end if
                                                        +
                                                        320 
                                                        +
                                                        321  return
                                                        +
                                                        322 end function istdesc
                                                        +
                                                        subroutine bort(str)
                                                        Log an error message, then abort the application program.
                                                        Definition: borts.F90:15
                                                        +
                                                        subroutine upb(nval, nbits, ibay, ibit)
                                                        Decode an integer value from within a specified number of bits of an integer array,...
                                                        Definition: cidecode.F90:202
                                                        +
                                                        recursive integer function iupb(mbay, nbyt, nbit)
                                                        Decode an integer value from within a specified number of bits of an integer array,...
                                                        Definition: cidecode.F90:226
                                                        +
                                                        subroutine upc(chr, nchr, ibay, ibit, cnvnull)
                                                        Decode a character string from within a specified number of bytes of an integer array,...
                                                        Definition: cidecode.F90:26
                                                        +
                                                        subroutine pkc(chr, nchr, ibay, ibit)
                                                        Encode a character string within a specified number of bytes of an integer array, starting at the bit...
                                                        Definition: ciencode.F90:25
                                                        +
                                                        subroutine pkb(nval, nbits, ibay, ibit)
                                                        Encode an integer value within a specified number of bits of an integer array, starting at the bit im...
                                                        Definition: ciencode.F90:140
                                                        +
                                                        subroutine mvb(ib1, nb1, ib2, nb2, nbm)
                                                        Copy a specified number of bytes from one packed binary array to another.
                                                        Definition: copydata.F90:731
                                                        +
                                                        subroutine nemtbax(lun, nemo, mtyp, msbt, inod)
                                                        Get information about a Table A descriptor from the internal DX BUFR tables.
                                                        Definition: dxtable.F90:1197
                                                        +
                                                        subroutine numtab(lun, idn, nemo, tab, iret)
                                                        Get information about a descriptor, based on the WMO bit-wise representation of an FXY value.
                                                        Definition: fxy.F90:357
                                                        +
                                                        character *(*) function adn30(idn, ldn)
                                                        Convert an FXY value from its WMO bit-wise representation to a character string of length 5 or 6.
                                                        Definition: fxy.F90:18
                                                        + +
                                                        integer function iokoper(nemo)
                                                        Check whether a specified mnemonic is a Table C operator supported by the NCEPLIBS-bufr software.
                                                        Definition: misc.F90:484
                                                        +
                                                        subroutine capit(str)
                                                        Capitalize all of the alphabetic characters in a string.
                                                        Definition: misc.F90:355
                                                        +
                                                        Wrap C NCEPLIBS-bufr functions so they can be called from within the Fortran part of the library.
                                                        Definition: bufrlib.F90:11
                                                        +
                                                        Declare a variable used to indicate whether output BUFR messages should be standardized.
                                                        +
                                                        character csmf
                                                        Flag indicating whether BUFR output messages are to be standardized; this variable is initialized to ...
                                                        +
                                                        Declare arrays used by various subroutines and functions to hold a temporary working copy of a Sectio...
                                                        +
                                                        integer, dimension(:), allocatable ids3
                                                        Temporary working copy of Section 3 descriptor list in integer form.
                                                        +
                                                        recursive subroutine status(lunit, lun, il, im)
                                                        Check whether a specified Fortran logical unit number is currently connected to the NCEPLIBS-bufr sof...
                                                        +
                                                        recursive subroutine getlens(mbay, ll, len0, len1, len2, len3, len4, len5)
                                                        Read the section lengths of a BUFR message, up to a specified point in the message.
                                                        +
                                                        recursive integer function iupbs01(mbay, s01mnem)
                                                        Read a specified value from within Section 0 or Section 1 of a BUFR message.
                                                        Definition: s013vals.F90:247
                                                        +
                                                        recursive integer function iupbs3(mbay, s3mnem)
                                                        Read a specified value from within Section 3 of a BUFR message.
                                                        Definition: s013vals.F90:349
                                                        +
                                                        subroutine stdmsg(cf)
                                                        Specify whether BUFR messages output by future calls to message-writing subroutines and subset-writin...
                                                        Definition: standard.F90:36
                                                        +
                                                        recursive subroutine stndrd(lunit, msgin, lmsgot, msgot)
                                                        Standardize a BUFR message.
                                                        Definition: standard.F90:73
                                                        +
                                                        integer function istdesc(idn)
                                                        Given the WMO bit-wise representation of an FXY value for a descriptor, check whether the descriptor ...
                                                        Definition: standard.F90:298
                                                        +
                                                        subroutine x84(iin8, iout4, nval)
                                                        Encode one or more 8-byte integer values as 4-byte integer values.
                                                        Definition: x4884.F90:65
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/strings_8F90.html b/previous_versions/v12.1.0/strings_8F90.html new file mode 100644 index 000000000..424e74b5b --- /dev/null +++ b/previous_versions/v12.1.0/strings_8F90.html @@ -0,0 +1,471 @@ + + + + + + + +NCEPLIBS-bufr: strings.F90 File Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        strings.F90 File Reference
                                                        +
                                                        +
                                                        + +

                                                        Process mnemonic strings. +More...

                                                        + +

                                                        Go to the source code of this file.

                                                        + + + + + + + + + + + + + + + + + +

                                                        +Functions/Subroutines

                                                        subroutine parstr (str, tags, mtag, ntag, sep, limit80)
                                                         Parse a string containing one or more substrings into an array of substrings. More...
                                                         
                                                        subroutine parusr (str, lun, i1, io)
                                                         Initiate the process to parse out mnemonics from a user-specified character string, then separate them into store and condition nodes. More...
                                                         
                                                        subroutine parutg (lun, io, utg, nod, kon, val)
                                                         Parse a mnemonic from a character string. More...
                                                         
                                                        subroutine strcln
                                                         Reset the internal mnemonic string cache. More...
                                                         
                                                        subroutine string (str, lun, i1, io)
                                                         Check whether a string is in the internal mnemonic string cache. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Process mnemonic strings.

                                                        +
                                                        Author
                                                        Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition in file strings.F90.

                                                        +

                                                        Function/Subroutine Documentation

                                                        + +

                                                        ◆ parstr()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        subroutine parstr (character*(*), intent(in) str,
                                                        character*(*), dimension(mtag), intent(out) tags,
                                                        integer, intent(in) mtag,
                                                        integer, intent(out) ntag,
                                                        character, intent(in) sep,
                                                        logical, intent(in) limit80 
                                                        )
                                                        +
                                                        + +

                                                        Parse a string containing one or more substrings into an array of substrings.

                                                        +

                                                        The separator for the substrings is specified during input, and multiple adjacent occurrences of this character will be treated as a single occurrence when the string is actually parsed.

                                                        +
                                                        Parameters
                                                        + + + + + + + +
                                                        str- String
                                                        tags- Array of substrings
                                                        mtag- Dimensioned size of tags within calling program; used by the subroutine to make sure it doesn't overflow the tags array
                                                        ntag- Number of substrings returned in tags
                                                        sep- Separator character for substrings
                                                        limit80- .true. if an abort should occur when str is longer than 80 characters
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2007-01-19
                                                        + +

                                                        Definition at line 472 of file strings.F90.

                                                        + +

                                                        References bort2().

                                                        + +

                                                        Referenced by fdebufr_c(), fstag(), getcfmng(), getntbe(), gettbh(), parusr(), readlc(), seqsdx(), sntbbe(), sntbde(), sntbfe(), ufbseq(), ufbtab(), ufbtam(), and writlc().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ parusr()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        subroutine parusr (character*(*), intent(in) str,
                                                        integer, intent(in) lun,
                                                        integer, intent(in) i1,
                                                        integer, intent(in) io 
                                                        )
                                                        +
                                                        + +

                                                        Initiate the process to parse out mnemonics from a user-specified character string, then separate them into store and condition nodes.

                                                        +

                                                        Information about the string mnemonics is stored in arrays in common block /usrstr/. Condition nodes are sorted in the order expected in the internal jump/link tables and several checks are performed on them.

                                                        +
                                                        Parameters
                                                        + + + + + +
                                                        str- String of blank-separated mnemonics
                                                        lun- File ID
                                                        i1- A number greater than or equal to the number of blank-separated mnemonics in str
                                                        iO- Status indicator for BUFR file associated with lun:
                                                          +
                                                        • 0 = Input file
                                                        • +
                                                        • 1 = Output file
                                                        • +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 148 of file strings.F90.

                                                        + +

                                                        References bort2(), parstr(), and parutg().

                                                        + +

                                                        Referenced by string().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ parutg()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        subroutine parutg (integer, intent(in) lun,
                                                        integer, intent(in) io,
                                                        character*(*), intent(in) utg,
                                                        integer, intent(out) nod,
                                                        integer, intent(out) kon,
                                                        real, intent(out) val 
                                                        )
                                                        +
                                                        + +

                                                        Parse a mnemonic from a character string.

                                                        +

                                                        Parse a user-specified tag (mnemonic) utg that represents a value either being decoded from a BUFR file (if it is being read) or encoded into a BUFR file (if it is being written). This subroutine first checks to see if the tag contains a condition character ('=', '!', '<', '>', '^' or '#'). If it does not, nothing happens at this point. If it does, then the type of condition character is noted and the tag is stripped of all characters at and beyond the condition character. In either event, the resultant tag is checked against those in the internal jump/ link subset table (in module moda_tables). If found, the node associated with the tag is returned (and it is either a "condition" node or a "store" node depending of the presence or absence of a condition character in utg). Otherwise the node is returned as zero. If the tag represents a condition node, then the condition value (numeric characters beyond the condition character in the user-specified tag input here) is returned.

                                                        +

                                                        As an example of condition character usage, consider the following example of a call to ufbint():

                                                        +
                                                        real*8 usr(4,50)
                                                        +
                                                        ....
                                                        +
                                                        ....
                                                        +
                                                        call ufbint(lunin,usr,4,50,iret,'PRLC<50000 TMDB WDIR WSPD')
                                                        +
                                                        recursive subroutine ufbint(lunin, usr, i1, i2, iret, str)
                                                        Read or write one or more data values from or to a data subset.
                                                        +

                                                        Assuming that lunin points to a BUFR file open for input (reading), then the usr array now contains iret levels of data (up to a maximum of 50) where the value of PRLC is/was less than 50000, along with the corresponding values for TMDB, WDIR and WSPD at those levels.

                                                        +

                                                        As another example, consider the following example of a call to readlc() for a long character string:

                                                        +
                                                        character*200 lchr
                                                        +
                                                        ....
                                                        +
                                                        ....
                                                        +
                                                        call readlc(lunin,lchr,'NUMID#3')
                                                        +

                                                        Assuming that lunin points to a BUFR file open for input (reading), then the lchr string now contains the value corresponding to the third occurrence of NUMID within the current subset.

                                                        +

                                                        Valid condition codes include:

                                                          +
                                                        • '<' - less than
                                                        • +
                                                        • '>' - greater than
                                                        • +
                                                        • '=' - equal to
                                                        • +
                                                        • '!' - not equal to
                                                        • +
                                                        • '#' - ordinal identifier for a particular occurrence of a long character string
                                                        • +
                                                        +
                                                        Parameters
                                                        + + + + + + + +
                                                        lun- File ID
                                                        io- Status indicator for BUFR file associated with lun:
                                                          +
                                                        • 0 = Input file
                                                        • +
                                                        • 1 = Output file
                                                        • +
                                                        +
                                                        utg- User-supplied tag representing a value to be encoded/decoded to/from BUFR file
                                                        nod- Positional index in internal jump/link subset table for utg:
                                                          +
                                                        • 0 = utg not found in table
                                                        • +
                                                        +
                                                        kon- Indicator for type of condition character found in UTG:
                                                          +
                                                        • 0 = No condition character found (nod is a store node)
                                                        • +
                                                        • 1 = Character '=' found (nod is a condition node)
                                                        • +
                                                        • 2 = Character '!' found (nod is a condition node)
                                                        • +
                                                        • 3 = Character '<' found (nod is a condition node)
                                                        • +
                                                        • 4 = Character '>' found (nod is a condition node)
                                                        • +
                                                        • 5 = Character '^' found (nod is a condition node; specifically, a "bump" node)
                                                        • +
                                                        • 6 = Character '#' found (nod is a condition node)
                                                        • +
                                                        +
                                                        val- Condition value associated with condition character found in utg:
                                                          +
                                                        • 0 = utg does not have a condition character
                                                        • +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 348 of file strings.F90.

                                                        + +

                                                        References bort(), bort2(), moda_msgcwd::inode, moda_tables::isc, strnum(), moda_tables::tag, and moda_tables::typ.

                                                        + +

                                                        Referenced by parusr(), readlc(), and writlc().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ strcln()

                                                        + +
                                                        +
                                                        + + + + +
                                                        subroutine strcln
                                                        +
                                                        + +

                                                        Reset the internal mnemonic string cache.

                                                        +

                                                        The string cache is a performance-enhancing feature which saves processing time when the same mnemonics are encountered repeatedly.

                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 115 of file strings.F90.

                                                        + +

                                                        Referenced by makestab().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ string()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        subroutine string (character*(*), intent(in) str,
                                                        integer, intent(in) lun,
                                                        integer, intent(in) i1,
                                                        integer, intent(in) io 
                                                        )
                                                        +
                                                        + +

                                                        Check whether a string is in the internal mnemonic string cache.

                                                        +

                                                        Check to see if a user-specified character string is already in the internal cache (arrays in common blocks /stcach/ and /stords/). If not, then call subroutine parusr() to perform the task of separating and checking the individual mnemonics so that they can then be added to the cache.

                                                        +

                                                        The mnemonic string cache is a performance enhancing device which saves time when the same mnemonic strings are repeatedly encountered within an application program.

                                                        +
                                                        Parameters
                                                        + + + + + +
                                                        str- String of blank-separated mnemonics
                                                        lun- File ID
                                                        i1- A number greater than or equal to the number of blank-separated mnemonics in str
                                                        io- Status indicator for BUFR file associated with lun:
                                                          +
                                                        • 0 = Input file
                                                        • +
                                                        • 1 = Output file
                                                        • +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        Woollen
                                                        +
                                                        Date
                                                        1994-01-06
                                                        + +

                                                        Definition at line 24 of file strings.F90.

                                                        + +

                                                        References bort2(), moda_msgcwd::inode, and parusr().

                                                        + +

                                                        Referenced by ufbevn(), ufbget(), ufbin3(), ufbint(), ufbovr(), ufbrep(), ufbstp(), ufbtab(), and ufbtam().

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/strings_8F90.js b/previous_versions/v12.1.0/strings_8F90.js new file mode 100644 index 000000000..4ae670d8d --- /dev/null +++ b/previous_versions/v12.1.0/strings_8F90.js @@ -0,0 +1,8 @@ +var strings_8F90 = +[ + [ "parstr", "strings_8F90.html#a1d493e7de1c23739a0fcd06089139f35", null ], + [ "parusr", "strings_8F90.html#ae49e5fa3610c743607ca6288d4107d28", null ], + [ "parutg", "strings_8F90.html#a2da1c300ec049ee215d937b5ab545f53", null ], + [ "strcln", "strings_8F90.html#a19c92d247281ffcad8aab45d7debb54f", null ], + [ "string", "strings_8F90.html#aa3112b3661ec475fe7949d9ae5bafb40", null ] +]; \ No newline at end of file diff --git a/previous_versions/v12.1.0/strings_8F90_source.html b/previous_versions/v12.1.0/strings_8F90_source.html new file mode 100644 index 000000000..aac504a04 --- /dev/null +++ b/previous_versions/v12.1.0/strings_8F90_source.html @@ -0,0 +1,507 @@ + + + + + + + +NCEPLIBS-bufr: strings.F90 Source File + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        +
                                                        strings.F90
                                                        +
                                                        +
                                                        +Go to the documentation of this file.
                                                        1 
                                                        +
                                                        5 
                                                        +
                                                        24 subroutine string(str,lun,i1,io)
                                                        +
                                                        25 
                                                        +
                                                        26  use modv_vars, only: mxs
                                                        +
                                                        27 
                                                        +
                                                        28  use moda_msgcwd
                                                        +
                                                        29 
                                                        +
                                                        30  implicit none
                                                        +
                                                        31 
                                                        +
                                                        32  character*(*), intent(in) :: str
                                                        +
                                                        33  character*128 bort_str1, bort_str2
                                                        +
                                                        34  character*80 usr, ust
                                                        +
                                                        35 
                                                        +
                                                        36  integer, intent(in) :: lun, i1, io
                                                        +
                                                        37  integer, parameter :: jcons = 52
                                                        +
                                                        38  integer mstr, nstr, lstr, lux, icon, jcon, iord, iorx, nxt, ind, j, n
                                                        +
                                                        39 
                                                        +
                                                        40  logical incache
                                                        +
                                                        41 
                                                        +
                                                        42  ! Note that lstr, mstr and nstr were initialized via a prior call to subroutine strcln(), which itself was called by
                                                        +
                                                        43  ! subroutine makestab().
                                                        +
                                                        44  common /stcach/ mstr, nstr, lstr, lux(mxs,2), usr(mxs), icon(jcons,mxs)
                                                        +
                                                        45  common /usrstr/ jcon(jcons)
                                                        +
                                                        46  common /stords/ iord(mxs), iorx(mxs)
                                                        +
                                                        47 
                                                        +
                                                        48  nxt = 0
                                                        +
                                                        49  ust = str
                                                        +
                                                        50  ind = inode(lun)
                                                        +
                                                        51  if(len(str)>80) then
                                                        +
                                                        52  write(bort_str1,'("BUFRLIB: STRING - INPUT STRING (",A,") HAS")') str
                                                        +
                                                        53  write(bort_str2,'(18X,"LENGTH (",I4,"), > LIMIT OF 80 CHAR.")') len(str)
                                                        +
                                                        54  call bort2(bort_str1,bort_str2)
                                                        +
                                                        55  endif
                                                        +
                                                        56 
                                                        +
                                                        57  ! See if the string is already in the cache
                                                        +
                                                        58 
                                                        +
                                                        59  incache = .false.
                                                        +
                                                        60  do n=1,nstr
                                                        +
                                                        61  if(lux(iord(n),2)==ind) then
                                                        +
                                                        62  iorx(nxt+1) = iord(n)
                                                        +
                                                        63  nxt = nxt+1
                                                        +
                                                        64  endif
                                                        +
                                                        65  enddo
                                                        +
                                                        66  do n=1,nxt
                                                        +
                                                        67  if(ust==usr(iorx(n))) then
                                                        +
                                                        68 
                                                        +
                                                        69  ! Yes, so copy parameters from the cache
                                                        +
                                                        70 
                                                        +
                                                        71  incache = .true.
                                                        +
                                                        72  do j=1,jcons
                                                        +
                                                        73  jcon(j) = icon(j,iorx(n))
                                                        +
                                                        74  enddo
                                                        +
                                                        75  exit
                                                        +
                                                        76  endif
                                                        +
                                                        77  enddo
                                                        +
                                                        78  if (.not.incache) then
                                                        +
                                                        79 
                                                        +
                                                        80  ! No, so add it to the cache
                                                        +
                                                        81 
                                                        +
                                                        82  call parusr(str,lun,i1,io)
                                                        +
                                                        83  lstr = max(mod(lstr+1,mstr+1),1)
                                                        +
                                                        84  nstr = min(nstr+1,mstr)
                                                        +
                                                        85  lux(lstr,1) = lun
                                                        +
                                                        86  lux(lstr,2) = ind
                                                        +
                                                        87  usr(lstr) = str
                                                        +
                                                        88  do j=1,jcons
                                                        +
                                                        89  icon(j,lstr) = jcon(j)
                                                        +
                                                        90  enddo
                                                        +
                                                        91 
                                                        +
                                                        92  ! Rearrange the cache order following this update
                                                        +
                                                        93 
                                                        +
                                                        94  do n=nstr,2,-1
                                                        +
                                                        95  iord(n) = iord(n-1)
                                                        +
                                                        96  enddo
                                                        +
                                                        97  iord(1) = lstr
                                                        +
                                                        98  endif
                                                        +
                                                        99 
                                                        +
                                                        100  if(jcon(1)>i1) then
                                                        +
                                                        101  write(bort_str1,'("BUFRLIB: STRING - INPUT STRING (",A,")")') str
                                                        +
                                                        102  write(bort_str2,'(18X,"HAS",I5," STORE NODES (MNEMONICS) - THE LIMIT (THIRD INPUT ARGUMENT) IS",I5)') jcon(1), i1
                                                        +
                                                        103  call bort2(bort_str1,bort_str2)
                                                        +
                                                        104  endif
                                                        +
                                                        105 
                                                        +
                                                        106  return
                                                        +
                                                        107 end subroutine string
                                                        +
                                                        108 
                                                        +
                                                        115 subroutine strcln
                                                        +
                                                        116 
                                                        +
                                                        117  use modv_vars, only: mxs
                                                        +
                                                        118 
                                                        +
                                                        119  implicit none
                                                        +
                                                        120 
                                                        +
                                                        121  integer mstr, nstr, lstr, luns, icon
                                                        +
                                                        122 
                                                        +
                                                        123  character*80 usrs
                                                        +
                                                        124 
                                                        +
                                                        125  common /stcach/ mstr, nstr, lstr, luns(mxs,2), usrs(mxs), icon(52,mxs)
                                                        +
                                                        126 
                                                        +
                                                        127  mstr = mxs
                                                        +
                                                        128  nstr = 0
                                                        +
                                                        129  lstr = 0
                                                        +
                                                        130 
                                                        +
                                                        131  return
                                                        +
                                                        132 end subroutine strcln
                                                        +
                                                        133 
                                                        +
                                                        148 subroutine parusr(str,lun,i1,io)
                                                        +
                                                        149 
                                                        +
                                                        150  use modv_vars, only: iac
                                                        +
                                                        151 
                                                        +
                                                        152  implicit none
                                                        +
                                                        153 
                                                        +
                                                        154  integer, intent(in) :: lun, i1, io
                                                        +
                                                        155  integer, parameter :: maxusr = 30, maxnod = 20, maxcon = 10
                                                        +
                                                        156  integer nnod, ncon, nods, nodc, ivls, kons, i, j, n, ntot, nod, kon, irpc, lstjpb
                                                        +
                                                        157 
                                                        +
                                                        158  character*(*), intent(in) :: str
                                                        +
                                                        159  character*128 bort_str1, bort_str2
                                                        +
                                                        160  character*80 ust
                                                        +
                                                        161  character*20 utg(maxusr)
                                                        +
                                                        162 
                                                        +
                                                        163  real val
                                                        +
                                                        164 
                                                        +
                                                        165  logical bump
                                                        +
                                                        166 
                                                        +
                                                        167  common /usrstr/ nnod, ncon, nods(maxnod), nodc(maxcon), ivls(maxcon), kons(maxcon)
                                                        +
                                                        168 
                                                        +
                                                        169  ust = str
                                                        +
                                                        170  if(len(str)>80) then
                                                        +
                                                        171  write(bort_str1,'("BUFRLIB: PARUSR - INPUT STRING (",A,") HAS ")') str
                                                        +
                                                        172  write(bort_str2,'(18X,"LENGTH (",I4,"), > LIMIT OF 80 CHAR.")') len(str)
                                                        +
                                                        173  call bort2(bort_str1,bort_str2)
                                                        +
                                                        174  endif
                                                        +
                                                        175 
                                                        +
                                                        176  ncon = 0
                                                        +
                                                        177  nnod = 0
                                                        +
                                                        178 
                                                        +
                                                        179  ! Parse the string
                                                        +
                                                        180 
                                                        +
                                                        181  call parstr(ust,utg,maxusr,ntot,' ',.true.)
                                                        +
                                                        182 
                                                        +
                                                        183  do n=1,ntot
                                                        +
                                                        184  ! For each mnemonic, determine if it's a condition node or a store node
                                                        +
                                                        185  call parutg(lun,io,utg(n),nod,kon,val)
                                                        +
                                                        186  if(kon/=0) then
                                                        +
                                                        187  ! It's a condition node
                                                        +
                                                        188  ncon = ncon+1
                                                        +
                                                        189  if(ncon>maxcon) then
                                                        +
                                                        190  write(bort_str1,'("BUFRLIB: PARUSR - THE NUMBER OF CONDITION NODES IN INPUT STRING")')
                                                        +
                                                        191  write(bort_str2,'(18X,A,") EXCEEDS THE MAXIMUM (",I3,")")') str,maxcon
                                                        +
                                                        192  call bort2(bort_str1,bort_str2)
                                                        +
                                                        193  endif
                                                        +
                                                        194  nodc(ncon) = nod
                                                        +
                                                        195  kons(ncon) = kon
                                                        +
                                                        196  ivls(ncon) = nint(val)
                                                        +
                                                        197  else
                                                        +
                                                        198  ! It's a store node
                                                        +
                                                        199  nnod = nnod+1
                                                        +
                                                        200  if(nnod>maxnod) then
                                                        +
                                                        201  write(bort_str1,'("BUFRLIB: PARUSR - THE NUMBER OF STORE NODES IN INPUT STRING")')
                                                        +
                                                        202  write(bort_str2,'(18X,A,") EXCEEDS THE MAXIMUM (",I3,")")') str,maxnod
                                                        +
                                                        203  call bort2(bort_str1,bort_str2)
                                                        +
                                                        204  endif
                                                        +
                                                        205  nods(nnod) = nod
                                                        +
                                                        206  endif
                                                        +
                                                        207  enddo
                                                        +
                                                        208 
                                                        +
                                                        209  ! Sort condition nodes in jump/link table order
                                                        +
                                                        210 
                                                        +
                                                        211  do i=1,ncon
                                                        +
                                                        212  do j=i+1,ncon
                                                        +
                                                        213  if(nodc(i)>nodc(j)) then
                                                        +
                                                        214  nod = nodc(i)
                                                        +
                                                        215  nodc(i) = nodc(j)
                                                        +
                                                        216  nodc(j) = nod
                                                        +
                                                        217  kon = kons(i)
                                                        +
                                                        218  kons(i) = kons(j)
                                                        +
                                                        219  kons(j) = kon
                                                        +
                                                        220  val = ivls(i)
                                                        +
                                                        221  ivls(i) = ivls(j)
                                                        +
                                                        222  ivls(j) = nint(val)
                                                        +
                                                        223  endif
                                                        +
                                                        224  enddo
                                                        +
                                                        225  enddo
                                                        +
                                                        226 
                                                        +
                                                        227  ! Check on special rules for conditional nodes that are bump nodes
                                                        +
                                                        228 
                                                        +
                                                        229  bump = .false.
                                                        +
                                                        230  do n=1,ncon
                                                        +
                                                        231  if(kons(n)==5) then
                                                        +
                                                        232  if(io==0) then
                                                        +
                                                        233  write(bort_str1,'("BUFRLIB: PARUSR - BUMP NODE (^ IN INPUT STRING ",A)') str
                                                        +
                                                        234  write(bort_str2,'(18X,"IS SPECIFIED FOR A BUFR FILE OPEN FOR INPUT, THE BUFR FILE MUST BE OPEN FOR OUTPUT")')
                                                        +
                                                        235  call bort2(bort_str1,bort_str2)
                                                        +
                                                        236  endif
                                                        +
                                                        237  if(n/=ncon) then
                                                        +
                                                        238  write(bort_str1,'("BUFRLIB: PARUSR - INPUT STRING (",A,") CONTAINS")') str
                                                        +
                                                        239  write(bort_str2,'(18X,"CONDITIONAL NODES IN ADDITION TO BUMP NODE - THE BUMP MUST BE ON THE INNER NODE")')
                                                        +
                                                        240  call bort2(bort_str1,bort_str2)
                                                        +
                                                        241  endif
                                                        +
                                                        242  bump = .true.
                                                        +
                                                        243  endif
                                                        +
                                                        244  enddo
                                                        +
                                                        245 
                                                        +
                                                        246  ! Check store node count and alignment
                                                        +
                                                        247 
                                                        +
                                                        248  if(.not.bump .and. nnod==0) then
                                                        +
                                                        249  write(bort_str1,'("BUFRLIB: PARUSR - INPUT STRING (",A,") HAS")') str
                                                        +
                                                        250  write(bort_str2,'(18X,"NO STORE NODES")')
                                                        +
                                                        251  call bort2(bort_str1,bort_str2)
                                                        +
                                                        252  endif
                                                        +
                                                        253  if(nnod>i1) then
                                                        +
                                                        254  write(bort_str1,'("BUFRLIB: PARUSR - INPUT STRING (",A,")")') str
                                                        +
                                                        255  write(bort_str2,'(18X,"HAS",I5," STORE NODES (MNEMONICS) - THE LIMIT {THIRD (INPUT) ARGUMENT} IS",I5)') nnod,i1
                                                        +
                                                        256  call bort2(bort_str1,bort_str2)
                                                        +
                                                        257  endif
                                                        +
                                                        258 
                                                        +
                                                        259  irpc = -1
                                                        +
                                                        260  do i=1,nnod
                                                        +
                                                        261  if(nods(i)>0) then
                                                        +
                                                        262  if(irpc<0) irpc = lstjpb(nods(i),lun,'RPC')
                                                        +
                                                        263  if(irpc/=lstjpb(nods(i),lun,'RPC').and.iac==0) then
                                                        +
                                                        264  write(bort_str1,'("BUFRLIB: PARUSR - INPUT STRING (",A,") CONTAINS")') str
                                                        +
                                                        265  write(bort_str2,'(18X,"STORE NODES (MNEMONICS) THAT ARE IN MORE THAN ONE REPLICATION GROUP")')
                                                        +
                                                        266  call bort2(bort_str1,bort_str2)
                                                        +
                                                        267  endif
                                                        +
                                                        268  endif
                                                        +
                                                        269  enddo
                                                        +
                                                        270 
                                                        +
                                                        271  return
                                                        +
                                                        272 end subroutine parusr
                                                        +
                                                        273 
                                                        +
                                                        348 subroutine parutg(lun,io,utg,nod,kon,val)
                                                        +
                                                        349 
                                                        +
                                                        350  use moda_msgcwd
                                                        +
                                                        351  use moda_tables
                                                        +
                                                        352 
                                                        +
                                                        353  implicit none
                                                        +
                                                        354 
                                                        +
                                                        355  integer, intent(in) :: lun, io
                                                        +
                                                        356  integer, intent(out) :: nod, kon
                                                        +
                                                        357  integer, parameter :: nchk = 8, ncond = 6
                                                        +
                                                        358  integer, parameter :: iok(nchk) = (/-1, -1, -1, -1, -1, 0, 0, 0/)
                                                        +
                                                        359  integer ltg, icv, inod, i, j, num, ier
                                                        +
                                                        360 
                                                        +
                                                        361  character*(*), intent(in) :: utg
                                                        +
                                                        362  character*128 bort_str1, bort_str2
                                                        +
                                                        363  character*20 atag
                                                        +
                                                        364  character*3 atyp
                                                        +
                                                        365  character*3, parameter :: btyp(nchk) = (/'SUB','SEQ','REP','RPC','RPS','DRB','DRP','DRS'/)
                                                        +
                                                        366  character, parameter :: cond(ncond) = (/'=', '!', '<', '>', '^', '#'/)
                                                        +
                                                        367 
                                                        +
                                                        368  real, intent(out) :: val
                                                        +
                                                        369 
                                                        +
                                                        370  ! For now, set picky (see below) to always be .false.
                                                        +
                                                        371  logical, parameter :: picky = .false.
                                                        +
                                                        372 
                                                        +
                                                        373  atag = ' '
                                                        +
                                                        374  atyp = ' '
                                                        +
                                                        375  kon = 0
                                                        +
                                                        376  nod = 0
                                                        +
                                                        377  val = 0
                                                        +
                                                        378  ltg = min(20,len(utg))
                                                        +
                                                        379 
                                                        +
                                                        380  ! Parse utg, saving into atag only the characters prior to any condition character.
                                                        +
                                                        381 
                                                        +
                                                        382  ! But first, take care of the special case where utg denotes the short (i.e. 1-bit) delayed replication of a Table D
                                                        +
                                                        383  ! mnemonic. This will prevent confusion later on since '<' and '>' are each also valid as condition characters.
                                                        +
                                                        384  if((utg(1:1)=='<').and.(index(utg(3:),'>')/=0)) then
                                                        +
                                                        385  atag = utg
                                                        +
                                                        386  else
                                                        +
                                                        387  outer: do i=1,ltg
                                                        +
                                                        388  if(utg(i:i)==' ') exit
                                                        +
                                                        389  do j=1,ncond
                                                        +
                                                        390  if(utg(i:i)==cond(j)) then
                                                        +
                                                        391  kon = j
                                                        +
                                                        392  icv = i+1
                                                        +
                                                        393  exit outer
                                                        +
                                                        394  endif
                                                        +
                                                        395  enddo
                                                        +
                                                        396  atag(i:i) = utg(i:i)
                                                        +
                                                        397  enddo outer
                                                        +
                                                        398  endif
                                                        +
                                                        399 
                                                        +
                                                        400  ! Find the node associated with atag in the subset table
                                                        +
                                                        401 
                                                        +
                                                        402  inod = inode(lun)
                                                        +
                                                        403  do nod=inod,isc(inod)
                                                        +
                                                        404  if(atag==tag(nod)) then
                                                        +
                                                        405  ! We found it, now make sure it has a valid node type
                                                        +
                                                        406  if(kon==5) then
                                                        +
                                                        407  ! Condition char "^" must be associated with a delayed replication sequence (this is a "bump" node). This is an
                                                        +
                                                        408  ! obsolete feature but remains in the library for compatibility with older application programs.
                                                        +
                                                        409  if(typ(nod-1)/='DRP' .and. typ(nod-1)/='DRS') then
                                                        +
                                                        410  write(bort_str1,'("BUFRLIB: PARUTG - BUMP NODE (MNEMONIC ",A,")'// &
                                                        +
                                                        411  ' MUST REFER TO A DELAYED REPLICATION SEQUENCE, HERE TYPE IS ",A)') atag,typ(nod-1)
                                                        +
                                                        412  call bort(bort_str1)
                                                        +
                                                        413  endif
                                                        +
                                                        414  elseif(kon/=6) then
                                                        +
                                                        415  ! Allow reading (but not writing) of delayed replication factors.
                                                        +
                                                        416  atyp = typ(nod)
                                                        +
                                                        417  do i=1,nchk
                                                        +
                                                        418  if(atyp==btyp(i) .and. io>iok(i)) then
                                                        +
                                                        419  write(bort_str1,'("BUFRLIB: PARUTG - ILLEGAL NODE TYPE: ",A," FOR MNEMONIC ",A)') atyp,atag
                                                        +
                                                        420  call bort(bort_str1)
                                                        +
                                                        421  endif
                                                        +
                                                        422  enddo
                                                        +
                                                        423  endif
                                                        +
                                                        424  ! If it's a condition node, then get the condition value which is a number following it
                                                        +
                                                        425  if(kon/=0) then
                                                        +
                                                        426  call strnum(utg(icv:ltg),num,ier)
                                                        +
                                                        427  if(ier<0) then
                                                        +
                                                        428  write(bort_str1,'("BUFRLIB: PARUTG - CONDITION VALUE IN MNEMONIC ",A," CONTAINS NON-NUMERIC CHARACTERS")') utg
                                                        +
                                                        429  call bort(bort_str1)
                                                        +
                                                        430  endif
                                                        +
                                                        431  val = num
                                                        +
                                                        432  endif
                                                        +
                                                        433  return
                                                        +
                                                        434  endif
                                                        +
                                                        435  enddo
                                                        +
                                                        436 
                                                        +
                                                        437  ! atag was not found in the subset table
                                                        +
                                                        438 
                                                        +
                                                        439  ! So what do we want to do? We could be "picky" and abort right here, or we could allow for the possibility that, e.g. a
                                                        +
                                                        440  ! user application has been streamlined to always call subroutine ufbint() with the same str, even though some of the
                                                        +
                                                        441  ! mnemonics contained within that str may not exist within the sequence definition of every possible type/subtype that is
                                                        +
                                                        442  ! being written by the application. In such cases, by not being "picky", we could just allow the library to subsequently
                                                        +
                                                        443  ! (and quietly, if iprt happened to be set to -1 in common /quiet/) not actually store the value corresponding to such
                                                        +
                                                        444  ! mnemonics, rather than loudly complaining and aborting.
                                                        +
                                                        445 
                                                        +
                                                        446  if(kon==0 .and. (io==0 .or. atag=='NUL' .or. .not.picky)) then
                                                        +
                                                        447  nod = 0
                                                        +
                                                        448  else
                                                        +
                                                        449  write(bort_str1,'("BUFRLIB: PARUTG - TRYING TO WRITE A MNEMONIC'// &
                                                        +
                                                        450  ' (",A,") WHICH DOES NOT EXIST IN SUBSET TABLE")') atag
                                                        +
                                                        451  write(bort_str2,'(18X,"(UPON INPUT, IT CONTAINED THE CONDITION CHARACTER ",A,")")') utg(icv-1:icv-1)
                                                        +
                                                        452  call bort2(bort_str1,bort_str2)
                                                        +
                                                        453  endif
                                                        +
                                                        454 
                                                        +
                                                        455  return
                                                        +
                                                        456 end subroutine parutg
                                                        +
                                                        457 
                                                        +
                                                        472 subroutine parstr(str,tags,mtag,ntag,sep,limit80)
                                                        +
                                                        473 
                                                        +
                                                        474  implicit none
                                                        +
                                                        475 
                                                        +
                                                        476  integer, intent(in) :: mtag
                                                        +
                                                        477  integer, intent(out) :: ntag
                                                        +
                                                        478  integer i, lstr, ltag, nchr
                                                        +
                                                        479 
                                                        +
                                                        480  character*(*), intent(in) :: str
                                                        +
                                                        481  character*(*), intent(out) :: tags(mtag)
                                                        +
                                                        482  character, intent(in) :: sep
                                                        +
                                                        483  character*128 bort_str1, bort_str2
                                                        +
                                                        484 
                                                        +
                                                        485  logical, intent(in) :: limit80
                                                        +
                                                        486  logical substr
                                                        +
                                                        487 
                                                        +
                                                        488  lstr = len(str)
                                                        +
                                                        489  ltag = len(tags(1))
                                                        +
                                                        490  if( limit80 .and. (lstr>80) ) then
                                                        +
                                                        491  write(bort_str1,'("BUFRLIB: PARSTR - INPUT STRING (",A,") HAS ")') str
                                                        +
                                                        492  write(bort_str2,'(18X,"LENGTH (",I4,"), > LIMIT OF 80 CHAR.")') lstr
                                                        +
                                                        493  call bort2(bort_str1,bort_str2)
                                                        +
                                                        494  endif
                                                        +
                                                        495  ntag = 0
                                                        +
                                                        496  nchr = 0
                                                        +
                                                        497  substr = .false.
                                                        +
                                                        498 
                                                        +
                                                        499  do i=1,lstr
                                                        +
                                                        500  if( .not.substr .and. (str(i:i)/=sep) ) then
                                                        +
                                                        501  ntag = ntag+1
                                                        +
                                                        502  if(ntag>mtag) then
                                                        +
                                                        503  write(bort_str1,'("BUFRLIB: PARSTR - INPUT STRING (",A,") CONTAINS",I4)') str,ntag
                                                        +
                                                        504  write(bort_str2,'(18X,"SUBSTRINGS, EXCEEDING THE LIMIT {",I4," - THIRD (INPUT) ARGUMENT}")') mtag
                                                        +
                                                        505  call bort2(bort_str1,bort_str2)
                                                        +
                                                        506  endif
                                                        +
                                                        507  tags(ntag) = ' '
                                                        +
                                                        508  endif
                                                        +
                                                        509  if( substr .and. (str(i:i)==sep) ) nchr = 0
                                                        +
                                                        510  substr = str(i:i)/=sep
                                                        +
                                                        511  if(substr) then
                                                        +
                                                        512  nchr = nchr+1
                                                        +
                                                        513  if(nchr>ltag) then
                                                        +
                                                        514  write(bort_str1,'("BUFRLIB: PARSTR - INPUT STRING (",A,") ")') str
                                                        +
                                                        515  write(bort_str2,'(18X,"CONTAINS A PARSED SUBSTRING WITH LENGTH EXCEEDING THE MAXIMUM OF",I4," CHARACTERS")') ltag
                                                        +
                                                        516  call bort2(bort_str1,bort_str2)
                                                        +
                                                        517  endif
                                                        +
                                                        518  tags(ntag)(nchr:nchr) = str(i:i)
                                                        +
                                                        519  endif
                                                        +
                                                        520  enddo
                                                        +
                                                        521 
                                                        +
                                                        522  return
                                                        +
                                                        523 end subroutine parstr
                                                        +
                                                        subroutine bort(str)
                                                        Log an error message, then abort the application program.
                                                        Definition: borts.F90:15
                                                        +
                                                        subroutine bort2(str1, str2)
                                                        Log two error messages, then abort the application program.
                                                        Definition: borts.F90:39
                                                        +
                                                        recursive subroutine strnum(str, num, iret)
                                                        Decode an integer from a character string.
                                                        Definition: misc.F90:177
                                                        +
                                                        Declare arrays used to store information about the current BUFR message that is in the process of bei...
                                                        +
                                                        integer, dimension(:), allocatable inode
                                                        Table A mnemonic for type of BUFR message.
                                                        +
                                                        Declare arrays and variables used to store the internal jump/link table.
                                                        +
                                                        integer, dimension(:), allocatable isc
                                                        Scale factors corresponding to tag and typ:
                                                        +
                                                        character *3, dimension(:), allocatable typ
                                                        Type indicators corresponding to tag:
                                                        +
                                                        character *10, dimension(:), allocatable tag
                                                        Mnemonics in the jump/link table.
                                                        +
                                                        subroutine strcln
                                                        Reset the internal mnemonic string cache.
                                                        Definition: strings.F90:116
                                                        +
                                                        subroutine parstr(str, tags, mtag, ntag, sep, limit80)
                                                        Parse a string containing one or more substrings into an array of substrings.
                                                        Definition: strings.F90:473
                                                        +
                                                        subroutine parutg(lun, io, utg, nod, kon, val)
                                                        Parse a mnemonic from a character string.
                                                        Definition: strings.F90:349
                                                        +
                                                        subroutine string(str, lun, i1, io)
                                                        Check whether a string is in the internal mnemonic string cache.
                                                        Definition: strings.F90:25
                                                        +
                                                        subroutine parusr(str, lun, i1, io)
                                                        Initiate the process to parse out mnemonics from a user-specified character string,...
                                                        Definition: strings.F90:149
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/stseq_8c.html b/previous_versions/v12.1.0/stseq_8c.html new file mode 100644 index 000000000..68fbc2db2 --- /dev/null +++ b/previous_versions/v12.1.0/stseq_8c.html @@ -0,0 +1,312 @@ + + + + + + + +NCEPLIBS-bufr: stseq.c File Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        stseq.c File Reference
                                                        +
                                                        +
                                                        + +

                                                        Store information about a standard Table D descriptor within internal DX BUFR tables. +More...

                                                        +
                                                        #include "bufrlib.h"
                                                        +#include "mstabs.h"
                                                        +
                                                        +

                                                        Go to the source code of this file.

                                                        + + + + + + + + + + + +

                                                        +Functions

                                                        int cmpia (const void *pf1, const void *pf2)
                                                         Define a comparison between two integers. More...
                                                         
                                                        void nummtb (int *idn, char *tab, int *ipt)
                                                         Search for an entry in the BUFR master table. More...
                                                         
                                                        void stseq (int lun, int *irepct, int idn, char *nemo, char *cseq, int *cdesc, int ncdesc)
                                                         Store information about a standard Table D descriptor within internal DX BUFR tables. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Store information about a standard Table D descriptor within internal DX BUFR tables.

                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2009-03-23
                                                        + +

                                                        Definition in file stseq.c.

                                                        +

                                                        Function Documentation

                                                        + +

                                                        ◆ cmpia()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        int cmpia (const void * pf1,
                                                        const void * pf2 
                                                        )
                                                        +
                                                        + +

                                                        Define a comparison between two integers.

                                                        +

                                                        This routine defines a comparison between two integers for use by the binary search function bsearch.

                                                        +
                                                        Parameters
                                                        + + + +
                                                        pf1- first integer to be compared.
                                                        pf2- second integer to be compared.
                                                        +
                                                        +
                                                        +
                                                        Returns
                                                          +
                                                        • -1 PF1 is less than PF2
                                                        • +
                                                        • 0 PF1 is equal to PF2
                                                        • +
                                                        • 1 PF1 is greater than PF2
                                                        • +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2009-03-23
                                                        + +

                                                        Definition at line 28 of file stseq.c.

                                                        + +

                                                        Referenced by nummtb().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ nummtb()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        void nummtb (int * idn,
                                                        char * tab,
                                                        int * ipt 
                                                        )
                                                        +
                                                        + +

                                                        Search for an entry in the BUFR master table.

                                                        +

                                                        This routine searches for an entry corresponding to idn in the bufr master table (either 'B' or 'D', depending on the value of idn). The search uses binary search logic, so all of the entries in the table must be sorted in ascending order (by FXY number) in order for this routine to work properly.

                                                        +
                                                        Parameters
                                                        + + + + +
                                                        idn- WMO bit-wise representation of FXY number to be searched for.
                                                        tab- table in which idn was found ('B' or 'D').
                                                        ipt- index of entry for idn in master table tab.
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2009-03-23
                                                        + +

                                                        Definition at line 54 of file stseq.c.

                                                        + +

                                                        References bort_f(), cadn30_f(), cmpia(), FXY_STR_LEN, ibfxyn_c, idfxyn_c, ifxy_f(), MIN_FXY_TABLED, nmtb_c, and nmtd_c.

                                                        + +

                                                        Referenced by stseq().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ stseq()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        void stseq (int lun,
                                                        int * irepct,
                                                        int idn,
                                                        char * nemo,
                                                        char * cseq,
                                                        int * cdesc,
                                                        int ncdesc 
                                                        )
                                                        +
                                                        + +

                                                        Store information about a standard Table D descriptor within internal DX BUFR tables.

                                                        +

                                                        Given the WMO bit-wise (integer) representation of a standard Table D descriptor, this subroutine uses the master BUFR tables to store all of the necessary information for that descriptor within the internal DX BUFR tables. Any child descriptors which are themselves Table D descriptors are automatically resolved via a recursive call to this same subroutine.

                                                        +
                                                        Parameters
                                                        + + + + + + + + +
                                                        lun- File ID
                                                        irepct- Replication sequence counter for the current master table; used internally to keep track of which sequence names have already been defined, and thereby avoid contention within the internal DX BUFR Table D
                                                        idn- WMO bit-wise representation of FXY value for standard Table D descriptor
                                                        nemo- Mnemonic corresponding to idn
                                                        cseq- Description corresponding to idn
                                                        cdesc- Array of WMO-standard child descriptors equivalent to idn
                                                        ncdesc- Number of WMO-standard child descriptors in cdesc
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2009-03-23
                                                        + +

                                                        Definition at line 107 of file stseq.c.

                                                        + +

                                                        References bort_f(), cadn30_f(), cbbw_c, cbelem_c, cbmnem_c, cbscl_c, cbsref_c, cbunit_c, cdmnem_c, cdseq_c, elemdx_f(), FXY_STR_LEN, iafpk, icvidx(), idefxy_c, ifxy_f(), igetntbi_f(), igetprm_f(), igettdi_f(), imrkopr_f(), MAX_FXY_TABLEB, MIN_FXY_REPL, MIN_FXY_TABLED, ndelem_c, NEMO_STR_LEN, nemtab_f(), nummtb(), numtbd_f(), pktdd_f(), stntbi_f(), strnum_f(), and stseq().

                                                        + +

                                                        Referenced by stseq().

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/stseq_8c.js b/previous_versions/v12.1.0/stseq_8c.js new file mode 100644 index 000000000..814ee57cb --- /dev/null +++ b/previous_versions/v12.1.0/stseq_8c.js @@ -0,0 +1,6 @@ +var stseq_8c = +[ + [ "cmpia", "stseq_8c.html#afe9ff1cb9d09192a6d0c76f58c2e3f29", null ], + [ "nummtb", "stseq_8c.html#a340a16a2c0d988d37fbc2e92974b2b5e", null ], + [ "stseq", "stseq_8c.html#a4f4c37daea8a69385e280d60265f9d40", null ] +]; \ No newline at end of file diff --git a/previous_versions/v12.1.0/stseq_8c_source.html b/previous_versions/v12.1.0/stseq_8c_source.html new file mode 100644 index 000000000..0d0445364 --- /dev/null +++ b/previous_versions/v12.1.0/stseq_8c_source.html @@ -0,0 +1,556 @@ + + + + + + + +NCEPLIBS-bufr: stseq.c Source File + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        +
                                                        stseq.c
                                                        +
                                                        +
                                                        +Go to the documentation of this file.
                                                        1 
                                                        +
                                                        8 #include "bufrlib.h"
                                                        +
                                                        9 #include "mstabs.h"
                                                        +
                                                        10 
                                                        +
                                                        27 int
                                                        +
                                                        28 cmpia(const void *pf1, const void *pf2)
                                                        +
                                                        29 {
                                                        +
                                                        30  int *mypf1 = ( int * ) pf1;
                                                        +
                                                        31  int *mypf2 = ( int * ) pf2;
                                                        +
                                                        32 
                                                        +
                                                        33  if ( *mypf1 == *mypf2 ) return 0;
                                                        +
                                                        34 
                                                        +
                                                        35  return ( *mypf1 < *mypf2 ? -1 : 1 );
                                                        +
                                                        36 }
                                                        +
                                                        37 
                                                        +
                                                        53 void
                                                        +
                                                        54 nummtb(int *idn, char *tab, int *ipt)
                                                        +
                                                        55 {
                                                        +
                                                        56  int *pifxyn, *pbs, nmt;
                                                        +
                                                        57 
                                                        +
                                                        58  char adn[FXY_STR_LEN+1], errstr[129];
                                                        +
                                                        59 
                                                        +
                                                        60  if ( *idn >= ifxy_f(MIN_FXY_TABLED) ) {
                                                        +
                                                        61  *tab = 'D';
                                                        +
                                                        62  pifxyn = &idfxyn_c[0];
                                                        +
                                                        63  nmt = nmtd_c;
                                                        +
                                                        64  }
                                                        +
                                                        65  else {
                                                        +
                                                        66  *tab = 'B';
                                                        +
                                                        67  pifxyn = &ibfxyn_c[0];
                                                        +
                                                        68  nmt = nmtb_c;
                                                        +
                                                        69  }
                                                        +
                                                        70 
                                                        +
                                                        71  pbs = bsearch(idn, pifxyn, (size_t) nmt, sizeof(int),
                                                        +
                                                        72  (int (*) (const void *, const void *)) cmpia);
                                                        +
                                                        73  if ( pbs == NULL ) {
                                                        +
                                                        74  cadn30_f(*idn, adn, FXY_STR_LEN+1);
                                                        +
                                                        75  sprintf(errstr, "BUFRLIB: NUMMTB - COULD NOT FIND DESCRIPTOR "
                                                        +
                                                        76  "%s IN MASTER TABLE %c", adn, *tab);
                                                        +
                                                        77  bort_f(errstr);
                                                        +
                                                        78  }
                                                        +
                                                        79  *ipt = pbs - pifxyn;
                                                        +
                                                        80 
                                                        +
                                                        81  return;
                                                        +
                                                        82 }
                                                        +
                                                        83 
                                                        +
                                                        106 void
                                                        +
                                                        107 stseq(int lun, int *irepct, int idn, char *nemo,
                                                        +
                                                        108  char *cseq, int *cdesc, int ncdesc)
                                                        +
                                                        109 {
                                                        +
                                                        110  int i, j, nb, nd, ix, iy, iret, nbits;
                                                        +
                                                        111  int rpidn, pkint, ilen, imxcd, imxnf, ipt, *rpdesc;
                                                        +
                                                        112 
                                                        +
                                                        113  char tab, adn[FXY_STR_LEN+1], adn2[FXY_STR_LEN+1], units[10], errstr[129];
                                                        +
                                                        114  char nemo2[NEMO_STR_LEN+1], rpseq[56], card[80], ctmp[4], cblk = ' ', czero = '0';
                                                        +
                                                        115 
                                                        +
                                                        116 /*
                                                        +
                                                        117 ** The following variable is declared as static so that it automatically initializes
                                                        +
                                                        118 ** to zero and remains unchanged between recursive calls to this subroutine.
                                                        +
                                                        119 */
                                                        +
                                                        120  static int naf;
                                                        +
                                                        121 
                                                        +
                                                        122 /*
                                                        +
                                                        123 ** Is idn already listed as an entry in the internal Table D?
                                                        +
                                                        124 ** If so, then there's no need to proceed any further.
                                                        +
                                                        125 */
                                                        +
                                                        126  numtbd_f(lun, idn, nemo2, NEMO_STR_LEN+1, &tab, &iret);
                                                        +
                                                        127  if ( ( iret > 0 ) && ( tab == 'D' ) ) return;
                                                        +
                                                        128 
                                                        +
                                                        129 /*
                                                        +
                                                        130 ** Start a new Table D entry for idn.
                                                        +
                                                        131 */
                                                        +
                                                        132  tab = 'D';
                                                        +
                                                        133  nd = igetntbi_f(lun, &tab);
                                                        +
                                                        134  cadn30_f(idn, adn, FXY_STR_LEN+1);
                                                        +
                                                        135  stntbi_f(nd, lun, adn, nemo, cseq);
                                                        +
                                                        136 
                                                        +
                                                        137 /*
                                                        +
                                                        138 ** Now, go through the list of child descriptors corresponding to idn.
                                                        +
                                                        139 */
                                                        +
                                                        140  imxcd = igetprm_f("MAXCD");
                                                        +
                                                        141  imxnf = igetprm_f("MXNAF");
                                                        +
                                                        142 
                                                        +
                                                        143  for ( i = 0; i < ncdesc; i++ ) {
                                                        +
                                                        144  cadn30_f(cdesc[i], adn, FXY_STR_LEN+1); adn[6] = '\0';
                                                        +
                                                        145  strncpy(ctmp, &adn[1], 2); ctmp[2] = '\0';
                                                        +
                                                        146  strnum_f(ctmp, &ix, &iret);
                                                        +
                                                        147  strncpy(ctmp, &adn[3], 4); /* trailing null will be included in this copy */
                                                        +
                                                        148  strnum_f(ctmp, &iy, &iret);
                                                        +
                                                        149  if ( adn[0] == '3' ) {
                                                        +
                                                        150 /*
                                                        +
                                                        151 ** cdesc[i] is itself a Table D descriptor, so locate it within the
                                                        +
                                                        152 ** master table D and then store the contents within the internal
                                                        +
                                                        153 ** Table D via a recursive call to this same routine.
                                                        +
                                                        154 */
                                                        +
                                                        155  nummtb(&cdesc[i], &tab, &ipt);
                                                        +
                                                        156  if ( naf > 0 ) {
                                                        +
                                                        157 /*
                                                        +
                                                        158 ** There are associated fields in effect which will modify this
                                                        +
                                                        159 ** descriptor when storing it within the internal Table D. So
                                                        +
                                                        160 ** create a new sequence to store the contents of this descriptor
                                                        +
                                                        161 ** along with its associated fields.
                                                        +
                                                        162 */
                                                        +
                                                        163  rpidn = igettdi_f(lun);
                                                        +
                                                        164 
                                                        +
                                                        165  sprintf(rpseq, "REPLICATION SEQUENCE %.3d", ++(*irepct));
                                                        +
                                                        166  memset(&rpseq[24], (int) cblk, 31);
                                                        +
                                                        167  sprintf(nemo2, "RPSEQ%.3d", *irepct);
                                                        +
                                                        168 
                                                        +
                                                        169  stseq(lun, irepct, rpidn, nemo2, rpseq,
                                                        +
                                                        170  &idefxy_c[icvidx(ipt,0,imxcd)],
                                                        +
                                                        171  ndelem_c[ipt]);
                                                        +
                                                        172  pkint = rpidn;
                                                        +
                                                        173 
                                                        +
                                                        174  }
                                                        +
                                                        175  else {
                                                        +
                                                        176 /*
                                                        +
                                                        177 ** Store cdesc[i] as is directly within the internal Table D.
                                                        +
                                                        178 */
                                                        +
                                                        179  stseq(lun, irepct, cdesc[i], &cdmnem_c[ipt][0],
                                                        +
                                                        180  &cdseq_c[ipt][0],
                                                        +
                                                        181  &idefxy_c[icvidx(ipt,0,imxcd)],
                                                        +
                                                        182  ndelem_c[ipt]);
                                                        +
                                                        183  pkint = cdesc[i];
                                                        +
                                                        184  }
                                                        +
                                                        185  }
                                                        +
                                                        186  else if ( adn[0] == '2' ) {
                                                        +
                                                        187 /*
                                                        +
                                                        188 ** cdesc[i] is an operator descriptor.
                                                        +
                                                        189 */
                                                        +
                                                        190  if ( ( ( ix >= 4 ) && ( ix <= 6 ) ) || ( imrkopr_f(adn) ) ) {
                                                        +
                                                        191 /*
                                                        +
                                                        192 ** This is a 204YYY, 205YYY, 206YYY operator, or else a 223255,
                                                        +
                                                        193 ** 224255, 225255 or 232255 marker operator. In any case,
                                                        +
                                                        194 ** generate a Table B mnemonic to hold the corresponding data.
                                                        +
                                                        195 */
                                                        +
                                                        196  strncpy(nemo2, adn, 6);
                                                        +
                                                        197  memset(&nemo2[6], (int) cblk, 2);
                                                        +
                                                        198  nemo2[8] = '\0';
                                                        +
                                                        199 
                                                        +
                                                        200  if ( ( ix == 4 ) && ( iy == 0 ) ) {
                                                        +
                                                        201 /*
                                                        +
                                                        202 ** Cancel the most-recently added associated field.
                                                        +
                                                        203 */
                                                        +
                                                        204  if ( naf-- <= 0 ) {
                                                        +
                                                        205  sprintf(errstr, "BUFRLIB: STSEQ - TOO MANY ASSOCIATED"
                                                        +
                                                        206  " FIELD CANCELLATION OPERATORS");
                                                        +
                                                        207  bort_f(errstr);
                                                        +
                                                        208  }
                                                        +
                                                        209  }
                                                        +
                                                        210  else {
                                                        +
                                                        211 /*
                                                        +
                                                        212 ** Is nemo2 already listed as an entry within the internal
                                                        +
                                                        213 ** Table B?
                                                        +
                                                        214 */
                                                        +
                                                        215  nemtab_f(lun, nemo2, &pkint, &tab, &iret);
                                                        +
                                                        216  if ( ( iret == 0 ) || ( tab != 'B' ) ) {
                                                        +
                                                        217 /*
                                                        +
                                                        218 ** No, so create and store a new Table B entry for nemo2.
                                                        +
                                                        219 */
                                                        +
                                                        220  tab = 'B';
                                                        +
                                                        221  nb = igetntbi_f(lun, &tab);
                                                        +
                                                        222 
                                                        +
                                                        223  if ( ix == 4 ) {
                                                        +
                                                        224  sprintf(rpseq, "Associated field of %3d bits", iy);
                                                        +
                                                        225  nbits = iy;
                                                        +
                                                        226  strcpy(units, "NUMERIC");
                                                        +
                                                        227  }
                                                        +
                                                        228  else if ( ix == 5 ) {
                                                        +
                                                        229  sprintf(rpseq, "Text string of %3d bytes", iy);
                                                        +
                                                        230  nbits = iy*8;
                                                        +
                                                        231  strcpy(units, "CCITT IA5");
                                                        +
                                                        232  }
                                                        +
                                                        233  else if ( ix == 6 ) {
                                                        +
                                                        234  sprintf(rpseq, "Local descriptor of %3d bits", iy);
                                                        +
                                                        235  nbits = iy;
                                                        +
                                                        236  if ( nbits > 32 ) {
                                                        +
                                                        237  strcpy(units, "CCITT IA5");
                                                        +
                                                        238  }
                                                        +
                                                        239  else {
                                                        +
                                                        240  strcpy(units, "NUMERIC");
                                                        +
                                                        241  }
                                                        +
                                                        242  }
                                                        +
                                                        243  else { // 2-XX-255 marker operator
                                                        +
                                                        244  if ( ix == 23 ) {
                                                        +
                                                        245  sprintf(rpseq, "Substituted value");
                                                        +
                                                        246  }
                                                        +
                                                        247  else if ( ix == 24 ) {
                                                        +
                                                        248  sprintf(rpseq, "First-order statistical value");
                                                        +
                                                        249  }
                                                        +
                                                        250  else if ( ix == 25 ) {
                                                        +
                                                        251  sprintf(rpseq, "Difference statistical value");
                                                        +
                                                        252  }
                                                        +
                                                        253  else if ( ix == 32 ) {
                                                        +
                                                        254  sprintf(rpseq, "Replaced/retained value");
                                                        +
                                                        255  }
                                                        +
                                                        256  /* For now, set a default bit width and units. */
                                                        +
                                                        257  nbits = 8;
                                                        +
                                                        258  strcpy(units, "NUMERIC");
                                                        +
                                                        259  }
                                                        +
                                                        260  ilen = ( int ) strlen(rpseq);
                                                        +
                                                        261  memset(&rpseq[ilen], (int) cblk, 55 - ilen);
                                                        +
                                                        262 /*
                                                        +
                                                        263 ** Note that 49152 = 3*(2**14), so subtracting 49152 in the
                                                        +
                                                        264 ** following statement changes a WMO Table D bit-wise FXY value into
                                                        +
                                                        265 ** a WMO Table B bit-wise FXY value.
                                                        +
                                                        266 */
                                                        +
                                                        267  pkint = (igettdi_f(lun) - 49152);
                                                        +
                                                        268  cadn30_f(pkint, adn2, FXY_STR_LEN+1);
                                                        +
                                                        269 
                                                        +
                                                        270  stntbi_f(nb, lun, adn2, nemo2, rpseq);
                                                        +
                                                        271 
                                                        +
                                                        272  /* Initialize card to all blanks. */
                                                        +
                                                        273  memset(card, (int) cblk, sizeof( card ));
                                                        +
                                                        274 
                                                        +
                                                        275  strncpy(&card[2], nemo2, 8);
                                                        +
                                                        276  memcpy(&card[16], &czero, 1);
                                                        +
                                                        277  memcpy(&card[30], &czero, 1);
                                                        +
                                                        278  sprintf(&card[33], "%4d", nbits);
                                                        +
                                                        279  strcpy(&card[40], units);
                                                        +
                                                        280  card[40+strlen(units)] = cblk; /* overwrite trailing null */
                                                        +
                                                        281  elemdx_f(card, lun);
                                                        +
                                                        282  }
                                                        +
                                                        283  if ( ix == 4 ) {
                                                        +
                                                        284 /*
                                                        +
                                                        285 ** Add an associated field.
                                                        +
                                                        286 */
                                                        +
                                                        287  if ( naf >= imxnf ) {
                                                        +
                                                        288  sprintf(errstr, "BUFRLIB: STSEQ - TOO MANY ASSOCIATED"
                                                        +
                                                        289  " FIELDS ARE IN EFFECT AT THE SAME TIME");
                                                        +
                                                        290  bort_f(errstr);
                                                        +
                                                        291  }
                                                        +
                                                        292  iafpk[naf++] = pkint;
                                                        +
                                                        293  }
                                                        +
                                                        294  }
                                                        +
                                                        295  if ( ix == 6 ) {
                                                        +
                                                        296 /*
                                                        +
                                                        297 ** Skip over the local descriptor placeholder.
                                                        +
                                                        298 */
                                                        +
                                                        299  if ( ++i >= ncdesc ) {
                                                        +
                                                        300  sprintf(errstr, "BUFRLIB: STSEQ - COULD NOT FIND LOCAL"
                                                        +
                                                        301  " DESCRIPTOR PLACEHOLDER FOR %s", adn);
                                                        +
                                                        302  bort_f(errstr);
                                                        +
                                                        303  }
                                                        +
                                                        304  }
                                                        +
                                                        305  }
                                                        +
                                                        306  else {
                                                        +
                                                        307  pkint = cdesc[i];
                                                        +
                                                        308  }
                                                        +
                                                        309  }
                                                        +
                                                        310  else if ( adn[0] == '1' ) {
                                                        +
                                                        311 /*
                                                        +
                                                        312 ** cdesc[i] is a replication descriptor, so create a sequence
                                                        +
                                                        313 ** consisting of the set of replicated descriptors and then immediately
                                                        +
                                                        314 ** store that sequence within the internal Table D via a recursive call
                                                        +
                                                        315 ** to this same routine.
                                                        +
                                                        316 **
                                                        +
                                                        317 ** See module @ref modv_vars for the source of the FXY values referenced
                                                        +
                                                        318 ** in the following block. Note we are guaranteed that 0 <= iy <= 255,
                                                        +
                                                        319 ** since adn was generated using subroutine cadn30_f().
                                                        +
                                                        320 */
                                                        +
                                                        321  if ( iy == 0 ) { /* delayed replication */
                                                        +
                                                        322  if ( ( i+1 ) >= ncdesc ) {
                                                        +
                                                        323  sprintf(errstr, "BUFRLIB: STSEQ - COULD NOT FIND DELAYED "
                                                        +
                                                        324  "DESCRIPTOR REPLICATION FACTOR FOR %s", adn);
                                                        +
                                                        325  bort_f(errstr);
                                                        +
                                                        326  }
                                                        +
                                                        327  else if ( cdesc[i+1] == ifxy_f("031002") ) {
                                                        +
                                                        328  pkint = ifxy_f("360001");
                                                        +
                                                        329  }
                                                        +
                                                        330  else if ( cdesc[i+1] == ifxy_f("031001") ) {
                                                        +
                                                        331  pkint = ifxy_f("360002");
                                                        +
                                                        332  }
                                                        +
                                                        333  else if ( cdesc[i+1] == ifxy_f("031000") ) {
                                                        +
                                                        334  pkint = ifxy_f("360004");
                                                        +
                                                        335  }
                                                        +
                                                        336  else {
                                                        +
                                                        337  sprintf(errstr, "BUFRLIB: STSEQ - UNKNOWN DELAYED "
                                                        +
                                                        338  "DESCRIPTOR REPLICATION FACTOR FOR %s", adn);
                                                        +
                                                        339  bort_f(errstr);
                                                        +
                                                        340  }
                                                        +
                                                        341  i += 2;
                                                        +
                                                        342  }
                                                        +
                                                        343  else { /* regular replication */
                                                        +
                                                        344  pkint = ifxy_f(MIN_FXY_REPL) + iy;
                                                        +
                                                        345  i++;
                                                        +
                                                        346  }
                                                        +
                                                        347 /*
                                                        +
                                                        348 ** Store this replication descriptor within the table D entry for
                                                        +
                                                        349 ** this parent.
                                                        +
                                                        350 */
                                                        +
                                                        351  pktdd_f(nd, lun, pkint, &iret);
                                                        +
                                                        352  if ( iret < 0 ) {
                                                        +
                                                        353  strncpy(nemo2, nemo, 8);
                                                        +
                                                        354  nemo2[8] = '\0';
                                                        +
                                                        355  sprintf(errstr, "BUFRLIB: STSEQ - BAD RETURN FROM PKTDD WHEN "
                                                        +
                                                        356  "STORING REPLICATOR FOR PARENT MNEMONIC %s", nemo2);
                                                        +
                                                        357  bort_f(errstr);
                                                        +
                                                        358  }
                                                        +
                                                        359 /*
                                                        +
                                                        360 ** Note we are guaranteed that 0 < ix <= 63 since adn was generated
                                                        +
                                                        361 ** using subroutine cadn30_f().
                                                        +
                                                        362 */
                                                        +
                                                        363  if ( ix > ( ncdesc - i ) ) {
                                                        +
                                                        364  sprintf(errstr, "BUFRLIB: STSEQ - NOT ENOUGH REMAINING CHILD "
                                                        +
                                                        365  "DESCRIPTORS TO COMPLETE REPLICATION FOR %s", adn);
                                                        +
                                                        366  bort_f(errstr);
                                                        +
                                                        367  }
                                                        +
                                                        368  else if ( ( ix == 1 ) && ( cdesc[i] >= ifxy_f(MIN_FXY_TABLED) ) ) {
                                                        +
                                                        369 /*
                                                        +
                                                        370 ** The only thing being replicated is a single Table D descriptor,
                                                        +
                                                        371 ** so there's no need to invent a new sequence for this replication
                                                        +
                                                        372 ** (this is a special case!)
                                                        +
                                                        373 */
                                                        +
                                                        374  nummtb(&cdesc[i], &tab, &ipt);
                                                        +
                                                        375  stseq(lun, irepct, cdesc[i], &cdmnem_c[ipt][0],
                                                        +
                                                        376  &cdseq_c[ipt][0],
                                                        +
                                                        377  &idefxy_c[icvidx(ipt,0,imxcd)],
                                                        +
                                                        378  ndelem_c[ipt]);
                                                        +
                                                        379  pkint = cdesc[i];
                                                        +
                                                        380  }
                                                        +
                                                        381  else {
                                                        +
                                                        382 /*
                                                        +
                                                        383 ** Store the ix descriptors to be replicated in a local list, then
                                                        +
                                                        384 ** get an FXY value to use with this list and generate a unique
                                                        +
                                                        385 ** mnemonic and description as well.
                                                        +
                                                        386 */
                                                        +
                                                        387 
                                                        +
                                                        388  if ( ( rpdesc = malloc( imxcd * sizeof(int) ) ) == NULL ) {
                                                        +
                                                        389  sprintf(errstr, "BUFRLIB: STSEQ - UNABLE TO ALLOCATE SPACE"
                                                        +
                                                        390  " FOR RPDESC");
                                                        +
                                                        391  bort_f(errstr);
                                                        +
                                                        392  }
                                                        +
                                                        393 
                                                        +
                                                        394  for ( j = 0; j < ix; j++ ) {
                                                        +
                                                        395  rpdesc[j] = cdesc[i+j];
                                                        +
                                                        396  }
                                                        +
                                                        397 
                                                        +
                                                        398  rpidn = igettdi_f(lun);
                                                        +
                                                        399 
                                                        +
                                                        400  sprintf(rpseq, "REPLICATION SEQUENCE %.3d", ++(*irepct));
                                                        +
                                                        401  memset(&rpseq[24], (int) cblk, 31);
                                                        +
                                                        402  sprintf(nemo2, "RPSEQ%.3d", *irepct);
                                                        +
                                                        403 
                                                        +
                                                        404  stseq(lun, irepct, rpidn, nemo2, rpseq, rpdesc, ix);
                                                        +
                                                        405 
                                                        +
                                                        406  free(rpdesc);
                                                        +
                                                        407 
                                                        +
                                                        408  pkint = rpidn;
                                                        +
                                                        409  i += ix - 1;
                                                        +
                                                        410  }
                                                        +
                                                        411  }
                                                        +
                                                        412  else {
                                                        +
                                                        413 /*
                                                        +
                                                        414 ** cdesc[i] is a Table B descriptor.
                                                        +
                                                        415 **
                                                        +
                                                        416 ** Is cdesc[i] already listed as an entry in the internal Table B?
                                                        +
                                                        417 */
                                                        +
                                                        418  numtbd_f(lun, cdesc[i], nemo2, NEMO_STR_LEN+1, &tab, &iret);
                                                        +
                                                        419  if ( ( iret == 0 ) || ( tab != 'B' ) ) {
                                                        +
                                                        420 /*
                                                        +
                                                        421 ** No, so search for it within the master table B.
                                                        +
                                                        422 */
                                                        +
                                                        423  nummtb(&cdesc[i], &tab, &ipt);
                                                        +
                                                        424 /*
                                                        +
                                                        425 ** Start a new Table B entry for cdesc[i].
                                                        +
                                                        426 */
                                                        +
                                                        427  nb = igetntbi_f(lun, &tab);
                                                        +
                                                        428  cadn30_f(cdesc[i], adn2, FXY_STR_LEN+1);
                                                        +
                                                        429  stntbi_f(nb, lun, adn2, &cbmnem_c[ipt][0], &cbelem_c[ipt][0]);
                                                        +
                                                        430 
                                                        +
                                                        431  /* Initialize card to all blanks. */
                                                        +
                                                        432  memset(card, (int) cblk, sizeof( card ));
                                                        +
                                                        433 
                                                        +
                                                        434  strncpy(&card[2], &cbmnem_c[ipt][0], 8);
                                                        +
                                                        435  strncpy(&card[13], &cbscl_c[ipt][0], 4);
                                                        +
                                                        436  strncpy(&card[19], &cbsref_c[ipt][0], 12);
                                                        +
                                                        437  strncpy(&card[33], &cbbw_c[ipt][0], 4);
                                                        +
                                                        438  strncpy(&card[40], &cbunit_c[ipt][0], 24);
                                                        +
                                                        439  elemdx_f(card, lun);
                                                        +
                                                        440  }
                                                        +
                                                        441  pkint = cdesc[i];
                                                        +
                                                        442  }
                                                        +
                                                        443  if (strncmp( adn, "204", 3) != 0 ) {
                                                        +
                                                        444 /*
                                                        +
                                                        445 ** Store this child descriptor within the table D entry for this
                                                        +
                                                        446 ** parent, preceding it with any associated fields that are currently
                                                        +
                                                        447 ** in effect.
                                                        +
                                                        448 **
                                                        +
                                                        449 ** Note that associated fields are only applied to Table B descriptors,
                                                        +
                                                        450 ** except for those in Class 31.
                                                        +
                                                        451 */
                                                        +
                                                        452  if ( ( naf > 0 ) && ( pkint <= ifxy_f(MAX_FXY_TABLEB) ) &&
                                                        +
                                                        453  ( ( pkint < ifxy_f("031000") ) ||
                                                        +
                                                        454  ( pkint > ifxy_f("031255") ) ) ) {
                                                        +
                                                        455  for ( j = 0; j < naf; j++ ) {
                                                        +
                                                        456  pktdd_f(nd, lun, iafpk[j], &iret);
                                                        +
                                                        457  if ( iret < 0 ) {
                                                        +
                                                        458  sprintf(errstr, "BUFRLIB: STSEQ - BAD RETURN FROM PKTDD "
                                                        +
                                                        459  "WHEN STORING ASSOCIATED FIELDS");
                                                        +
                                                        460  bort_f(errstr);
                                                        +
                                                        461  }
                                                        +
                                                        462  }
                                                        +
                                                        463  }
                                                        +
                                                        464 /*
                                                        +
                                                        465 ** Store the child descriptor.
                                                        +
                                                        466 */
                                                        +
                                                        467  pktdd_f(nd, lun, pkint, &iret);
                                                        +
                                                        468  if ( iret < 0 ) {
                                                        +
                                                        469  strncpy(nemo2, nemo, 8);
                                                        +
                                                        470  nemo2[8] = '\0';
                                                        +
                                                        471  sprintf(errstr, "BUFRLIB: STSEQ - BAD RETURN FROM PKTDD WHEN "
                                                        +
                                                        472  "STORING CHILD FOR PARENT MNEMONIC %s", nemo2);
                                                        +
                                                        473  bort_f(errstr);
                                                        +
                                                        474  }
                                                        +
                                                        475  }
                                                        +
                                                        476  }
                                                        +
                                                        477 }
                                                        +
                                                        int igetprm_f(char *cprmnm)
                                                        Get the current value of a parameter.
                                                        +
                                                        void nemtab_f(int lun, const char *mnemonic, int *descriptor, char *table_type, int *table_idx)
                                                        Get information about a descriptor.
                                                        +
                                                        Enable a number of NCEPLIBS-bufr subprograms to be called from within the C part of the library.
                                                        +
                                                        int igettdi_f(int iflag)
                                                        Get the next usable Table D index for the current master table, or reset the index.
                                                        +
                                                        void cadn30_f(int idn, char *adn, int adn_str_len)
                                                        Convert an FXY value from its WMO bit-wise representation to its six-character representation.
                                                        +
                                                        #define FXY_STR_LEN
                                                        Size of a character string needed to store an FXY value.
                                                        Definition: bufrlib.h:34
                                                        +
                                                        void elemdx_f(char *card, int lun)
                                                        Decode the scale factor, reference value, bit width, and units from a Table B mnemonic definition.
                                                        +
                                                        int imrkopr_f(char *nemo)
                                                        Check whether a specified mnemonic is a Table C marker operator.
                                                        +
                                                        void numtbd_f(int lun, int idn, char *nemo, int nemo_str_len, char *tab, int *iret)
                                                        Search for a Table B or Table D descriptor within the internal DX BUFR tables.
                                                        +
                                                        void bort_f(char *errstr)
                                                        Log one error message and abort application program.
                                                        +
                                                        void stntbi_f(int n, int lun, char *numb, char *nemo, char *celsq)
                                                        Store a new entry within the internal BUFR Table B or D.
                                                        +
                                                        #define MIN_FXY_REPL
                                                        Character string containing minimum FXY value for a replication descriptor.
                                                        Definition: bufrlib.h:37
                                                        +
                                                        #define MIN_FXY_TABLED
                                                        Character string containing minimum FXY value for a Table D descriptor.
                                                        Definition: bufrlib.h:40
                                                        +
                                                        int ifxy_f(char *cfxy)
                                                        Convert an FXY value from its 6 character representation to its WMO bit-wise representation.
                                                        +
                                                        void strnum_f(char *str, int *num, int *iret)
                                                        Decode an integer from a character string.
                                                        +
                                                        #define NEMO_STR_LEN
                                                        Size of a character string needed to store a mnemonic.
                                                        Definition: bufrlib.h:46
                                                        +
                                                        #define MAX_FXY_TABLEB
                                                        Character string containing maximum FXY value for a Table B descriptor.
                                                        Definition: bufrlib.h:43
                                                        +
                                                        int icvidx(int ii, int jj, int numjj)
                                                        Computes a unique 1-dimensional array index from 2-dimensional indices.
                                                        Definition: icvidx.c:22
                                                        +
                                                        void pktdd_f(int id, int lun, int idn, int *iret)
                                                        Store information about a child mnemonic within the internal arrays.
                                                        +
                                                        int igetntbi_f(int lun, char *table_type)
                                                        Get the next index for storing an entry within an internal DX BUFR table.
                                                        +
                                                        Declare variables for internal storage of master Table B and Table D entries.
                                                        +
                                                        int * idefxy_c
                                                        WMO bit-wise representations of child descriptors for master Table D sequences; copied from Fortran i...
                                                        +
                                                        char(* cbsref_c)[12]
                                                        Master Table B reference values; copied from Fortran cbsref array.
                                                        +
                                                        char(* cbelem_c)[120]
                                                        Master Table B element names; copied from Fortran cbelem array.
                                                        +
                                                        int * idfxyn_c
                                                        WMO bit-wise representations of master Table D FXY numbers; copied from Fortran idfxyn array.
                                                        +
                                                        char(* cdmnem_c)[8]
                                                        Master Table D mnemonics; copied from Fortran cdmnem array.
                                                        +
                                                        char(* cdseq_c)[120]
                                                        Master Table D sequence names; copied from Fortran cdseq array.
                                                        +
                                                        char(* cbscl_c)[4]
                                                        Master Table B scale factors; copied from Fortran cbscl array.
                                                        +
                                                        char(* cbunit_c)[24]
                                                        Master Table B units; copied from Fortran cbunit array.
                                                        +
                                                        char(* cbmnem_c)[8]
                                                        Master Table B mnemonics; copied from Fortran cbmnem array.
                                                        +
                                                        char(* cbbw_c)[4]
                                                        Master Table B bit widths; copied from Fortran cbbw array.
                                                        +
                                                        int nmtd_c
                                                        Number of master Table D entries; copied from Fortran nmtd variable.
                                                        +
                                                        int * iafpk
                                                        WMO bit-wise representations of associated fields within master Table D sequences.
                                                        +
                                                        int * ibfxyn_c
                                                        WMO bit-wise representations of master Table B FXY numbers; copied from Fortran ibfxyn array.
                                                        +
                                                        int nmtb_c
                                                        Number of master Table B entries; copied from Fortran nmtb variable.
                                                        +
                                                        int * ndelem_c
                                                        Number of child descriptors for master Table D sequences; copied from Fortran ndelem array.
                                                        +
                                                        void nummtb(int *idn, char *tab, int *ipt)
                                                        Search for an entry in the BUFR master table.
                                                        Definition: stseq.c:54
                                                        +
                                                        void stseq(int lun, int *irepct, int idn, char *nemo, char *cseq, int *cdesc, int ncdesc)
                                                        Store information about a standard Table D descriptor within internal DX BUFR tables.
                                                        Definition: stseq.c:107
                                                        +
                                                        int cmpia(const void *pf1, const void *pf2)
                                                        Define a comparison between two integers.
                                                        Definition: stseq.c:28
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/sync_off.png b/previous_versions/v12.1.0/sync_off.png new file mode 100644 index 0000000000000000000000000000000000000000..3b443fc62892114406e3d399421b2a881b897acc GIT binary patch literal 853 zcmV-b1FHOqP)oT|#XixUYy%lpuf3i8{fX!o zUyDD0jOrAiT^tq>fLSOOABs-#u{dV^F$b{L9&!2=9&RmV;;8s^x&UqB$PCj4FdKbh zoB1WTskPUPu05XzFbA}=KZ-GP1fPpAfSs>6AHb12UlR%-i&uOlTpFNS7{jm@mkU1V zh`nrXr~+^lsV-s1dkZOaI|kYyVj3WBpPCY{n~yd%u%e+d=f%`N0FItMPtdgBb@py; zq@v6NVArhyTC7)ULw-Jy8y42S1~4n(3LkrW8mW(F-4oXUP3E`e#g**YyqI7h-J2zK zK{m9##m4ri!7N>CqQqCcnI3hqo1I;Yh&QLNY4T`*ptiQGozK>FF$!$+84Z`xwmeMh zJ0WT+OH$WYFALEaGj2_l+#DC3t7_S`vHpSivNeFbP6+r50cO8iu)`7i%Z4BTPh@_m3Tk!nAm^)5Bqnr%Ov|Baunj#&RPtRuK& z4RGz|D5HNrW83-#ydk}tVKJrNmyYt-sTxLGlJY5nc&Re zU4SgHNPx8~Yxwr$bsju?4q&%T1874xxzq+_%?h8_ofw~(bld=o3iC)LUNR*BY%c0y zWd_jX{Y8`l%z+ol1$@Qa?Cy!(0CVIEeYpKZ`(9{z>3$CIe;pJDQk$m3p}$>xBm4lb zKo{4S)`wdU9Ba9jJbVJ0C=SOefZe%d$8=2r={nu<_^a3~>c#t_U6dye5)JrR(_a^E f@}b6j1K9lwFJq@>o)+Ry00000NkvXXu0mjfWa5j* literal 0 HcmV?d00001 diff --git a/previous_versions/v12.1.0/sync_on.png b/previous_versions/v12.1.0/sync_on.png new file mode 100644 index 0000000000000000000000000000000000000000..e08320fb64e6fa33b573005ed6d8fe294e19db76 GIT binary patch literal 845 zcmV-T1G4;yP)Y;xxyHF2B5Wzm| zOOGupOTn@c(JmBOl)e;XMNnZuiTJP>rM8<|Q`7I_))aP?*T)ow&n59{}X4$3Goat zgjs?*aasfbrokzG5cT4K=uG`E14xZl@z)F={P0Y^?$4t z>v!teRnNZym<6h{7sLyF1V0HsfEl+l6TrZpsfr1}luH~F7L}ktXu|*uVX^RG$L0`K zWs3j|0tIvVe(N%_?2{(iCPFGf#B6Hjy6o&}D$A%W%jfO8_W%ZO#-mh}EM$LMn7joJ z05dHr!5Y92g+31l<%i1(=L1a1pXX+OYnalY>31V4K}BjyRe3)9n#;-cCVRD_IG1fT zOKGeNY8q;TL@K{dj@D^scf&VCs*-Jb>8b>|`b*osv52-!A?BpbYtTQBns5EAU**$m zSnVSm(teh>tQi*S*A>#ySc=n;`BHz`DuG4&g4Kf8lLhca+zvZ7t7RflD6-i-mcK=M z!=^P$*u2)bkY5asG4gsss!Hn%u~>}kIW`vMs%lJLH+u*9<4PaV_c6U`KqWXQH%+Nu zTv41O(^ZVi@qhjQdG!fbZw&y+2o!iYymO^?ud3{P*HdoX83YV*Uu_HB=?U&W9%AU# z80}k1SS-CXTU7dcQlsm<^oYLxVSseqY6NO}dc`Nj?8vrhNuCdm@^{a3AQ_>6myOj+ z`1RsLUXF|dm|3k7s2jD(B{rzE>WI2scH8i1;=O5Cc9xB3^aJk%fQjqsu+kH#0=_5a z0nCE8@dbQa-|YIuUVvG0L_IwHMEhOj$Mj4Uq05 X8=0q~qBNan00000NkvXXu0mjfptF>5 literal 0 HcmV?d00001 diff --git a/previous_versions/v12.1.0/tab_a.png b/previous_versions/v12.1.0/tab_a.png new file mode 100644 index 0000000000000000000000000000000000000000..3b725c41c5a527a3a3e40097077d0e206a681247 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QlXwMjv*C{Z|8b*H5dputLHD# z=<0|*y7z(Vor?d;H&?EG&cXR}?!j-Lm&u1OOI7AIF5&c)RFE;&p0MYK>*Kl@eiymD r@|NpwKX@^z+;{u_Z~trSBfrMKa%3`zocFjEXaR$#tDnm{r-UW|TZ1%4 literal 0 HcmV?d00001 diff --git a/previous_versions/v12.1.0/tab_b.png b/previous_versions/v12.1.0/tab_b.png new file mode 100644 index 0000000000000000000000000000000000000000..e2b4a8638cb3496a016eaed9e16ffc12846dea18 GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QU#tajv*C{Z}0l@H7kg?K0Lnr z!j&C6_(~HV9oQ0Pa6x{-v0AGV_E?vLn=ZI-;YrdjIl`U`uzuDWSP?o#Dmo{%SgM#oan kX~E1%D-|#H#QbHoIja2U-MgvsK&LQxy85}Sb4q9e0Efg%P5=M^ literal 0 HcmV?d00001 diff --git a/previous_versions/v12.1.0/tabs.css b/previous_versions/v12.1.0/tabs.css new file mode 100644 index 000000000..7d45d36c1 --- /dev/null +++ b/previous_versions/v12.1.0/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0px/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0px 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0px 1px 1px rgba(255,255,255,0.9);color:#283A5D;outline:none}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox a.current{color:#D23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);border-radius:5px}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media (min-width: 768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283A5D transparent transparent transparent;background:transparent;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0px 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;border-radius:0 !important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox a:hover span.sub-arrow{border-color:#fff transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;border-radius:5px !important;box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0 !important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent #fff}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #D23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#D23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}} diff --git a/previous_versions/v12.1.0/tankrcpt_8F90.html b/previous_versions/v12.1.0/tankrcpt_8F90.html new file mode 100644 index 000000000..5c4e0967b --- /dev/null +++ b/previous_versions/v12.1.0/tankrcpt_8F90.html @@ -0,0 +1,436 @@ + + + + + + + +NCEPLIBS-bufr: tankrcpt.F90 File Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        tankrcpt.F90 File Reference
                                                        +
                                                        +
                                                        + +

                                                        Read and write tank receipt times within BUFR messages. +More...

                                                        + +

                                                        Go to the source code of this file.

                                                        + + + + + + + + + + + + + + +

                                                        +Functions/Subroutines

                                                        recursive subroutine atrcpt (msgin, lmsgot, msgot)
                                                         Read an input message and output an equivalent BUFR message with a tank receipt time added to Section 1. More...
                                                         
                                                        recursive subroutine rtrcpt (lunit, iyr, imo, idy, ihr, imi, iret)
                                                         Read the tank receipt time (if one exists) from Section 1 of a BUFR message. More...
                                                         
                                                        recursive subroutine rtrcptb (mbay, iyr, imo, idy, ihr, imi, iret)
                                                         Read the tank receipt time (if one exists) from Section 1 of a BUFR message. More...
                                                         
                                                        recursive subroutine strcpt (cf, iyr, imo, idy, ihr, imi)
                                                         Specify a tank receipt time to be included within Section 1 of all BUFR messages output by future calls to message-writing subroutines and subset-writing subroutines. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Read and write tank receipt times within BUFR messages.

                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2009-03-23
                                                        + +

                                                        Definition in file tankrcpt.F90.

                                                        +

                                                        Function/Subroutine Documentation

                                                        + +

                                                        ◆ atrcpt()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        recursive subroutine atrcpt (integer, dimension(*), intent(in) msgin,
                                                        integer, intent(in) lmsgot,
                                                        integer, dimension(*), intent(out) msgot 
                                                        )
                                                        +
                                                        + +

                                                        Read an input message and output an equivalent BUFR message with a tank receipt time added to Section 1.

                                                        +

                                                        The tank receipt time to be added must have been specified via a previous call to subroutine strcpt(). This subroutine performs the same function as subroutine strcpt() when the latter is called with CF = 'Y', except that the latter subroutine operates on BUFR messages internally within the software, whereas this subroutine operates on a single BUFR message passed in via a memory array.

                                                        +
                                                        Remarks
                                                          +
                                                        • msgin and msgot must be separate arrays
                                                        • +
                                                        • msgot will be longer in length than msgin, so the user must allow for extra space when allocating msgot within the application program
                                                        • +
                                                        +
                                                        +
                                                        Parameters
                                                        + + + + +
                                                        msgin- BUFR message
                                                        lmsgot- Dimensioned size (in integers) of msgot; used by the subroutine to ensure that it doesn't overflow the msgot array
                                                        msgot- Copy of msgin with a tank receipt time added to Section 1
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2009-03-23
                                                        + +

                                                        Definition at line 23 of file tankrcpt.F90.

                                                        + +

                                                        References bort(), getlens(), moda_tnkrcp::itrdy, moda_tnkrcp::itrhr, moda_tnkrcp::itrmi, moda_tnkrcp::itrmo, moda_tnkrcp::itryr, iupbs01(), mvb(), pkb(), and x84().

                                                        + +

                                                        Referenced by msgwrt().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ rtrcpt()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        recursive subroutine rtrcpt (integer, intent(in) lunit,
                                                        integer, intent(out) iyr,
                                                        integer, intent(out) imo,
                                                        integer, intent(out) idy,
                                                        integer, intent(out) ihr,
                                                        integer, intent(out) imi,
                                                        integer, intent(out) iret 
                                                        )
                                                        +
                                                        + +

                                                        Read the tank receipt time (if one exists) from Section 1 of a BUFR message.

                                                        +

                                                        This subroutine is similar to subroutine rtrcptb(), except that rtrcptb() operates on a BUFR message passed in via a memory array, whereas this subroutine operates on the BUFR message that was read into internal arrays via the most recent call to any of the other message-reading subroutines for a specified Fortran logical unit.

                                                        +
                                                        Parameters
                                                        + + + + + + + + +
                                                        lunit- Fortran logical unit number for BUFR file
                                                        iyr- Tank receipt year
                                                        imo- Tank receipt month
                                                        idy- Tank receipt day
                                                        ihr- Tank receipt hour
                                                        imi- Tank receipt minute
                                                        iret- return code
                                                          +
                                                        • 0 = normal return
                                                        • +
                                                        • -1 = no tank receipt time exists within the BUFR message currently open for input within internal arrays
                                                        • +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2009-03-23
                                                        + +

                                                        Definition at line 186 of file tankrcpt.F90.

                                                        + +

                                                        References bort(), moda_bitbuf::mbay, rtrcptb(), status(), x48(), and x84().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ rtrcptb()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        recursive subroutine rtrcptb (integer, dimension(*), intent(in) mbay,
                                                        integer, intent(out) iyr,
                                                        integer, intent(out) imo,
                                                        integer, intent(out) idy,
                                                        integer, intent(out) ihr,
                                                        integer, intent(out) imi,
                                                        integer, intent(out) iret 
                                                        )
                                                        +
                                                        + +

                                                        Read the tank receipt time (if one exists) from Section 1 of a BUFR message.

                                                        +

                                                        This subroutine is similar to subroutine rtrcpt(), except that it operates on a BUFR message passed in via a memory array, whereas rtrcpt() operates on the BUFR message that was read into internal arrays via the most recent call to any of the other message-reading subroutines for a specified Fortran logical unit.

                                                        +
                                                        Parameters
                                                        + + + + + + + + +
                                                        mbay- BUFR message
                                                        iyr- Tank receipt year
                                                        imo- Tank receipt month
                                                        idy- Tank receipt day
                                                        ihr- Tank receipt hour
                                                        imi- Tank receipt minute
                                                        iret- return code:
                                                          +
                                                        • 0 = normal return
                                                        • +
                                                        • -1 = no tank receipt time exists within mbay
                                                        • +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2013-10-07
                                                        + +

                                                        Definition at line 113 of file tankrcpt.F90.

                                                        + +

                                                        References iupb(), iupbs01(), and x48().

                                                        + +

                                                        Referenced by fdebufr_c(), and rtrcpt().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ strcpt()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        recursive subroutine strcpt (character*1, intent(in) cf,
                                                        integer, intent(in) iyr,
                                                        integer, intent(in) imo,
                                                        integer, intent(in) idy,
                                                        integer, intent(in) ihr,
                                                        integer, intent(in) imi 
                                                        )
                                                        +
                                                        + +

                                                        Specify a tank receipt time to be included within Section 1 of all BUFR messages output by future calls to message-writing subroutines and subset-writing subroutines.

                                                        +

                                                        This subroutine can be called at any time after the first call to subroutine openbf(), and the specified value for cf will remain in effect for all future calls to message-writing subroutines and subset-writing subroutines, for all Fortran logical units that are open for output within the application program, unless a subsequent call is made to this subroutine to reset the value of cf again. If this subroutine is never called, a default value of 'N' is used for cf, as set within module moda_tnkrcp.

                                                        +

                                                        Whenever this subroutine is called with cf = 'N', the values in iyr, imo, idy, ihr, and imi are ignored.

                                                        +
                                                        Remarks
                                                          +
                                                        • Tank receipt time is an NCEP extension to Section 1 of the official WMO BUFR regulations. However, it's encoded by the NCEPLIBS-bufr software in such a way that its inclusion within an output BUFR message is still fully compliant with the regulations.
                                                        • +
                                                        +
                                                        +
                                                        Parameters
                                                        + + + + + + + +
                                                        cf- Flag indicating whether future BUFR output messages should include the tank receipt time defined by iyr, imo, idy, ihr, and imi:
                                                          +
                                                        • 'N' = No (the default)
                                                        • +
                                                        • 'Y' = Yes
                                                        • +
                                                        +
                                                        iyr- Tank receipt year
                                                        imo- Tank receipt month
                                                        idy- Tank receipt day
                                                        ihr- Tank receipt hour
                                                        imi- Tank receipt minute
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2009-03-23
                                                        + +

                                                        Definition at line 257 of file tankrcpt.F90.

                                                        + +

                                                        References bort(), capit(), moda_tnkrcp::ctrt, moda_tnkrcp::itrdy, moda_tnkrcp::itrhr, moda_tnkrcp::itrmi, moda_tnkrcp::itrmo, moda_tnkrcp::itryr, and x84().

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/tankrcpt_8F90.js b/previous_versions/v12.1.0/tankrcpt_8F90.js new file mode 100644 index 000000000..27e0357c9 --- /dev/null +++ b/previous_versions/v12.1.0/tankrcpt_8F90.js @@ -0,0 +1,7 @@ +var tankrcpt_8F90 = +[ + [ "atrcpt", "tankrcpt_8F90.html#adca31c0fc592e5bf04c10572b26c85b1", null ], + [ "rtrcpt", "tankrcpt_8F90.html#a5d6fa241d34622347252bf41b73d8610", null ], + [ "rtrcptb", "tankrcpt_8F90.html#a9ae992beefc572ef3ae02a330b221ffa", null ], + [ "strcpt", "tankrcpt_8F90.html#a24ba916e2d398ca162381b0d8b3f54fe", null ] +]; \ No newline at end of file diff --git a/previous_versions/v12.1.0/tankrcpt_8F90_source.html b/previous_versions/v12.1.0/tankrcpt_8F90_source.html new file mode 100644 index 000000000..0804cfcb8 --- /dev/null +++ b/previous_versions/v12.1.0/tankrcpt_8F90_source.html @@ -0,0 +1,344 @@ + + + + + + + +NCEPLIBS-bufr: tankrcpt.F90 Source File + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        +
                                                        tankrcpt.F90
                                                        +
                                                        +
                                                        +Go to the documentation of this file.
                                                        1 
                                                        +
                                                        4 
                                                        +
                                                        23 recursive subroutine atrcpt(msgin,lmsgot,msgot)
                                                        +
                                                        24 
                                                        +
                                                        25  use modv_vars, only: im8b, nbytw
                                                        +
                                                        26 
                                                        +
                                                        27  use moda_tnkrcp
                                                        +
                                                        28 
                                                        +
                                                        29  implicit none
                                                        +
                                                        30 
                                                        +
                                                        31  integer, intent(in) :: msgin(*), lmsgot
                                                        +
                                                        32  integer, intent(out) :: msgot(*)
                                                        +
                                                        33  integer my_lmsgot, len0, len1, l2, l3, l4, l5, iad1, iad2, lenm, lenmot, len1ot, ibit, iupbs01
                                                        +
                                                        34 
                                                        +
                                                        35  ! Check for I8 integers.
                                                        +
                                                        36 
                                                        +
                                                        37  if(im8b) then
                                                        +
                                                        38  im8b=.false.
                                                        +
                                                        39 
                                                        +
                                                        40  call x84 ( lmsgot, my_lmsgot, 1 )
                                                        +
                                                        41  call atrcpt ( msgin, my_lmsgot*2, msgot )
                                                        +
                                                        42 
                                                        +
                                                        43  im8b=.true.
                                                        +
                                                        44  return
                                                        +
                                                        45  endif
                                                        +
                                                        46 
                                                        +
                                                        47  ! Get some section lengths and addresses from the input message.
                                                        +
                                                        48 
                                                        +
                                                        49  call getlens(msgin,1,len0,len1,l2,l3,l4,l5)
                                                        +
                                                        50 
                                                        +
                                                        51  iad1 = len0
                                                        +
                                                        52  iad2 = iad1 + len1
                                                        +
                                                        53 
                                                        +
                                                        54  lenm = iupbs01(msgin,'LENM')
                                                        +
                                                        55 
                                                        +
                                                        56  ! Check for overflow of the output array. Note that the new message will be 6 bytes longer than the input message.
                                                        +
                                                        57 
                                                        +
                                                        58  lenmot = lenm + 6
                                                        +
                                                        59  if(lenmot>(lmsgot*nbytw)) &
                                                        +
                                                        60  call bort('BUFRLIB: ATRCPT - OVERFLOW OF OUTPUT MESSAGE ARRAY; TRY A LARGER DIMENSION FOR THIS ARRAY')
                                                        +
                                                        61 
                                                        +
                                                        62  len1ot = len1 + 6
                                                        +
                                                        63 
                                                        +
                                                        64  ! Write Section 0 of the new message into the output array.
                                                        +
                                                        65 
                                                        +
                                                        66  call mvb ( msgin, 1, msgot, 1, 4 )
                                                        +
                                                        67  ibit = 32
                                                        +
                                                        68  call pkb ( lenmot, 24, msgot, ibit )
                                                        +
                                                        69  call mvb ( msgin, 8, msgot, 8, 1 )
                                                        +
                                                        70 
                                                        +
                                                        71  ! Store the length of the new Section 1.
                                                        +
                                                        72 
                                                        +
                                                        73  ibit = iad1*8
                                                        +
                                                        74  call pkb ( len1ot, 24, msgot, ibit )
                                                        +
                                                        75 
                                                        +
                                                        76  ! Copy the remainder of Section 1 from the input array to the output array.
                                                        +
                                                        77 
                                                        +
                                                        78  call mvb ( msgin, iad1+4, msgot, (ibit/8)+1, len1-3 )
                                                        +
                                                        79 
                                                        +
                                                        80  ! Append the tank receipt time data to the new Section 1.
                                                        +
                                                        81 
                                                        +
                                                        82  ibit = iad2*8
                                                        +
                                                        83  call pkb ( itryr, 16, msgot, ibit )
                                                        +
                                                        84  call pkb ( itrmo, 8, msgot, ibit )
                                                        +
                                                        85  call pkb ( itrdy, 8, msgot, ibit )
                                                        +
                                                        86  call pkb ( itrhr, 8, msgot, ibit )
                                                        +
                                                        87  call pkb ( itrmi, 8, msgot, ibit )
                                                        +
                                                        88 
                                                        +
                                                        89  ! Copy Sections 2, 3, 4 and 5 from the input array to the output array.
                                                        +
                                                        90 
                                                        +
                                                        91  call mvb ( msgin, iad2+1, msgot, (ibit/8)+1, lenm-iad2 )
                                                        +
                                                        92 
                                                        +
                                                        93  return
                                                        +
                                                        94 end subroutine atrcpt
                                                        +
                                                        95 
                                                        +
                                                        113 recursive subroutine rtrcptb(mbay,iyr,imo,idy,ihr,imi,iret)
                                                        +
                                                        114 
                                                        +
                                                        115  use modv_vars, only: im8b
                                                        +
                                                        116 
                                                        +
                                                        117  implicit none
                                                        +
                                                        118 
                                                        +
                                                        119  integer, intent(in) :: mbay(*)
                                                        +
                                                        120  integer, intent(out) :: iyr, imo, idy, ihr, imi, iret
                                                        +
                                                        121  integer is1byt, imgbyt, iupbs01, iupb
                                                        +
                                                        122 
                                                        +
                                                        123  ! Check for I8 integers.
                                                        +
                                                        124 
                                                        +
                                                        125  if(im8b) then
                                                        +
                                                        126  im8b=.false.
                                                        +
                                                        127 
                                                        +
                                                        128  call rtrcptb(mbay,iyr,imo,idy,ihr,imi,iret)
                                                        +
                                                        129  call x48(iyr,iyr,1)
                                                        +
                                                        130  call x48(imo,imo,1)
                                                        +
                                                        131  call x48(idy,idy,1)
                                                        +
                                                        132  call x48(ihr,ihr,1)
                                                        +
                                                        133  call x48(imi,imi,1)
                                                        +
                                                        134  call x48(iret,iret,1)
                                                        +
                                                        135 
                                                        +
                                                        136  im8b=.true.
                                                        +
                                                        137  return
                                                        +
                                                        138  endif
                                                        +
                                                        139 
                                                        +
                                                        140  iret = -1
                                                        +
                                                        141 
                                                        +
                                                        142  ! Check whether the message contains a tank receipt time.
                                                        +
                                                        143 
                                                        +
                                                        144  if(iupbs01(mbay,'BEN')==4) then
                                                        +
                                                        145  is1byt = 23
                                                        +
                                                        146  else
                                                        +
                                                        147  is1byt = 19
                                                        +
                                                        148  endif
                                                        +
                                                        149  if( (is1byt+5) > iupbs01(mbay,'LEN1') ) return
                                                        +
                                                        150 
                                                        +
                                                        151  ! Unpack the tank receipt time.
                                                        +
                                                        152 
                                                        +
                                                        153  ! Note that is1byt is a starting byte number relative to the beginning of Section 1, so we still need to account for
                                                        +
                                                        154  ! Section 0 when specifying the actual byte numbers to unpack within the overall message.
                                                        +
                                                        155 
                                                        +
                                                        156  imgbyt = is1byt + iupbs01(mbay,'LEN0')
                                                        +
                                                        157 
                                                        +
                                                        158  iyr = iupb(mbay,imgbyt,16)
                                                        +
                                                        159  imo = iupb(mbay,imgbyt+2,8)
                                                        +
                                                        160  idy = iupb(mbay,imgbyt+3,8)
                                                        +
                                                        161  ihr = iupb(mbay,imgbyt+4,8)
                                                        +
                                                        162  imi = iupb(mbay,imgbyt+5,8)
                                                        +
                                                        163 
                                                        +
                                                        164  iret = 0
                                                        +
                                                        165 
                                                        +
                                                        166  return
                                                        +
                                                        167 end subroutine rtrcptb
                                                        +
                                                        168 
                                                        +
                                                        186 recursive subroutine rtrcpt(lunit,iyr,imo,idy,ihr,imi,iret)
                                                        +
                                                        187 
                                                        +
                                                        188  use modv_vars, only: im8b
                                                        +
                                                        189 
                                                        +
                                                        190  use moda_bitbuf
                                                        +
                                                        191 
                                                        +
                                                        192  implicit none
                                                        +
                                                        193 
                                                        +
                                                        194  integer, intent(in) :: lunit
                                                        +
                                                        195  integer, intent(out) :: iyr, imo, idy, ihr, imi, iret
                                                        +
                                                        196  integer my_lunit, lun, il, im
                                                        +
                                                        197 
                                                        +
                                                        198  ! Check for I8 integers.
                                                        +
                                                        199 
                                                        +
                                                        200  if(im8b) then
                                                        +
                                                        201  im8b=.false.
                                                        +
                                                        202 
                                                        +
                                                        203  call x84(lunit,my_lunit,1)
                                                        +
                                                        204  call rtrcpt(my_lunit,iyr,imo,idy,ihr,imi,iret)
                                                        +
                                                        205  call x48(iyr,iyr,1)
                                                        +
                                                        206  call x48(imo,imo,1)
                                                        +
                                                        207  call x48(idy,idy,1)
                                                        +
                                                        208  call x48(ihr,ihr,1)
                                                        +
                                                        209  call x48(imi,imi,1)
                                                        +
                                                        210  call x48(iret,iret,1)
                                                        +
                                                        211 
                                                        +
                                                        212  im8b=.true.
                                                        +
                                                        213  return
                                                        +
                                                        214  endif
                                                        +
                                                        215 
                                                        +
                                                        216  ! Check the file status.
                                                        +
                                                        217 
                                                        +
                                                        218  call status(lunit,lun,il,im)
                                                        +
                                                        219  if(il==0) call bort('BUFRLIB: RTRCPT - INPUT BUFR FILE IS CLOSED; IT MUST BE OPEN FOR INPUT')
                                                        +
                                                        220  if(il>0) call bort('BUFRLIB: RTRCPT - INPUT BUFR FILE IS OPEN FOR OUTPUT; IT MUST BE OPEN FOR INPUT')
                                                        +
                                                        221  if(im==0) call bort('BUFRLIB: RTRCPT - A MESSAGE MUST BE OPEN IN INPUT BUFR FILE; NONE ARE')
                                                        +
                                                        222 
                                                        +
                                                        223  ! Unpack the tank receipt time.
                                                        +
                                                        224 
                                                        +
                                                        225  call rtrcptb(mbay(1,lun),iyr,imo,idy,ihr,imi,iret)
                                                        +
                                                        226 
                                                        +
                                                        227  return
                                                        +
                                                        228 end subroutine rtrcpt
                                                        +
                                                        229 
                                                        +
                                                        257 recursive subroutine strcpt(cf,iyr,imo,idy,ihr,imi)
                                                        +
                                                        258 
                                                        +
                                                        259  use modv_vars, only: im8b
                                                        +
                                                        260 
                                                        +
                                                        261  use moda_tnkrcp
                                                        +
                                                        262 
                                                        +
                                                        263  implicit none
                                                        +
                                                        264 
                                                        +
                                                        265  character*1, intent(in) :: cf
                                                        +
                                                        266  character*128 bort_str
                                                        +
                                                        267 
                                                        +
                                                        268  integer, intent(in) :: iyr, imo, idy, ihr, imi
                                                        +
                                                        269  integer my_iyr, my_imo, my_idy, my_ihr, my_imi
                                                        +
                                                        270 
                                                        +
                                                        271  ! Check for I8 integers
                                                        +
                                                        272 
                                                        +
                                                        273  if(im8b) then
                                                        +
                                                        274  im8b=.false.
                                                        +
                                                        275 
                                                        +
                                                        276  call x84(iyr,my_iyr,1)
                                                        +
                                                        277  call x84(imo,my_imo,1)
                                                        +
                                                        278  call x84(idy,my_idy,1)
                                                        +
                                                        279  call x84(ihr,my_ihr,1)
                                                        +
                                                        280  call x84(imi,my_imi,1)
                                                        +
                                                        281  call strcpt(cf,my_iyr,my_imo,my_idy,my_ihr,my_imi)
                                                        +
                                                        282 
                                                        +
                                                        283  im8b=.true.
                                                        +
                                                        284  return
                                                        +
                                                        285  endif
                                                        +
                                                        286 
                                                        +
                                                        287  call capit(cf)
                                                        +
                                                        288  if(cf/='Y' .and. cf/='N') then
                                                        +
                                                        289  write(bort_str,'("BUFRLIB: STRCPT - INPUT ARGUMENT IS ",A1,", IT MUST BE EITHER Y OR N")') cf
                                                        +
                                                        290  call bort(bort_str)
                                                        +
                                                        291  endif
                                                        +
                                                        292 
                                                        +
                                                        293  ctrt = cf
                                                        +
                                                        294  if(ctrt=='Y') then
                                                        +
                                                        295  itryr = iyr
                                                        +
                                                        296  itrmo = imo
                                                        +
                                                        297  itrdy = idy
                                                        +
                                                        298  itrhr = ihr
                                                        +
                                                        299  itrmi = imi
                                                        +
                                                        300  endif
                                                        +
                                                        301 
                                                        +
                                                        302  return
                                                        +
                                                        303 end subroutine strcpt
                                                        +
                                                        subroutine bort(str)
                                                        Log an error message, then abort the application program.
                                                        Definition: borts.F90:15
                                                        +
                                                        recursive integer function iupb(mbay, nbyt, nbit)
                                                        Decode an integer value from within a specified number of bits of an integer array,...
                                                        Definition: cidecode.F90:226
                                                        +
                                                        subroutine pkb(nval, nbits, ibay, ibit)
                                                        Encode an integer value within a specified number of bits of an integer array, starting at the bit im...
                                                        Definition: ciencode.F90:140
                                                        +
                                                        subroutine mvb(ib1, nb1, ib2, nb2, nbm)
                                                        Copy a specified number of bytes from one packed binary array to another.
                                                        Definition: copydata.F90:731
                                                        +
                                                        subroutine capit(str)
                                                        Capitalize all of the alphabetic characters in a string.
                                                        Definition: misc.F90:355
                                                        +
                                                        Declare arrays and variables used to store BUFR messages internally for multiple file IDs.
                                                        +
                                                        integer, dimension(:,:), allocatable mbay
                                                        Current BUFR message for each file ID.
                                                        +
                                                        Declare variables used to store tank receipt time information within Section 1 of BUFR messages.
                                                        +
                                                        integer itrhr
                                                        Tank receipt hour.
                                                        +
                                                        integer itryr
                                                        Tank receipt year.
                                                        +
                                                        integer itrdy
                                                        Tank receipt day.
                                                        +
                                                        character *1 ctrt
                                                        Flag indicating whether tank receipt times are to be included within output BUFR messages; this varia...
                                                        +
                                                        integer itrmi
                                                        Tank receipt minute.
                                                        +
                                                        integer itrmo
                                                        Tank receipt month.
                                                        +
                                                        recursive subroutine status(lunit, lun, il, im)
                                                        Check whether a specified Fortran logical unit number is currently connected to the NCEPLIBS-bufr sof...
                                                        +
                                                        recursive subroutine getlens(mbay, ll, len0, len1, len2, len3, len4, len5)
                                                        Read the section lengths of a BUFR message, up to a specified point in the message.
                                                        +
                                                        recursive integer function iupbs01(mbay, s01mnem)
                                                        Read a specified value from within Section 0 or Section 1 of a BUFR message.
                                                        Definition: s013vals.F90:247
                                                        +
                                                        recursive subroutine strcpt(cf, iyr, imo, idy, ihr, imi)
                                                        Specify a tank receipt time to be included within Section 1 of all BUFR messages output by future cal...
                                                        Definition: tankrcpt.F90:258
                                                        +
                                                        recursive subroutine rtrcpt(lunit, iyr, imo, idy, ihr, imi, iret)
                                                        Read the tank receipt time (if one exists) from Section 1 of a BUFR message.
                                                        Definition: tankrcpt.F90:187
                                                        +
                                                        recursive subroutine rtrcptb(mbay, iyr, imo, idy, ihr, imi, iret)
                                                        Read the tank receipt time (if one exists) from Section 1 of a BUFR message.
                                                        Definition: tankrcpt.F90:114
                                                        +
                                                        recursive subroutine atrcpt(msgin, lmsgot, msgot)
                                                        Read an input message and output an equivalent BUFR message with a tank receipt time added to Section...
                                                        Definition: tankrcpt.F90:24
                                                        +
                                                        subroutine x48(iin4, iout8, nval)
                                                        Encode one or more 4-byte integer values as 8-byte integer values.
                                                        Definition: x4884.F90:18
                                                        +
                                                        subroutine x84(iin8, iout4, nval)
                                                        Encode one or more 8-byte integer values as 4-byte integer values.
                                                        Definition: x4884.F90:65
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/x4884_8F90.html b/previous_versions/v12.1.0/x4884_8F90.html new file mode 100644 index 000000000..731339c8e --- /dev/null +++ b/previous_versions/v12.1.0/x4884_8F90.html @@ -0,0 +1,263 @@ + + + + + + + +NCEPLIBS-bufr: x4884.F90 File Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        x4884.F90 File Reference
                                                        +
                                                        +
                                                        + +

                                                        Convert between 4-byte integers and 8-byte integers. +More...

                                                        + +

                                                        Go to the source code of this file.

                                                        + + + + + + + + + + + +

                                                        +Functions/Subroutines

                                                        subroutine setim8b (int8b)
                                                         Specify whether all integer arguments to NCEPLIBS-bufr subprograms from Fortran will use 8-byte integers. More...
                                                         
                                                        subroutine x48 (iin4, iout8, nval)
                                                         Encode one or more 4-byte integer values as 8-byte integer values. More...
                                                         
                                                        subroutine x84 (iin8, iout4, nval)
                                                         Encode one or more 8-byte integer values as 4-byte integer values. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Convert between 4-byte integers and 8-byte integers.

                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        2022-10-12
                                                        + +

                                                        Definition in file x4884.F90.

                                                        +

                                                        Function/Subroutine Documentation

                                                        + +

                                                        ◆ setim8b()

                                                        + +
                                                        +
                                                        + + + + + + + + +
                                                        subroutine setim8b (logical, intent(in) int8b)
                                                        +
                                                        + +

                                                        Specify whether all integer arguments to NCEPLIBS-bufr subprograms from Fortran will use 8-byte integers.

                                                        +

                                                        The default value is .false., meaning that if this subroutine is never called, then the NCEPLIBS-bufr will expect that all future calls from the application program will use 4-byte integer arguments. Otherwise, the specification in any call to this subroutine remains in effect unless and until it is overridden by a subsequent future call to this same subroutine.

                                                        +
                                                        Parameters
                                                        + + +
                                                        int8b- .true. iff 8-byte integers will be used for all integer arguments passed to and from all future calls to NCEPLIBS-bufr subprograms from within the application program
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2022-09-01
                                                        + +

                                                        Definition at line 106 of file x4884.F90.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ x48()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        subroutine x48 (integer, dimension(*), intent(in) iin4,
                                                        integer, dimension(*), intent(out) iout8,
                                                        integer, intent(in) nval 
                                                        )
                                                        +
                                                        + +

                                                        Encode one or more 4-byte integer values as 8-byte integer values.

                                                        +
                                                        Note
                                                        iin4 and iout8 may be the same array, as long as the underlying memory contains sufficient space for the equivalent number of 8-byte integer values.
                                                        +
                                                        Parameters
                                                        + + + + +
                                                        iin4- Value(s) encoded as 4-byte integers
                                                        iout8- Value(s) from iin4 now re-encoded as 8-byte integers
                                                        nval- Number of values in iin4 to be re-encoded
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        2022-10-12
                                                        + +

                                                        Definition at line 17 of file x4884.F90.

                                                        + +

                                                        References mvb().

                                                        + +

                                                        Referenced by copysb(), datebf(), dumpbf(), fortran_close(), fortran_open(), getabdb(), getcfmng(), getlens(), gets1loc(), gettagpr(), gettagre(), igetdate(), ireadmg(), ireadmm(), ireadns(), mesgbc(), mesgbf(), nemdefs(), nemspecs(), openbt(), rdmemm(), rdmems(), readerme(), readmg(), readmm(), readns(), readsb(), rtrcpt(), rtrcptb(), setvalnb(), status(), strnum(), ufbcnt(), ufbevn(), ufbget(), ufbin3(), ufbint(), ufbinx(), ufbmem(), ufbmex(), ufbmms(), ufbmns(), ufbovr(), ufbpos(), ufbqcd(), ufbrep(), ufbrms(), ufbseq(), ufbstp(), ufbtab(), ufbtam(), upds3(), upftbv(), and writsa().

                                                        + +
                                                        +
                                                        + +

                                                        ◆ x84()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        subroutine x84 (integer, dimension(*), intent(in) iin8,
                                                        integer, dimension(*), intent(out) iout4,
                                                        integer, intent(in) nval 
                                                        )
                                                        +
                                                        + +

                                                        Encode one or more 8-byte integer values as 4-byte integer values.

                                                        +
                                                        Note
                                                        iin8 and iout4 may be the same array.
                                                        +
                                                        Parameters
                                                        + + + + +
                                                        iin8- Value(s) encoded as 8-byte integers
                                                        iout4- Value(s) from iin8 now re-encoded as 4-byte integers
                                                        nval- Number of values in iin8 to be re-encoded
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Woollen
                                                        +
                                                        Date
                                                        2022-10-12
                                                        + +

                                                        Definition at line 64 of file x4884.F90.

                                                        + +

                                                        References mvb().

                                                        + +

                                                        Referenced by atrcpt(), closbf(), closmg(), cnved4(), copybf(), copymg(), copysb(), cpymem(), datebf(), datelen(), drfini(), dumpbf(), dxdump(), fortran_close(), fortran_open(), getabdb(), getcfmng(), getlens(), gets1loc(), gettagpr(), gettagre(), getvalnb(), hold4wlc(), i4dy(), icbfms(), icopysb(), ifbget(), igetsc(), invmrg(), ipkm(), ireadmg(), ireadmm(), ireadns(), ireadsb(), isetprm(), iupb(), iupm(), iupvs01(), lcmgdf(), maxout(), mesgbc(), mesgbf(), minimg(), mtinfo(), nemdefs(), nemspecs(), nmsub(), openbf(), openbt(), openmb(), openmg(), pkbs1(), pkftbv(), pkvs01(), rdmemm(), rdmems(), rdmgsb(), readerme(), readlc(), readmg(), readmm(), readns(), readsb(), rtrcpt(), setblock(), setvalnb(), status(), stndrd(), strcpt(), ufbcnt(), ufbcpy(), ufbcup(), ufbdmp(), ufbevn(), ufbget(), ufbin3(), ufbint(), ufbinx(), ufbmem(), ufbmex(), ufbmms(), ufbmns(), ufbovr(), ufbpos(), ufbqcd(), ufbqcp(), ufbrep(), ufbrms(), ufbseq(), ufbstp(), ufbtab(), ufbtam(), ufdump(), upds3(), upftbv(), wrdxtb(), writcp(), writlc(), writsa(), and writsb().

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/x4884_8F90.js b/previous_versions/v12.1.0/x4884_8F90.js new file mode 100644 index 000000000..cd15b640c --- /dev/null +++ b/previous_versions/v12.1.0/x4884_8F90.js @@ -0,0 +1,6 @@ +var x4884_8F90 = +[ + [ "setim8b", "x4884_8F90.html#a156e77d86141acd042efd97146dd18cf", null ], + [ "x48", "x4884_8F90.html#a5b19b8932da48639e6bcaeefc4d03bfb", null ], + [ "x84", "x4884_8F90.html#aa1e012dbd8da45797592cc65a399d71d", null ] +]; \ No newline at end of file diff --git a/previous_versions/v12.1.0/x4884_8F90_source.html b/previous_versions/v12.1.0/x4884_8F90_source.html new file mode 100644 index 000000000..f8152d506 --- /dev/null +++ b/previous_versions/v12.1.0/x4884_8F90_source.html @@ -0,0 +1,182 @@ + + + + + + + +NCEPLIBS-bufr: x4884.F90 Source File + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        +
                                                        x4884.F90
                                                        +
                                                        +
                                                        +Go to the documentation of this file.
                                                        1 
                                                        +
                                                        5 
                                                        +
                                                        17 subroutine x48(iin4,iout8,nval)
                                                        +
                                                        18 
                                                        +
                                                        19  implicit none
                                                        +
                                                        20 
                                                        +
                                                        21  integer, intent(in) :: iin4(*), nval
                                                        +
                                                        22  integer, intent(out) :: iout8(*)
                                                        +
                                                        23 
                                                        +
                                                        24  integer, parameter :: zero = 0, ones = -1
                                                        +
                                                        25 
                                                        +
                                                        26  integer k, l, itmp, ilo, ihi
                                                        +
                                                        27 
                                                        +
                                                        28  ! ihi points to the first byte of the high-order (i.e. most significant) 4-byte integer word within an 8-byte integer word.
                                                        +
                                                        29  ! ilo points to the first byte of the low-order (i.e. least significant) 4-byte integer word within an 8-byte integer word.
                                                        +
                                                        30 
                                                        +
                                                        31 #ifdef BIG_ENDIAN
                                                        +
                                                        32  ihi=1
                                                        +
                                                        33  ilo=5
                                                        +
                                                        34 #else
                                                        +
                                                        35  ihi=5
                                                        +
                                                        36  ilo=1
                                                        +
                                                        37 #endif
                                                        +
                                                        38 
                                                        +
                                                        39  ! Re-encode the 4-byte values as 8-byte values.
                                                        +
                                                        40 
                                                        +
                                                        41  do k = nval,1,-1
                                                        +
                                                        42  l=2*k-1
                                                        +
                                                        43  call mvb(iin4(k),1,itmp,ilo,4)
                                                        +
                                                        44  iout8(l)=itmp
                                                        +
                                                        45  if(iout8(l)<0) then
                                                        +
                                                        46  call mvb(ones,1,iout8(l),ihi,4)
                                                        +
                                                        47  else
                                                        +
                                                        48  call mvb(zero,1,iout8(l),ihi,4)
                                                        +
                                                        49  endif
                                                        +
                                                        50  enddo
                                                        +
                                                        51 
                                                        +
                                                        52  return
                                                        +
                                                        53 end subroutine x48
                                                        +
                                                        54 
                                                        +
                                                        64 subroutine x84(iin8,iout4,nval)
                                                        +
                                                        65  implicit none
                                                        +
                                                        66 
                                                        +
                                                        67  integer, intent(in) :: iin8(*), nval
                                                        +
                                                        68  integer, intent(out) :: iout4(*)
                                                        +
                                                        69 
                                                        +
                                                        70  integer k, l, itmp, ilo
                                                        +
                                                        71 
                                                        +
                                                        72  ! ilo points to the first byte of the low-order (i.e. least significant) 4-byte integer word within an 8-byte integer word.
                                                        +
                                                        73 
                                                        +
                                                        74 #ifdef BIG_ENDIAN
                                                        +
                                                        75  ilo=5
                                                        +
                                                        76 #else
                                                        +
                                                        77  ilo=1
                                                        +
                                                        78 #endif
                                                        +
                                                        79 
                                                        +
                                                        80  ! Re-encode the 8-byte values as 4-byte values.
                                                        +
                                                        81 
                                                        +
                                                        82  do k = 1, nval
                                                        +
                                                        83  l=2*k-1
                                                        +
                                                        84  call mvb(iin8(l),ilo,itmp,1,4)
                                                        +
                                                        85  iout4(k)=itmp
                                                        +
                                                        86  enddo
                                                        +
                                                        87 
                                                        +
                                                        88  return
                                                        +
                                                        89 end subroutine x84
                                                        +
                                                        90 
                                                        +
                                                        106 subroutine setim8b ( int8b )
                                                        +
                                                        107 
                                                        +
                                                        108  use modv_vars, only: im8b
                                                        +
                                                        109 
                                                        +
                                                        110  implicit none
                                                        +
                                                        111 
                                                        +
                                                        112  logical, intent(in) :: int8b
                                                        +
                                                        113 
                                                        +
                                                        114  im8b = int8b
                                                        +
                                                        115 
                                                        +
                                                        116 return
                                                        +
                                                        117 end subroutine setim8b
                                                        +
                                                        subroutine mvb(ib1, nb1, ib2, nb2, nbm)
                                                        Copy a specified number of bytes from one packed binary array to another.
                                                        Definition: copydata.F90:731
                                                        +
                                                        subroutine setim8b(int8b)
                                                        Specify whether all integer arguments to NCEPLIBS-bufr subprograms from Fortran will use 8-byte integ...
                                                        Definition: x4884.F90:107
                                                        +
                                                        subroutine x48(iin4, iout8, nval)
                                                        Encode one or more 4-byte integer values as 8-byte integer values.
                                                        Definition: x4884.F90:18
                                                        +
                                                        subroutine x84(iin8, iout4, nval)
                                                        Encode one or more 8-byte integer values as 4-byte integer values.
                                                        Definition: x4884.F90:65
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/xbfmg_8c.html b/previous_versions/v12.1.0/xbfmg_8c.html new file mode 100644 index 000000000..64d5e4548 --- /dev/null +++ b/previous_versions/v12.1.0/xbfmg_8c.html @@ -0,0 +1,238 @@ + + + + + + + +NCEPLIBS-bufr: xbfmg.c File Reference + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        + +
                                                        +
                                                        xbfmg.c File Reference
                                                        +
                                                        +
                                                        + +

                                                        Split a BUFR file into separate BUFR files by message. +More...

                                                        +
                                                        #include <stdio.h>
                                                        +#include <stdlib.h>
                                                        +#include <string.h>
                                                        +#include <libgen.h>
                                                        +#include <unistd.h>
                                                        +#include <sys/stat.h>
                                                        +#include "bufr_interface.h"
                                                        +
                                                        +

                                                        Go to the source code of this file.

                                                        + + + + + + + + +

                                                        +Functions

                                                        int main (int argc, char *argv[])
                                                         This program splits a single file containing one or more BUFR messages into one or more BUFR files each containing a single BUFR message. More...
                                                         
                                                        void prtusage (char *prgnam)
                                                         This function prints program usage information to standard output. More...
                                                         
                                                        +

                                                        Detailed Description

                                                        +

                                                        Split a BUFR file into separate BUFR files by message.

                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2018-03-01
                                                        + +

                                                        Definition in file xbfmg.c.

                                                        +

                                                        Function Documentation

                                                        + +

                                                        ◆ main()

                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + +
                                                        int main (int argc,
                                                        char * argv[] 
                                                        )
                                                        +
                                                        + +

                                                        This program splits a single file containing one or more BUFR messages into one or more BUFR files each containing a single BUFR message.

                                                        +

                                                        The output BUFR files are written to the current working directory, according to a pre-defined naming convention as described below.

                                                        +

                                                        Usage
                                                        +

                                                        +  xbfmg [-v] [-h] [-g] bufrfile
                                                        +
                                                        +    where:
                                                        +      -v        prints version information and exits
                                                        +
                                                        +      -h        prints program help and usage information and exits
                                                        +
                                                        +      -g        preserves within each output file any GTS bulletin header
                                                        +                and control characters associated with the corresponding
                                                        +                BUFR message from the input file
                                                        +
                                                        +     bufrfile   [path/]name of input file containing one or more BUFR
                                                        +                messages to be extracted into separate output files within
                                                        +                the current working directory
                                                        +
                                                        +  The output will be stored within the current working directory using
                                                        +  the following filenames:
                                                        +
                                                        +     (basename).xbfmg.out.000001
                                                        +     (basename).xbfmg.out.000002
                                                        +     (basename).xbfmg.out.000003
                                                        +       and so on, up through
                                                        +     (basename).xbfmg.out.(last#)
                                                        +
                                                        +  where:
                                                        +
                                                        +     (basename) = basename of bufrfile
                                                        +
                                                        +     (last#) = total number of BUFR messages in bufrfile
                                                        +
                                                        Parameters
                                                        + + + +
                                                        argc- argument count.
                                                        argv- argument array.
                                                        +
                                                        +
                                                        +
                                                        Returns
                                                        0 for success, error code otherwise.
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2018-03-01
                                                        + +

                                                        Definition at line 95 of file xbfmg.c.

                                                        + +

                                                        References bvers_f(), iupbs01_f(), moda_bufrmg::msglen, prtusage(), and VERS_STR_LEN.

                                                        + +
                                                        +
                                                        + +

                                                        ◆ prtusage()

                                                        + +
                                                        +
                                                        + + + + + + + + +
                                                        void prtusage (char * prgnam)
                                                        +
                                                        + +

                                                        This function prints program usage information to standard output.

                                                        +
                                                        Parameters
                                                        + + +
                                                        prgnam- [path/]name of program executable.
                                                        +
                                                        +
                                                        +
                                                        Author
                                                        J. Ator
                                                        +
                                                        Date
                                                        2018-03-01
                                                        + +

                                                        Definition at line 23 of file xbfmg.c.

                                                        + +

                                                        Referenced by main().

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + + + + diff --git a/previous_versions/v12.1.0/xbfmg_8c.js b/previous_versions/v12.1.0/xbfmg_8c.js new file mode 100644 index 000000000..dbd150124 --- /dev/null +++ b/previous_versions/v12.1.0/xbfmg_8c.js @@ -0,0 +1,5 @@ +var xbfmg_8c = +[ + [ "main", "xbfmg_8c.html#a0ddf1224851353fc92bfbff6f499fa97", null ], + [ "prtusage", "xbfmg_8c.html#a54cbb8b652032605c043b18a134cd85d", null ] +]; \ No newline at end of file diff --git a/previous_versions/v12.1.0/xbfmg_8c_source.html b/previous_versions/v12.1.0/xbfmg_8c_source.html new file mode 100644 index 000000000..791c8cf5c --- /dev/null +++ b/previous_versions/v12.1.0/xbfmg_8c_source.html @@ -0,0 +1,319 @@ + + + + + + + +NCEPLIBS-bufr: xbfmg.c Source File + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + +
                                                        +
                                                        NCEPLIBS-bufr +  12.1.0 +
                                                        +
                                                        +
                                                        + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        + + +
                                                        + +
                                                        + +
                                                        +
                                                        +
                                                        xbfmg.c
                                                        +
                                                        +
                                                        +Go to the documentation of this file.
                                                        1 
                                                        +
                                                        7 #include <stdio.h>
                                                        +
                                                        8 #include <stdlib.h>
                                                        +
                                                        9 #include <string.h>
                                                        +
                                                        10 #include <libgen.h>
                                                        +
                                                        11 #include <unistd.h>
                                                        +
                                                        12 #include <sys/stat.h>
                                                        +
                                                        13 
                                                        +
                                                        14 #include "bufr_interface.h"
                                                        +
                                                        15 
                                                        +
                                                        23 void prtusage( char *prgnam ) {
                                                        +
                                                        24  printf( "\nUSAGE: %s [-v] [-h] [-g] bufrfile\n\n", prgnam );
                                                        +
                                                        25  printf( "WHERE:\n" );
                                                        +
                                                        26  printf( " -v prints program version information and exits\n" );
                                                        +
                                                        27  printf( " -h prints program help and usage information and exits\n" );
                                                        +
                                                        28  printf( " -g preserves within each output file any GTS bulletin header and\n" );
                                                        +
                                                        29  printf( " control characters associated with the corresponding BUFR message\n" );
                                                        +
                                                        30  printf( " from the input file\n" );
                                                        +
                                                        31  printf( " bufrfile [path/]name of input file containing one or more BUFR messages\n" );
                                                        +
                                                        32  printf( " to be extracted into separate output files within the current\n" );
                                                        +
                                                        33  printf( " working directory\n\n" );
                                                        +
                                                        34  printf( "The output will be stored within the current working directory using the\n" );
                                                        +
                                                        35  printf( "following filenames:\n\n" );
                                                        +
                                                        36  printf( " (basename).xbfmg.out.000001\n" );
                                                        +
                                                        37  printf( " (basename).xbfmg.out.000002\n" );
                                                        +
                                                        38  printf( " (basename).xbfmg.out.000003\n" );
                                                        +
                                                        39  printf( " .\n" );
                                                        +
                                                        40  printf( " .\n" );
                                                        +
                                                        41  printf( " (basename).xbfmg.out.(last#)\n\n" );
                                                        +
                                                        42  printf( "where:\n\n" );
                                                        +
                                                        43  printf( " (basename) = basename of bufrfile\n" );
                                                        +
                                                        44  printf( " (last#) = total number of BUFR messages in bufrfile\n\n" );
                                                        +
                                                        45 }
                                                        +
                                                        46 
                                                        +
                                                        95 int main( int argc, char *argv[] ) {
                                                        +
                                                        96 
                                                        +
                                                        97  struct stat fileinfo;
                                                        +
                                                        98 
                                                        +
                                                        99  char *pc, *pmsg, *psb;
                                                        +
                                                        100 
                                                        +
                                                        101  int save_GTSbull = 0;
                                                        +
                                                        102 
                                                        +
                                                        103  char *outfile, *outfile_temp;
                                                        +
                                                        104 
                                                        +
                                                        105  char bvstr[VERS_STR_LEN+1];
                                                        +
                                                        106 
                                                        +
                                                        107  int ch;
                                                        +
                                                        108 
                                                        +
                                                        109  FILE *fp;
                                                        +
                                                        110 
                                                        +
                                                        111  int msglen, wkint[2];
                                                        +
                                                        112 
                                                        +
                                                        113  unsigned long i, filesize, noutfile;
                                                        +
                                                        114 
                                                        +
                                                        115  /*
                                                        +
                                                        116  ** Get the valid options from the command line:
                                                        +
                                                        117  */
                                                        +
                                                        118  while ( ( ch = getopt ( argc, argv, "vgh" ) ) != EOF ) {
                                                        +
                                                        119  switch ( ch ) {
                                                        +
                                                        120  case 'v':
                                                        +
                                                        121  bvers_f( bvstr, VERS_STR_LEN+1 );
                                                        +
                                                        122  printf( "This is the xbfmg utility, built with NCEPLIBS-bufr v%s\n", bvstr );
                                                        +
                                                        123  return 0;
                                                        +
                                                        124  case 'g':
                                                        +
                                                        125  save_GTSbull = 1;
                                                        +
                                                        126  break;
                                                        +
                                                        127  case 'h':
                                                        +
                                                        128  printf( "\nPROGRAM %s\n", argv[0] );
                                                        +
                                                        129  printf( "\nABSTRACT: This program reads an input file containing one or more\n" );
                                                        +
                                                        130  printf( " BUFR messages as given by the first argument. It then extracts each\n" );
                                                        +
                                                        131  printf( " each individual BUFR message into its own separate output file within\n" );
                                                        +
                                                        132  printf( " the current working directory.\n" );
                                                        +
                                                        133  prtusage( argv[0] );
                                                        +
                                                        134  return 0;
                                                        +
                                                        135  break;
                                                        +
                                                        136  }
                                                        +
                                                        137  }
                                                        +
                                                        138 
                                                        +
                                                        139  /*
                                                        +
                                                        140  ** There should be one remaining command line argument specifying the input file.
                                                        +
                                                        141  */
                                                        +
                                                        142  if ( (optind+1) != argc ) {
                                                        +
                                                        143  printf( "\nERROR: You must specify an input BUFR file of BUFR messages!\n" );
                                                        +
                                                        144  prtusage( argv[0] );
                                                        +
                                                        145  return -1;
                                                        +
                                                        146  }
                                                        +
                                                        147 
                                                        +
                                                        148  /*
                                                        +
                                                        149  ** Get the filesize of the input file.
                                                        +
                                                        150  */
                                                        +
                                                        151  if ( stat( argv[optind], &fileinfo ) != 0 ) {
                                                        +
                                                        152  printf( "\nERROR: Could not stat the file %s!\n", argv[optind] );
                                                        +
                                                        153  return -1;
                                                        +
                                                        154  }
                                                        +
                                                        155  filesize = fileinfo.st_size;
                                                        +
                                                        156 
                                                        +
                                                        157  /*
                                                        +
                                                        158  ** Dynamically allocate memory in order to read in the input file.
                                                        +
                                                        159  */
                                                        +
                                                        160  if ( ( pc = malloc( filesize + 1 ) ) == NULL ) {
                                                        +
                                                        161  printf( "\nERROR: Could not allocate memory for file %s!\n", argv[optind] );
                                                        +
                                                        162  return -1;
                                                        +
                                                        163  }
                                                        +
                                                        164 
                                                        +
                                                        165  /*
                                                        +
                                                        166  ** Read the input file into memory.
                                                        +
                                                        167  */
                                                        +
                                                        168  if ( ( fp = fopen( argv[optind], "rb" ) ) == NULL ) {
                                                        +
                                                        169  printf( "\nERROR: Could not open input file %s!\n", argv[optind] );
                                                        +
                                                        170  free(pc);
                                                        +
                                                        171  return -1;
                                                        +
                                                        172  }
                                                        +
                                                        173  for ( i = 0; i < filesize; i++ ) {
                                                        +
                                                        174  pc[i] = (char) fgetc( fp );
                                                        +
                                                        175  }
                                                        +
                                                        176  pc[i] = '\0';
                                                        +
                                                        177  fclose( fp );
                                                        +
                                                        178 
                                                        +
                                                        179  /*
                                                        +
                                                        180  ** Create an output file name template.
                                                        +
                                                        181  */
                                                        +
                                                        182  if ( ( outfile_temp = malloc( strlen( argv[optind] ) + 26 ) ) == NULL ) {
                                                        +
                                                        183  // allow for up to 25 extra chars so that we can strcat an additional filename qualifier below
                                                        +
                                                        184  printf( "\nERROR: Could not allocate memory for output file name template!\n" );
                                                        +
                                                        185  return -1;
                                                        +
                                                        186  }
                                                        +
                                                        187  strcpy( outfile_temp, basename( argv[optind] ) );
                                                        +
                                                        188  strcat( outfile_temp, ".xbfmg.out" );
                                                        +
                                                        189  if ( ( outfile = malloc( strlen( outfile_temp ) + 26 ) ) == NULL ) {
                                                        +
                                                        190  // allow for up to 25 extra chars so that we can sprintf an additional filename qualifier below
                                                        +
                                                        191  printf( "\nERROR: Could not allocate memory for output file names!\n" );
                                                        +
                                                        192  return -1;
                                                        +
                                                        193  }
                                                        +
                                                        194 
                                                        +
                                                        195  /*
                                                        +
                                                        196  ** Locate each BUFR message within the input file and write each one to a separate output file.
                                                        +
                                                        197  **
                                                        +
                                                        198  ** Note that we can't use the intrinsic C strstr function to locate the "BUFR" and "7777"
                                                        +
                                                        199  ** strings within the file, because the file could contain embedded NULL characters.
                                                        +
                                                        200  */
                                                        +
                                                        201  noutfile = 0;
                                                        +
                                                        202  pmsg = psb = pc;
                                                        +
                                                        203  while ( 1 ) {
                                                        +
                                                        204  while ( ( ( pmsg - pc + 4 ) < filesize ) &&
                                                        +
                                                        205  ( ( *(pmsg) != 'B' ) ||
                                                        +
                                                        206  ( *(pmsg + 1) != 'U' ) ||
                                                        +
                                                        207  ( *(pmsg + 2) != 'F' ) ||
                                                        +
                                                        208  ( *(pmsg + 3) != 'R' ) ) ) {
                                                        +
                                                        209  if ( *pmsg == '\x01' ) psb = pmsg;
                                                        +
                                                        210  pmsg++;
                                                        +
                                                        211  }
                                                        +
                                                        212  if ( ( pmsg - pc + 4 ) >= filesize ) {
                                                        +
                                                        213  free( pc );
                                                        +
                                                        214  free( outfile_temp );
                                                        +
                                                        215  free( outfile );
                                                        +
                                                        216  return 0;
                                                        +
                                                        217  }
                                                        +
                                                        218 
                                                        +
                                                        219  /*
                                                        +
                                                        220  ** Open a new output file for this message.
                                                        +
                                                        221  */
                                                        +
                                                        222  sprintf( outfile, "%s.%06lu", outfile_temp, ++noutfile );
                                                        +
                                                        223  if ( ( fp = fopen( outfile, "wb" ) ) == NULL ) {
                                                        +
                                                        224  printf( "\nERROR: Could not open output file %s!\n", outfile );
                                                        +
                                                        225  return -1;
                                                        +
                                                        226  }
                                                        +
                                                        227 
                                                        +
                                                        228  /*
                                                        +
                                                        229  ** If requested, write the preceding GTS bulletin information to the output file.
                                                        +
                                                        230  */
                                                        +
                                                        231  if ( save_GTSbull ) {
                                                        +
                                                        232  while ( psb < pmsg ) {
                                                        +
                                                        233  fputc( *psb++, fp );
                                                        +
                                                        234  }
                                                        +
                                                        235  }
                                                        +
                                                        236 
                                                        +
                                                        237  /*
                                                        +
                                                        238  ** Read the BUFR message length from Section 0.
                                                        +
                                                        239  */
                                                        +
                                                        240  memcpy( wkint, pmsg, 8 );
                                                        +
                                                        241  msglen = iupbs01_f( wkint, "LENM" );
                                                        +
                                                        242 
                                                        +
                                                        243  /*
                                                        +
                                                        244  ** Write the BUFR message to the output file.
                                                        +
                                                        245  */
                                                        +
                                                        246  if ( ( pmsg + msglen - pc - 1 ) <= filesize ) {
                                                        +
                                                        247  for ( i = 1; i <= msglen; i++ ) {
                                                        +
                                                        248  fputc( *pmsg++, fp );
                                                        +
                                                        249  }
                                                        +
                                                        250  }
                                                        +
                                                        251 
                                                        +
                                                        252  /*
                                                        +
                                                        253  ** Make sure that the "7777" indicator is in the expected place.
                                                        +
                                                        254  */
                                                        +
                                                        255  if ( ( *(pmsg - 4) != '7' ) || ( *(pmsg - 3) != '7' ) ||
                                                        +
                                                        256  ( *(pmsg - 2) != '7' ) || ( *(pmsg - 1) != '7' ) ) {
                                                        +
                                                        257  printf( "\nERROR: Could not find 7777 indicator in output file %s!\n",
                                                        +
                                                        258  outfile );
                                                        +
                                                        259  }
                                                        +
                                                        260 
                                                        +
                                                        261  /*
                                                        +
                                                        262  ** If requested, append GTS bulletin tail markers to the output file.
                                                        +
                                                        263  */
                                                        +
                                                        264  if ( save_GTSbull ) {
                                                        +
                                                        265  fputc( '\x0d', fp );
                                                        +
                                                        266  fputc( '\x0d', fp );
                                                        +
                                                        267  fputc( '\x0a', fp );
                                                        +
                                                        268  fputc( '\x03', fp );
                                                        +
                                                        269  }
                                                        +
                                                        270 
                                                        +
                                                        271  fclose( fp );
                                                        +
                                                        272  }
                                                        +
                                                        273 }
                                                        +
                                                        Enable a number of NCEPLIBS-bufr subprograms to be called from within C and C++ application programs.
                                                        +
                                                        #define VERS_STR_LEN
                                                        Size of a character string needed to store a library version number.
                                                        +
                                                        int iupbs01_f(int *bufr, char *mnemonic)
                                                        Read a data value from Section 0 or Section 1 of a BUFR message.
                                                        +
                                                        void bvers_f(char *cverstr, int cverstr_len)
                                                        Get the version number of the NCEPLIBS-bufr software.
                                                        +
                                                        integer, dimension(:), allocatable msglen
                                                        Length (in integers) of BUFR message most recently written to each output file ID.
                                                        +
                                                        int main(int argc, char *argv[])
                                                        This program splits a single file containing one or more BUFR messages into one or more BUFR files ea...
                                                        Definition: xbfmg.c:95
                                                        +
                                                        void prtusage(char *prgnam)
                                                        This function prints program usage information to standard output.
                                                        Definition: xbfmg.c:23
                                                        +
                                                        +
                                                        + + + + diff --git a/python/ncepbufr.html b/python/ncepbufr.html index 5c25b19d0..e25e6b586 100644 --- a/python/ncepbufr.html +++ b/python/ncepbufr.html @@ -3,14 +3,14 @@ - + ncepbufr API documentation - +